From 5a6ca0aa6ca209c5795f7192b4d0f3587997b904 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Tue, 12 Mar 2013 15:13:36 +0900 Subject: [PATCH] Tizen 2.1 base --- ABOUT-NLS | 1068 + AUTHORS | 496 + COPYING | 674 + COPYING.LIB | 504 + ChangeLog | 11967 +++++++++ FAQ | 46 + GNUmakefile | 127 + INSTALL | 302 + Makefile.am | 45 + Makefile.in | 1114 + NEWS | 1275 + README | 32 + THANKS | 97 + TODO | 21 + aclocal.m4 | 1076 + build-aux/config.guess | 1561 ++ build-aux/config.rpath | 672 + build-aux/config.sub | 1686 ++ build-aux/csharpcomp.sh.in | 158 + build-aux/depcomp | 630 + build-aux/gendocs.sh | 361 + build-aux/gnupload | 412 + build-aux/install-sh | 520 + build-aux/link-warning.h | 28 + build-aux/ltmain.sh | 8406 +++++++ build-aux/mdate-sh | 205 + build-aux/missing | 376 + build-aux/pmccabe.css | 227 + build-aux/pmccabe2html | 908 + build-aux/texinfo.tex | 9291 +++++++ build-aux/useless-if-before-free | 206 + build-aux/vc-list-files | 116 + cfg.mk | 101 + config.h.in | 314 + configure | 24089 +++++++++++++++++++ configure.ac | 195 + contrib/README | 24 + contrib/doxygen/Doxyfile.in | 1417 ++ contrib/doxygen/Doxyfile.orig | 1417 ++ contrib/doxygen/gdoc2doxygen | 24 + contrib/idn-python/Makefile | 14 + contrib/idn-python/README | 23 + contrib/idn-python/idn.c | 81 + contrib/idn-python/test.py | 15 + contrib/java/ExampleIDNA.java | 5 + contrib/java/IDNA.c | 18 + contrib/java/IDNA.java | 7 + contrib/java/Makefile.am | 33 + contrib/java/Makefile.in | 0 contrib/java/README | 36 + contrib/java/autogen.sh | 2 + contrib/java/configure.ac | 10 + contrib/web/idn.php | 376 + csharp/AssemblyInfo.cs | 58 + csharp/CombiningClass.cs | 457 + csharp/Composition.cs | 724 + csharp/DecompositionKeys.cs | 3605 +++ csharp/DecompositionMappings.cs | 2837 +++ csharp/IDNA.cs | 306 + csharp/IDNAException.cs | 49 + csharp/Makefile.am | 91 + csharp/Makefile.in | 733 + csharp/NFKC.cs | 374 + csharp/Punycode.cs | 299 + csharp/PunycodeException.cs | 42 + csharp/RFC3454.cs | 4275 ++++ csharp/Stringprep.cs | 464 + csharp/StringprepException.cs | 39 + csharp/generate/AssemblyInfo.cs | 55 + csharp/generate/GenerateNFKC.cs | 685 + csharp/generate/GenerateRFC3454.cs | 294 + csharp/generate/HashSet.cs | 91 + csharp/generate/Program.cs | 39 + csharp/generate/Tokenizer.cs | 223 + csharp/libidn.csproj | 59 + csharp/libidn.csproj.user | 10 + csharp/libidn.sln | 18 + csharp/libidn.suo | Bin 0 -> 82432 bytes csharp/libidn_PPC.csdproj | 186 + csharp/libidn_PPC.csdproj.user | 55 + csharp/libidn_PPC.sln | 23 + csharp/libidn_PPC.suo | Bin 0 -> 8192 bytes debian/changelog | 373 + debian/compat | 1 + debian/control | 40 + debian/copyright | 307 + debian/idn.install | 2 + debian/idn.manpages | 1 + debian/libidn11-dev.doc-base | 8 + debian/libidn11-dev.docs | 1 + debian/libidn11-dev.examples | 2 + debian/libidn11-dev.info | 1 + debian/libidn11-dev.install | 5 + debian/libidn11-dev.manpages | 1 + debian/libidn11-java.doc-base | 10 + debian/libidn11-java.docs | 1 + debian/libidn11-java.install | 1 + .../usr/share/doc/libidn11-java/api/Makefile | 694 + .../usr/share/doc/libidn11-java/api/Makefile.am | 45 + .../usr/share/doc/libidn11-java/api/Makefile.in | 694 + debian/libidn11.install | 2 + debian/libidn11.postinst | 9 + debian/libidn11.postrm | 9 + debian/libidn11.shlibs | 1 + debian/rules | 88 + debian/watch | 2 + doc/Makefile | 1926 ++ doc/Makefile.am | 77 + doc/Makefile.gdoc | 648 + doc/Makefile.gdoci | 55 + doc/Makefile.in | 1926 ++ doc/components.fig | 96 + doc/cyclo/Makefile | 678 + doc/cyclo/Makefile.am | 30 + doc/cyclo/Makefile.in | 678 + doc/cyclo/cyclo-libidn.html | 2974 +++ doc/fdl-1.3.texi | 506 + doc/gdoc | 909 + doc/gpl-3.0.texi | 717 + doc/idn.1 | 90 + doc/java/Makefile | 695 + doc/java/Makefile.am | 45 + doc/java/Makefile.in | 695 + doc/lgpl-2.1.texi | 561 + doc/libidn-components.eps | 331 + doc/libidn-components.pdf | Bin 0 -> 9168 bytes doc/libidn-components.png | Bin 0 -> 4779 bytes doc/libidn.info | 5638 +++++ doc/libidn.texi | 2176 ++ doc/man/idn_free.3 | 42 + doc/man/idna_strerror.3 | 73 + doc/man/idna_to_ascii_4i.3 | 63 + doc/man/idna_to_ascii_4z.3 | 44 + doc/man/idna_to_ascii_8z.3 | 44 + doc/man/idna_to_ascii_lz.3 | 45 + doc/man/idna_to_unicode_44i.3 | 68 + doc/man/idna_to_unicode_4z4z.3 | 45 + doc/man/idna_to_unicode_8z4z.3 | 45 + doc/man/idna_to_unicode_8z8z.3 | 45 + doc/man/idna_to_unicode_8zlz.3 | 46 + doc/man/idna_to_unicode_lzlz.3 | 47 + doc/man/pr29_4.3 | 44 + doc/man/pr29_4z.3 | 42 + doc/man/pr29_8z.3 | 43 + doc/man/pr29_strerror.3 | 48 + doc/man/punycode_decode.3 | 67 + doc/man/punycode_encode.3 | 70 + doc/man/punycode_strerror.3 | 49 + doc/man/stringprep.3 | 59 + doc/man/stringprep_4i.3 | 64 + doc/man/stringprep_4zi.3 | 56 + doc/man/stringprep_check_version.3 | 43 + doc/man/stringprep_convert.3 | 43 + doc/man/stringprep_locale_charset.3 | 50 + doc/man/stringprep_locale_to_utf8.3 | 39 + doc/man/stringprep_profile.3 | 56 + doc/man/stringprep_strerror.3 | 77 + doc/man/stringprep_ucs4_nfkc_normalize.3 | 41 + doc/man/stringprep_ucs4_to_utf8.3 | 50 + doc/man/stringprep_unichar_to_utf8.3 | 41 + doc/man/stringprep_utf8_nfkc_normalize.3 | 52 + doc/man/stringprep_utf8_to_locale.3 | 39 + doc/man/stringprep_utf8_to_ucs4.3 | 46 + doc/man/stringprep_utf8_to_unichar.3 | 39 + doc/man/tld_check_4.3 | 55 + doc/man/tld_check_4t.3 | 51 + doc/man/tld_check_4tz.3 | 48 + doc/man/tld_check_4z.3 | 52 + doc/man/tld_check_8z.3 | 54 + doc/man/tld_check_lz.3 | 54 + doc/man/tld_default_table.3 | 44 + doc/man/tld_get_4.3 | 44 + doc/man/tld_get_4z.3 | 41 + doc/man/tld_get_table.3 | 42 + doc/man/tld_get_z.3 | 42 + doc/man/tld_strerror.3 | 53 + doc/reference/Makefile | 918 + doc/reference/Makefile.am | 87 + doc/reference/Makefile.in | 918 + doc/reference/html/ch01.html | 108 + doc/reference/html/home.png | Bin 0 -> 654 bytes doc/reference/html/index.html | 47 + doc/reference/html/index.sgml | 100 + doc/reference/html/left.png | Bin 0 -> 459 bytes doc/reference/html/libidn-components.png | Bin 0 -> 4779 bytes doc/reference/html/libidn-idn-free.html | 63 + doc/reference/html/libidn-idna.html | 762 + doc/reference/html/libidn-pr29.html | 237 + doc/reference/html/libidn-punycode.html | 310 + doc/reference/html/libidn-stringprep.html | 1191 + doc/reference/html/libidn-tld.html | 678 + doc/reference/html/libidn.devhelp | 92 + doc/reference/html/libidn.devhelp2 | 136 + doc/reference/html/right.png | Bin 0 -> 472 bytes doc/reference/html/style.css | 167 + doc/reference/html/up.png | Bin 0 -> 406 bytes doc/reference/libidn-docs.sgml | 83 + doc/reference/libidn-overrides.txt | 0 doc/reference/libidn-sections.txt | 121 + doc/reference/libidn.types | 0 doc/reference/tmpl/idn-free.sgml | 28 + doc/reference/tmpl/idna.sgml | 184 + doc/reference/tmpl/intprops.sgml | 93 + doc/reference/tmpl/libidn-unused.sgml | 0 doc/reference/tmpl/pr29.sgml | 74 + doc/reference/tmpl/punycode.sgml | 79 + doc/reference/tmpl/stringprep.sgml | 330 + doc/reference/tmpl/tld.sgml | 181 + doc/reference/tmpl/verify.sgml | 37 + doc/specifications/BidiMirroring-3.2.0.txt | 529 + doc/specifications/COPYING.UCD | 61 + doc/specifications/CaseFolding-3.2.0.txt | 912 + doc/specifications/CompositionExclusions-3.2.0.txt | 176 + doc/specifications/LineBreak-3.2.0.txt | 13889 +++++++++++ doc/specifications/Makefile | 672 + doc/specifications/Makefile.am | 23 + doc/specifications/Makefile.in | 672 + doc/specifications/SpecialCasing-3.2.0.txt | 255 + doc/specifications/UnicodeData-3.2.0.txt | 13874 +++++++++++ doc/specifications/rfc3454.txt | 3246 +++ doc/stamp-vti | 4 + doc/texi/idn-free.c.texi | 15 + doc/texi/idn_free.texi | 15 + doc/texi/idna.c.texi | 222 + doc/texi/idna_strerror.texi | 46 + doc/texi/idna_to_ascii_4i.texi | 36 + doc/texi/idna_to_ascii_4z.texi | 17 + doc/texi/idna_to_ascii_8z.texi | 17 + doc/texi/idna_to_ascii_lz.texi | 18 + doc/texi/idna_to_unicode_44i.texi | 41 + doc/texi/idna_to_unicode_4z4z.texi | 18 + doc/texi/idna_to_unicode_8z4z.texi | 18 + doc/texi/idna_to_unicode_8z8z.texi | 18 + doc/texi/idna_to_unicode_8zlz.texi | 19 + doc/texi/idna_to_unicode_lzlz.texi | 20 + doc/texi/nfkc.c.texi | 107 + doc/texi/pr29.c.texi | 48 + doc/texi/pr29_4.texi | 17 + doc/texi/pr29_4z.texi | 15 + doc/texi/pr29_8z.texi | 16 + doc/texi/pr29_strerror.texi | 21 + doc/texi/punycode.c.texi | 83 + doc/texi/punycode_decode.texi | 40 + doc/texi/punycode_encode.texi | 43 + doc/texi/punycode_strerror.texi | 22 + doc/texi/strerror-idna.c.texi | 46 + doc/texi/strerror-pr29.c.texi | 21 + doc/texi/strerror-punycode.c.texi | 22 + doc/texi/strerror-stringprep.c.texi | 50 + doc/texi/strerror-tld.c.texi | 26 + doc/texi/stringprep.c.texi | 127 + doc/texi/stringprep.texi | 32 + doc/texi/stringprep_4i.texi | 37 + doc/texi/stringprep_4zi.texi | 29 + doc/texi/stringprep_check_version.texi | 16 + doc/texi/stringprep_convert.texi | 16 + doc/texi/stringprep_locale_charset.texi | 22 + doc/texi/stringprep_locale_to_utf8.texi | 12 + doc/texi/stringprep_profile.texi | 29 + doc/texi/stringprep_strerror.texi | 50 + doc/texi/stringprep_ucs4_nfkc_normalize.texi | 14 + doc/texi/stringprep_ucs4_to_utf8.texi | 23 + doc/texi/stringprep_unichar_to_utf8.texi | 14 + doc/texi/stringprep_utf8_nfkc_normalize.texi | 25 + doc/texi/stringprep_utf8_to_locale.texi | 12 + doc/texi/stringprep_utf8_to_ucs4.texi | 19 + doc/texi/stringprep_utf8_to_unichar.texi | 12 + doc/texi/tld.c.texi | 230 + doc/texi/tld_check_4.texi | 28 + doc/texi/tld_check_4t.texi | 24 + doc/texi/tld_check_4tz.texi | 21 + doc/texi/tld_check_4z.texi | 25 + doc/texi/tld_check_8z.texi | 27 + doc/texi/tld_check_lz.texi | 27 + doc/texi/tld_default_table.texi | 17 + doc/texi/tld_get_4.texi | 17 + doc/texi/tld_get_4z.texi | 14 + doc/texi/tld_get_table.texi | 15 + doc/texi/tld_get_z.texi | 15 + doc/texi/tld_strerror.texi | 26 + doc/texi/toutf8.c.texi | 62 + doc/texi/version.c.texi | 16 + doc/texinfo.css | 44 + doc/tld/Makefile | 668 + doc/tld/Makefile.am | 20 + doc/tld/Makefile.in | 668 + doc/tld/README | 45 + doc/tld/fr.tld | 86 + doc/tld/no.tld | 59 + doc/version.texi | 4 + examples/Makefile.am | 28 + examples/Makefile.in | 822 + examples/README | 28 + examples/example.c | 85 + examples/example2.c | 233 + examples/example3.c | 76 + examples/example4.c | 76 + examples/example5.c | 121 + gl/Makefile.am | 372 + gl/Makefile.in | 1167 + gl/errno.in.h | 155 + gl/error.c | 338 + gl/error.h | 65 + gl/getopt.c | 1186 + gl/getopt.in.h | 225 + gl/getopt1.c | 170 + gl/getopt_int.h | 130 + gl/gettext.h | 174 + gl/intprops.h | 77 + gl/m4/00gnulib.m4 | 30 + gl/m4/autobuild.m4 | 39 + gl/m4/csharp.m4 | 28 + gl/m4/csharpcomp.m4 | 78 + gl/m4/errno_h.m4 | 112 + gl/m4/error.m4 | 22 + gl/m4/extensions.m4 | 104 + gl/m4/getopt.m4 | 83 + gl/m4/gnulib-cache.m4 | 53 + gl/m4/gnulib-common.m4 | 124 + gl/m4/gnulib-comp.m4 | 263 + gl/m4/include_next.m4 | 187 + gl/m4/manywarnings.m4 | 108 + gl/m4/pmccabe2html.m4 | 14 + gl/m4/stdarg.m4 | 67 + gl/m4/strerror.m4 | 68 + gl/m4/string_h.m4 | 92 + gl/m4/unistd_h.m4 | 83 + gl/m4/version-etc.m4 | 33 + gl/m4/warnings.m4 | 44 + gl/progname.c | 63 + gl/progname.h | 60 + gl/stdarg.in.h | 35 + gl/strerror.c | 341 + gl/string.in.h | 605 + gl/unistd.in.h | 578 + gl/version-etc.c | 199 + gl/version-etc.h | 38 + gltests/Makefile.am | 92 + gltests/Makefile.in | 1114 + gltests/test-errno.c | 117 + gltests/test-strerror.c | 65 + gltests/test-string.c | 27 + gltests/test-unistd.c | 50 + gltests/test-vc-list-files-cvs.sh | 62 + gltests/test-vc-list-files-git.sh | 48 + gtk-doc.make | 193 + java/Makefile | 952 + java/Makefile.am | 56 + java/Makefile.in | 952 + java/gnu/Makefile | 852 + java/gnu/Makefile.am | 1 + java/gnu/Makefile.in | 852 + java/gnu/inet/Makefile | 852 + java/gnu/inet/Makefile.am | 1 + java/gnu/inet/Makefile.in | 852 + java/gnu/inet/encoding/CombiningClass.java | 462 + java/gnu/inet/encoding/Composition.java | 728 + java/gnu/inet/encoding/DecompositionKeys.java | 3610 +++ java/gnu/inet/encoding/DecompositionMappings.java | 2842 +++ java/gnu/inet/encoding/IDNA.java | 278 + java/gnu/inet/encoding/IDNAException.java | 51 + java/gnu/inet/encoding/Makefile | 706 + java/gnu/inet/encoding/Makefile.am | 36 + java/gnu/inet/encoding/Makefile.in | 706 + java/gnu/inet/encoding/NFKC.java | 328 + java/gnu/inet/encoding/Punycode.java | 259 + java/gnu/inet/encoding/PunycodeException.java | 44 + java/gnu/inet/encoding/RFC3454.java | 4228 ++++ java/gnu/inet/encoding/Stringprep.java | 424 + java/gnu/inet/encoding/StringprepException.java | 41 + java/libidn-1.15.jar | Bin 0 -> 150583 bytes java/misc/GenerateNFKC.java | 586 + java/misc/GenerateRFC3454.java | 226 + java/misc/Makefile | 693 + java/misc/Makefile.am | 26 + java/misc/Makefile.in | 693 + java/misc/TestIDNA.java | 146 + java/misc/TestNFKC.java | 165 + lib/Makefile.am | 90 + lib/Makefile.in | 989 + lib/gen-stringprep-tables.pl | 119 + lib/gen-tld-tables.pl | 252 + lib/gen-unicode-tables.pl | 1337 + lib/gl/Makefile.am | 355 + lib/gl/Makefile.in | 1191 + lib/gl/c-ctype.c | 396 + lib/gl/c-ctype.h | 295 + lib/gl/c-strcase.h | 55 + lib/gl/c-strcasecmp.c | 57 + lib/gl/c-strncasecmp.c | 57 + lib/gl/gettext.h | 174 + lib/gl/iconv.in.h | 71 + lib/gl/iconv_open-aix.gperf | 44 + lib/gl/iconv_open-aix.h | 256 + lib/gl/iconv_open-hpux.gperf | 56 + lib/gl/iconv_open-hpux.h | 296 + lib/gl/iconv_open-irix.gperf | 31 + lib/gl/iconv_open-irix.h | 199 + lib/gl/iconv_open-osf.gperf | 50 + lib/gl/iconv_open-osf.h | 278 + lib/gl/iconv_open.c | 172 + lib/gl/m4/gnulib-cache.m4 | 44 + lib/gl/m4/gnulib-comp.m4 | 257 + lib/gl/m4/iconv_h.m4 | 34 + lib/gl/m4/iconv_open.m4 | 237 + lib/gl/m4/ld-output-def.m4 | 29 + lib/gl/m4/ld-version-script.m4 | 44 + lib/gl/m4/locale-fr.m4 | 185 + lib/gl/m4/locale-tr.m4 | 97 + lib/gl/m4/multiarch.m4 | 65 + lib/gl/m4/stdbool.m4 | 115 + lib/gl/m4/stdint.m4 | 472 + lib/gl/m4/strverscmp.m4 | 23 + lib/gl/m4/wchar.m4 | 100 + lib/gl/stdbool.in.h | 119 + lib/gl/stdint.in.h | 568 + lib/gl/striconv.c | 458 + lib/gl/striconv.h | 76 + lib/gl/string.in.h | 605 + lib/gl/strverscmp.c | 131 + lib/gl/wchar.in.h | 310 + lib/gltests/Makefile.am | 156 + lib/gltests/Makefile.in | 1205 + lib/gltests/dummy.c | 42 + lib/gltests/intprops.h | 77 + lib/gltests/test-c-ctype.c | 398 + lib/gltests/test-c-strcase.sh | 21 + lib/gltests/test-c-strcasecmp.c | 77 + lib/gltests/test-c-strncasecmp.c | 91 + lib/gltests/test-iconv.c | 149 + lib/gltests/test-stdbool.c | 95 + lib/gltests/test-stdint.c | 360 + lib/gltests/test-striconv.c | 191 + lib/gltests/test-string.c | 27 + lib/gltests/test-strverscmp.c | 56 + lib/gltests/test-wchar.c | 31 + lib/gltests/verify.h | 140 + lib/gunibreak.h | 9353 +++++++ lib/gunicomp.h | 661 + lib/gunidecomp.h | 10363 ++++++++ lib/idn-free.c | 48 + lib/idn-free.h | 58 + lib/idna.c | 850 + lib/idna.h | 115 + lib/libidn.map | 100 + lib/nfkc.c | 1046 + lib/pr29.c | 1332 + lib/pr29.h | 65 + lib/profiles.c | 314 + lib/punycode.c | 457 + lib/punycode.h | 230 + lib/rfc3454.c | 4252 ++++ lib/strerror-idna.c | 127 + lib/strerror-pr29.c | 75 + lib/strerror-punycode.c | 79 + lib/strerror-stringprep.c | 131 + lib/strerror-tld.c | 89 + lib/stringprep.c | 673 + lib/stringprep.h | 231 + lib/tld.c | 516 + lib/tld.h | 127 + lib/tlds.c | 63 + lib/toutf8.c | 154 + lib/version.c | 49 + libc/README | 31 + libc/example.c | 75 + libc/getaddrinfo-idn.txt | 117 + libidn.pc.in | 22 + m4/ac_prog_jar.m4 | 13 + m4/codeset.m4 | 21 + m4/gettext.m4 | 381 + m4/gtk-doc.m4 | 61 + m4/iconv.m4 | 180 + m4/intlmacosx.m4 | 51 + m4/lib-ld.m4 | 110 + m4/lib-link.m4 | 709 + m4/lib-prefix.m4 | 185 + m4/libtool.m4 | 7357 ++++++ m4/longlong.m4 | 109 + m4/ltoptions.m4 | 368 + m4/ltsugar.m4 | 123 + m4/ltversion.m4 | 23 + m4/lt~obsolete.m4 | 92 + m4/nls.m4 | 31 + m4/pkg.m4 | 157 + m4/po.m4 | 449 + m4/progtest.m4 | 92 + m4/update-header-version.m4 | 24 + m4/valgrind.m4 | 30 + m4/visibility.m4 | 52 + m4/wchar_t.m4 | 20 + m4/wint_t.m4 | 28 + maint.mk | 767 + packaging/libidn.manifest | 5 + packaging/libidn.spec | 82 + po/LINGUAS | 17 + po/Makefile.in.in | 429 + po/Makevars | 41 + po/POTFILES.in | 8 + po/Rules-quot | 47 + po/boldquot.sed | 10 + po/cs.gmo | Bin 0 -> 7408 bytes po/cs.po | 360 + po/da.gmo | Bin 0 -> 3810 bytes po/da.po | 310 + po/de.gmo | Bin 0 -> 650 bytes po/de.po | 341 + po/en@boldquot.gmo | Bin 0 -> 8282 bytes po/en@boldquot.header | 25 + po/en@boldquot.po | 362 + po/en@quot.gmo | Bin 0 -> 8154 bytes po/en@quot.header | 22 + po/en@quot.po | 357 + po/eo.gmo | Bin 0 -> 6833 bytes po/eo.po | 354 + po/fi.gmo | Bin 0 -> 7256 bytes po/fi.po | 366 + po/fr.gmo | Bin 0 -> 7328 bytes po/fr.po | 392 + po/id.gmo | Bin 0 -> 6912 bytes po/id.po | 348 + po/insert-header.sin | 23 + po/it.gmo | Bin 0 -> 7064 bytes po/it.po | 350 + po/ja.gmo | Bin 0 -> 3656 bytes po/ja.po | 311 + po/libidn.pot | 303 + po/nl.gmo | Bin 0 -> 7205 bytes po/nl.po | 356 + po/pl.gmo | Bin 0 -> 7168 bytes po/pl.po | 353 + po/quot.sed | 6 + po/remove-potcdate.sin | 19 + po/ro.gmo | Bin 0 -> 711 bytes po/ro.po | 344 + po/sr.gmo | Bin 0 -> 4400 bytes po/sr.po | 311 + po/stamp-po | 1 + po/vi.gmo | Bin 0 -> 7696 bytes po/vi.po | 349 + po/zh_CN.gmo | Bin 0 -> 6703 bytes po/zh_CN.po | 352 + src/Makefile.am | 47 + src/Makefile.in | 921 + src/idn.c | 573 + src/idn.ggo | 31 + src/idn_cmd.c | 834 + src/idn_cmd.h | 212 + src/idna.el | 192 + src/punycode.el | 182 + tests/Makefile.am | 38 + tests/Makefile.in | 976 + tests/tst_idna.c | 326 + tests/tst_idna2.c | 522 + tests/tst_nfkc.c | 126 + tests/tst_pr29.c | 145 + tests/tst_punycode.c | 278 + tests/tst_strerror.c | 205 + tests/tst_stringprep.c | 312 + tests/tst_tld.c | 151 + tests/tst_toutf8.c | 59 + tests/utils.c | 152 + tests/utils.h | 48 + win32/include/ac-stdint.h | 40 + win32/include/config.h | 17 + win32/include/idn-int.h | 19 + win32/include/stdbool.h | 29 + win32/include/unistd.h | 1 + win32/libidn.sln | 20 + win32/libidn.vcproj | 306 + 570 files changed, 264426 insertions(+) create mode 100644 ABOUT-NLS create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 COPYING.LIB create mode 100644 ChangeLog create mode 100644 FAQ create mode 100644 GNUmakefile create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 THANKS create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 build-aux/config.guess create mode 100755 build-aux/config.rpath create mode 100755 build-aux/config.sub create mode 100644 build-aux/csharpcomp.sh.in create mode 100755 build-aux/depcomp create mode 100644 build-aux/gendocs.sh create mode 100755 build-aux/gnupload create mode 100755 build-aux/install-sh create mode 100644 build-aux/link-warning.h create mode 100755 build-aux/ltmain.sh create mode 100755 build-aux/mdate-sh create mode 100755 build-aux/missing create mode 100644 build-aux/pmccabe.css create mode 100755 build-aux/pmccabe2html create mode 100644 build-aux/texinfo.tex create mode 100755 build-aux/useless-if-before-free create mode 100755 build-aux/vc-list-files create mode 100644 cfg.mk create mode 100644 config.h.in create mode 100755 configure create mode 100644 configure.ac create mode 100644 contrib/README create mode 100644 contrib/doxygen/Doxyfile.in create mode 100644 contrib/doxygen/Doxyfile.orig create mode 100755 contrib/doxygen/gdoc2doxygen create mode 100644 contrib/idn-python/Makefile create mode 100644 contrib/idn-python/README create mode 100644 contrib/idn-python/idn.c create mode 100644 contrib/idn-python/test.py create mode 100644 contrib/java/ExampleIDNA.java create mode 100644 contrib/java/IDNA.c create mode 100644 contrib/java/IDNA.java create mode 100644 contrib/java/Makefile.am create mode 100644 contrib/java/Makefile.in create mode 100644 contrib/java/README create mode 100755 contrib/java/autogen.sh create mode 100644 contrib/java/configure.ac create mode 100644 contrib/web/idn.php create mode 100644 csharp/AssemblyInfo.cs create mode 100644 csharp/CombiningClass.cs create mode 100644 csharp/Composition.cs create mode 100644 csharp/DecompositionKeys.cs create mode 100644 csharp/DecompositionMappings.cs create mode 100644 csharp/IDNA.cs create mode 100644 csharp/IDNAException.cs create mode 100644 csharp/Makefile.am create mode 100644 csharp/Makefile.in create mode 100644 csharp/NFKC.cs create mode 100644 csharp/Punycode.cs create mode 100644 csharp/PunycodeException.cs create mode 100644 csharp/RFC3454.cs create mode 100644 csharp/Stringprep.cs create mode 100644 csharp/StringprepException.cs create mode 100644 csharp/generate/AssemblyInfo.cs create mode 100644 csharp/generate/GenerateNFKC.cs create mode 100644 csharp/generate/GenerateRFC3454.cs create mode 100644 csharp/generate/HashSet.cs create mode 100644 csharp/generate/Program.cs create mode 100644 csharp/generate/Tokenizer.cs create mode 100644 csharp/libidn.csproj create mode 100644 csharp/libidn.csproj.user create mode 100644 csharp/libidn.sln create mode 100644 csharp/libidn.suo create mode 100644 csharp/libidn_PPC.csdproj create mode 100644 csharp/libidn_PPC.csdproj.user create mode 100644 csharp/libidn_PPC.sln create mode 100644 csharp/libidn_PPC.suo create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/idn.install create mode 100644 debian/idn.manpages create mode 100644 debian/libidn11-dev.doc-base create mode 100644 debian/libidn11-dev.docs create mode 100644 debian/libidn11-dev.examples create mode 100644 debian/libidn11-dev.info create mode 100644 debian/libidn11-dev.install create mode 100644 debian/libidn11-dev.manpages create mode 100644 debian/libidn11-java.doc-base create mode 100644 debian/libidn11-java.docs create mode 100644 debian/libidn11-java.install create mode 100644 debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile create mode 100644 debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.am create mode 100644 debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.in create mode 100644 debian/libidn11.install create mode 100644 debian/libidn11.postinst create mode 100644 debian/libidn11.postrm create mode 100644 debian/libidn11.shlibs create mode 100755 debian/rules create mode 100644 debian/watch create mode 100644 doc/Makefile create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.gdoc create mode 100644 doc/Makefile.gdoci create mode 100644 doc/Makefile.in create mode 100644 doc/components.fig create mode 100644 doc/cyclo/Makefile create mode 100644 doc/cyclo/Makefile.am create mode 100644 doc/cyclo/Makefile.in create mode 100644 doc/cyclo/cyclo-libidn.html create mode 100644 doc/fdl-1.3.texi create mode 100755 doc/gdoc create mode 100644 doc/gpl-3.0.texi create mode 100644 doc/idn.1 create mode 100644 doc/java/Makefile create mode 100644 doc/java/Makefile.am create mode 100644 doc/java/Makefile.in create mode 100644 doc/lgpl-2.1.texi create mode 100644 doc/libidn-components.eps create mode 100644 doc/libidn-components.pdf create mode 100644 doc/libidn-components.png create mode 100644 doc/libidn.info create mode 100644 doc/libidn.texi create mode 100644 doc/man/idn_free.3 create mode 100644 doc/man/idna_strerror.3 create mode 100644 doc/man/idna_to_ascii_4i.3 create mode 100644 doc/man/idna_to_ascii_4z.3 create mode 100644 doc/man/idna_to_ascii_8z.3 create mode 100644 doc/man/idna_to_ascii_lz.3 create mode 100644 doc/man/idna_to_unicode_44i.3 create mode 100644 doc/man/idna_to_unicode_4z4z.3 create mode 100644 doc/man/idna_to_unicode_8z4z.3 create mode 100644 doc/man/idna_to_unicode_8z8z.3 create mode 100644 doc/man/idna_to_unicode_8zlz.3 create mode 100644 doc/man/idna_to_unicode_lzlz.3 create mode 100644 doc/man/pr29_4.3 create mode 100644 doc/man/pr29_4z.3 create mode 100644 doc/man/pr29_8z.3 create mode 100644 doc/man/pr29_strerror.3 create mode 100644 doc/man/punycode_decode.3 create mode 100644 doc/man/punycode_encode.3 create mode 100644 doc/man/punycode_strerror.3 create mode 100644 doc/man/stringprep.3 create mode 100644 doc/man/stringprep_4i.3 create mode 100644 doc/man/stringprep_4zi.3 create mode 100644 doc/man/stringprep_check_version.3 create mode 100644 doc/man/stringprep_convert.3 create mode 100644 doc/man/stringprep_locale_charset.3 create mode 100644 doc/man/stringprep_locale_to_utf8.3 create mode 100644 doc/man/stringprep_profile.3 create mode 100644 doc/man/stringprep_strerror.3 create mode 100644 doc/man/stringprep_ucs4_nfkc_normalize.3 create mode 100644 doc/man/stringprep_ucs4_to_utf8.3 create mode 100644 doc/man/stringprep_unichar_to_utf8.3 create mode 100644 doc/man/stringprep_utf8_nfkc_normalize.3 create mode 100644 doc/man/stringprep_utf8_to_locale.3 create mode 100644 doc/man/stringprep_utf8_to_ucs4.3 create mode 100644 doc/man/stringprep_utf8_to_unichar.3 create mode 100644 doc/man/tld_check_4.3 create mode 100644 doc/man/tld_check_4t.3 create mode 100644 doc/man/tld_check_4tz.3 create mode 100644 doc/man/tld_check_4z.3 create mode 100644 doc/man/tld_check_8z.3 create mode 100644 doc/man/tld_check_lz.3 create mode 100644 doc/man/tld_default_table.3 create mode 100644 doc/man/tld_get_4.3 create mode 100644 doc/man/tld_get_4z.3 create mode 100644 doc/man/tld_get_table.3 create mode 100644 doc/man/tld_get_z.3 create mode 100644 doc/man/tld_strerror.3 create mode 100644 doc/reference/Makefile create mode 100644 doc/reference/Makefile.am create mode 100644 doc/reference/Makefile.in create mode 100644 doc/reference/html/ch01.html create mode 100644 doc/reference/html/home.png create mode 100644 doc/reference/html/index.html create mode 100644 doc/reference/html/index.sgml create mode 100644 doc/reference/html/left.png create mode 100644 doc/reference/html/libidn-components.png create mode 100644 doc/reference/html/libidn-idn-free.html create mode 100644 doc/reference/html/libidn-idna.html create mode 100644 doc/reference/html/libidn-pr29.html create mode 100644 doc/reference/html/libidn-punycode.html create mode 100644 doc/reference/html/libidn-stringprep.html create mode 100644 doc/reference/html/libidn-tld.html create mode 100644 doc/reference/html/libidn.devhelp create mode 100644 doc/reference/html/libidn.devhelp2 create mode 100644 doc/reference/html/right.png create mode 100644 doc/reference/html/style.css create mode 100644 doc/reference/html/up.png create mode 100644 doc/reference/libidn-docs.sgml create mode 100644 doc/reference/libidn-overrides.txt create mode 100644 doc/reference/libidn-sections.txt create mode 100644 doc/reference/libidn.types create mode 100644 doc/reference/tmpl/idn-free.sgml create mode 100644 doc/reference/tmpl/idna.sgml create mode 100644 doc/reference/tmpl/intprops.sgml create mode 100644 doc/reference/tmpl/libidn-unused.sgml create mode 100644 doc/reference/tmpl/pr29.sgml create mode 100644 doc/reference/tmpl/punycode.sgml create mode 100644 doc/reference/tmpl/stringprep.sgml create mode 100644 doc/reference/tmpl/tld.sgml create mode 100644 doc/reference/tmpl/verify.sgml create mode 100644 doc/specifications/BidiMirroring-3.2.0.txt create mode 100644 doc/specifications/COPYING.UCD create mode 100644 doc/specifications/CaseFolding-3.2.0.txt create mode 100644 doc/specifications/CompositionExclusions-3.2.0.txt create mode 100644 doc/specifications/LineBreak-3.2.0.txt create mode 100644 doc/specifications/Makefile create mode 100644 doc/specifications/Makefile.am create mode 100644 doc/specifications/Makefile.in create mode 100644 doc/specifications/SpecialCasing-3.2.0.txt create mode 100644 doc/specifications/UnicodeData-3.2.0.txt create mode 100644 doc/specifications/rfc3454.txt create mode 100644 doc/stamp-vti create mode 100644 doc/texi/idn-free.c.texi create mode 100644 doc/texi/idn_free.texi create mode 100644 doc/texi/idna.c.texi create mode 100644 doc/texi/idna_strerror.texi create mode 100644 doc/texi/idna_to_ascii_4i.texi create mode 100644 doc/texi/idna_to_ascii_4z.texi create mode 100644 doc/texi/idna_to_ascii_8z.texi create mode 100644 doc/texi/idna_to_ascii_lz.texi create mode 100644 doc/texi/idna_to_unicode_44i.texi create mode 100644 doc/texi/idna_to_unicode_4z4z.texi create mode 100644 doc/texi/idna_to_unicode_8z4z.texi create mode 100644 doc/texi/idna_to_unicode_8z8z.texi create mode 100644 doc/texi/idna_to_unicode_8zlz.texi create mode 100644 doc/texi/idna_to_unicode_lzlz.texi create mode 100644 doc/texi/nfkc.c.texi create mode 100644 doc/texi/pr29.c.texi create mode 100644 doc/texi/pr29_4.texi create mode 100644 doc/texi/pr29_4z.texi create mode 100644 doc/texi/pr29_8z.texi create mode 100644 doc/texi/pr29_strerror.texi create mode 100644 doc/texi/punycode.c.texi create mode 100644 doc/texi/punycode_decode.texi create mode 100644 doc/texi/punycode_encode.texi create mode 100644 doc/texi/punycode_strerror.texi create mode 100644 doc/texi/strerror-idna.c.texi create mode 100644 doc/texi/strerror-pr29.c.texi create mode 100644 doc/texi/strerror-punycode.c.texi create mode 100644 doc/texi/strerror-stringprep.c.texi create mode 100644 doc/texi/strerror-tld.c.texi create mode 100644 doc/texi/stringprep.c.texi create mode 100644 doc/texi/stringprep.texi create mode 100644 doc/texi/stringprep_4i.texi create mode 100644 doc/texi/stringprep_4zi.texi create mode 100644 doc/texi/stringprep_check_version.texi create mode 100644 doc/texi/stringprep_convert.texi create mode 100644 doc/texi/stringprep_locale_charset.texi create mode 100644 doc/texi/stringprep_locale_to_utf8.texi create mode 100644 doc/texi/stringprep_profile.texi create mode 100644 doc/texi/stringprep_strerror.texi create mode 100644 doc/texi/stringprep_ucs4_nfkc_normalize.texi create mode 100644 doc/texi/stringprep_ucs4_to_utf8.texi create mode 100644 doc/texi/stringprep_unichar_to_utf8.texi create mode 100644 doc/texi/stringprep_utf8_nfkc_normalize.texi create mode 100644 doc/texi/stringprep_utf8_to_locale.texi create mode 100644 doc/texi/stringprep_utf8_to_ucs4.texi create mode 100644 doc/texi/stringprep_utf8_to_unichar.texi create mode 100644 doc/texi/tld.c.texi create mode 100644 doc/texi/tld_check_4.texi create mode 100644 doc/texi/tld_check_4t.texi create mode 100644 doc/texi/tld_check_4tz.texi create mode 100644 doc/texi/tld_check_4z.texi create mode 100644 doc/texi/tld_check_8z.texi create mode 100644 doc/texi/tld_check_lz.texi create mode 100644 doc/texi/tld_default_table.texi create mode 100644 doc/texi/tld_get_4.texi create mode 100644 doc/texi/tld_get_4z.texi create mode 100644 doc/texi/tld_get_table.texi create mode 100644 doc/texi/tld_get_z.texi create mode 100644 doc/texi/tld_strerror.texi create mode 100644 doc/texi/toutf8.c.texi create mode 100644 doc/texi/version.c.texi create mode 100644 doc/texinfo.css create mode 100644 doc/tld/Makefile create mode 100644 doc/tld/Makefile.am create mode 100644 doc/tld/Makefile.in create mode 100644 doc/tld/README create mode 100644 doc/tld/fr.tld create mode 100644 doc/tld/no.tld create mode 100644 doc/version.texi create mode 100644 examples/Makefile.am create mode 100644 examples/Makefile.in create mode 100644 examples/README create mode 100644 examples/example.c create mode 100644 examples/example2.c create mode 100644 examples/example3.c create mode 100644 examples/example4.c create mode 100644 examples/example5.c create mode 100644 gl/Makefile.am create mode 100644 gl/Makefile.in create mode 100644 gl/errno.in.h create mode 100644 gl/error.c create mode 100644 gl/error.h create mode 100644 gl/getopt.c create mode 100644 gl/getopt.in.h create mode 100644 gl/getopt1.c create mode 100644 gl/getopt_int.h create mode 100644 gl/gettext.h create mode 100644 gl/intprops.h create mode 100644 gl/m4/00gnulib.m4 create mode 100644 gl/m4/autobuild.m4 create mode 100644 gl/m4/csharp.m4 create mode 100644 gl/m4/csharpcomp.m4 create mode 100644 gl/m4/errno_h.m4 create mode 100644 gl/m4/error.m4 create mode 100644 gl/m4/extensions.m4 create mode 100644 gl/m4/getopt.m4 create mode 100644 gl/m4/gnulib-cache.m4 create mode 100644 gl/m4/gnulib-common.m4 create mode 100644 gl/m4/gnulib-comp.m4 create mode 100644 gl/m4/include_next.m4 create mode 100644 gl/m4/manywarnings.m4 create mode 100644 gl/m4/pmccabe2html.m4 create mode 100644 gl/m4/stdarg.m4 create mode 100644 gl/m4/strerror.m4 create mode 100644 gl/m4/string_h.m4 create mode 100644 gl/m4/unistd_h.m4 create mode 100644 gl/m4/version-etc.m4 create mode 100644 gl/m4/warnings.m4 create mode 100644 gl/progname.c create mode 100644 gl/progname.h create mode 100644 gl/stdarg.in.h create mode 100644 gl/strerror.c create mode 100644 gl/string.in.h create mode 100644 gl/unistd.in.h create mode 100644 gl/version-etc.c create mode 100644 gl/version-etc.h create mode 100644 gltests/Makefile.am create mode 100644 gltests/Makefile.in create mode 100644 gltests/test-errno.c create mode 100644 gltests/test-strerror.c create mode 100644 gltests/test-string.c create mode 100644 gltests/test-unistd.c create mode 100755 gltests/test-vc-list-files-cvs.sh create mode 100755 gltests/test-vc-list-files-git.sh create mode 100644 gtk-doc.make create mode 100644 java/Makefile create mode 100644 java/Makefile.am create mode 100644 java/Makefile.in create mode 100644 java/gnu/Makefile create mode 100644 java/gnu/Makefile.am create mode 100644 java/gnu/Makefile.in create mode 100644 java/gnu/inet/Makefile create mode 100644 java/gnu/inet/Makefile.am create mode 100644 java/gnu/inet/Makefile.in create mode 100644 java/gnu/inet/encoding/CombiningClass.java create mode 100644 java/gnu/inet/encoding/Composition.java create mode 100644 java/gnu/inet/encoding/DecompositionKeys.java create mode 100644 java/gnu/inet/encoding/DecompositionMappings.java create mode 100644 java/gnu/inet/encoding/IDNA.java create mode 100644 java/gnu/inet/encoding/IDNAException.java create mode 100644 java/gnu/inet/encoding/Makefile create mode 100644 java/gnu/inet/encoding/Makefile.am create mode 100644 java/gnu/inet/encoding/Makefile.in create mode 100644 java/gnu/inet/encoding/NFKC.java create mode 100644 java/gnu/inet/encoding/Punycode.java create mode 100644 java/gnu/inet/encoding/PunycodeException.java create mode 100644 java/gnu/inet/encoding/RFC3454.java create mode 100644 java/gnu/inet/encoding/Stringprep.java create mode 100644 java/gnu/inet/encoding/StringprepException.java create mode 100644 java/libidn-1.15.jar create mode 100644 java/misc/GenerateNFKC.java create mode 100644 java/misc/GenerateRFC3454.java create mode 100644 java/misc/Makefile create mode 100644 java/misc/Makefile.am create mode 100644 java/misc/Makefile.in create mode 100644 java/misc/TestIDNA.java create mode 100644 java/misc/TestNFKC.java create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100755 lib/gen-stringprep-tables.pl create mode 100755 lib/gen-tld-tables.pl create mode 100755 lib/gen-unicode-tables.pl create mode 100644 lib/gl/Makefile.am create mode 100644 lib/gl/Makefile.in create mode 100644 lib/gl/c-ctype.c create mode 100644 lib/gl/c-ctype.h create mode 100644 lib/gl/c-strcase.h create mode 100644 lib/gl/c-strcasecmp.c create mode 100644 lib/gl/c-strncasecmp.c create mode 100644 lib/gl/gettext.h create mode 100644 lib/gl/iconv.in.h create mode 100644 lib/gl/iconv_open-aix.gperf create mode 100644 lib/gl/iconv_open-aix.h create mode 100644 lib/gl/iconv_open-hpux.gperf create mode 100644 lib/gl/iconv_open-hpux.h create mode 100644 lib/gl/iconv_open-irix.gperf create mode 100644 lib/gl/iconv_open-irix.h create mode 100644 lib/gl/iconv_open-osf.gperf create mode 100644 lib/gl/iconv_open-osf.h create mode 100644 lib/gl/iconv_open.c create mode 100644 lib/gl/m4/gnulib-cache.m4 create mode 100644 lib/gl/m4/gnulib-comp.m4 create mode 100644 lib/gl/m4/iconv_h.m4 create mode 100644 lib/gl/m4/iconv_open.m4 create mode 100644 lib/gl/m4/ld-output-def.m4 create mode 100644 lib/gl/m4/ld-version-script.m4 create mode 100644 lib/gl/m4/locale-fr.m4 create mode 100644 lib/gl/m4/locale-tr.m4 create mode 100644 lib/gl/m4/multiarch.m4 create mode 100644 lib/gl/m4/stdbool.m4 create mode 100644 lib/gl/m4/stdint.m4 create mode 100644 lib/gl/m4/strverscmp.m4 create mode 100644 lib/gl/m4/wchar.m4 create mode 100644 lib/gl/stdbool.in.h create mode 100644 lib/gl/stdint.in.h create mode 100644 lib/gl/striconv.c create mode 100644 lib/gl/striconv.h create mode 100644 lib/gl/string.in.h create mode 100644 lib/gl/strverscmp.c create mode 100644 lib/gl/wchar.in.h create mode 100644 lib/gltests/Makefile.am create mode 100644 lib/gltests/Makefile.in create mode 100644 lib/gltests/dummy.c create mode 100644 lib/gltests/intprops.h create mode 100644 lib/gltests/test-c-ctype.c create mode 100755 lib/gltests/test-c-strcase.sh create mode 100644 lib/gltests/test-c-strcasecmp.c create mode 100644 lib/gltests/test-c-strncasecmp.c create mode 100644 lib/gltests/test-iconv.c create mode 100644 lib/gltests/test-stdbool.c create mode 100644 lib/gltests/test-stdint.c create mode 100644 lib/gltests/test-striconv.c create mode 100644 lib/gltests/test-string.c create mode 100644 lib/gltests/test-strverscmp.c create mode 100644 lib/gltests/test-wchar.c create mode 100644 lib/gltests/verify.h create mode 100644 lib/gunibreak.h create mode 100644 lib/gunicomp.h create mode 100644 lib/gunidecomp.h create mode 100644 lib/idn-free.c create mode 100644 lib/idn-free.h create mode 100644 lib/idna.c create mode 100644 lib/idna.h create mode 100644 lib/libidn.map create mode 100644 lib/nfkc.c create mode 100644 lib/pr29.c create mode 100644 lib/pr29.h create mode 100644 lib/profiles.c create mode 100644 lib/punycode.c create mode 100644 lib/punycode.h create mode 100644 lib/rfc3454.c create mode 100644 lib/strerror-idna.c create mode 100644 lib/strerror-pr29.c create mode 100644 lib/strerror-punycode.c create mode 100644 lib/strerror-stringprep.c create mode 100644 lib/strerror-tld.c create mode 100644 lib/stringprep.c create mode 100644 lib/stringprep.h create mode 100644 lib/tld.c create mode 100644 lib/tld.h create mode 100644 lib/tlds.c create mode 100644 lib/toutf8.c create mode 100644 lib/version.c create mode 100644 libc/README create mode 100644 libc/example.c create mode 100644 libc/getaddrinfo-idn.txt create mode 100644 libidn.pc.in create mode 100644 m4/ac_prog_jar.m4 create mode 100644 m4/codeset.m4 create mode 100644 m4/gettext.m4 create mode 100644 m4/gtk-doc.m4 create mode 100644 m4/iconv.m4 create mode 100644 m4/intlmacosx.m4 create mode 100644 m4/lib-ld.m4 create mode 100644 m4/lib-link.m4 create mode 100644 m4/lib-prefix.m4 create mode 100644 m4/libtool.m4 create mode 100644 m4/longlong.m4 create mode 100644 m4/ltoptions.m4 create mode 100644 m4/ltsugar.m4 create mode 100644 m4/ltversion.m4 create mode 100644 m4/lt~obsolete.m4 create mode 100644 m4/nls.m4 create mode 100644 m4/pkg.m4 create mode 100644 m4/po.m4 create mode 100644 m4/progtest.m4 create mode 100644 m4/update-header-version.m4 create mode 100644 m4/valgrind.m4 create mode 100644 m4/visibility.m4 create mode 100644 m4/wchar_t.m4 create mode 100644 m4/wint_t.m4 create mode 100644 maint.mk create mode 100644 packaging/libidn.manifest create mode 100644 packaging/libidn.spec create mode 100644 po/LINGUAS create mode 100644 po/Makefile.in.in create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/Rules-quot create mode 100644 po/boldquot.sed create mode 100644 po/cs.gmo create mode 100644 po/cs.po create mode 100644 po/da.gmo create mode 100644 po/da.po create mode 100644 po/de.gmo create mode 100644 po/de.po create mode 100644 po/en@boldquot.gmo create mode 100644 po/en@boldquot.header create mode 100644 po/en@boldquot.po create mode 100644 po/en@quot.gmo create mode 100644 po/en@quot.header create mode 100644 po/en@quot.po create mode 100644 po/eo.gmo create mode 100644 po/eo.po create mode 100644 po/fi.gmo create mode 100644 po/fi.po create mode 100644 po/fr.gmo create mode 100644 po/fr.po create mode 100644 po/id.gmo create mode 100644 po/id.po create mode 100644 po/insert-header.sin create mode 100644 po/it.gmo create mode 100644 po/it.po create mode 100644 po/ja.gmo create mode 100644 po/ja.po create mode 100644 po/libidn.pot create mode 100644 po/nl.gmo create mode 100644 po/nl.po create mode 100644 po/pl.gmo create mode 100644 po/pl.po create mode 100644 po/quot.sed create mode 100644 po/remove-potcdate.sin create mode 100644 po/ro.gmo create mode 100644 po/ro.po create mode 100644 po/sr.gmo create mode 100644 po/sr.po create mode 100644 po/stamp-po create mode 100644 po/vi.gmo create mode 100644 po/vi.po create mode 100644 po/zh_CN.gmo create mode 100644 po/zh_CN.po create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/idn.c create mode 100644 src/idn.ggo create mode 100644 src/idn_cmd.c create mode 100644 src/idn_cmd.h create mode 100644 src/idna.el create mode 100644 src/punycode.el create mode 100644 tests/Makefile.am create mode 100644 tests/Makefile.in create mode 100644 tests/tst_idna.c create mode 100644 tests/tst_idna2.c create mode 100644 tests/tst_nfkc.c create mode 100644 tests/tst_pr29.c create mode 100644 tests/tst_punycode.c create mode 100644 tests/tst_strerror.c create mode 100644 tests/tst_stringprep.c create mode 100644 tests/tst_tld.c create mode 100644 tests/tst_toutf8.c create mode 100644 tests/utils.c create mode 100644 tests/utils.h create mode 100644 win32/include/ac-stdint.h create mode 100644 win32/include/config.h create mode 100644 win32/include/idn-int.h create mode 100644 win32/include/stdbool.h create mode 100644 win32/include/unistd.h create mode 100644 win32/libidn.sln create mode 100644 win32/libidn.vcproj diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..83bc72e --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1068 @@ +1 Notes 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 free software 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 on translations can 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. + +1.1 Quick configuration advice +============================== + +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, message inheritance, automatic +charset conversion or plural form handling) 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'. + +1.2 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 already +provides the GNU `gettext' functions. If not, the included GNU +`gettext' 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 --disable-nls + +will, respectively, bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, 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 not be 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. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages usually have 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. + +1.3 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 +`LL_CC' combination. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. Here `LL' is an ISO 639 two-letter language code, and +`CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.4 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. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://translationproject.org/', in the "Teams" area. + + 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 `coordinator@translationproject.org' 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 skills are praised more than +programming skills, here. + +1.5 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of November +2007. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo + +----------------------------------------------------+ + Compendium | [] [] [] [] | + a2ps | [] [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | [] | + ap-utils | | + aspell | [] [] [] [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] | + bison-runtime | [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] [] | + console-tools | [] [] | + coreutils | [] [] [] [] | + cpio | | + cpplib | [] [] [] | + cryptonit | [] | + dialog | | + diffutils | [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + fetchmail | [] [] () [] [] | + findutils | [] | + findutils_stable | [] [] [] | + flex | [] [] [] | + fslint | | + gas | | + gawk | [] [] [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gip | [] | + gliv | [] [] | + glunarclock | [] | + gmult | [] [] | + gnubiff | () | + gnucash | [] [] () () [] | + gnuedu | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | | + gpe-edit | [] | + gpe-filemanager | | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-package | | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | | + gramadoir | [] [] | + grep | [] [] | + gretl | () | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | () | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] | + indent | [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | [] | + jtag | | + jwhois | | + kbd | [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | () | + ld | [] | + leafpad | [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | | + libiconv | [] [] | + libidn | [] [] [] | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] | + man-db | [] [] [] | + minicom | [] [] [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] | + pwdutils | | + qof | | + radius | [] | + recode | [] [] [] [] [] [] | + rpm | [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] | + shared-mime-info | [] [] [] [] () [] [] [] | + sharutils | [] [] [] [] [] [] | + shishi | | + skencil | [] () | + solfege | | + soundtracker | [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] | + texinfo | [] [] [] | + tin | () () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] | + xpad | [] [] [] | + +----------------------------------------------------+ + af am ar az be bg bs ca cs cy da de el en en_GB eo + 6 0 2 1 8 26 2 40 48 2 56 88 15 1 15 18 + + es et eu fa fi fr ga gl gu he hi hr hu id is it + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | [] [] [] () | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] [] | + aspell | [] [] [] | + bash | [] | + bfd | [] [] | + bibshelf | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + cflow | [] | + clisp | [] [] | + console-tools | | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cpplib | [] [] | + cryptonit | [] | + dialog | [] [] [] | + diffutils | [] [] [] [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + fetchmail | [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] | + flex | [] [] [] | + fslint | | + gas | [] [] | + gawk | [] [] [] [] () | + gcal | [] [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] | + gliv | () | + glunarclock | [] [] [] | + gmult | [] [] [] | + gnubiff | () () | + gnucash | () () () | + gnuedu | [] | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | | + gpe-clock | [] [] [] [] | + gpe-conf | [] | + gpe-contacts | [] [] | + gpe-edit | [] [] [] [] | + gpe-filemanager | [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] [] | + gpsdrive | [] | + gramadoir | [] [] | + grep | [] [] [] | + gretl | [] [] [] () | + gsasl | [] [] | + gss | [] [] | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] | + jpilot | [] [] | + jtag | [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] | + keytouch-editor | [] | + keytouch-keyboa... | [] [] | + latrine | [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | [] | + libgpewidget | [] [] [] [] [] | + libgpg-error | [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] | + libiconv | [] [] [] | + libidn | [] [] | + lifelines | () | + lilypond | [] [] [] | + lingoteach | [] [] [] | + lprng | | + lynx | [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] | + man-db | [] | + minicom | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | | + qof | [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] | + soundtracker | [] [] [] | + sp | [] | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + tin | [] () | + tuxpaint | [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] [] [] [] | + util-linux-ng | [] [] [] [] [] [] [] | + vorbis-tools | | + wastesedge | () | + wdiff | [] [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + es et eu fa fi fr ga gl gu he hi hr hu id is it + 85 22 14 2 48 101 61 12 2 8 2 6 53 29 1 52 + + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + +--------------------------------------------------+ + Compendium | [] | + a2ps | () [] [] | + aegis | () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | [] | + aspell | [] [] | + bash | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] [] | + bison-runtime | [] [] [] | + bluez-pin | [] [] [] | + cflow | | + clisp | [] | + console-tools | | + coreutils | [] | + cpio | [] | + cpplib | [] | + cryptonit | [] | + dialog | [] [] | + diffutils | [] [] [] | + doodle | | + e2fsprogs | [] | + enscript | [] | + fetchmail | [] [] | + findutils | [] | + findutils_stable | [] | + flex | [] [] | + fslint | | + gas | | + gawk | [] [] | + gcal | | + gcc | | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gip | [] [] | + gliv | [] | + glunarclock | [] [] | + gmult | [] [] [] | + gnubiff | | + gnucash | () () () | + gnuedu | | + gnulib | [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] | + gpe-clock | [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] | + gphoto2 | [] [] | + gprof | [] | + gpsdrive | [] | + gramadoir | () | + grep | [] [] | + gretl | | + gsasl | [] | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] | + gtick | [] | + gtkam | [] [] | + gtkorphan | [] | + gtkspell | [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] | + herrie | [] | + hylafax | | + idutils | [] | + indent | [] [] | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | () () | + jtag | | + jwhois | [] | + kbd | [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | | + latrine | [] | + ld | | + leafpad | [] [] | + libc | [] [] [] | + libexif | | + libextractor | | + libgpewidget | [] | + libgpg-error | | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] | + libidn | [] [] | + lifelines | [] | + lilypond | [] | + lingoteach | [] | + lprng | | + lynx | [] [] | + m4 | [] [] | + mailfromd | | + mailutils | | + make | [] [] [] | + man-db | | + minicom | [] | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pilot-qof | | + popt | [] [] [] | + psmisc | [] [] [] | + pwdutils | | + qof | | + radius | | + recode | [] | + rpm | [] [] | + screem | [] | + scrollkeeper | [] [] [] [] | + sed | [] [] | + shared-mime-info | [] [] [] [] [] [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | () () | + soundtracker | | + sp | () | + system-tools-ba... | [] [] [] [] | + tar | [] [] [] | + texinfo | [] [] | + tin | | + tuxpaint | () [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] | + util-linux-ng | [] [] | + vorbis-tools | | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] | + xchat | [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn + 51 2 25 3 2 0 6 0 2 2 20 0 11 1 103 6 + + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + +--------------------------------------------------+ + Compendium | [] [] [] [] [] | + a2ps | () [] [] [] [] [] [] | + aegis | () () | + ant-phone | [] [] | + anubis | [] [] [] | + ap-utils | () | + aspell | [] [] [] | + bash | [] [] | + bfd | | + bibshelf | [] | + binutils | [] [] | + bison | [] [] [] [] [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] [] | + cflow | [] | + clisp | [] | + console-tools | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cpplib | [] | + cryptonit | [] [] | + dialog | [] | + diffutils | [] [] [] [] [] [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] | + findutils_stable | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + fslint | [] | + gas | | + gawk | [] [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gip | [] [] [] [] | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] [] | + gmult | [] [] [] [] | + gnubiff | () [] | + gnucash | () [] | + gnuedu | | + gnulib | [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] [] [] [] [] [] [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] [] [] [] [] [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + gretl | [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] | + gutenprint | [] | + hello | [] [] [] [] [] [] [] [] | + herrie | [] [] [] | + hylafax | | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] | + jpilot | | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + latrine | | + ld | [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] | + libextractor | [] [] | + libgpewidget | [] [] [] [] [] [] [] [] | + libgpg-error | [] [] [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] | + libidn | [] [] () | + lifelines | [] [] | + lilypond | | + lingoteach | [] | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] | + make | [] [] [] [] | + man-db | [] [] [] [] | + minicom | [] [] [] [] [] | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] | + pilot-qof | | + popt | [] [] [] [] | + psmisc | [] [] | + pwdutils | [] [] | + qof | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + rpm | [] [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] [] | + solfege | [] | + soundtracker | [] [] | + sp | | + system-tools-ba... | [] [] [] [] [] [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | () | + tuxpaint | [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + util-linux-ng | [] [] [] [] | + vorbis-tools | [] | + wastesedge | | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + xpad | [] [] [] | + +--------------------------------------------------+ + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta + 0 5 77 31 53 4 58 72 3 45 46 9 45 122 3 + + tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + +---------------------------------------------------+ + Compendium | [] [] [] [] | 19 + a2ps | [] [] [] | 19 + aegis | [] | 1 + ant-phone | [] [] | 6 + anubis | [] [] [] | 11 + ap-utils | () [] | 4 + aspell | [] [] [] | 16 + bash | [] | 6 + bfd | | 2 + bibshelf | [] | 7 + binutils | [] [] [] [] | 9 + bison | [] [] [] [] | 20 + bison-runtime | [] [] [] [] | 18 + bluez-pin | [] [] [] [] [] [] | 28 + cflow | [] [] | 5 + clisp | | 9 + console-tools | [] [] | 5 + coreutils | [] [] [] | 18 + cpio | [] [] [] [] | 11 + cpplib | [] [] [] [] [] | 12 + cryptonit | [] | 6 + dialog | [] [] [] | 9 + diffutils | [] [] [] [] [] | 29 + doodle | [] | 6 + e2fsprogs | [] [] | 10 + enscript | [] [] [] | 16 + fetchmail | [] [] | 12 + findutils | [] [] [] | 11 + findutils_stable | [] [] [] [] | 18 + flex | [] [] | 15 + fslint | [] | 2 + gas | [] | 3 + gawk | [] [] [] | 16 + gcal | [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] | 29 + gettext-runtime | [] [] [] [] [] [] | 28 + gettext-tools | [] [] [] [] [] | 20 + gip | [] [] | 13 + gliv | [] [] | 11 + glunarclock | [] [] [] | 15 + gmult | [] [] [] [] | 16 + gnubiff | [] | 2 + gnucash | () [] | 5 + gnuedu | [] | 2 + gnulib | [] | 10 + gnunet | | 0 + gnunet-gtk | [] [] | 3 + gnutls | | 4 + gpe-aerial | [] [] | 14 + gpe-beam | [] [] | 14 + gpe-calendar | [] [] | 7 + gpe-clock | [] [] [] [] | 21 + gpe-conf | [] [] [] | 16 + gpe-contacts | [] [] | 10 + gpe-edit | [] [] [] [] [] | 22 + gpe-filemanager | [] [] | 7 + gpe-go | [] [] [] [] | 19 + gpe-login | [] [] [] [] [] | 21 + gpe-ownerinfo | [] [] [] [] | 21 + gpe-package | [] | 6 + gpe-sketchbook | [] [] | 16 + gpe-su | [] [] [] [] | 21 + gpe-taskmanager | [] [] [] [] | 21 + gpe-timesheet | [] [] [] [] | 18 + gpe-today | [] [] [] [] [] | 21 + gpe-todo | [] [] | 8 + gphoto2 | [] [] [] [] | 21 + gprof | [] [] | 13 + gpsdrive | [] | 5 + gramadoir | [] | 7 + grep | [] | 12 + gretl | | 6 + gsasl | [] [] [] | 9 + gss | [] | 7 + gst-plugins-bad | [] [] [] | 13 + gst-plugins-base | [] [] | 11 + gst-plugins-good | [] [] [] [] [] | 16 + gst-plugins-ugly | [] [] [] | 13 + gstreamer | [] [] [] | 18 + gtick | [] [] | 7 + gtkam | [] | 16 + gtkorphan | [] | 7 + gtkspell | [] [] [] [] [] [] | 27 + gutenprint | | 4 + hello | [] [] [] [] [] | 38 + herrie | [] [] | 8 + hylafax | | 0 + idutils | [] [] | 15 + indent | [] [] [] [] [] | 28 + iso_15924 | [] [] | 4 + iso_3166 | [] [] [] [] [] [] [] [] [] | 54 + iso_3166_2 | [] [] | 4 + iso_4217 | [] [] [] [] [] | 24 + iso_639 | [] [] [] [] [] | 26 + jpilot | [] [] [] [] | 7 + jtag | [] | 3 + jwhois | [] [] [] | 13 + kbd | [] [] [] | 13 + keytouch | [] | 8 + keytouch-editor | [] | 5 + keytouch-keyboa... | [] | 5 + latrine | [] [] | 5 + ld | [] [] [] [] | 10 + leafpad | [] [] [] [] [] | 24 + libc | [] [] [] | 19 + libexif | [] | 5 + libextractor | [] | 5 + libgpewidget | [] [] [] | 20 + libgpg-error | [] | 6 + libgphoto2 | [] [] | 9 + libgphoto2_port | [] [] [] | 11 + libgsasl | [] | 8 + libiconv | [] [] | 11 + libidn | [] [] | 11 + lifelines | | 4 + lilypond | [] | 6 + lingoteach | [] | 6 + lprng | [] | 2 + lynx | [] [] [] | 15 + m4 | [] [] [] | 18 + mailfromd | [] [] | 3 + mailutils | [] [] | 8 + make | [] [] [] | 20 + man-db | [] | 9 + minicom | [] | 14 + nano | [] [] [] | 20 + opcodes | [] [] | 10 + parted | [] [] [] | 11 + pilot-qof | [] | 1 + popt | [] [] [] [] | 18 + psmisc | [] [] | 10 + pwdutils | [] | 3 + qof | [] | 4 + radius | [] [] | 7 + recode | [] [] [] | 25 + rpm | [] [] [] [] | 13 + screem | [] | 2 + scrollkeeper | [] [] [] [] | 26 + sed | [] [] [] [] | 23 + shared-mime-info | [] [] [] | 29 + sharutils | [] [] [] | 23 + shishi | [] | 3 + skencil | [] | 7 + solfege | [] | 3 + soundtracker | [] [] | 9 + sp | [] | 3 + system-tools-ba... | [] [] [] [] [] [] [] | 38 + tar | [] [] [] | 17 + texinfo | [] [] [] | 15 + tin | | 1 + tuxpaint | [] [] [] | 19 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] [] | 20 + util-linux-ng | [] [] [] | 20 + vorbis-tools | [] [] | 4 + wastesedge | | 1 + wdiff | [] [] | 23 + wget | [] [] [] | 20 + xchat | [] [] [] [] | 29 + xkeyboard-config | [] [] [] | 14 + xpad | [] [] [] | 15 + +---------------------------------------------------+ + 76 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu + 163 domains 0 3 1 74 51 0 143 21 1 57 7 45 0 2036 + + 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 November 2007 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. The most +up-to-date matrix with full percentage details can be found at +`http://translationproject.org/extra/matrix.html'. + +1.6 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..23fd350 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,496 @@ +Libidn AUTHORS -- Information about the authors. +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +Simon Josefsson +Designed and implemented libidn. + +Thomas Jacob +Contributed TLD support. + +Oliver Hitz +Contributed Java implementation. + +Alexander Gnauck +Contributed C# port. + +Adam Strzelecki +Contributed Windows Visual Studio project files. + +-----BEGIN PGP PUBLIC KEY BLOCK----- +URL: http://josefsson.org/key.txt +Comment: This 0xB565716F key is used to sign releases of Libidn. + +mKsEPNUHKwEFALqJSBHn6Qk5ex138kwymxA3idCFoTi5Q6mVooEVVaYVfeDG+5uV +T5rhTFDfDcT9SO0eIlfKOraSRnVEHyDDH2PAgJFxyneFELcmLUQ66D+m8z+ziGro +6bcDSBBDMRkHIX6/kH/vnevjqivIld+j8WTcVX+SArcKyzgQ58uMTrfQdLqzh6D9 +sE/838+ZPZkabmKKWMVWccoaUbWGYOcNwO0ABim0JVNpbW9uIEpvc2Vmc3NvbiA8 +c2ltb25Aam9zZWZzc29uLm9yZz6I+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgEC +F4AiGGRuczpzaW1vbi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCSGH5iQUJDRh0 +XgAKCRDtoh6UtWVxb3QMBQCLIUgX2OGZ+AUH2qdYEyI43Ecv7/2wZzTH/IDF5H5t +RS0wGmpzvp/pR7EzRKz7WhH8fHco7xIPsJjm2qgCWKEe+aVwRWyynYjfz9U6eVnf +wtLfnE09nWrc9jy+VxSgDEZKPa0k/AtTFjoq4h/GpHOlOjPtVcv3WHDtk39w8a1w +y0xcq5H1faERDLERWbulvD+1E+e/BKYp/7E2GAOtfSFziEYEExECAAYFAj1Y8sIA +CgkQV5Mp08AbKiJmNwCgkgjjuS5TcZq4rVBWNYu1VwQlJWYAoJZf+pBNBvzT9xOg +Hcs1cAMwT4FHiEwEExECAAwFAj1esHUFgwFXijYACgkQvLvElXGKklZXlwCfTWSl +L2/3q5Od3zBVMKVHgpTo4asAnAtw7vVEIwp9pPuy1oKjTB/obqltiEYEExECAAYF +AkEAyoIACgkQntdYP8FOsoK0XQCfRN1QBVk7/eu4YbFQBqH463dcHx4AoMp2QurM +RXFDImswJ1Wi9K65dq66iEYEExECAAYFAkD/P4YACgkQlv+ZxCXA7Au9KACfYKMn +MPmlbZDi5/Le4mcLCUlQ+SsAn2qOQ14l/ellraqWXbvacCJkOyNpiEwEEhECAAwF +AkDgVz0FgwCTtOwACgkQyIHdR0rnq0csrwCgtL27/ndpjew28bGVYU9tBmIg2GUA +oKFFKKHvJB2pVjRkRL4DjohSdIrkiEYEExECAAYFAkJJAYsACgkQj8NyXz1o1joW +fwCgtb8mtlI8rg52vT5DRU+Ct3NuDfEAoL7IX823ezbe7HVegheirf3q7zmKiKIE +EAECAAwFAkJG+cEFgwDmsQ4ACgkQv9buWFf3fwmuCwQAtAopBWKTnll1t4lFnR+C +mvXdqui6g/MhMVjGlnGaxzKfdlXIDT3i6VEMQk639rCLUxNB5YiQZZm7aABg1dwt +f10mFQUkm9dt4d852cu6ytmljXLJ4NIQFrhZQUrxvh8s8j41oN/hcwyLaX+FLI0G +6Jehz0m0nPlEQf0sJ/4oCuqITAQTEQIADAUCQklECgWDABPOSgAKCRBmvnH/Z0ho +g9kYAJ0QKz8Gt/kc7Q9Y/Ahh/wZO6vaQ9QCggcgpRYoJ6g1QXYWdTO/Hxve4Lu+I +TAQQEQIADAUCQk2CtQWDAOAoGgAKCRA7jqQfgvYSQDh8AJ43bDTlK1p/aLXxJ2/1 +pFrHWFvncACgvVli4V9P6pVhP9p+H3APtQ+URVSJASIEEwECAAwFAkJhOZ0FgwDM +cTIACgkQC3gy83PWLUFxowf/YLAopAmpU94kKSC4ECFsLXDivJ4LCOxgqZ0u7Fgi +QgwWK1miJJnW9gME5vE/jMHlsjGwUKJDC3SfbgjOJj31ivrGIh4od8+zU0bwlwoJ +ppDF/5cbzBheUiCsz+BVBZs8ii4OahnoELUzXbyVZITkMztmn/2+7DYXqqf1tCTy +wIR/hQzFp6W7GNT/I73Ksz/cKop4jzxE5whkl+5NMBk9VYhfa2X49/S65nwXg4ii +BPQN0UrhN0ZvrF+uKX6oVlOX+30CrPyT8FkcRk1AOhUpqblk2M2DblOebgxfF1ZV +jXNNN/0fZhy4iTbYSggndO5PIybKMkMogVtO07F/8lvtC4hMBBMRAgAMBQJC2LCN +BYMAVPpCAAoJEBhZ0B9ne6Hs7fEAn145gLDePrbxrfwN2dG5+IuvpvtYAJ4oRmRy +hxwpwahGE+5281z2VTrQ9YhMBBMRAgAMBQJC2LCxBYMAVPoeAAoJEIHC9+viE7aS +7sAAnRYuXokAy66xi04YD1ODtssYFw7nAJ4lqshFVn7NR5yznu0tioYLFwyc54hM +BBMRAgAMBQJC2LDRBYMAVPn+AAoJEGtw7Nldw/Rz2iEAoJFrzoYjkR5ANZYbeX/o +zQecQCmAAJwNCoPySmaxrwO6BiUd11bO80bPxYkCIgQTAQIADAUCQtiw8QWDAFT5 +3gAKCRCq4+bOZqFEaF90D/9xV8ua/ezhWOu5ADgHE1yeWMWQsecIx9TA5QVQg8pp +jA3E2REe/lJbCweVhwfvSmuvuymRQw71cIdmqF1dz9R8mb62N1r07DcPxibhtHi4 +poENxIHqvEbtOR17Y6Ql4DW4PjK1ut9y2y58HK6XTiqCtbg43jEcbXk1r9qLJl2L +gopYJQ1KJCwfn+DCVadRA2FgVclMGUGIdiiTwp12+E/70oYoMzLwm+7MUgbJUpRL +ytsc5frhT91iX2lPoeylAHAQ0681WiawvexlqtAPto9Gjbtnw32oSOqIJcbbMhN8 +G87pkvBhk5wXfVM7kyutBFhIHcQFGeuGkZpgeXt40NcUJffn+KOfeXzgdQwmwNlo +9K0arxNpIukgugvVeNtsKj1gtW7IkYcLmvlDyShz/cytguNEU+1W0ZeG73Tjphs8 +mCSlCKVcNWcy2l7z/DvB3VPibac525/Sw1ZIq7DShRHHv8x02/658LEW7gSvvZ4j +3yuZSNgL2lgPzaYoQo+8ysHK9dqViVBXAHIwVZTmXptb5zxQcHtFUnR51IDSAfBG +d7gjU5NJNfKKngLjDJy56nmJGMw/+13F5XFcjGPC9t6ZKoQud712K8TRIczWgGMn +gkahyTl4KIwPxVzWnUN0IkcsO/5yO3JudWzzYB6r1QomCSAAA+uirstJwVtBWsCA +54hGBBARAgAGBQJC8krrAAoJEG74r8KGV0rKoI4An0CQA/3wPCxskfqLhvN69ViN +c9GhAJwMR5Nl4q7Y4c5j9BOG+9Yxaom2OYhMBBMRAgAMBQJC8cBwBYMAO+pfAAoJ +ECmqKFIzPnwjCzsAmgIwd1uJC2Ka3bIgTCJukFjCcdWRAJ47P2tLKEcvatuPnnPT +yWYuXGTBqIhGBBARAgAGBQJD+NOYAAoJEOFd2FexXDfRRVoAnj+kNh2yJiIAI9JE +Vccgdv8cdElgAJ9jZHFa4KIdIsdGQZ5G4qS0YkHwKojYBBMBAgAiAhsDBAsHAwID +FQIDAxYCAQIeAQIXgAUCPr1HRAUJAtWOGQAKCRDtoh6UtWVxb3F2BP9Whe+ArZn6 +WlbpHF+37Rqr+KmXL2fLI0b+phneaieRvACsOmPD3jDpvxz/xVf8s49SJ2+a23Ia +iCA8Boyws9sBxn5N+yWhdYYjfDbH3JUOQz7BKN/9o8EAYuU8pmQtEN0q4+QiNsU0 +a8qLAV3qmEOwLfkB4z4H+aDZxe/p7vIYP4QmzTn3ZQ0mYR5mxpc52pF82KVyNWWJ +vmcirPwKSckEiNgEEwECACICGwMECwcDAgMVAgMDFgIBAh4BAheABQI/pCtUBQkD +vHImAAoJEO2iHpS1ZXFvPREE/j3fX+cLxCCZNTjMhThGFujiT7ty4x1jVc91J6QO +A+Jp+78NIIeyg3JTeR3WIv7/WFNzLKJXJEEcga+0ViPjoLfvGsHMAnwXqPYAxu1c +DY4jId0bCYgoVlnfF9gwOWxebtotLpCiuXGL/168zEAXWJpPg6r2MfPhAKUJ9G8q +52OOWJW3cObxoZ2gyXjuWOFtygZ1vUAqP/8UGeZNdajHD5uI2AQTAQIAIgIbAwQL +BwMCAxUCAwMWAgECHgECF4AFAkCGvikFCQSfBP4ACgkQ7aIelLVlcW9oqwT/a2nW +kFFy1q16WURE8vp+Tqu6i4r5mTdyHjbhQeZh5Pub5DEJiFuWXxE73JVrnNozacQb +Vbsnn54B4Xv6tuEDMxaTXSjreDY6D08urM8A0gnUHCAOwxtmepm9wxk/l3WAXWwz +QoQaqZ2PSPFGW4Epk8+JwWKoLv1O2i9NbycGEccF9rr6I12319Vzk+P4P3FOgCwa +dAQHSGS3Y6hlLm/RGIjYBBMBAgAiAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAUCQW/E +VgUJBYgLKQAKCRDtoh6UtWVxb8gUBP9Oiapzi+7qCcpj8Yy55jQvgpXkhe9g5DuT +lRiHYjP5vTvXJNF7pDOOPj1pSUxumC3viv/pxUaWKp3tSOjsT0ZVgy4ah6rUdjyy +bLAOAiPmAP3ryStzURF5/RnQbbzrSGZJRfeQIxY2871hWg241/wslRtNpsxYSPCI +PHMVB4SSFYzzbKRgUU7SXsVQYBAlRU644UE+dB+b17slv1xvagOUiNgEEwECACIF +Aj0lzz0CGwMFCQHhM4AECwcDAgMVAgMDFgIBAh4BAheAAAoJEO2iHpS1ZXFvt3ME +/ijwFJCSNoY1AfCEm3AX6vRKUbjiy0MdemsqajXF6awcbIaeCwk3wVr9JOs1usu2 +/AQQDvz0sf/hEv6c3sMTYspD6+QzrRMUVbLm0fp+pRZKyaW1tO+/JIoOl8qsOwod +kXPQ7CYFvSZhhkxdUwVOa6UtL6kOdCjQAy7DDQTzdcC/GxHQNVUNF5KcBWC7LMN6 +iAt0dAFEMaQz4t37CHq+DCyI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4Ai +GGRuczpzaW1vbi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCQkBc0AUJBlijpAAK +CRDtoh6UtWVxb9EIBP4pk/ztQF+XV5L4krXEmbjAsGb9C+I+4OoRUY/mWDvNAjGp +pkhFD+8Q3oQvg+1dcPsJ5rQHSXgA2w1bOsTknK9DamyY35LHd9T0ZSllXOUX9q3Q +eKiDBYc2KB35ZtxKNIA4Lt5qDgYbSgtlERxDY94BCSy4YApdwATei3O32t5IoR+B +roeIr+w+zn9mVulkn3pRXByYDX/scxcTtWwRL+UNiPsEEwECAEUCGwMECwcDAgMV +AgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQF +AkMVrNEFCQcvRSYACgkQ7aIelLVlcW+ahgUAnWORH5p6Cdk/zhen4sUwwnzsFyAO +Z7vaVPrQPq58Czl2FymLm5kJgsGXH8b6KLxVMo8hjTZnsm+zO6XTLXsnnK7nXk70 +gBJ0AAM0XGlG53qDvvQmq3RkfFMHuSmxL+zL8pXTmnywIlEpgDHPVKbPKF3c508H +FEPKFnDjuyRwPgq3q2mhC/qYYBRvw9hjjeRCqDTdC5wHuWLzs5MCLeG+3YhGBBAR +AgAGBQJEc4b8AAoJEAixI47drUe278gAn15puEaeLjlpaTndlvxT+LAH/951AJ9b +0Hlo7Py6F9c1liLsMNWNDnyvZ4j7BBMBAgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIX +gCIYZG5zOnNpbW9uLmpvc2Vmc3Nvbi5vcmc/dHlwZT1DRVJUBQJD8ykBBQkIC2/U +AAoJEO2iHpS1ZXFvrF0FAJLVqSWQ2fYNGCvBH4xRS4n2LruzdubmzNuCIZrc75M+ +RfTvYeHwCNDY8H+PggYuXMT8armHvFvyL7jln864M9LTX4TwROrqKlkNgOkfxdSg +Oz4QE9RHxxooF1GMl1yhxCoumixYE5w0z0LGYRKy/Xzd3+VMcUaFXvEqY6Q+cnQo +qChCvKRmsIFhF4b4SAqzRePdx6U3PBpC4FbIlkQkpbaIRgQQEQIABgUCRYwLkgAK +CRApqihSMz58I53iAJ47ZGEOrZrMqV6WKmfKa8+5907zeQCeI9LFETr1SK3IHx/7 +S7RlQhoqAzeI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1v +bi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCRObocwUJCP8vSAAKCRDtoh6UtWVx +b9fhBQCRE0dBfP855Vv2fPCzIxnu1I0GM9BjmAC4uMNdW6o7I4yQMXNYpP8RdxDz +PTon1JYQZqQW77EdqtwjFeguScudF8+85I2FtKDmzl0NNubmX6ckxdCbuUmOk2Vu +H0IQ8O0f1htk0h4dQB97YA8zu9AtqyASkdCDbRC7RgoaeUaV7N7v8RM3KpEJm6pc +eQT1DLqOQIFAp/cDa76xXK2Xrd4IiGsEEBECACsFAkXhdvUFgwKHjGMeGmh0dHA6 +Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1YbgMAnj34VvAwJhWn +Z79fbgSY9O7CIBJFAKCJEs0DbASutepLJhiysH3J61b5D4hGBBARAgAGBQJF4sLA +AAoJEKrPs4YhG27v90UAoKBHaY3RXOkwk5YL58jSYoOWltJ/AKDTwdKSURBZ3RTe +GkriWGZRy2sfd4kCHAQQAQIABgUCReGU9AAKCRAmSeYoxdNNBWHAD/4+/J4V7cM1 +dMrr6rpaggfgRa7d121f4n+KVn69fmxBr6vMkGP+8Aor4xMGvkL6HYJvOMRK752H +wXij7TM0HdGqU0S6cisOXiS/LOPQOayz6HuvliIhJeyDF4wfI358ZH8gVTKTn+1l +tqWmggd8KVbU2pEvNte+lD0VIxK0wrUT0nFEYoJsDlTUVpnmM4PxP8TwoIRwo/h9 +NnL8zeh+5sj0D5tZW4DsTC1AVPH1WYUN4aY2lv49twDh63oXbzXZQ+xKWJeiByao +DeEOFtouwTb7RbmDBB1i0aeb7gWCryUiHD4p2zf+R+4ikcwcG0LzR7DC3WFdlPnb +NII/G31ZDacpPqkk5S3LL2jIXKhpD15ilbXGjkqsBAkOJpO7rehVbxEGUfGh+2TZ +cCvLHeh9ckgjimFlZywk230H/tkQJpnHaTOmhNbBbowUkIdCjTBLkqyW99sM2heD +kmkYh9jJTj2BLVED4HrgyMp+dXGeDM7nVGDCPfbaFTTz6It+ODndAC2Q0d0N59Sz +x2Xb8LYfngezdhV0q0GgGXl+vh9zvZnpHV7Bef6ABTq0IOQri83IZv3HlyBeK6KP +JTx+ll32ByQ8JcMuAAaVqWXI914J/fD9bvsTzJNQsPEa8yBta22Ww+jcnHBBhAbU +Kfw5FKNDrqYr4VGY9+am80YmnIRQIt7Fu4hGBBARAgAGBQJF4fboAAoJEE1EwCDF +wFuuzREAn11W3gtaynmEAcxw/WxLdndmL0mmAKCsf55yO8kTmKoohRXpfo+jn4HB +XYhGBBARAgAGBQJF4gz4AAoJEFUVYHaRYekRxxwAmwVy1T7YQQtP7xXNdM+EVUxL +nteTAJ9AzaxlVV4dO/OZTG9QDbqztagH54hGBBARAgAGBQJF4grQAAoJEMfZMCWd +/6rUv38An3mkvCWcxGKhN6/PgQ2+W4zpFQPDAKCxweB0Xh/TQDjQ/dSaoj/BccNK +LIhGBBARAgAGBQJF4hFCAAoJEOVE3gebfDKNJ4sAn3owtLwwEWtpw9VQxTc66cmd +oFqPAJ4r2z3VgRa/Ns/uWMxV0Zlee/f2M4hGBBARAgAGBQJF4i3gAAoJEHZJQAVJ +ruv2v54AoJCl4M0ClZrwxyTkOXJs7xeQjtDtAJ485636UH2u71nZdIyGTMqQkszm +BohGBBARAgAGBQJF4sNEAAoJEH5OpU/Qq0B1NE8AoOJY9VXq8PPDDPjRPaJLahjO +ykz+AKDN3jXgHvqD26euQ1ksEBc8Vn6zF4hMBBARAgAMBQJF4sR8BYMChj7cAAoJ +EHMcr9NTwaMv9/EAn35hATWBiY7ra8Z2bjy+GZ4eSLQmAKDX1GfInkT57/rzmpkx +n+IQlikCMIhGBBARAgAGBQJF4s6iAAoJENoZYjcCOz9PA5IAoIZucQg6PaqLETbG +ch/y2UM6BhZ2AJ92fj8dOvoKNxn9Rh4UcTSSiPXNDohGBBARAgAGBQJF4eL3AAoJ +EHhn1Tx0eTXduhcAn2LWbAgZcRRU7PJtIO3zqsIm6keDAKCeZgrQaUd1GSNW4AzZ +LuT/XXiWW4kCHAQQAQIABgUCReLO2gAKCRBSIlPD1yc5gYUMD/0ah8KqI6rjyi7p +WqPPcPKy9ZCnPJv2JJllu1wx4dqRZnUVA3rmHAUpzQp7HsfMXWLgjxOnUEvzjZkP +PamYnczdE65l5M8zah1WNjfR8Vk4/XaeolVXe3a5R8Vxj27QRa+T5yEHprb5hPo4 +uFWkPlJgJd+qcXCIc28135QngN5uRRQK4NnM/oTtv2nv15L4M4qiH6V+We5IW+Tj +t74O0mSEekg1bB/XKlF/XcgyO8rEZgqwufZ4cHbzWYXw3C+CKkhDSDItGUw9HesO +u1FS+Mf/Js4+/kFjW8ZJPFO+A2z3gYTDzaXGq2zlvbqw1gYId5pbukVM6PRqQrlq +tI2Kza7/CY85b+DVU9Zwe/Hr+yYnEJdG+eWkshmB0mIXgQlSaf/sglsAncrmxA/g +m5IxaE3TIRW/mtizuCUwq+gigIUEANAsNwR5a/RAekc8aNaO1cSj8izlGqrl6cuQ +5jyizUJB5AcOV4CUDiazITOasbt4+xx9MTsciqWIkMLYRloVuqXgsoKOTxTT6Zq+ +lPEGRyYds7OEdaXHWPO0OJ2ZPCagb3OvqxJc123Xf7XXySGkGXzZgoA6D4BwIB0b +5WQFq8722b0tJPktH2a5clKJio3SMir1bpPT6b/CM/Mrk3kIFKJpmvEBYrKTCfhJ +nDI2GJ4Z/f6rUDhiyQ5yj5Rop2zot4hGBBARAgAGBQJF4vk5AAoJEItKxIGsHnFe +eYYAnRbZnnFoSrbo5E908zFdUPwfVfUoAJ9Dgo1WuGHPD+89PSqsyMshK1qavIhG +BBARAgAGBQJF4y0kAAoJELOx+BoCeHiA9a0An0E0Zyjequ/iRSSB+YolhRqc87tp +AJ9PeRbv8Ce1TY6qCoyIO76zYScX5YhGBBARAgAGBQJF40D2AAoJEDiaVjzCcqEm +vrkAnimr8D1OTH8O8+E3A2VOoxLhG8PTAJ93AR9hPTBxVBY+TqzapQz12ROtjohG +BBARAgAGBQJF40DdAAoJEB9/MmoS7vYqmnUAnjcrUSIjc8jjfdxLhJES9yDBTP/g +AJ9ZSpKAG4kvVjZqcSBhudGIw2NkQokBHAQQAQIABgUCReM6egAKCRDo4GL2DcsE +MZKUB/9bQd/kyhettf5FPhSPgtVgZanF2kI0WnDWUGXbbn8vLs7GNGsb6eyuUDEM +kL/f6xtVHNPC44HarRbawhph/m0P25KQlaHX4120gdYzPR7mnUMk9g7P2ycNrcND +730oJMS3f8FBhe9fnt4adPU8mp5fgU2zTsdVHpa2zUVZHNh84iuEoxoZJEWEyHHJ +ke/avbbc/G6JmMD+8vOV8nKHbuzNOAfA09kPJWAPcfR/grCpEMZ8SkB9F4FvPEjU +2HxeFKx1vWNTamkr6ygUVlX7bBwLCe9p+7ue1rMeKOMsJF7UnAkOthEC2IeyhPn1 +gyErrjYzQOX+3+YPCSO73fBxSG6liEYEEBECAAYFAkXjS5cACgkQKJz/wOY81tb5 +TwCeLd//hOBTT9hnSkZFuxLso9J3cToAoKnsSW/csdFyRJLh024CqSzu3/QXiEYE +ExECAAYFAkXjRMAACgkQjCXuDw3At9aUHQCglgCi6nNiupwbEfwEsvd4MRYVzGsA +niDj36LSv47TIbmUQJlR/qiNJ+phiEYEEBECAAYFAkXjVQEACgkQmEvTgKxfcAxE +EACgmX4IGrSutcvAs9Pfr6JYEE3hdsYAn1yLt/tyLO9laWWhLKhNH7MPHc0xiEYE +EBECAAYFAkXjT0YACgkQIae1O4AJae8N+ACfXCp09XmUQQ/xvA4LipoTAoyqX+oA +n3aZHFSOKENXaHthrpt0FFaPVNEJiEYEEBECAAYFAkXjfaMACgkQzxI0fJaL1Yct +2gCdEw43ra6oy0cwLX+zwRzTXazKQn0An0FuDnGs6J5+x6hlK3MFjyfRYZc5iEYE +EBECAAYFAkXkGvoACgkQZDZDYQnzQCR0eACfWdtadQLH9Bbi/YPOcheMmavmCrUA +n1fBKs46WOq7jppufBXwcncegfxHiEYEEBECAAYFAkXlgbQACgkQeQ6MlGH/2qvD +yQCffMAMRUHCPKIbbz59BVNmgpyvSmYAnRMspmLYF0gk0xfHoIFaS3nwt3DgiQIc +BBABAgAGBQJF6Vo/AAoJEFeTDasLhrBnakQP/1Z460aR3KyxrCrEcDJ/Vzf7vsbq +1DQnmoRuIgpKmR87N3qRLb2p94ffRYYxlWcFj1jiYT3Wq2bxjHyCZPgcAM2bQuuJ +MFxQo2xgwobyNqesIafgdbMjdUEAVy+NTyJfdmM3I57lkrleGz6lk9ojMLoIDa/t +R1C+uoLuSWMj0Xk/nCT+WnN3/xqZyPIa+i6MN8fuI6Nsa/C1jiNw2FnZy721hl+P +1Bhx+i9aiXCR0qz/3AOAOz25F0OXNKKdzOgdo5mCkelbUaey4gPpvb2oZ30rh6VT +elOOlGU6WbEO3DQBuOGAxJ1Ux801przITs1923bZU8EPyfDZyZWINkpl7M4En4bq +GKQkjTIfE8GrSSCp9rsLg1siK38yMYodegSzSJ7ZWWGlyuKvrim1eQw8svSzRphs +ujaDJG8Oy3Dlc3qBbA/CGx1OtyML5G/w5C5b2Wz/BkMgHnOfOJSVjGlJJrxGyydR +qThibZ88yRcZ8130COubR4Rr2I+TD+FZLhGtzQGia4gDQ9QG5td6LS5yLPc3Y52N +cwWsbMHWzLTQ2k3O7PcsetRPLpduiq1eZUZZveY0MSjH+uH3xzp6qfj9I4FDtK6e +pHQ0F9Dw8kK9qBAhiqrKxsUUbalx5Pup0gIkzNe1vzjByS2P/j2VMhbinhG5FZl0 +O2mPcIXHeHlAJdGCiEYEEBECAAYFAkXt5LkACgkQMGnpIbeahxy4RwCggxD0dEmG +z7ipFrmwbIGTxuxIS+IAoKfxzxjiT2m3AEvfkL/xNuqgenPViEYEEBECAAYFAkXk +wVwACgkQcLIDITr1nRa4rQCfZvrXaoYQ8TeX/lhuJfmsPb7kIRcAniKy+cTGNExR +mZutFX/OcnatDZExiEYEEBECAAYFAkXqoaAACgkQL5UVCKrmAi7oEwCgu/2cheN4 +mU+yFFIG6HmLrbeIc5IAoI2I4eLWJdmLpJleOYgF7CtTGIKxiEYEEBECAAYFAkX/ +bGMACgkQOpD/wRQI1/HBUwCglcM0b6fl1oP8iofWeovuhSk4+5sAmQHrgf2pbqFW +1oTBNS60dNQjA7VdiEYEEBECAAYFAka12CoACgkQXeJJllsDWKIizACgqk7R3Bhn +GgzraKbcP9qSMhbYBr8An2Xah3bURySnK2QBDx4GzNM/vCTqiEYEEBECAAYFAkdZ +tOwACgkQcgQ2cL3l8e4/XACg2opaihfpMLeOKb2bNSD7cLpI3N0An2A2r+PcOgUD +t3qIIZ8i24HAhBnSiEYEEBECAAYFAkdZt8kACgkQ4Q56CecvefrAfgCfU/NbkK4w +CiFMyviXo/F8tOEGyqkAnAgNaSmDzLkYZxHlM0SXosfHfV9diEYEExECAAYFAkda +cyUACgkQaGtW3WCKJJsOKwCeLKhorr01GCKnXR8QaGvImLVOm98AoJpyR9WMJ0cs +X+CuEdzGJDTlD8pxiEYEEBECAAYFAkddIIAACgkQt5wosOl/hW0OtwCgposF7nuk +dTQ1nsQd1AGHb0CkQzYAn06bBOKMXsPcN2VvMiO2hiv9FLhniHoEExECADoFAkdc +k2IzGmh0dHA6Ly93d3cuaGVucmlrbm9yZHN0cm9tLm5ldC9zaWduLXBvbGljeS0y +MDA2LTEwAAoJEOdekMA5zDPbZ9IAnRTxxJl2Rtv1ZbnGsOuPJ6musP+5AJ9b8b3Y +9BL7PRHzWgQjzALVVXRrdIhGBBARAgAGBQJHXR/KAAoJEPG6TB7RyLqP7nYAn048 +cLE/iNKJFxl/RwkY9VcRedkrAJ9+Y6u67OnG6HneUhzqGvMDbaGmAohGBBARAgAG +BQJHXYVBAAoJEIUGW1nVLdGnUJ0AnjF43FY5SwhcW2JmuPVu1YnWfrwwAJ990zkv +mIQtRCrxMzMgThz4jVaoEIhGBBARAgAGBQJHXAvSAAoJEO2/HhEm8iS4g2YAoMWb +nnF/sbeM8+WToKO0nnoJrXVAAJ9iX3wXtSwAqrK+3X5imRfXGTxh8ohGBBMRAgAG +BQJHXuTeAAoJEIXCJ+WlVzjy4fQAoKz8piSTCDPkv0qeNq0bdoDs9mOxAJ4lO8Hp +GDqjYheaAvKG7tFZ1fsZjIj7BBMBAgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgCIY +ZG5zOnNpbW9uLmpvc2Vmc3Nvbi5vcmc/dHlwZT1DRVJUBQJF1dVYBQkLk/wtAAoJ +EO2iHpS1ZXFvjEQE/1HviHOOSHv0ZuOd+H6SVlkwnhmx4g6fpyeeOa49lywggMBL +8zddB/928PMYFQQ+pvYmECkOK+O6sVO2NkubopZwE/hUjt5sc0XTYQ9Lvxp40N/K +UR8fSR5FvLQSWYGYRDXkK3t3Cta83ZeJk2IK43DpgVoFWMN6x69DlRGTyRWbB2Vd +RvSZz3ZKp86p5cnwMT++K+pNxq+eY0UJorLRj+SIRgQQEQIABgUCSES5dgAKCRBQ +LE8plp8qHbO7AKCPmi7Ri8FKIY/Wf9Ksa2NFDxUnRwCcCdAwwG67ZmplFNtZlVDW +wFEcvT+IRgQSEQIABgUCSFlvKwAKCRAk0yv5qpXDSUwfAJ0TPD78S3J8UvoziG+b +TCLTlPz1XwCgnWlV3PBKvOxuGSAdm/DOMlY1ogKJAaAEEAECAAYFAkkGvzkACgkQ +Ke5YuZaGUXFYtgwgx9yOo8cCR2a0d/0J8Ux8wAnjLI8m68BCiKW6HmAzXx/mNX2e +zicSEyqcvv4q5XdpvSrcA2kmlREBpu7mmnyerUuWWsTLMbi9clXaKRZ6yQJQBbrR +YwrXtzdFziHqFjw+hC19uVXlPhXYa/8YL6aCO4JUlzWWgVF8xHupfRTIeXuGLkC+ +sWww2VmSm8Fg0FBG9jpIt4wYxNMI77so4szE/hoFQSdRtY1lC18jjluNiygGNQQP +n7r5OKwrK9hX1gGZA2tGYVX0ZoYASRPZcUUzaYPH5cZ86SAg15zzroVD4etmk/2i +I4sdzR9PyKr0zUp5FNSAFRey6avPAhaTNsyVDRiKmK3PnZF9H9HaRLJJnQEcvevN +04Vg10VW/O3zCFMFi8zuxUP6ygoDdWZT9jR4wbzVEyFY7AUwXnStDd39p3oamTb9 +XtlngTJjmVBZIOlap4vmKsm0t2xviaxto6uR+656Ya49+SoXp+u5+dGDT2o0kFlN +aC5r9zovItqdDYUHtn7DsIhGBBARAgAGBQJJZyWPAAoJEEc46iFldJl61+EAn1jp +iTpjqq/l1oKwJQYDB0WsqGd+AKDEiDHvrN46b58gzQKdVbs472bFS7QhU2ltb24g +Sm9zZWZzc29uIDxqYXNAZXh0dW5kby5jb20+iPsEEwECAEUCGwMECwcDAgMVAgMD +FgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQFAkhh ++YkFCQ0YdF4ACgkQ7aIelLVlcW8+HgT7B4+yIgD+sx23Ax7ARwTI0qZ9x1G9tJYs +lXKQnvoEgxRN7aAECsOaTwhP5rfzJ1thftd8f4yYgO0p9O4axkyZOOyURVJfQcJz +2ENpuFml1K8jOlvZKziliTLJMKfQxmp3vdMJkxf8e0zDRwZPfA+2nV90WPtO8fsh +4wORz+8JI9xlzEm5WlG+CrMdwooavGg73wh4XRctrnMQGnQm024d4ohGBBMRAgAG +BQI9WPK/AAoJEFeTKdPAGyoiF/cAn0dqzIl3Ss2QfeWnAOWEkODC0MsoAJ9Tb+zN ++kgKH0f+91o6pT6VQEPn0YhMBBMRAgAMBQI9XrB1BYMBV4o2AAoJELy7xJVxipJW +GZ0AnjlyM5hKGecjlTcoKYWJlMDjf0vCAJ99oFg8mkzKasg3CREHi3Y3Fu26EohG +BBMRAgAGBQJBAMp9AAoJEJ7XWD/BTrKC96AAn1wDNEETZX6vDoCYdUGpV8NUiyWV +AKCgKBgAABm+xdRzvY2ytKMCCPLLHohGBBMRAgAGBQJA/z93AAoJEJb/mcQlwOwL +W7EAoLqAEMsXFUj3ScAXDYcvQaR+5lN7AKDPPs/9tixtWkuHbW9SPuaUfDizQYhM +BBIRAgAMBQJA4Fc9BYMAk7TsAAoJEMiB3UdK56tHYAgAoKntYOktDGj5H5u9hfIq +E9YIayhHAJ9PdLPDyKM6C01fd002zQe/eapsj4hGBBMRAgAGBQJCSQGQAAoJEI/D +cl89aNY667EAoKu5aEpTLn2dplFPPc7+ojRJc+vVAKDcmOrKUKjImZWIh+Y/vJLw +OHYi84hMBBIRAgAMBQJCHfAjBYMAPyIxAAoJEBgoK2tFOUoBYsoAnjEtckRH/Rlp +C18blWLwEYDTSgw7AKClQUzPgy9KNf3j7/MsP/Emrl4+SIiiBBABAgAMBQJCRvnB +BYMA5rEOAAoJEL/W7lhX938JlPID/iBCDWspuyuxVL2VrgpHSXB7IQhlQZUzqiPW +AdQk2PCzXUR6fI60VwWRWTgzwM4h/9WaIkkI7IE4PPAVKcSy0oCR2TqobjzFpS8G +ulrMrShk5LhQp2fppJhynuy1Z40iq/Dqz+8uToRbXVam+XYIvUiHitmrLNV6PvRF +mW3KPr/ziEwEExECAAwFAkJJRAoFgwATzkoACgkQZr5x/2dIaIODCwCfeOCIoJAc +Eve7QmdisnrXOunbns8An1paC2kNbYfcWeO4XOnHeglPVw5HiEwEEBECAAwFAkJN +grUFgwDgKBoACgkQO46kH4L2EkAE0gCgz5vROEPqn8VQJZ3D6dFhXQISjaoAoL5B +pboL6ZlwUEUjHoB8bJGQTxIQiQEiBBMBAgAMBQJCYTmdBYMAzHEyAAoJEAt4MvNz +1i1B9gYH/RhzAgmG9+PZuuvOeRMj5CZpVURiOUIupt+640ZrwIy/mgUhWKAGMlCn +n08r907CfJfmwELKGkVOsG5+7nPy8KCVEwclxY+6zzqCE8cekmt1T9Z2HV4wrWqy +po80E2FNXFsHylGxAN30oLOIKXfNNZegttRfg20pj/AmzrRm+tjb9VMdQl4lp9q/ +FVMuQFVmdFQ+Kr8cSBhp+fEdLy8SguYBhYnbPSXTISXdUh0NJhZGafzaTTp28NgN +LX4WhbKXUAKAxIzh06/X7NDwFAa7eWHD9lvojWfSj3zdnO9O6f97xK0j8UGQqFwZ +pzdiwOcHjSFVmZyriT1HskORcB/aKz6ITAQTEQIADAUCQtiwjQWDAFT6QgAKCRAY +WdAfZ3uh7EFLAJ9i5//07JhKiC/23C7bfFc/NpaowgCfWuU2y7lDqePoeNxdgiY6 +1AS+wiuITAQTEQIADAUCQtiwsQWDAFT6HgAKCRCBwvfr4hO2krnFAJ9HH3oo/o/H +Y1Oowz5v7a0By+fyqACeMkgMrMlUPFN32fjmN132Clz31SiITAQTEQIADAUCQtiw +0QWDAFT5/gAKCRBrcOzZXcP0c2EfAJ9Yy1Y0/98TlNF3fU1dTjd/asSXrQCg+hqH +o0R2g1ztigaEJ6xlYKfcFVCJAiIEEwECAAwFAkLYsPEFgwBU+d4ACgkQquPmzmah +RGijYQ/5AQ2INhVisCJEjJc9CmVqABcKDvblFqq2xe8/IMGSpThlvYL3BdDj2KMr +8tPeF63anbRvCNiain2IKWj6+4xVN1YmmNTK/MED6sX3JripbAn2Yw8SmmB8eFSk +4guSFyeILjHk5as208d6502S5tEnsnoZkA3yD02nFXokgDNFixxM9HzyOcGCASu6 +A2UMkiLZUUgjiZiKuUxBlRG/QeeyKXs1uDtFsEahOocPE05+6bjBx3U6yPD0snaD +wMEkZlMVfKdhC+GWIE01K7c79Jk3huz3c1PWHNkxdzlycBE9aGpHtDzS4a4msg6n +VZb7NYdhdShCAKLbjCl0XfAolESpZ2oY+3lrbdyFYq/D3aAc0QLU9/iZvBEt9sf0 +3V0PCg7dcD7P9HpCzHCM8gCEluoFYvurrVKU71FzEP4P7EGV49mK0U0owTRT+lph +OIT3NYdybiZtAW8FwdHPIxOtGBBndAB0iYDznb62vQHjbzFOnZ+nNE7NW6FdN+Q7 +02YU7VAG/ZAHP0+aLjQ8JvILKKG+xNNlBUX4TCKNGao+QZ9pgtEAp0m/T/C9Qumw +G2RBV3v1K5x/niga/mDGKYUyFlmfwkmYScAWlQxQi86q/WfzoqxC0hCSgnBtFcsa +IoEHx5h+gkYzPSuCJidq+a6+BSk98PPBrrcbPcqWVulxIUPU49mIRgQQEQIABgUC +QvJK7gAKCRBu+K/ChldKysP9AJ495oiNOr+Yzim0SbesMCyDQOzekQCfaXXwvuCW +fkjKtMPXDtzShhLCddqITAQTEQIADAUCQvHAcAWDADvqXwAKCRApqihSMz58I3+f +AKCKbs82jshhd4NisvXVfb6hAgTbNQCeI0VNu2cKL8v4c5yEfavqPnriI6CIRgQQ +EQIABgUCQ/jTlgAKCRDhXdhXsVw30bs2AJ9o4wcGaqejXyEWTPnD0BVqLGpzCACf +YGRrmV6jhnERw2KNVcFCuyoPGp2IRgQQEQIABgUCQ/jTmAAKCRDhXdhXsVw30UVa +AJ4/pDYdsiYiACPSRFXHIHb/HHRJYACfY2RxWuCiHSLHRkGeRuKktGJB8CqI2AQT +AQIAIgIbAwQLBwMCAxUCAwMWAgECHgECF4AFAj69R0YFCQLVjhkACgkQ7aIelLVl +cW8Y2QT+PjSaIJj37ijex+wJ/HBLkyydqWYVZhuTPTVMLst6DQModRBj3Xi7UYlg +g7lJ6tRxarVuF/eYW6Zv4jx5FePxKLBeAG+H4FRQH+ogIXeBlDx41X7L25wjSxxP +hQ4CwBNMmSKckD84LdQiPrygbX8JQLsJ08XuTzDG7740d0RotqxizGhYP0QJTD67 +VvffoQ0gLtB5chw7Pc9osT1+j4yizojYBBMBAgAiAhsDBAsHAwIDFQIDAxYCAQIe +AQIXgAUCP6QrUQUJA7xyJgAKCRDtoh6UtWVxbwueBP4uh9ZEOuSjt2n5OpfuAabl +srRzhlgPfluBMfjHNynEFsGjn81l81TCqStRln7wDUj95ZufSi3YvoYSFG1jffGM +k/k2trgINtT3kxaGkfns6dykBuV7Ki2wWqdJkTe1ibyai+RCqt+J1ldSUuHdfQZ5 +wALPJQRb4Hqi7M29azFHcfxbMLf3yGYyBuKC7eBVNVaR58UTFK6r0CX3T7eGuk8b +iNgEEwECACICGwMECwcDAgMVAgMDFgIBAh4BAheABQJAhr4rBQkEnwT+AAoJEO2i +HpS1ZXFvkxgE/2ZfCBqYKIe3SDM0tOVNrIeSZuVNUyn2xoqRKK4VomvTI1eMShfG +a0twPVlBB5xXHt06yRbwjobJykmDc/Hmteel+FVWOcehnXq8T22gLENlEM0CUZel +losNwFwdnWGOHGZs/B4BVCh2pzsCra6di7MKCznZDOHX3TBLoqVHjWzCldxtwc6Y +7fAsEtrLVos4+0JvjQoYYgHQyril5ywHYs+I2AQTAQIAIgIbAwQLBwMCAxUCAwMW +AgECHgECF4AFAkFvxFQFCQWICykACgkQ7aIelLVlcW/xbgT8CO3clOxFv4L9gsJt +xe6lRUISlvmjoiQigmw8PIQwGfTCRYA5oK4Mja47+1PzbqzY1AlEi3JyFpIQMDCp +RhkhfHGjOVH2vap3aGXxSFr8JGM0SO1Z5+88uNo9N7RAi4koaykIy+GYKypoyF9U +LGj5QL/bUYgzLLG8etNasmE/Dl88mEXhY3wuPwaeIEbcv/HDHBymbv7VplP/3Vht +ANfOz4jYBBMBAgAiBQI81QcrAhsDBQkB4TOABAsHAwIDFQIDAxYCAQIeAQIXgAAK +CRDtoh6UtWVxb4jyBP0arTNzMTakDhO8BCE03d0iru6sCFJ2qQeh4UAFXy8KZ5yb +tWJxFT/Q7xn0uXKujJ99cXhuy7icDR13wWkRKG20IjKiNv9yzQaNR36+m58mjZu1 +UDnGVm2PT9bELYmKTVoumi44QWgU5lgq5KZfWhsA5BQEqS5tp9k4CBBg36JCwjYx +HfnWxymA1hSyMKPmgmPm6aFd+Lv9d3h5oTVs9TBOiPsEEwECAEUCGwMECwcDAgMV +AgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQF +AkJAXM8FCQZYo6QACgkQ7aIelLVlcW8t8wT5AdyhUlQzcWoLN/934mFm8zk7TC1n +moHE7v3euwTumyABwdUh7l/ztBk20Ontmaue6DIGELrsfYWtAqvyWqwi8ptpLOOu +jzJShC2zBVJ5/86uGpKASqzTwCJ9rrqyjBPVlY7XzWbgEILtqg1Gi/Hwe7LQ/5jV +nZu08D667pS9kuHaIqow/73nOWg0c0dlaigblMcVCXRF0Im3JvIOYumf64j7BBMB +AgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgCIYZG5zOnNpbW9uLmpvc2Vmc3Nvbi5v +cmc/dHlwZT1DRVJUBQJDFazSBQkHL0UmAAoJEO2iHpS1ZXFv+CkE/iKshcx+BSBC +2d5EK24Dww6sBDPNF4P5mqLCMfa2VbGeWZffVQlGgJeLfTt2mtIAGRoCyaUazWjj +206K41Of7G0ZVFeCyfPyjBtKFlwNLrjMWz7kAGtLtXF/bKns4Mr3lB8KXJKiOTj5 +uFI9m+b5emAMDXJyQG3Dna/WRcegpI+urrnR0PdZhYBvYPPY6ggctLsXtfL3E/be +s1XLsyLWzSOIRgQQEQIABgUCRHOG/AAKCRAIsSOO3a1Htu/IAJ9eabhGni45aWk5 +3Zb8U/iwB//edQCfW9B5aOz8uhfXNZYi7DDVjQ58r2eIRgQQEQIABgUCRHOHAAAK +CRAIsSOO3a1Htl+5AJ9kk3l8sdO9tAL/pGpaMuwwXG0PTwCgnh7vrRtASYmhSeT5 +RS/c+2E3+iqI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1v +bi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCQ/Mo/wUJCAtv1AAKCRDtoh6UtWVx +b5wvBP9pt+ced/OUwn6QQVC28XSEj+Q2XE5TPTt9C/l2Z59ZRVQBQ0HrO2bSyX0L +RlGM0j6ANddBu3JKvGJizeOofvrVdXBHVDQv/qavmfoW/sBk3Vy/c9nBmFx+GMlE +zxWIKgL3oBRKVEG9gKT/bTn5zZQLt4Lu+BlATeADNUlUjncggKSXXp3uYQghWqZQ +HrEs3tk0NwzBxYPW97DmtYcjSNaQiEYEEBECAAYFAkWMC44ACgkQKaooUjM+fCOM +QwCfU8bBrk75aSt+Pw/6RRus0NtDieMAnA0cD0TCoCFX+K6cYyR5erJhHgRKiPsE +EwECAEUCGwMECwcDAgMVAgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29u +Lm9yZz90eXBlPUNFUlQFAkTm6HUFCQj/L0gACgkQ7aIelLVlcW+BZAT/bQQwknXn +Ub9eaIXx+aSbAeoO5gcowyFzlgcinaUyHu6J/1ogOwilkoQPsxhgRE6A/unk3Zac +kvBrzpN2mw9YnVGRC+Nc9queRWKFhBfKNUFwMCcpVIy1IjCR/fAz1xlV4kpJ5QQX +5bPe8TYUqfKRS6hfWRvBZd0SUuC1s15IyqgKq9RZEQnq7GOzyQvMbSBeRkrb4Guv +ZIdwdbR+qD2PmYhrBBARAgArBQJF4Xb1BYMCh4xjHhpodHRwOi8vd3d3LmNhY2Vy +dC5vcmcvY3BzLnBocAAKCRDSuw0BZdD9WCItAKCI+or/qR6qhFzWBjh7ONW2Fwt1 +ugCeMPkV8gI+AYho8zb7scqP8WtxIkeIRgQQEQIABgUCReLCxgAKCRCqz7OGIRtu +72ivAKDtzjXOLx6LXja+Cdbjv7GiP77jAwCg+BUnbBlNA3DFM2cCMfh0++FHMUaJ +AhwEEAECAAYFAkXhlPkACgkQJknmKMXTTQWJcA//VxD2KKHU+4JCnMHMAtLQx36/ +MlBwqGGjVX4+ZAgj9zz3dtOP9oYeH+U5XQCW0byVbqnyYdDW0w5uUctpKtxOtRS3 +jCRmzPD2avfpW2jneg7ylfjeIQnn3Elkt1sxu3QiSfvFxFgw4GfJGIs0/nfhO54q +OGX5+oMitavJiNC60hGJ7g+ToEZOmNXkWS1s93Szf88Oby5u6xtRoqYOxLnj6kA5 +iPYSl10yz+opirrlCmxh9swjv73F8uuiebCOiJMuMNnQNg/+gkBlP5TUDCq7HCin +iNn10PCO1BTxqJg4rDtZca8+UEPs9Vcep3CObuYqzYxxRWD5bKu7ReCYMlV9ebE6 +bABzAQCV4ZBPX/AtWMbLTSpz/RdCbXM6iuGxRdW1aGhOR9CKfDjS33aAXprPUJeg +YLxskDPeJ+q02FZ5YcsfTzvSy4RfJFPwaZT3APPnDzZAddMbiuPMzPKr60qIQf0B +1KOOh99ydj3THRY2TOCqs7TiQtg7DzhPC+lmQTAnLzF3kzk3aCj5nEbXjwChfms1 +B1jnnKQJF0iiux8ycGVsja0Fo1xIuaeVoxLlBhQYBZhpW84uwC2Cyo84xwxbwQ52 +9nWVsy7bMD3Sv3RDHKFZb2VEI6WNAM4RLjujRUOsYnBzM/et5r2rNbhVYZpXXI09 +tn9buCCkvvqcxDJSleqIRgQQEQIABgUCReH26AAKCRBNRMAgxcBbrpgLAKCrw3g0 +BerwcZrA0A0QMml9oWc/NQCdHxDZHRXDlJKb3rWsk1rIj1KvZsSIRgQQEQIABgUC +ReIM+gAKCRBVFWB2kWHpEaBgAKC5Hgg9nq2Mc2yUo4mtYn55TZ0mzwCfUuZjRjp5 +i0wGMRjlSQIAFwLWbcSIRgQQEQIABgUCReIK1AAKCRDH2TAlnf+q1ICMAJwKvons +J370KWFzEUD0BxUNUOKCFgCgm1I9hRBVJVOnBc5z6iDJ1M3NgM+IRgQQEQIABgUC +ReIRQwAKCRDlRN4Hm3wyjd+9AJ9f4xN5fLgv1M67WOBPBcwdaWr48ACeLBOOMDGv +AYncekiZ8tqSxWMYnGeIRgQQEQIABgUCReIt4gAKCRB2SUAFSa7r9u8/AKC9UtDG +VMlgcW9Ki3UAbWg5zhA8AwCgxXoak8y2uBiNVwVpzO/ub63ist6IRgQQEQIABgUC +ReJbVQAKCRBbk8AvnkqcneUJAJ9CJwzNxH++BgxHoBCYvQslevEaMwCeOwpQrG+K ++1hgmCaKZbBR77xnVhqIRgQQEQIABgUCReLDRgAKCRB+TqVP0KtAdYQiAJ96HcY6 +xRsnPcfCgmngWFz3DOJzeACg3O1etKwnXm24bRYRM3cPLsNkx9+ITAQQEQIADAUC +ReLEfAWDAoY+3AAKCRBzHK/TU8GjLyPGAKDH0Z5QNF9UMFgUhXvGR18mV+IQMACg +kM+uL0ZjSu/vXGwM6RQqLWsPoYuIRgQQEQIABgUCReHi+gAKCRB4Z9U8dHk13TUW +AKDRPfQWIu8+rVajQ56tvufZsfMUqgCfd6bVey/0wlxFH3BuKaB4maUoMzuIRgQQ +EQIABgUCReLOogAKCRDaGWI3Ajs/Ty+8AJ9hnkGZ3J5dGL1ITHm67C5zuphwmACe +PnZ5O5xlhXIeI+D8+z1JGpEmr02JAhwEEAECAAYFAkXizuIACgkQUiJTw9cnOYFl +Vw//aP6Sev9OcDLXyyja3Ml3q/EXe0deIgZxLunLJcv9irSnrbg/fh2yZxognbSL +BMdBURA2QK123awXUej7Jughn1SnULvi2/OqI5+prBV4Qx0rU9BomwEQE+vWHS/0 +qFmc0w+IzooBC0PXhVI9tTvPq/vKMrbSLiBlxqw6EkysfcRgHIIexpPNB9kMD4Yb +oTvTHXOSxpthY3h0ehOhnReiw67CQG30CMQXdPp01uvH8656F3CA5LGhTv+T+rGA +cJ8SFiShjF+cXWOlI7DtCFfjhL/D9S9Ug2SWMigoz4YE+at01SGzs0ahijF/cjfW +68TG/mBxBXF5uY3rRU07f929ks2oMy+l9npVPwcDvKsYHwNovtN4M5wS5UWpgX6k +I4ZPPV+nnan2FUqNCcZI9+pUsyOvEIjsdZkGXLgyL5WaN31DhZNz9yMWGJOaNHlR +pdDm8dPXpnPPoXFKm7O3hyamSW1mjKaMPG2PMigClH1KfnK5kY2D/G+z1fk5kM5E +s+H+zPySxDMsp3IvwE+kdAIFlqla/Y+6IQ2mbAbaRzzzOrB12+YpNfkCbPmpQZMP +3cu1YIgdJ/Z+urdE0nSepHf+ygL7Wus6afUP5GWFFNe2BSJR/6Fcd2r+PV7DU/uh +hbAu6yqEQJU3/X4GDwwzvxxQyR79C+JYpeog5/gAzdWa+2mIRgQQEQIABgUCReL5 +OwAKCRCLSsSBrB5xXsftAJ4meBeaphMXBIfSN9x/4hrUOUChqQCePhSTUe3w9oQm +xG/m81i3weQ1Pu+IRgQQEQIABgUCReMiqAAKCRDTo3AErk0c1Ck2AKCXjF9YJz1S +n4yr3Ahdlzjha4ZWlACg32/5EOg2CP9Is9qqM7Nmp2OHABOIRgQQEQIABgUCReMt +KgAKCRCzsfgaAnh4gFQBAJwIWxxZqJ0YaHcHuhUmpO0jw3hcSgCeMO97CZ/WW9+k +to47ZzmIJq34CyiIRgQQEQIABgUCReNA9wAKCRA4mlY8wnKhJl9sAJ4vjcPCWTFt +o3R8bmFfdhMjbzF2dACglEwOiSd/ZglLVxKUoActs5QKY8qIRgQQEQIABgUCReNA +3QAKCRAffzJqEu72KqXCAKCsQKKlQ/u95XZE5laDGvEhoEXM2QCeJMg7cxbPm7MV +PO6q9UJwGyQuO72JARwEEAECAAYFAkXjOnoACgkQ6OBi9g3LBDHt7Qf+O59RTNft +jDuxfaIVU3iwIgVs8nXeSb/vn5brc1EfpaEGdNrXPWHvDy/u6ARZ386G5F4dz3Eb +4kugaA+/P4p0pPImRmeiRRgcyvpATdEF+/Y787dhkl/fVs6/ojLx7Bq5LpOxHs9S +ZIjhxXkdPzS06T0dpzV2iDVbGUz1mZL8uyQF0em1zldoiswzF08go4koWeErXtZA +y0Khu5up8sDISaUWnm2VDHrFLdr8PFzpUv8Z34e+XNiiVoP989dE6Gx2qgBhmR/p +rxY54JCxMh/esvTRLjf9cze3t1PI80mK/kmp2zsVIsd1SIdw+fjzYd4ZzDi4gA8n +64Tlv5gldGn5DIhGBBARAgAGBQJF40uXAAoJECic/8DmPNbWs4IAn0vpU3ALdg8y +T0aq4qQJdX1oVi5bAJ9EVqkfOkE6WqPIaA5pnodCaTIddIhGBBMRAgAGBQJF40TI +AAoJEIwl7g8NwLfW7wgAnjB0msHMLIjZvK8oSH0kWpPxmiCGAKDKaUqkSvY0y87I +izLQYijodqQvDIhGBBARAgAGBQJF41UFAAoJEJhL04CsX3AMMy8AoNI1odP+fQA6 +h4CLWjaEK1qndHhlAKDNY25jsLzqCcJn0JqQaNN3gkvNx4hGBBARAgAGBQJF409I +AAoJECGntTuACWnvwD8An2FF/JEayVKOL++9YbNLXpBVeRxaAJ44hot3GOOSS2OI +ZZ9L/nw4ZRiHWohGBBARAgAGBQJF432jAAoJEM8SNHyWi9WHevAAn2TcTFyH84jO +pejOmDSTrK30xQx1AJ46kGnM5mgIVuqSDrl/1R4PmrYN44hGBBARAgAGBQJF5Br+ +AAoJEGQ2Q2EJ80AkeQwAniuGytBx5JvGcFJV5NBliOGfxhs0AJ0be5jI/yWjK/bn +88x2wmNp3mcA44kCHAQQAQIABgUCRelaTgAKCRBXkw2rC4awZ/WXD/0dhSb4vKuX +0H6Z3EyvlehYrjZUKjv8tT+B0OWmvexuUEC6VtaPGdV0bHIWIi7AjijTgtwRDsT6 +qLg+N8wfAzfGloCKz7BAiF2Ugap/X0JwbEXq0OgSzJ0LU5fsHBMj9Bb2pHVmZVqy +lJppuhMSnQ4paEctfq3Ls0UJslNhGtflAE6iIassIpZqI8aZfBtC6AWHk7AsUl/M +Q4GlxkmNmVNJoBQt8h7DEK02AOqwBLYrHNSyqBlmjz90Cd3q8Mnsh1d702+NJZF2 +IuGjqSAv5E2aWNCZQ2zkoMhOGTlqPslEzIhb7G/a0I222px8DtAzYX8pKA0zLV+4 +W06pLOrbqiPEOBCPE4wt8t/jNrt0bVg3hrL6Sf+3AYpgDG3LXErhGbEcPTsORUeQ +MWcGtaLfKCs29Bln5WBVgeiJADv3t7w4EMFBj5gVlHauNbDzip4q9+i3B4Wjmbqk +7HOpfmxliOKEIX6aKE9SfecJXta7A1potO8pg0LlezufjN72y3PSUIa0VnqdMAVy +YXMYUPuvATlFr0qWfzwql5d/J7zNigFzXCW0iBlv5gqTpoqJ+byZr2RUdtC/Q2ym +WP4/cAcScFrR4anDnfiOqBeOGQBy7ceYd4DWd38PBU+fn4Z9rn8HfIRlJ3y2Ci7n +Lswbbp38GLgYYwq2tjNoxuGr/4+vb8c3y4hGBBARAgAGBQJF5YG2AAoJEHkOjJRh +/9qrW5QAniwa6vfWlEt1H8oeUOjJCyp7Ad4GAJ44QWVps5BWoeNpJWcS3m4cIFYE +XYhGBBARAgAGBQJF7eS5AAoJEDBp6SG3moccZusAnRbuB1slbRLAebBjUhTlyvgS +dsibAJ0V/NfekMsvwX6e6my5KBTFY4WyuohGBBARAgAGBQJF5MFdAAoJEHCyAyE6 +9Z0W5t8AoLgQz3ZhGe/hzwQ2bBTMeV12AyzhAJ0QWg/BHvHseBde5/14a+V8pt0S +XYhGBBARAgAGBQJF6qGjAAoJEC+VFQiq5gIukCUAn2UXazhZrEHLvZH0c56N2LdN +HYI6AJ4zZnN8vY09pgpA6p7+YGQfnjuyBohGBBARAgAGBQJF/2xwAAoJEDqQ/8EU +CNfxSUEAoIDQQMHKQdtsKlcQKL3du2kBeaj+AJ0WEKNgRh8NgrcnppW2TpOygvQq +M4hGBBARAgAGBQJGtdgxAAoJEF3iSZZbA1iisQsAoJ4LWFLNtSwDA4bNi+qIAHIV +kEsbAKCW86SWOi3QcT/cZ+edMZdqTTXeRohGBBARAgAGBQJHWbTuAAoJEHIENnC9 +5fHuRb8An2E3kaGysE5hsrKBfkIBlco2Sb2IAJ91er1Yq2k8VOpUsBie/dysvgsY +h4hGBBARAgAGBQJHWbfMAAoJEOEOegnnL3n6TYwAn2rA+SuEU9y0LUzxr55/wc6a +yG+MAJ0TsyBrQBwA5tj9xg27dqvkZy+RYohGBBMRAgAGBQJHWnMlAAoJEGhrVt1g +iiSbLcoAnRgf744XS2aZvXzXpdkvqJo8QDZ1AJ0aBMP918C88Tf5Nd1sEIg+t39h +dohGBBARAgAGBQJHXSCAAAoJELecKLDpf4VtzC4AoNG5vj9Xz/ivXays7uOd6aqh +apRBAKCMpQuXSYePOXDCEkiGG+YDtoe5mYh6BBMRAgA6BQJHXJNiMxpodHRwOi8v +d3d3LmhlbnJpa25vcmRzdHJvbS5uZXQvc2lnbi1wb2xpY3ktMjAwNi0xMAAKCRDn +XpDAOcwz24k0AJ9w0cJxnrwcMg54QvEMBVRyzo6F7QCdFuoMj3ByIWu9jc0GFN/l +mtaunTmIRgQQEQIABgUCR10fzgAKCRDxukwe0ci6jyVQAJ9HJNsQX1RMDlyAL2H4 +qLUwAMwLBQCgoJh3gK9IlKwumCAmrFEaHnFaCYGIRgQQEQIABgUCR12FRAAKCRCF +BltZ1S3Rp+JpAKCVJ804T2GWfoudSI5lwDU6q+8rNQCfaQ5ZQTVuknSdPx/3yt6P +THWvz6uIRgQQEQIABgUCR1wL0gAKCRDtvx4RJvIkuBPaAJoCJkH84G+jEOHa1esT +tRaxpD9oOACgrPWwsOEz4bI7qFSy8JzoMxOvhD2IRgQTEQIABgUCR17k3gAKCRCF +wiflpVc48tQkAJ9da/TKCdBij+Pm93rPUpp2Rslq9wCgpxkJ5YNrYCawocyfaQPe +xsHZKLKI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1vbi5q +b3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCRdXVWAUJC5P8LQAKCRDtoh6UtWVxb+g0 +BPsGdj6i1tbGnqe5fZopOeeZdWxVdLUNYVcs+mUbACnpvat2Wubyl2PUGxev0niY +tME90aZwmrti3tKvD2j8tveP0upxlgEhA/XTyhQw5CgMCDGDGWf0RLQK5xEBsWuu +N4gV5n1Yzdx6ijieZwNJfE4dOLOM4OCPkaaE29Ji0TVX/BnESBPWz3W/R00FjDdc +/l14eBO5OlmyQV/zAKT+R0tBiEYEEBECAAYFAkhEuXgACgkQUCxPKZafKh3VQACf +Z4TvFfZObRwlO4YzzrL8NOBgRY4AnAtBNv5Ga2Ou5KluhzgdD4cc/hP2iEYEEhEC +AAYFAkhZbysACgkQJNMr+aqVw0kuhgCeNPeCzZhmsiNdL5etbxUZzVbTXe4AoKim +F9wyQGMYF0eQNQ1a8Nx7q4YmiQGgBBABAgAGBQJJBr85AAoJECnuWLmWhlFxEi8M +IKg/RbKdVmffG2ZlujO/WqRbQ7ZaMN1HkrGze2LfW8rkehV/5DKKLRT0BH84nbpF +yOPVM4FHv3vm82fh0yDDnx6ewFlGgGc7ovmLjHDltI78OytEFmKt/O7SM3vjytz1 +//Xt9rtlaWDrhA2tnMEQ39xA7ArxtypRywhc5103Fun+51ZUSgGGzJlkUKam8/kA +8b6D0U+x3ZwZcBzLfBW+P6gnec2vZEogPxxukYPrtLbRE2ZrUG0U1RubUXu76fn4 +turIB3aZ4vFdCY3al/xBIkg6J5lW1dzRc+vY8Tf9pn3/gKxygE61Im07/b8pAKLJ +BEcuomzIn+lWS4np3O4h6HrVOFSQW//4xK55iU7F9nVmpQAwmj291Sl7Kswp0sf4 +NDJ5zuo4iDFoRUKjvtecG7s1dRBT10Damkqvq1PICsQN650oThQaDw+VDimL1hVR +wOUdzUIz+AkK5SRzP6De3nhuYxMpSbxpxCOQuYGP5bUhB23RjgJwWeqr24RIZGqb +END9otGIRQQQEQIABgUCSWcljwAKCRBHOOohZXSZeiUYAJdfCtm1Aij3dVLTBpyI +S1lk5iYrAJ4qXN9eQAJwFC28VZguU+VVCPg2z7irBDzVB3sBBQDY9NqhPxE2QUOV +ftQI4H29pEXGtf503uXpA747QyDt1V2Mi0SdppiQn6vgtd5wjjseiCxQYTFF0NgZ +PQOrtpnwaQLhQo9dzerYpZDeJvfCPeqcIabchf8jbj3J1gsDNDJaoxbT3AsHm/GE ++LjKN63gVMZaa1hSUbMNvv7pVmKVhFO3LS+EUXhxVeU7ZH6+A/EUy9RzujxYYOdD +eLJYCLORAAYpiMUEGAECAA8CGwwFAkhh+S0FCQ0Yc7IACgkQ7aIelLVlcW9LSAUA +nPC0ji8ajhdj4yW3ZRChT+H7hxPdp3id0Xzhuem/DiWT3a6eeQeSadpByGF1H0Ta +mT7buYfQgLsa9YkxRIf95jNPWCJkrg8lOaKfAO0+piehqCFly1jvHJ4nZ2hcdhtQ +q5C/JRPygfPJoUhcnbEfR09WekY/HXhC5XF5s2+PRK+RvFtqhpxCO+0hbCCTQZum +0QlrJUwh5bu/cJ003Dza17iOBEQcLesBBADmhtD1sFupeGfp1H+G37V8mngf47Bs +BS93RI+3mZjNdq9Mx4+yYUCWvW12SLD2EbaBiKColY2e0K9qG8LS8kEZfyPSy+K/ +vBUW28YbQhe4Dn3g7T/Q18JrNNyWPk9vVhOlnQQ9trXTW2xYCAHPXGVgHs4fDwz9 +AaymqwCu36twBQAgzc7kYYjFBBgBAgAPAhsgBQJGin6LBQkDXUaFAAoJEO2iHpS1 +ZXFvaq0FAKnvHI9bxEJtNFmWwq7gBDGXv9TrioNx3wCETQ6n6V8JIO4vV8XydmA1 +ujPSHY/7Ptw99+SZ25NQqGBuE98STKODH6EVyXGAvha66dzJTYHQDCG0EO+esDzO +fvrISFa37JfFl0Ju9SaHqnwTxrYxvo/Sd3alC8vJARd7IzuZoSZXZNBYz9RPbC8o +bTsEEmR1IcrP2IPtOXX7sViW37sU/w64jgREHC7SAQQArB4IoJfse8rCqRNkVzYm +btxvzzrtyl3LrluNgS7N4rTOLgCQeUJ8lgqEr2h3KEZ8PjGBWNYww3rj/MnX64jv +/Ybq9XxJc/vkFBRYT1ISqGszeFc3P0KTXnVahF5xG4MaQ6mhy4PgMq3/NETdPH+T +J+I3OL//KOa0MpGjwmtnGrsAILXz8IeJAZIEGAECAA8CGwIFAkaKfpsFCQNdRZ4A +18ALIAQZAQIANAUCRPM4Ey0UgAAAAAAVAA9wa2EtYWRkcmVzc0BnbnVwZy5vcmdq +YXNAZXh0dW5kby5jb20ACgkQpycTyKq7H3t8KAP/YWnPIkW4kfAWU5E93P/0R9DH +a1ly7zP3JWbpm7Lxe+2ESOJwPn3GWSn3h+Ty+3UhOIsqIEM0ISQ+SPAG/ltaghcT +/XUWnUtolcb6YUVBcjQt58wpxRWZwEfwQR58aTfJHBDDHXWTq58N9YoalwTCFSvi +F/UzyHAysp3dBje77/AJEO2iHpS1ZXFvxkgE/3SuuiloOcwou8I1zZ/5n4T7Bx0l +BZ8Q42Ct1t99+U4zhC4WJ83ESQPdvAhk7Y2urmuINQYn+tFN+NzVfNPT2hiFNflq +1+AzkZwO3lqh3OakC+LVeFSEmPxrgyXBisELaB8W4Kk90tklUcmI6DS5NCVSHk/W +2l/cMJurV9JuZ/ILLZmjWS01ruDRD6gze8EnpFUZ7In5jgDM/YRLIphINq+4jgRE +HC8JAQQAxCLemYxwWqGwXBUqMX74GTQULkvtSc82sXWixyrhPNyaxYKuAvlKO0nk +XGEAwS/YMC4m+gJ7iTiskG9iWPfoXPK5S81AjRX7NA8B34BAb5rJbW2eHypOLQ99 +MUUBYzuNLLqpwBZTeumoaz7DgoIHNpMpD4x/Irw1mX83xNhQ6F8AIKatOU2IxQQY +AQIADwIbDAUCRop+pAUJA11FZwAKCRDtoh6UtWVxbzeQBP9/43ouNUZ9/pT8lKzv +d15XHdZ2Kp9Brx2SmerUdDTZbETd3T/eSHAQxJcrwRXeCJg/O//8ZmTg2G/+hf9S +jD/OfCkZKVVe1sm1T7nErj9jWlO8+OuWryWE5eCLJb5W3Yk7WDdoeUcj3pKtFyml +DFlI0Sq4scHvyb6LPLxXzbb4ViyjXTH0eIh7rQ1SlWOF0fwQzb0Sk+LPRDJ8VX+Q +YY0j +=UQzw +-----END PGP PUBLIC KEY BLOCK----- + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..8add30a --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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 + + 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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! + + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..0c75787 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,11967 @@ +2009-06-08 Simon Josefsson + + * NEWS: Version 1.15. + +2009-06-08 Simon Josefsson + + * NEWS: Fix. + +2009-06-08 Simon Josefsson + + * NEWS: Fix. + +2009-06-05 Simon Josefsson + + * NEWS: Add. + +2009-06-05 Simon Josefsson + + * gl/m4/gnulib-comp.m4, gl/m4/version-etc.m4, gl/version-etc.c: + Update gnulib files. + +2009-06-02 Simon Josefsson + + * NEWS, java/misc/GenerateNFKC.java, + java/misc/GenerateRFC3454.java, java/misc/TestIDNA.java, + java/misc/TestNFKC.java: Fix some java warnings. + +2009-06-01 Simon Josefsson + + * configure.ac, lib/Makefile.am: Check stack usage in library. + +2009-06-01 Simon Josefsson + + * gl/m4/manywarnings.m4: Update gnulib files. + +2009-05-29 Simon Josefsson + + * NEWS, THANKS, lib/idna.c: Use c_strcasecmp instead of strcasecmp. + Reported by Guenter Knauf . + +2009-05-28 Simon Josefsson + + * cfg.mk, configure.ac, examples/Makefile.am, lib/Makefile.am, + src/Makefile.am, tests/Makefile.am: Improve warning handling. + +2009-05-28 Simon Josefsson + + * build-aux/gnupload: Update gnulib files. + +2009-05-27 Simon Josefsson + + * gl/m4/include_next.m4, lib/gl/m4/include_next.m4: Update gnulib + files. + +2009-05-20 Simon Josefsson + + * m4/pkg.m4: Add. + +2009-05-20 Simon Josefsson + + * build-aux/gnupload, gltests/test-vc-list-files-git.sh, maint.mk: + Update gnulib files. + +2009-05-11 Simon Josefsson + + * gtk-doc.make: Fix syntax-check. + +2009-05-11 Simon Josefsson + + * gtk-doc.make, m4/gtk-doc.m4: Upgrade gtk-doc files. + +2009-05-08 Simon Josefsson + + * build-aux/gnupload, gl/m4/errno_h.m4, gl/m4/gnulib-comp.m4, + lib/gl/Makefile.am, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/multiarch.m4, maint.mk: Update gnulib files. + +2009-05-08 Simon Josefsson + + * cfg.mk: Make -Werror more optional. + +2009-05-07 Simon Josefsson + + * README-alpha: Fix. + +2009-05-05 Simon Josefsson + + * README-alpha: Fix. + +2009-05-05 Simon Josefsson + + * README-alpha: Add. + +2009-05-03 Simon Josefsson + + * gl/gettext.h, lib/gl/Makefile.am, lib/gl/gettext.h, + lib/gl/m4/wchar.m4, lib/gl/wchar.in.h, maint.mk: Update gnulib + files. + +2009-04-27 Simon Josefsson + + * maint.mk: Update gnulib files. + +2009-04-27 Simon Josefsson + + * build-aux/vc-list-files, lib/gl/m4/lib-link.m4, + lib/gl/m4/lib-prefix.m4, maint.mk: Update gnulib files. + +2009-04-24 Simon Josefsson + + * .prev-version: Add. + +2009-04-24 Simon Josefsson + + * .x-sc_makefile-check~, .x-sc_makefile_check~, .x-sc_space_tab~: + rm. + +2009-04-24 Simon Josefsson + + * .x-sc_avoid_if_before_free, .x-sc_makefile-check~, + .x-sc_makefile_check, .x-sc_makefile_check~, gltests/Makefile.am, + java/Makefile.am, java/misc/Makefile.am, maint.mk: Fix + syntax-checks. + +2009-04-24 Simon Josefsson + + * cfg.mk: Fix for modern git. + +2009-04-24 Simon Josefsson + + * build-aux/useless-if-before-free, build-aux/vc-list-files, + gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + gltests/Makefile.am, gltests/test-vc-list-files-cvs.sh, + gltests/test-vc-list-files-git.sh: Add modules, for syntax-check. + +2009-04-24 Simon Josefsson + + * lib/nfkc.c: Fix warnings. + +2009-04-24 Simon Josefsson + + * .x-sc_the_the, cfg.mk, configure.ac: Syntax check fixes. + +2009-04-24 Simon Josefsson + + * .x-sc_error_message_uppercase, .x-sc_file_system, + .x-sc_prohibit_atoi_atof, cfg.mk, contrib/idn-python/Makefile, + contrib/idn-python/idn.c, contrib/idn-python/test.py, gl/getopt1.c, + lib/nfkc.c, lib/version.c, m4/valgrind.m4, src/idn.c: Syntax check + fixes. + +2009-04-24 Simon Josefsson + + * .x-sc_space_tab, .x-sc_space_tab~, NEWS, gtk-doc.make, + m4/valgrind.m4: Syntax check fixes. + +2009-04-24 Simon Josefsson + + * .x-sc_avoid_if_before_free, .x-sc_cast_of_alloca_return_value, + lib/stringprep.c, maint.mk: Update gnulib files. + +2009-04-23 Simon Josefsson + + * NEWS: Fix. + +2009-04-23 Simon Josefsson + + * doc/gendocs_template, maint.mk: Update gnulib files. + +2009-04-23 Simon Josefsson + + * NEWS, doc/libidn.texi: Improve texinfo section names. + +2009-04-17 Simon Josefsson + + * configure.ac: AM_PROG_GCJ needs to be called unconditionally. + Sigh. Otherwise you get this error: conditional "am__fastdepGCJ" + was never defined. + +2009-04-14 Simon Josefsson + + * configure.ac, m4/ac_prog_javac.m4, m4/ac_prog_javac_works.m4, + m4/ac_prog_javadoc.m4: Fix java detection. + +2009-04-14 Simon Josefsson + + * lib/stringprep.h: Bump version. + +2009-04-14 Simon Josefsson + + * java/misc/TestIDNA.java: Don't use assert keyword to avoid + compilation error. + +2009-04-14 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2009-04-14 Simon Josefsson + + * build-aux/gendocs.sh, doc/gendocs_template, doc/lgpl-2.1.texi, + lib/gl/m4/ld-version-script.m4, maint.mk: Update gnulib files. + +2009-04-03 Simon Josefsson + + * ChangeLog: Generated. + +2009-04-03 Simon Josefsson + + * NEWS: Version 1.14. + +2009-04-03 Simon Josefsson + + * NEWS, configure.ac, lib/Makefile.am, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/ld-output-def.m4: Use --output-def. + +2009-04-03 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4: Update gnulib files. + +2009-04-01 Simon Josefsson + + * lib/toutf8.c: Assume locale.h. + +2009-03-25 Simon Josefsson + + * cfg.mk: Copy cyclo chart to webdir. + +2009-03-25 Simon Josefsson + + * gl/unistd.in.h: Update gnulib files. + +2009-03-23 Simon Josefsson + + * NEWS: Add. + +2009-03-23 Simon Josefsson + + * THANKS: Add. + +2009-03-23 Simon Josefsson + + * tests/tst_toutf8.c: Don't crash in memcmp if + stringprep_utf8_to_locale returns NULL. Reported by Dagobert + Michelsen in + . + +2009-03-19 Simon Josefsson + + * GNUmakefile, build-aux/gnupload, maint.mk: Update gnulib files. + +2009-03-06 Simon Josefsson + + * NEWS, configure.ac, lib/stringprep.h: Bump version. + +2009-03-06 Simon Josefsson + + * ChangeLog: Generated. + +2009-03-06 Simon Josefsson + + * NEWS: Version 1.13. + +2009-03-06 Simon Josefsson + + * NEWS, THANKS: Add credits. + +2009-03-06 Simon Josefsson + + * configure.ac: Don't use warnings unless we are using GCC. + +2009-03-06 Simon Josefsson + + * NEWS: Fix. + +2009-03-06 Simon Josefsson + + * NEWS: Add. + +2009-03-06 Simon Josefsson + + * build-aux/gnupload: Update gnulib files. + +2009-03-04 Simon Josefsson + + * NEWS: Fix. + +2009-03-04 Simon Josefsson + + * NEWS: Clarify. + +2009-03-04 Simon Josefsson + + * doc/libidn.texi, lib/punycode.h, lib/tld.h: Namespace discussion. + +2009-03-04 Simon Josefsson + + * gl/Makefile.am, lib/gl/Makefile.am: Update gnulib files. + +2009-03-04 Simon Josefsson + + * lib/idn-free.h: Fix. + +2009-03-04 Simon Josefsson + + * lib/idn-free.c, lib/idn-free.h, lib/pr29.c, lib/pr29.h: Finish API + visibility markup. Now passes self tests. + +2009-03-04 Simon Josefsson + + * NEWS: Fix. + +2009-03-04 Simon Josefsson + + * NEWS: Add. + +2009-03-04 Simon Josefsson + + * lib/idna.h, lib/profiles.c, lib/punycode.c, lib/punycode.h, + lib/stringprep.h, lib/tld.c: Mark visibility of API functions. + +2009-03-04 Simon Josefsson + + * doc/reference/Makefile.am: Ignore decorators. + +2009-03-04 Simon Josefsson + + * lib/tld.h: Improve decorators. + +2009-03-04 Simon Josefsson + + * lib/tld.h: Add symbol visibility markup. + +2009-03-04 Simon Josefsson + + * lib/Makefile.am, lib/gl/m4/visibility.m4: Update gnulib files. + +2009-03-03 Simon Josefsson + + * m4/linker-script.m4: Remove. + +2009-03-03 Simon Josefsson + + * lib/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/visibility.m4: Use visibility + module. + +2009-03-03 Simon Josefsson + + * NEWS: Add. + +2009-03-03 Simon Josefsson + + * lib/Makefile.am: Typo. + +2009-03-03 Simon Josefsson + + * configure.ac: More debug info. + +2009-03-03 Simon Josefsson + + * configure.ac: Debug output about version script. + +2009-03-03 Simon Josefsson + + * configure.ac, lib/Makefile.am, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/ld-version-script.m4: Use gnulib ld-version-script module. + Re-add use of -export-symbols-regex for other platforms. + +2009-03-02 Simon Josefsson + + * lib/libidn.map: Add license. Use v1.0 in name. + +2009-03-02 Simon Josefsson + + * lib/libidn.map: Add. + +2009-03-02 Simon Josefsson + + * NEWS, configure.ac, lib/Makefile.am, m4/linker-script.m4: Use a + linker version script. + +2009-03-02 Simon Josefsson + + * gl/m4/gnulib-common.m4, gl/m4/stdarg.m4, + lib/gl/m4/gnulib-common.m4, lib/gl/m4/stdint.m4, lib/gl/stdint.in.h: + Update gnulib files. + +2009-02-24 Simon Josefsson + + * gl/m4/include_next.m4, lib/gl/m4/include_next.m4: Update gnulib + files. + +2009-02-10 Simon Josefsson + + * src/Makefile.am: Don't remove idn_cmd.c and idn_cmd.h on + distclean, use maintainer-clean instead. Reported by "Sisyphus" + in + . + +2009-02-09 Simon Josefsson + + * NEWS, THANKS, doc/Makefile.am, doc/libidn.texi, + doc/reference/Makefile.am, doc/reference/libidn-docs.sgml, + lib/idn-free.c, lib/nfkc.c: Document the idn_free function. + +2009-02-09 Simon Josefsson + + * lib/stringprep.h: Bump version. + +2009-02-09 Simon Josefsson + + * src/idn.c: Drop emit_bug_reporting_address, it is now provided by + gnulib version-etc. + +2009-02-06 Simon Josefsson + + * build-aux/gnupload, gl/m4/00gnulib.m4, gl/m4/extensions.m4, + gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4, + gl/m4/pmccabe2html.m4, gl/version-etc.c, gl/version-etc.h, + lib/gl/m4/00gnulib.m4, lib/gl/m4/extensions.m4, + lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/locale-fr.m4: Update gnulib files. + +2009-01-23 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2009-01-23 Simon Josefsson + + * ChangeLog: Generated. + +2009-01-23 Simon Josefsson + + * NEWS: Version 1.12. + +2009-01-23 Simon Josefsson + + * NEWS: Add. + +2009-01-23 Simon Josefsson + + * AUTHORS: Update PGP key. + +2009-01-23 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2009-01-23 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2009-01-22 Simon Josefsson + + * NEWS, doc/libidn.texi, src/idn.c, src/idn.ggo: idn: Add new + --no-tld to resolve broken --tld parameter. Reported by Christian + Hammers in + http://thread.gmane.org/gmane.comp.gnu.libidn.general/162 + +2009-01-22 Simon Josefsson + + * doc/gdoc: Fix. + +2009-01-22 Simon Josefsson + + * doc/Makefile.am: Use gdoc's -pkg-name. + +2009-01-22 Simon Josefsson + + * doc/gdoc: Add -pkg-name parameter. + +2009-01-22 Simon Josefsson + + * gl/m4/errno_h.m4, gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4, + gl/unistd.in.h, gltests/test-unistd.c, lib/gl/m4/gnulib-common.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/multiarch.m4: Update gnulib + files. + +2009-01-22 Simon Josefsson + + * src/idn.c: Cleanup. + +2009-01-22 Simon Josefsson + + * src/idn.c: Bump copyright years. + +2009-01-22 Simon Josefsson + + * src/idn.c: Update --help output per new GNU coding standards. + +2009-01-19 Simon Josefsson + + * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h: Update gnulib + files. + +2009-01-19 Simon Josefsson + + * doc/Makefile.am: Bump copyright years for man pages. + +2009-01-17 Simon Josefsson + + * : Touch. + +2009-01-17 Simon Josefsson + + * AUTHORS: Update PGP key. + +2009-01-17 Simon Josefsson + + * contrib/README, csharp/IDNA.cs, csharp/IDNAException.cs, + csharp/Makefile.am, csharp/NFKC.cs, csharp/Punycode.cs, + csharp/PunycodeException.cs, csharp/Stringprep.cs, + csharp/StringprepException.cs, csharp/generate/AssemblyInfo.cs, + csharp/generate/GenerateNFKC.cs, + csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs, + csharp/generate/Program.cs, csharp/generate/Tokenizer.cs, + doc/Makefile.am, doc/Makefile.gdoci, doc/cyclo/Makefile.am, + doc/gdoc, doc/java/Makefile.am, doc/libidn.texi, + doc/tld/Makefile.am, doc/tld/README, examples/Makefile.am, + examples/README, examples/example.c, examples/example2.c, + examples/example3.c, examples/example4.c, examples/example5.c, + java/Makefile.am, java/gnu/inet/encoding/IDNA.java, + java/gnu/inet/encoding/IDNAException.java, + java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/NFKC.java, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java, + java/gnu/inet/encoding/Stringprep.java, + java/gnu/inet/encoding/StringprepException.java, + java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java, + java/misc/Makefile.am, java/misc/TestIDNA.java, + java/misc/TestNFKC.java, lib/Makefile.am, + lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl, + lib/gen-unicode-tables.pl, lib/idn-free.c, lib/idn-free.h, + lib/idna.c, lib/idna.h, lib/nfkc.c, lib/pr29.c, lib/pr29.h, + lib/profiles.c, lib/punycode.c, lib/punycode.h, + lib/strerror-idna.c, lib/strerror-pr29.c, lib/strerror-punycode.c, + lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c, + lib/stringprep.h, lib/tld.c, lib/tld.h, lib/toutf8.c, + lib/version.c, libc/README, src/Makefile.am, src/idn.c, + src/idn.ggo, src/idna.el, src/punycode.el, tests/Makefile.am, + tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c, + tests/tst_pr29.c, tests/tst_punycode.c, tests/tst_strerror.c, + tests/tst_stringprep.c, tests/tst_tld.c, tests/tst_toutf8.c, + tests/utils.c, tests/utils.h: Bump copyright years. + +2009-01-17 Simon Josefsson + + * lib/gl/override/lib/stdint.in.h.diff, lib/gl/stdint.in.h: Update + gnulib files. + +2009-01-17 Simon Josefsson + + * gl/m4/csharp.m4, gl/m4/csharpcomp.m4, gl/m4/errno_h.m4, + gl/m4/gnulib-common.m4, gl/progname.c, gl/strerror.c, + lib/gl/m4/codeset.m4, lib/gl/m4/gnulib-common.m4, + lib/gl/m4/iconv.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/lib-ld.m4, + lib/gl/m4/lib-link.m4, lib/gl/m4/locale-fr.m4, + lib/gl/m4/locale-tr.m4, lib/gl/m4/longlong.m4, + lib/gl/m4/stdbool.m4, lib/gl/m4/stdint.m4, lib/gl/m4/strverscmp.m4, + lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4, + lib/gl/override/lib/stdint.in.h.diff, lib/gl/stdint.in.h, + lib/gl/wchar.in.h: Update gnulib files. + +2009-01-05 Simon Josefsson + + * build-aux/gendocs.sh, doc/gendocs_template, gl/Makefile.am, + gl/m4/errno_h.m4, gl/m4/extensions.m4, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, gl/unistd.in.h, gl/version-etc.c, + gltests/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/codeset.m4, + lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4, + lib/gl/m4/lib-link.m4, lib/gl/m4/locale-fr.m4, + lib/gl/m4/multiarch.m4, lib/gl/m4/stdint.m4, lib/gl/m4/wchar.m4, + lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4, lib/gl/stdint.in.h, + lib/gl/wchar.in.h, lib/gltests/Makefile.am: Update gnulib files. + +2009-01-05 Simon Josefsson + + * lib/gl/override/lib/stdint.in.h.diff: Update. + +2008-12-11 Simon Josefsson + + * configure.ac: Fix comment. + +2008-12-11 Simon Josefsson + + * configure.ac: Fix warning initialization. + +2008-12-11 Simon Josefsson + + * configure.ac: Add warning flag. + +2008-12-11 Simon Josefsson + + * gl/m4/manywarnings.m4, lib/nfkc.c, maint.mk: Update gnulib files. + Fix warning. + +2008-12-02 Simon Josefsson + + * doc/libidn.texi: Fix java jar path. + +2008-12-02 Simon Josefsson + + * NEWS, java/gnu/inet/encoding/CombiningClass.java, + java/gnu/inet/encoding/Composition.java, + java/gnu/inet/encoding/DecompositionKeys.java, + java/gnu/inet/encoding/DecompositionMappings.java, + java/gnu/inet/encoding/IDNAException.java, + java/gnu/inet/encoding/NFKC.java, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java, + java/gnu/inet/encoding/RFC3454.java, + java/gnu/inet/encoding/StringprepException.java, + java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java: Improve + JavaDoc output. + +2008-12-02 Simon Josefsson + + * gl/m4/manywarnings.m4: Update gnulib files. + +2008-12-02 Simon Josefsson + + * configure.ac, doc/gendocs_template, gl/Makefile.am, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/include_next.m4, + gl/m4/warnings.m4, lib/gl/m4/include_next.m4, lib/gl/stdint.in.h, + maint.mk: Update gnulib files. + +2008-11-29 Simon Josefsson + + * gl/override/doc/gendocs_template.diff: Fix + +2008-11-29 Simon Josefsson + + * gl/override/doc/gendocs_template.diff: Fix javadoc pointer. + +2008-11-17 Simon Josefsson + + * configure.ac: Rewrite warning initializations. + +2008-11-17 Simon Josefsson + + * gl/m4/warnings.m4: Update gnulib files. + +2008-11-17 Simon Josefsson + + * cfg.mk, configure.ac: Simplify warning handling. + +2008-11-17 Simon Josefsson + + * configure.ac, gl/m4/warnings.m4: Make configure slightly faster. + +2008-11-17 Simon Josefsson + + * cfg.mk, configure.ac: Disable -Wunreachable-code. + +2008-11-17 Simon Josefsson + + * configure.ac, gl/override/lib/progname.h.diff, gl/progname.h, + lib/toutf8.c: Fix warnings. + +2008-11-17 Simon Josefsson + + * cfg.mk, examples/example3.c, examples/example4.c, + examples/example5.c, src/Makefile.am: Fix warnings. + +2008-11-17 Simon Josefsson + + * cfg.mk, tests/tst_nfkc.c, tests/tst_pr29.c, tests/utils.h: Fix + warnings. + +2008-11-17 Simon Josefsson + + * cfg.mk, gl/gettext.h, gl/override/lib/gettext.h.diff, + lib/gl/gettext.h, lib/gl/override/lib/gettext.h.diff: Fix vla + warnings. + +2008-11-17 Simon Josefsson + + * cfg.mk, lib/idna.c, lib/nfkc.c: Fix warnings. + +2008-11-17 Simon Josefsson + + * configure.ac, gl/m4/warnings.m4: Make it easier to read warning + settings. + +2008-11-17 Simon Josefsson + + * build-aux/gnupload: Update gnulib files. + +2008-11-13 Simon Josefsson + + * NEWS: Add. + +2008-11-13 Simon Josefsson + + * lib/nfkc.c: Fix warning. + +2008-11-13 Simon Josefsson + + * cfg.mk, configure.ac, examples/example.c, tests/tst_strerror.c, + tests/tst_tld.c: Enable warnings. Fix warnings. + +2008-11-13 Simon Josefsson + + * lib/nfkc.c: Fix warnings. + +2008-11-12 Simon Josefsson + + * libidn.pc.in: Add URL field. + +2008-11-12 Simon Josefsson + + * configure.ac, m4/update-header-version.m4, m4/valgrind.m4: Use + external macros for shared operations. + +2008-11-12 Simon Josefsson + + * configure.ac: Remove linker script message. + +2008-11-12 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update gnulib files. + +2008-11-12 Simon Josefsson + + * Makefile.am, build-aux/pmccabe2html, cfg.mk, configure.ac, + gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + gl/m4/warnings.m4: Update gnulib files. Use warnings module. + +2008-11-12 Simon Josefsson + + * configure.ac: Neatify. + +2008-11-04 Simon Josefsson + + * doc/libidn.texi: Use GFDLv1.3+ as license. + +2008-11-04 Simon Josefsson + + * NEWS, doc/Makefile.am, doc/fdl-1.3.texi, doc/fdl.texi, + doc/libidn.texi, gl/Makefile.am, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, gl/m4/include_next.m4, lib/gl/Makefile.am, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/include_next.m4, + lib/gl/m4/strdup.m4, lib/gl/strdup.c, maint.mk: Update gnulib files. + Use GFDLv1.3+ for manual. + +2008-11-03 Simon Josefsson + + * java/gnu/inet/encoding/IDNA.java, + java/gnu/inet/encoding/Punycode.java: Fix Javadoc comments on + important classes. + +2008-10-30 Simon Josefsson + + * lib/Makefile.am: The -DLIBIDN_BUILDING Windows hack is no longer + needed. + +2008-10-29 Simon Josefsson + + * contrib/doxygen/Doxyfile.in: Disable man pages. + +2008-10-29 Simon Josefsson + + * contrib/doxygen/Doxyfile.in: Fix typo. + +2008-10-29 Simon Josefsson + + * NEWS, contrib/doxygen/Doxyfile.in, contrib/doxygen/Doxyfile.orig: + Modernize doxygen configuration. + +2008-10-28 Simon Josefsson + + * cfg.mk: Use coverage rules from gnulib. + +2008-10-28 Simon Josefsson + + * maint.mk: Update gnulib files. + +2008-10-28 Simon Josefsson + + * NEWS, configure.ac, lib/stringprep.h: Bump versions. + +2008-10-28 Simon Josefsson + + * ChangeLog: Generated. + +2008-10-28 Simon Josefsson + + * NEWS: Version 1.11. + +2008-10-28 Simon Josefsson + + * doc/texinfo.css: Use white background. + +2008-10-28 Simon Josefsson + + * NEWS: Fix. + +2008-10-28 Simon Josefsson + + * gltests/Makefile.am, lib/gltests/Makefile.am: Update gnulib files. + +2008-10-28 Simon Josefsson + + * cfg.mk: Sync with gnutls. + +2008-10-28 Simon Josefsson + + * cfg.mk: Generalize coverage rules. + +2008-10-28 Simon Josefsson + + * tests/tst_tld.c: Increase code coverage. + +2008-10-28 Simon Josefsson + + * tests/tst_pr29.c: Increase code coverage. + +2008-10-28 Simon Josefsson + + * NEWS, tests/Makefile.am, tests/tst_idna.c, tests/tst_strerror.c, + tests/tst_toutf8.c: Increase code coverage in self-tests. + +2008-10-28 Simon Josefsson + + * tests/tst_strerror.c: Increase code coverage. + +2008-10-28 Simon Josefsson + + * tests/tst_stringprep.c: Increase code coverage. + +2008-10-28 Simon Josefsson + + * cfg.mk: Fix web-coverage rule. + +2008-10-28 Simon Josefsson + + * cfg.mk: Fix release target. Add web-coverage targets. + +2008-10-27 Simon Josefsson + + * NEWS: Add. + +2008-10-27 Simon Josefsson + + * NEWS, gltests/Makefile.am, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/strdup.m4, lib/gl/strdup.c, lib/gltests/Makefile.am: + Revert gnulib avoid of strdup. + +2008-10-27 Simon Josefsson + + * cfg.mk: Add coverage rules. + +2008-10-27 Simon Josefsson + + * NEWS, csharp/IDNA.cs, csharp/IDNAException.cs, + csharp/Makefile.am, csharp/NFKC.cs, csharp/Punycode.cs, + csharp/PunycodeException.cs, csharp/Stringprep.cs, + csharp/StringprepException.cs, csharp/generate/AssemblyInfo.cs, + csharp/generate/GenerateNFKC.cs, + csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs, + csharp/generate/Program.cs, csharp/generate/Tokenizer.cs: Re-add + lost copyright headers for C# port. + +2008-10-27 Simon Josefsson + + * gl/unistd.in.h: Update gnulib files. + +2008-10-22 Simon Josefsson + + * cfg.mk: Re-license under GPLv3. + +2008-10-22 Simon Josefsson + + * doc/gdoc: Replace - with \- in man page output in more places. + +2008-10-22 Simon Josefsson + + * doc/gdoc: Reduce code duplication. + +2008-10-22 Simon Josefsson + + * NEWS: Add. + +2008-10-22 Simon Josefsson + + * doc/gdoc: Use GPLv3. Clarify copyright and license. Use GAP for + man page license. + +2008-10-21 Simon Josefsson + + * NEWS: Add. + +2008-10-21 Simon Josefsson + + * cfg.mk: Fix mingw32 rule. + +2008-10-21 Simon Josefsson + + * NEWS: Add. + +2008-10-21 Simon Josefsson + + * lib/version.c: Use STRINGPREP_VERSION instead of PACKAGE_VERSION + for MSVS builds. + +2008-10-21 Simon Josefsson + + * Makefile.am: Change win32 files. + +2008-10-21 Simon Josefsson + + * win32/include/config.h: Extracted from gen-win32-headers.pl. + +2008-10-21 Simon Josefsson + + * win32/include/Wild.pm: Rm. + +2008-10-21 Simon Josefsson + + * doc/libidn.texi, lib/idna.h, lib/stringprep.h, + win32/include/gen-win32-headers.pl, win32/libidn.vcproj: Avoid perl + dependency on Windows. + +2008-10-21 Simon Josefsson + + * lib/stringprep.h: Cleanups, preparing for Win32 fixes. + +2008-10-21 Simon Josefsson + + * lib/idna.h: Cleanups, preparing for Win32 fixes. + +2008-10-21 Simon Josefsson + + * configure.ac: Fix last commit. + +2008-10-21 Simon Josefsson + + * FAQ, configure.ac, lib/Makefile.am, lib/stringprep.h, + lib/stringprep.h.in: Don't use substition for stringprep.h header + file. + +2008-10-21 Simon Josefsson + + * gl/Makefile.am, gl/errno.in.h, gl/m4/gnulib-common.m4, + gl/m4/unistd_h.m4, gl/stdarg.in.h, gl/string.in.h, gl/unistd.in.h, + lib/gl/iconv.in.h, lib/gl/m4/gnulib-common.m4, lib/gl/stdint.in.h, + lib/gl/string.in.h, lib/gl/wchar.in.h: Update gnulib files. + +2008-10-13 Simon Josefsson + + * build-aux/pmccabe2html: Update gnulib files. + +2008-10-13 Simon Josefsson + + * doc/cyclo/Makefile.am: Update gnulib files. + +2008-10-13 Simon Josefsson + + * NEWS, configure.ac, doc/Makefile.am, doc/cyclo/Makefile.am, + doc/prmgt/Makefile.am: Rename doc/prmgt/ to doc/cyclo/. + +2008-10-13 Simon Josefsson + + * NEWS: Add. + +2008-10-13 Simon Josefsson + + * GNUmakefile, gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h: + Update gnulib files. + +2008-10-07 Simon Josefsson + + * doc/prmgt/Makefile.am: Fix. + +2008-10-07 Simon Josefsson + + * doc/Makefile.am: Add prmgt/. + +2008-10-07 Simon Josefsson + + * doc/prmgt/Makefile, doc/prmgt/Makefile.am~, + doc/prmgt/Makefile.in, doc/prmgt/libidn-cyclo.html, + doc/prmgt/pmccabe.css: Remove accidentally added files. + +2008-10-07 Simon Josefsson + + * build-aux/pmccabe.css, build-aux/pmccabe2html, + gl/m4/pmccabe2html.m4: Update gnulib files. + +2008-10-07 Simon Josefsson + + * configure.ac, doc/prmgt/Makefile, doc/prmgt/Makefile.am, + doc/prmgt/Makefile.am~, doc/prmgt/Makefile.in, + doc/prmgt/libidn-cyclo.html, doc/prmgt/pmccabe.css, gl/Makefile.am, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Use pmccabe2html. + +2008-10-07 Simon Josefsson + + * gl/Makefile.am, gl/errno.in.h, gl/m4/unistd_h.m4, gl/strerror.c, + gl/unistd.in.h, lib/gl/c-ctype.h: Update gnulib files. + +2008-09-30 Simon Josefsson + + * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h, + lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/wchar.m4: + Update gnulib files. + +2008-09-29 Simon Josefsson + + * configure.ac: Need AC_CONFIG_MACRO_DIR too, to avoid libtool + warnings, sigh. + +2008-09-26 Simon Josefsson + + * NEWS: Add. + +2008-09-26 Simon Josefsson + + * po/eo.po.in, po/fr.po.in: Sync with TP. + +2008-09-26 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4: Update gnulib files. + +2008-09-23 Simon Josefsson + + * configure.ac, doc/reference/Makefile.am: Enable automake warnings. + +2008-09-23 Simon Josefsson + + * NEWS: Add. + +2008-09-23 Simon Josefsson + + * README: Say 'or later' wrt licenses. + +2008-09-23 Simon Josefsson + + * doc/texinfo.css: Improve cosmetics. + +2008-09-23 Simon Josefsson + + * doc/texinfo.css: Minor cosmetic fixes. + +2008-09-23 Simon Josefsson + + * NEWS: Add. + +2008-09-23 Simon Josefsson + + * configure.ac: Add AC_COPYRIGHT. + +2008-09-23 Simon Josefsson + + * Makefile.am, cfg.mk, configure.ac, examples/Makefile.am, + lib/Makefile.am, src/Makefile.am, tests/Makefile.am: Support a + WARN_CFLAGS to trigger compiler warnings. + +2008-09-22 Simon Josefsson + + * : Touch. + +2008-09-18 Simon Josefsson + + * contrib/doxygen/gdoc2doxygen, lib/gen-stringprep-tables.pl, + lib/gen-tld-tables.pl, lib/gen-unicode-tables.pl: Remove final + references to GPLv2. + +2008-09-18 Simon Josefsson + + * NEWS, lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/malloc.m4, + lib/gl/m4/stdlib_h.m4, lib/gl/m4/strdup.m4, lib/gl/m4/unistd_h.m4, + lib/gl/malloc.c, lib/gl/stdlib.in.h, lib/gl/strdup.c, + lib/gl/unistd.in.h, lib/gltests/Makefile.am, + lib/gltests/test-stdlib.c, lib/gltests/test-unistd.c: Assume strdup. + +2008-09-18 Simon Josefsson + + * gl/errno.in.h, gl/m4/errno_h.m4, gltests/test-errno.c: Add. + +2008-09-18 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/strerror.m4, + gl/strerror.c, gltests/Makefile.am, gltests/test-strerror.c: Update + gnulib files. + +2008-09-12 Simon Josefsson + + * build-aux/config.rpath, gl/m4/include_next.m4, + lib/gl/m4/include_next.m4: Update gnulib files. + +2008-09-02 Simon Josefsson + + * gl/Makefile.am, gl/m4/include_next.m4, gl/stdarg.in.h, + gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am, + lib/gl/iconv.in.h, lib/gl/m4/include_next.m4, + lib/gl/m4/lib-link.m4, lib/gl/m4/lib-prefix.m4, lib/gl/stdint.in.h, + lib/gl/stdlib.in.h, lib/gl/string.in.h, lib/gl/unistd.in.h, + lib/gl/wchar.in.h: Update gnulib files. + +2008-08-29 Simon Josefsson + + * maint.mk: Update gnulib files. + +2008-08-29 Simon Josefsson + + * lib/stringprep.c: Don't store negativa values in a size_t. + +2008-08-27 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Sync. + +2008-08-27 Simon Josefsson + + * doc/libidn.texi: Improve. + +2008-08-27 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Sync. + +2008-08-27 Simon Josefsson + + * doc/libidn.texi: Mention krb5 profile. + +2008-08-27 Simon Josefsson + + * doc/libidn.texi, doc/reference/libidn-docs.sgml: Add "or later" + clauses when talking about license versions Suggested by + karl@freefriends.org (Karl Berry). + +2008-08-27 Simon Josefsson + + * Makefile.am, cfg.mk: Move maintainer targets from Makefile.am to + cfg.mk. + +2008-08-27 Simon Josefsson + + * Makefile.am: Use git2cl directly. + +2008-08-27 Simon Josefsson + + * Makefile.am: Typo. + +2008-08-27 Simon Josefsson + + * Makefile.am: Split release target. + +2008-08-27 Simon Josefsson + + * Makefile.am: Generalize release target. + +2008-08-27 Simon Josefsson + + * Makefile.am: Create a copy of released files. + +2008-08-27 Simon Josefsson + + * Makefile.am: Copy all of javadoc. + +2008-08-27 Simon Josefsson + + * Makefile.am: Fix typo. + +2008-08-27 Simon Josefsson + + * Makefile.am: Dist more. + +2008-08-27 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2008-08-27 Simon Josefsson + + * ChangeLog: Generated. + +2008-08-27 Simon Josefsson + + * NEWS: Version 1.10. + +2008-08-27 Simon Josefsson + + * NEWS: Add. + +2008-08-27 Simon Josefsson + + * win32/include/gen-win32-headers.pl: Declare strverscmp. + +2008-08-27 Simon Josefsson + + * lib/stringprep.c: Fix warnings. + +2008-08-26 Simon Josefsson + + * libidn.fms: Remove freshmeat-submit template, no longer used. + +2008-08-26 Simon Josefsson + + * .clcopying, .cvscopying, .cvsusers, Makefile.am: Rename + .cvscopying to .clcopying. + +2008-08-26 Simon Josefsson + + * GNUmakefile: Update gnulib files. + +2008-08-26 Simon Josefsson + + * lib/gunibreak.h, lib/gunicomp.h, lib/gunidecomp.h: Add generated + files because perl 5.10 breaks gen-unicode-tables.pl. + +2008-08-26 Simon Josefsson + + * po/LINGUAS, po/id.po.in: Sync with TP. + +2008-08-26 Simon Josefsson + + * NEWS, THANKS, src/idn.c, src/idn.ggo: idn: accept -n as short form + for --nfkc. Before '-k' was used as the short form, but all + documentation has said '-n'. We now accept both short forms, and -n + remains the documented short form. Reported by John McGowan + in + + . + +2008-08-21 Simon Josefsson + + * gl/Makefile.am, gl/m4/autobuild.m4, gl/m4/string_h.m4, + gl/string.in.h, lib/gl/Makefile.am, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/string_h.m4, lib/gl/m4/strverscmp.m4, lib/gl/string.in.h, + lib/gl/strverscmp.h, lib/gltests/Makefile.am, + lib/gltests/test-strverscmp.c, lib/version.c: Update gnulib files. + +2008-08-20 Simon Josefsson + + * Makefile.am: Don't try to add tar in www dir. + +2008-08-20 Simon Josefsson + + * NEWS: Add. + +2008-08-20 Simon Josefsson + + * configure.ac, gl/Makefile.am, gl/m4/autobuild.m4, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, m4/autobuild.m4: Update + gnulib files. + +2008-08-20 Simon Josefsson + + * README: Fix URLs. + +2008-08-20 Simon Josefsson + + * doc/libidn.texi: Fix URLs. + +2008-08-18 Simon Josefsson + + * Makefile.am: Don't put releases in www directory, after discussion + with Savannah admins. + +2008-08-06 Simon Josefsson + + * GNUmakefile, build-aux/gnupload, gl/m4/gnulib-comp.m4, + lib/gl/m4/gnulib-comp.m4: Update gnulib files. + +2008-07-07 Simon Josefsson + + * NEWS: Add. + +2008-07-07 Simon Josefsson + + * po/LINGUAS, po/cs.po.in, po/it.po.in, po/nl.po.in, po/pl.po.in, + po/vi.po.in, po/zh_CN.po.in: Sync with TP. + +2008-07-07 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2008-07-01 Simon Josefsson + + * ChangeLog: Generated. + +2008-07-01 Simon Josefsson + + * Makefile.am, configure.ac: Add gltests/ directories. + +2008-07-01 Simon Josefsson + + * ChangeLog: Generated. + +2008-07-01 Simon Josefsson + + * NEWS: Version 1.9. + +2008-07-01 Simon Josefsson + + * NEWS: Add. + +2008-07-01 Simon Josefsson + + * NEWS: Fix. + +2008-07-01 Simon Josefsson + + * po/cs.po.in, po/nl.po.in, po/pl.po.in, po/vi.po.in: Sync with TP. + +2008-07-01 Simon Josefsson + + * GNUmakefile, gl/Makefile.am, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, gl/m4/gnulib-tool.m4, gltests/Makefile.am, + gltests/test-strerror.c, gltests/test-string.c, + gltests/test-unistd.c, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/gnulib-tool.m4, lib/gl/m4/locale-fr.m4, + lib/gl/m4/locale-tr.m4, lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4, + lib/gltests/Makefile.am, lib/gltests/dummy.c, + lib/gltests/intprops.h, lib/gltests/test-c-ctype.c, + lib/gltests/test-c-strcase.sh, lib/gltests/test-c-strcasecmp.c, + lib/gltests/test-c-strncasecmp.c, lib/gltests/test-iconv.c, + lib/gltests/test-stdbool.c, lib/gltests/test-stdint.c, + lib/gltests/test-stdlib.c, lib/gltests/test-striconv.c, + lib/gltests/test-string.c, lib/gltests/test-unistd.c, + lib/gltests/test-wchar.c, lib/gltests/verify.h: Update gnulib files. + +2008-06-18 Simon Josefsson + + * NEWS, csharp/generate/Tokenizer.cs: Work around C# compiler bug. + +2008-06-17 Simon Josefsson + + * GNUmakefile, doc/gendocs_template: Update gnulib files. + +2008-06-10 Simon Josefsson + + * doc/specifications/rfc3454.txt: Remove more text. + +2008-06-02 Simon Josefsson + + * doc/libidn.texi: Drop invariant sections. + +2008-05-30 Simon Josefsson + + * lib/gl/stdbool.in.h, maint.mk: Update gnulib files. + +2008-05-19 Simon Josefsson + + * gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4, + lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4: Update gnulib + files. + +2008-05-12 Simon Josefsson + + * NEWS: Add. + +2008-05-12 Simon Josefsson + + * gl/Makefile.am, gl/m4/string_h.m4, gl/string.in.h, + lib/gl/Makefile.am, lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4, + lib/gl/stdlib.in.h, lib/gl/string.in.h: Update gnulib files. + +2008-04-28 Simon Josefsson + + * build-aux/gendocs.sh: Update gnulib files. + +2008-04-28 Simon Josefsson + + * NEWS: Add. + +2008-04-28 Simon Josefsson + + * src/Makefile.am: Use singularis STRING. Suggested by Benno + Schulenberg . + +2008-04-28 Simon Josefsson + + * src/idn.c: Don't gettext error code. + +2008-04-28 Simon Josefsson + + * src/idn.c: Don't gettextize debug messages. + +2008-04-24 Simon Josefsson + + * NEWS, THANKS, src/idn.c: idn: fix error message when NFKC fails. + Reported by Benno Schulenberg . + +2008-04-24 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2008-04-23 Simon Josefsson + + * ChangeLog: Generated. + +2008-04-23 Simon Josefsson + + * NEWS: Version 1.8. + +2008-04-23 Simon Josefsson + + * NEWS: Add. + +2008-04-23 Simon Josefsson + + * NEWS: Add. + +2008-04-23 Simon Josefsson + + * gl/m4/extensions.m4, gl/m4/getopt.m4, gl/m4/gnulib-common.m4, + gl/m4/gnulib-comp.m4, gl/m4/strerror.m4, lib/gl/m4/extensions.m4, + lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/stdint.m4, lib/gl/wchar.in.h: Update gnulib files. + +2008-04-13 Simon Josefsson + + * configure.ac: Bump versions. + +2008-04-13 Simon Josefsson + + * NEWS: Add. + +2008-04-13 Simon Josefsson + + * po/nl.po.in: Sync with TP. + +2008-04-13 Simon Josefsson + + * Makefile.am, cfg.mk, po/Makevars, po/cs.po, po/cs.po.in, + po/da.po, po/da.po.in, po/de.po, po/de.po.in, po/eo.po, + po/eo.po.in, po/fi.po, po/fi.po.in, po/fr.po, po/fr.po.in, + po/it.po, po/it.po.in, po/ja.po, po/ja.po.in, po/nl.po, + po/nl.po.in, po/pl.po, po/pl.po.in, po/ro.po, po/ro.po.in, + po/rw.po, po/rw.po.in, po/sr.po, po/sr.po.in, po/vi.po, + po/vi.po.in, po/zh_CN.po, po/zh_CN.po.in: Move translations to + *.po.in to avoid merge conflicts. This allows us to avoid + --no-location as well. + +2008-04-10 Simon Josefsson + + * ChangeLog: Generated. + +2008-04-10 Simon Josefsson + + * NEWS: Version 1.7. + +2008-04-10 Simon Josefsson + + * gl/m4/include_next.m4, lib/gl/m4/include_next.m4, + lib/gl/m4/stdint.m4: Update gnulib files. + +2008-04-07 Simon Josefsson + + * GNUmakefile, build-aux/gnupload: Update gnulib files. + +2008-04-02 Simon Josefsson + + * Makefile.am, NEWS, win32/include/unistd.h: Need dummy unistd.h for + native Win32 builds. Reported by Adam Strzelecki . + +2008-04-01 Simon Josefsson + + * lib/strerror-idna.c, lib/strerror-pr29.c, + lib/strerror-punycode.c, lib/strerror-stringprep.c, + lib/strerror-tld.c: Fix syntax-check warnings. + +2008-04-01 Simon Josefsson + + * doc/libidn.texi: Mention idn --nfkc. + +2008-04-01 Simon Josefsson + + * gl/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/stdlib_h.m4, + lib/gl/stdlib.in.h, lib/gl/wchar.in.h: Update gnulib files. + +2008-03-27 Simon Josefsson + + * NEWS, src/idn.c, src/idn.ggo: Add --nfkc parameter to idn tool. + +2008-03-27 Simon Josefsson + + * doc/libidn.texi: Need @menu for Windows installation @node. + +2008-03-25 Simon Josefsson + + * cfg.mk: Need config.rpath workaround here. + +2008-03-25 Simon Josefsson + + * GNUmakefile, build-aux/GNUmakefile, build-aux/maint.mk, + gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, maint.mk: Update + gnulib files, reverts local GNUmakefile hack. + +2008-03-20 Simon Josefsson + + * build-aux/GNUmakefile: Update gnulib files. + +2008-03-20 Simon Josefsson + + * doc/libidn.texi: Make windows installation instructions a separate + node, for easy referencing. + +2008-03-20 Simon Josefsson + + * NEWS: Fix. + +2008-03-20 Simon Josefsson + + * build-aux/GNUmakefile, cfg.mk, maint-cfg.mk: Update gnulib files. + +2008-03-19 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2008-03-19 Simon Josefsson + + * ChangeLog: Generated. + +2008-03-19 Simon Josefsson + + * NEWS: Version 1.6. + +2008-03-19 Simon Josefsson + + * README: Note that libidn is a GNU project. + +2008-03-19 Simon Josefsson + + * doc/reference/Makefile.am, doc/reference/tmpl/libidn-unused.sgml, + gtk-doc.make: Update GTK-DOC build system. + +2008-03-19 Simon Josefsson + + * Makefile.am: Dist Visual Studio files. + +2008-03-19 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2008-03-19 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2008-03-19 Simon Josefsson + + * win32/include/Wild.pm, win32/include/ac-stdint.h, + win32/include/gen-win32-headers.pl, win32/include/idn-int.h, + win32/include/stdbool.h: Add license statements on files. + +2008-03-19 Simon Josefsson + + * AUTHORS, NEWS, THANKS, doc/libidn.texi, win32/include/Wild.pm, + win32/include/ac-stdint.h, win32/include/gen-win32-headers.pl, + win32/include/idn-int.h, win32/include/stdbool.h, win32/libidn.sln, + win32/libidn.vcproj: Add native Visual Studio port, contributed by + Adam Strzelecki. + +2008-03-19 Simon Josefsson + + * NEWS: Add. + +2008-03-19 Simon Josefsson + + * lib/idna.c: Doc fix. Clarify difference between domain label and + domain name. + +2008-03-18 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4: Update gnulib files. + +2008-03-12 Simon Josefsson + + * NEWS, gl/Makefile.am, gl/m4/gnulib-comp.m4, + gl/m4/include_next.m4, gl/m4/stdarg.m4, gl/stdarg.in.h, + lib/gl/Makefile.am, lib/gl/m4/absolute-header.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/include_next.m4, + lib/gl/m4/lib-link.m4: Update gnulib files. + +2008-03-12 Simon Josefsson + + * NEWS: Add. + +2008-03-12 Simon Josefsson + + * doc/specifications/rfc3454.txt: Remove non-free portions of RFC, + leaving un-copyrightable material. Also add some quotes from + earlier e-mails about licensing on this. + +2008-03-10 Simon Josefsson + + * build-aux/gendocs.sh, gl/getopt.c: Bump versions. + +2008-02-25 Simon Josefsson + + * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h, + lib/gl/Makefile.am, lib/gl/m4/unistd_h.m4, lib/gl/unistd.in.h: + Update gnulib files. + +2008-02-19 Simon Josefsson + + * NEWS: Bump. + +2008-02-19 Simon Josefsson + + * configure.ac: Bump versions. + +2008-02-19 Simon Josefsson + + * Makefile.am: Fix release target. + +2008-02-19 Simon Josefsson + + * ChangeLog: Generated. + +2008-02-19 Simon Josefsson + + * NEWS: Version 1.5. + +2008-02-19 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2008-02-19 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2008-02-19 Simon Josefsson + + * NEWS: Fix charset info. + +2008-02-19 Simon Josefsson + + * doc/libidn.texi, examples/example.c, examples/example3.c, + examples/example4.c, examples/example5.c: Fix encoding. + +2008-02-19 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, lib/gl/stdint.in.h: + Update gnulib files. + +2008-02-19 Simon Josefsson + + * NEWS: Add link. + +2008-02-19 Simon Josefsson + + * NEWS, THANKS, lib/gl/override/lib/stdint.in.h.diff: Don't include + wchar.h, we don't need it. Reported by Mike Frysinger + , see + . + +2008-02-06 Simon Josefsson + + * NEWS: Add. + +2008-02-06 Simon Josefsson + + * GNUmakefile, Makefile.am, maint-cfg.mk: Brace expansion is not + POSIX portable. + +2008-02-03 Simon Josefsson + + * build-aux/gnupload: Update gnulib files. + +2008-01-24 Simon Josefsson + + * po/LINGUAS, po/fi.po: Sync with TP. + +2008-01-24 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2008-01-24 Simon Josefsson + + * doc/libidn.texi: Fix. + +2008-01-15 Simon Josefsson + + * NEWS: Add. + +2008-01-15 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: + Update gnulib files. + +2008-01-15 Simon Josefsson + + * build-aux/announce-gen: Update gnulib files. + +2008-01-15 Simon Josefsson + + * NEWS: Add. + +2008-01-15 Simon Josefsson + + * contrib/web/idn.php: Back-port from josefsson.org. + +2008-01-15 Simon Josefsson + + * doc/libidn.texi: Fix markup. + +2008-01-15 Simon Josefsson + + * doc/libidn.texi: Mention v1.0 as milestone. + +2008-01-15 Simon Josefsson + + * NEWS: Add. + +2008-01-15 Simon Josefsson + + * THANKS: Add. + +2008-01-15 Simon Josefsson + + * po/it.po: Sync with TP. + +2008-01-15 Simon Josefsson + + * doc/libidn.texi: Fix markup. + +2008-01-15 Simon Josefsson + + * doc/libidn.texi: Add 'On Label Separators' section. Add + @documentencoding. + +2008-01-15 Simon Josefsson + + * GNUmakefile, maint-cfg.mk: Re-add config.rpath hack. + +2008-01-15 Simon Josefsson + + * build-aux/announce-gen, build-aux/config.rpath, + build-aux/gendocs.sh, gl/Makefile.am, gl/error.h, + gl/m4/string_h.m4, gl/string.in.h, lib/gl/Makefile.am, + lib/gl/m4/string_h.m4, lib/gl/string.in.h: Update gnulib files. + +2008-01-10 Simon Josefsson + + * po/eo.po: Sync with TP. + +2008-01-10 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2008-01-10 Simon Josefsson + + * po/cs.po, po/nl.po, po/pl.po, po/vi.po: Sync with TP. + +2008-01-09 Simon Josefsson + + * ChangeLog: Generated. + +2008-01-09 Simon Josefsson + + * NEWS: Version 1.4. + +2008-01-09 Simon Josefsson + + * src/idn.c: Typos. + +2008-01-09 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: + Update gnulib files. + +2008-01-09 Simon Josefsson + + * gl/progname.c, gl/progname.h: Add progname gnulib module. + +2008-01-09 Simon Josefsson + + * NEWS: Fix --help and --version + +2008-01-09 Simon Josefsson + + * src/Makefile.am, src/idn.c: Fix --help and --version + +2008-01-09 Simon Josefsson + + * NEWS: Fix. + +2008-01-09 Simon Josefsson + + * NEWS: Add. + +2008-01-09 Simon Josefsson + + * src/Makefile.am, src/idn.c: Use gnulib version-etc for --version. + +2008-01-09 Simon Josefsson + + * doc/libidn.texi: Bump copyright years. + +2008-01-09 Simon Josefsson + + * doc/Makefile.am: Add 2008 to copyright years. + +2008-01-02 Simon Josefsson + + * configure.ac: Nicify --version output by changing AC_INIT project + name. + +2008-01-02 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, gl/m4/stdarg.m4, gl/version-etc.c, + gl/version-etc.h: Add version-etc gnulib module. + +2008-01-02 Simon Josefsson + + * NEWS: Add. + +2008-01-02 Simon Josefsson + + * THANKS: Add. + +2008-01-02 Simon Josefsson + + * gl/Makefile.am, gl/m4/string_h.m4, gl/m4/unistd_h.m4, + gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am, + lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4, + lib/gl/m4/unistd_h.m4, lib/gl/stdlib.in.h, lib/gl/string.in.h, + lib/gl/unistd.in.h: Update gnulib files. + +2008-01-02 Simon Josefsson + + * NEWS: Add. + +2008-01-02 Simon Josefsson + + * po/LINGUAS, po/fi.po, po/nl.po, po/vi.po: Sync with TP. + +2007-12-20 Simon Josefsson + + * NEWS: Add. + +2007-12-20 Simon Josefsson + + * csharp/Makefile.am: Use .exe suffix for C# tool, required by Mono. + +2007-12-20 Simon Josefsson + + * build-aux/gnupload, gl/m4/gnulib-comp.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/stdint.in.h: Update gnulib files. + +2007-12-20 Simon Josefsson + + * doc/reference/Makefile.am: Generalize. + +2007-12-11 Simon Josefsson + + * Makefile.am: Don't copy *.sig until it exists. + +2007-12-11 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-12-11 Simon Josefsson + + * ChangeLog: Generated. + +2007-12-11 Simon Josefsson + + * NEWS: Version 1.3. + +2007-12-11 Simon Josefsson + + * Makefile.am: Reorder release target. + +2007-12-11 Simon Josefsson + + * NEWS: Reorder. + +2007-12-11 Simon Josefsson + + * GNUmakefile, maint-cfg.mk: Remove config.rpath hack. + +2007-12-11 Simon Josefsson + + * build-aux/gendocs.sh, doc/fdl.texi, doc/gendocs_template, + doc/gpl-3.0.texi, gl/Makefile.am, gl/m4/csharpcomp.m4, + gl/m4/strerror.m4, gl/m4/string_h.m4, gl/m4/unistd_h.m4, + gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4, + lib/gl/m4/lib-link.m4, lib/gl/m4/longlong.m4, + lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4, + lib/gl/m4/unistd_h.m4, lib/gl/stdlib.in.h, lib/gl/string.in.h, + lib/gl/unistd.in.h: Update gnulib files. + +2007-12-11 Simon Josefsson + + * lib/gl/m4/ulonglong.m4: Update gnulib files. + +2007-12-11 Simon Josefsson + + * NEWS: Add. + +2007-12-11 Simon Josefsson + + * configure.ac: Use gettext 0.17. + +2007-10-29 Simon Josefsson + + * gl/gettext.h, gl/string.in.h, gl/unistd.in.h: Update gnulib files. + +2007-10-29 Simon Josefsson + + * gl/m4/gnulib-comp.m4, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/stdint.in.h, lib/gl/stdlib.in.h: + Update gnulib files. + +2007-10-28 Simon Josefsson + + * build-aux/maint.mk, gl/m4/gnulib-common.m4, gl/strerror.c, + lib/gl/m4/gnulib-common.m4, lib/gl/m4/ulonglong.m4, + lib/gl/stdbool.in.h, lib/gl/stdint.in.h: Update gnulib files. + +2007-10-19 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/iconv.in.h, lib/gl/iconv_open.c, + lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4, + lib/gl/m4/longlong.m4, lib/gl/m4/ulonglong.m4: Update gnulib files. + +2007-10-13 Simon Josefsson + + * THANKS: Fix. + +2007-10-13 Simon Josefsson + + * THANKS: Add. + +2007-10-13 Simon Josefsson + + * NEWS: Add. + +2007-10-13 Simon Josefsson + + * po/LINGUAS, po/cs.po: Sync with TP. + +2007-10-13 Simon Josefsson + + * gl/Makefile.am, gl/intprops.h, gl/m4/gnulib-comp.m4, + gl/m4/strerror.m4, gl/strerror.c, gl/string.in.h, + lib/gl/string.in.h: Update gnulib files. + +2007-10-08 Simon Josefsson + + * NEWS: Add. + +2007-10-08 Simon Josefsson + + * doc/libidn.texi: Typo. + +2007-10-08 Simon Josefsson + + * doc/libidn.texi: Fix install section. + +2007-10-08 Simon Josefsson + + * NEWS: Add. + +2007-10-08 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-10-08 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/error.c, gl/error.h, gl/getopt.c, + gl/getopt.in.h, gl/getopt1.c, gl/getopt_int.h, gl/gettext.h, + gl/m4/gnulib-cache.m4, gl/strerror.c, gl/string.in.h, + gl/unistd.in.h: Use GPLv3 in top-level gnulib files. + +2007-10-08 Simon Josefsson + + * build-aux/csharpcomp.sh.in, gl/Makefile.am, gl/dummy.c, + gl/error.c, gl/error.h, gl/getopt.c, gl/getopt.in.h, gl/getopt1.c, + gl/getopt_.h, gl/getopt_int.h, gl/m4/gnulib-comp.m4, gl/strerror.c, + gl/string.in.h, gl/string_.h, gl/unistd.in.h, gl/unistd_.h, + lib/gl/Makefile.am, lib/gl/iconv.in.h, lib/gl/iconv_.h, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/stdint.m4, lib/gl/stdbool.in.h, + lib/gl/stdbool_.h, lib/gl/stdint.in.h, lib/gl/stdint_.h, + lib/gl/stdlib.in.h, lib/gl/stdlib_.h, lib/gl/string.in.h, + lib/gl/string_.h, lib/gl/unistd.in.h, lib/gl/unistd_.h, + lib/gl/wchar.in.h, lib/gl/wchar_.h: Update gnulib files. + +2007-10-01 Simon Josefsson + + * ChangeLog: Generated. + +2007-10-01 Simon Josefsson + + * Makefile.am: Fix git-tag -l in release target. + +2007-10-01 Simon Josefsson + + * NEWS: Version 1.2. + +2007-10-01 Simon Josefsson + + * NEWS: Add. + +2007-10-01 Simon Josefsson + + * README-alpha: Remove README-alpha. + +2007-10-01 Simon Josefsson + + * Makefile.am: Also upload to ftp.gnu.org. + +2007-10-01 Simon Josefsson + + * NEWS: Add. + +2007-10-01 Simon Josefsson + + * NEWS: Add. + +2007-10-01 Simon Josefsson + + * configure.ac: Re-order to avoid autoreconf warning. + +2007-10-01 Simon Josefsson + + * Makefile.am: Remove sv. + +2007-10-01 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2007-10-01 Simon Josefsson + + * po/sv.po: Remove (not part of translation project). + +2007-10-01 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-10-01 Simon Josefsson + + * gl/Makefile.am, gl/m4/csharpcomp.m4, gl/m4/gnulib-comp.m4, + lib/gl/Makefile.am, lib/gl/m4/absolute-header.m4, + lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/string_h.m4, lib/gl/m4/strverscmp.m4, lib/gl/string_.h: + Update gnulib files. + +2007-10-01 Simon Josefsson + + * gl/m4/extensions.m4, gl/m4/strerror.m4, gl/m4/string_h.m4, + gl/strerror.c, gl/string_.h, lib/gl/m4/malloc.m4, + lib/gl/m4/stdlib_h.m4, lib/gl/m4/unistd_h.m4, lib/gl/malloc.c, + lib/gl/stdlib_.h, lib/gl/unistd_.h: Update gnulib files. + +2007-10-01 Simon Josefsson + + * .cvsignore, build-aux/.cvsignore, contrib/doxygen/.cvsignore, + contrib/java/.cvsignore, csharp/.cvsignore, doc/.cvsignore, + doc/java/.cvsignore, doc/java/gnu/inet/encoding/.cvsignore, + doc/java/resources/.cvsignore, doc/man/.cvsignore, + doc/reference/.cvsignore, doc/reference/tmpl/.cvsignore, + doc/specifications/.cvsignore, doc/tld/.cvsignore, + examples/.cvsignore, gl/.cvsignore, java/.cvsignore, + java/gnu/.cvsignore, java/gnu/inet/.cvsignore, + java/gnu/inet/encoding/.cvsignore, java/misc/.cvsignore, + lib/.cvsignore, lib/gl/.cvsignore, libc/.cvsignore, m4/.cvsignore, + po/.cvsignore, src/.cvsignore, tests/.cvsignore: Remove unused + .cvsignore's. + +2007-09-01 Simon Josefsson + + * ChangeLog: Generated. + +2007-09-01 Simon Josefsson + + * NEWS: Version 1.1. + +2007-09-01 Simon Josefsson + + * NEWS: Add. + +2007-09-01 Simon Josefsson + + * po/nl.po: Sync with TP. + +2007-09-01 Simon Josefsson + + * configure.ac: Wrap. + +2007-09-01 Simon Josefsson + + * configure.ac: Bump versions. + +2007-09-01 Simon Josefsson + + * NEWS: Add. + +2007-09-01 Simon Josefsson + + * NEWS: Add. + +2007-08-31 Simon Josefsson + + * configure.ac: Drop gnits mode. + +2007-08-31 Simon Josefsson + + * lib/Makefile.am: Define LIBIDN_BUILDING, for Windows hack in + stringprep.h.in. Inspired by report and patch by "Christian + Ehrlicher" , see + + . + +2007-08-31 Simon Josefsson + + * lib/stringprep.h.in: Mark variables with __declspec(import) on + Windows. Inspired by report and patch by "Christian Ehrlicher" + , see + + . + +2007-08-31 Simon Josefsson + + * lib/Makefile.am: Avoid using #include_next in idn-int.h when + looking for stdint.h. Reported by Remko van der Vossen + in + , this + tiny patch was suggested by Bruno Haible in + . + +2007-08-31 Simon Josefsson + + * build-aux/GNUmakefile, build-aux/maint.mk, lib/gl/m4/stdint.m4: + Update gnulib files. + +2007-07-31 Simon Josefsson + + * ChangeLog: Generated. + +2007-07-31 Simon Josefsson + + * NEWS: Add. + +2007-07-31 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2007-07-31 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Fix. + +2007-07-31 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Sync with libidn.texi. + +2007-07-31 Simon Josefsson + + * doc/libidn.texi: Fix intro. + +2007-07-31 Simon Josefsson + + * doc/Makefile.am: Fix gpl/lgpl filenames. + +2007-07-31 Simon Josefsson + + * NEWS: Version 1.0. + +2007-07-31 Simon Josefsson + + * NEWS: Add. + +2007-07-31 Simon Josefsson + + * AUTHORS: Update PGP key. + +2007-07-31 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-07-31 Simon Josefsson + + * NEWS: Fix. + +2007-07-31 Simon Josefsson + + * doc/Makefile.gdoci: Update license to GPLv3. + +2007-07-31 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Update, sync with libidn.texi. + +2007-07-31 Simon Josefsson + + * doc/libidn.texi: Clarify license versions. + +2007-07-31 Simon Josefsson + + * examples/example.c, examples/example2.c, examples/example3.c, + examples/example4.c, examples/example5.c: Relicense examples/* to + GPLv3. + +2007-07-31 Simon Josefsson + + * src/idn.c, src/idn.ggo, src/idna.el, src/punycode.el, + tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c, + tests/tst_pr29.c, tests/tst_punycode.c, tests/tst_strerror.c, + tests/tst_stringprep.c, tests/tst_tld.c, tests/utils.c, + tests/utils.h: Relicense src/ and tests/ stuff to GPLv3. + +2007-07-31 Simon Josefsson + + * Makefile.am, configure.ac, contrib/java/Makefile.am, + doc/Makefile.am, doc/java/Makefile.am, + doc/specifications/Makefile.am, doc/tld/Makefile.am, + examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Relicense + Makefile.am and configure.ac to GPLv3. + +2007-07-31 Simon Josefsson + + * README: Clarify licenses. + +2007-07-31 Simon Josefsson + + * COPYING: Use GPLv3. + +2007-07-31 Simon Josefsson + + * gl/m4/include_next.m4: Update gnulib files. + +2007-07-31 Simon Josefsson + + * NEWS, build-aux/announce-gen, build-aux/config.rpath, + build-aux/gendocs.sh, build-aux/gnupload, build-aux/maint.mk, + doc/fdl.texi, doc/gendocs_template, doc/gpl-3.0.texi, doc/gpl.texi, + doc/lgpl-2.1.texi, doc/lgpl.texi, doc/libidn.texi, gl/Makefile.am, + gl/error.c, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + gl/m4/unistd_h.m4, gl/override/doc/gpl.texi.diff, + gl/override/doc/lgpl.texi.diff, gl/unistd_.h, lib/gl/Makefile.am, + lib/gl/iconv_.h, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv_h.m4, + lib/gl/m4/include_next.m4, lib/gl/m4/stdint.m4, + lib/gl/m4/string_h.m4, lib/gl/m4/wchar.m4, lib/gl/stdint_.h, + lib/gl/string_.h, lib/gl/wchar_.h: Update gnulib files. + +2007-06-04 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-05-31 Simon Josefsson + + * .cvscopying: Add year 2007. + +2007-05-31 Simon Josefsson + + * ChangeLog: Generated. + +2007-05-31 Simon Josefsson + + * NEWS: Version 0.6.14. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * README-alpha: Cvs to git changes. + +2007-05-31 Simon Josefsson + + * Makefile.am: Use git instead of cvs. + +2007-05-31 Simon Josefsson + + * configure.ac: Bump versions. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * ChangeLog: [no log message] + +2007-05-31 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2007-05-31 Simon Josefsson + + * NEWS: Version 0.6.13. + +2007-05-31 Simon Josefsson + + * doc/Makefile.am: Install libidn-components.png in infodir, fixes + broken image in the info manual. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * doc/reference/Makefile.am, doc/reference/libidn-docs.sgml: Fix + image filename. + +2007-05-31 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2007-05-31 Simon Josefsson + + * doc/Makefile.am, doc/libidn.texi: Rename @image files so that they + are prefixed with $PROJECT, so they can be installed in $infodir + without collisions. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * po/pl.po, po/vi.po: Sync with TP. + +2007-05-31 Simon Josefsson + + * NEWS: Fix. + +2007-05-31 Simon Josefsson + + * NEWS: Add. + +2007-05-31 Simon Josefsson + + * doc/gendocs_template, gl/Makefile.am, gl/m4/unistd_h.m4, + gl/override/doc/gendocs_template, + gl/override/doc/gendocs_template.diff, gl/unistd_.h, + lib/gl/Makefile.am, lib/gl/iconv_.h, lib/gl/m4/iconv.m4, + lib/gl/m4/stdint.m4, lib/gl/stdint_.h, lib/gl/string_.h, + lib/gl/wchar_.h: Update. + +2007-05-30 Simon Josefsson + + * configure.ac: Bump versions. + +2007-05-30 Simon Josefsson + + * NEWS: Add. + +2007-05-30 Simon Josefsson + + * doc/libidn.texi: Typo. + +2007-05-30 Simon Josefsson + + * README: Clarify license of C# port. + +2007-05-30 Simon Josefsson + + * doc/libidn.texi: Clarify license of java/csharp implementation. + +2007-04-25 Simon Josefsson + + * ChangeLog: [no log message] + +2007-04-25 Simon Josefsson + + * NEWS: Version 0.6.12. + +2007-04-25 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2007-04-24 Simon Josefsson + + * NEWS, THANKS: Add. + +2007-04-24 Simon Josefsson + + * java/misc/Makefile.am: Use AM_JAVACFLAGS instead of JAVACFLAGS. + See + + .Tiny patch from Petteri Räty . + +2007-04-19 Simon Josefsson + + * lib/gl/.cvsignore: [no log message] + +2007-04-19 Simon Josefsson + + * NEWS: Add. + +2007-04-19 Simon Josefsson + + * build-aux/gendocs.sh, gl/dummy.c, gl/m4/gnulib-comp.m4, + lib/gl/.cvsignore, lib/gl/Makefile.am, lib/gl/iconv_.h, + lib/gl/iconv_open-aix.gperf, lib/gl/iconv_open-hpux.gperf, + lib/gl/iconv_open-irix.gperf, lib/gl/iconv_open-osf.gperf, + lib/gl/iconv_open.c, lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4, + lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/stdint.m4, + lib/gl/stdbool_.h, lib/gl/string_.h, lib/gl/wchar_.h: Update. + +2007-04-02 Simon Josefsson + + * csharp/Makefile.am: Fix typo. + +2007-03-13 Simon Josefsson + + * libidn.fms: 0.6.11. + +2007-03-13 Simon Josefsson + + * libidn.fms: 0.6.10. + +2007-03-13 Simon Josefsson + + * libidn.fms: 0.6.9. + +2007-03-13 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2007-03-13 Simon Josefsson + + * ChangeLog: [no log message] + +2007-03-13 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2007-03-13 Simon Josefsson + + * NEWS: Version 0.6.11. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am: Fix path to csharpcomp. + +2007-03-13 Simon Josefsson + + * NEWS: Add. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am: Dist more. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am: Fix tests. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am: fix + +2007-03-13 Simon Josefsson + + * csharp/.cvsignore: [no log message] + +2007-03-13 Simon Josefsson + + * csharp/generate/GenerateNFKC.cs: Fix typo. + +2007-03-13 Simon Josefsson + + * csharp/generate/GenerateNFKC.cs: Don't wait for newline from user + (breaks batch usage). Fix typo. + +2007-03-13 Simon Josefsson + + * csharp/generate/GenerateRFC3454.cs: Don't wait for return from + user (breaks batch usage). + +2007-03-13 Simon Josefsson + + * csharp/generate/GenerateRFC3454.cs: Fix namespace. + +2007-03-13 Simon Josefsson + + * csharp/IDNA.cs, csharp/IDNAException.cs, csharp/NFKC.cs, + csharp/Punycode.cs, csharp/PunycodeException.cs, + csharp/Stringprep.cs, csharp/StringprepException.cs, + csharp/libidn.cmbx, csharp/libidn.csproj, + csharp/libidn.csproj.user, csharp/libidn.prjx, csharp/libidn.sln: + Update, from Alexander Gnauck . + +2007-03-13 Simon Josefsson + + * csharp/CombiningClass.cs, csharp/Composition.cs, + csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs, + csharp/RFC3454.cs: Remove. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am: Generate generated files. + +2007-03-13 Simon Josefsson + + * csharp/generate/GenerateRFC3454.cs: AppendLine isn't supported by + cscc, use Append+\n. + +2007-03-13 Simon Josefsson + + * csharp/Makefile.am, csharp/generate/AssemblyInfo.cs, + csharp/generate/GenerateNFKC.cs, + csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs, + csharp/generate/Program.cs, csharp/generate/Tokenizer.cs: Add code + to generate tables, from Alexander Gnauck . + +2007-03-13 Simon Josefsson + + * gl/dummy.c, gl/getopt_.h, lib/gl/stdint_.h: Update. + +2007-03-09 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2007-03-09 Simon Josefsson + + * configure.ac: Bump versions. + +2007-03-09 Simon Josefsson + + * csharp/Makefile.am: Revert. + +2007-03-09 Simon Josefsson + + * lib/gl/string.h: Update. + +2007-03-09 Simon Josefsson + + * build-aux/.cvsignore, doc/.cvsignore, gl/.cvsignore, + lib/gl/.cvsignore: [no log message] + +2007-03-09 Simon Josefsson + + * Makefile.am, csharp/Makefile.am: Update gnulib. + +2007-03-09 Simon Josefsson + + * GNUmakefile, announce-gen, build-aux/GNUmakefile, + build-aux/announce-gen, build-aux/config.rpath, + build-aux/csharpcomp.sh.in, build-aux/gendocs.sh, + build-aux/gnupload, build-aux/link-warning.h, build-aux/maint.mk, + csharpcomp.sh.in, gendocs.sh, gl/Makefile.am, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4, + gl/unistd_.h, gnupload, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/string_h.m4, lib/gl/string_.h, maint-cfg.mk, maint.mk: + Update. + +2007-03-09 Simon Josefsson + + * configure.ac: Use build-aux. + +2007-02-24 Simon Josefsson + + * doc/specifications/draft-klensin-idnabis-issues-01.txt: Add. + +2007-02-06 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/m4/string_h.m4, lib/gl/string_.h: + Update. + +2007-02-05 Simon Josefsson + + * NEWS: Add. + +2007-02-05 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/c-ctype.c, lib/gl/c-ctype.h, + lib/gl/c-strcase.h, lib/gl/c-strcasecmp.c, lib/gl/c-strncasecmp.c, + lib/gl/iconvme.c, lib/gl/iconvme.h, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconvme.m4, + lib/gl/m4/stdbool.m4, lib/gl/stdbool_.h, lib/gl/striconv.c, + lib/gl/striconv.h, lib/gl/string.h, lib/toutf8.c: Update. + +2007-02-05 Simon Josefsson + + * NEWS: Add. + +2007-02-05 Simon Josefsson + + * gl/m4/unistd_h.m4, lib/gl/Makefile.am, lib/gl/iconvme.c, + lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/strdup.m4, lib/gl/m4/string_h.m4, lib/gl/strdup.c, + lib/gl/strdup.h, lib/gl/string_.h: Update. + +2007-01-25 Simon Josefsson + + * gl/Makefile.am, gl/m4/absolute-header.m4, gl/m4/gnulib-common.m4, + gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4, gl/unistd_.h, + lib/gl/Makefile.am, lib/gl/m4/gnulib-common.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4, + lib/gl/m4/stdint.m4, lib/gl/m4/wchar.m4, lib/gl/stdint_.h, + lib/gl/wchar_.h: Update. + +2007-01-04 Simon Josefsson + + * ChangeLog: [no log message] + +2007-01-04 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2007-01-04 Simon Josefsson + + * NEWS: Version 0.6.10. + +2007-01-04 Simon Josefsson + + * NEWS: Add. + +2007-01-04 Simon Josefsson + + * FAQ, NEWS, README, README-alpha, THANKS, TODO, configure.ac, + contrib/README, contrib/doxygen/gdoc2doxygen, + contrib/java/Makefile.am, contrib/java/README, + csharp/CombiningClass.cs, csharp/Composition.cs, + csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs, + csharp/IDNA.cs, csharp/IDNAException.cs, csharp/Makefile.am, + csharp/NFKC.cs, csharp/Punycode.cs, csharp/PunycodeException.cs, + csharp/RFC3454.cs, csharp/Stringprep.cs, + csharp/StringprepException.cs, doc/Makefile.am, doc/Makefile.gdoci, + doc/gdoc, doc/libidn.texi, doc/specifications/Makefile.am, + doc/tld/Makefile.am, doc/tld/README, examples/Makefile.am, + examples/README, examples/example.c, examples/example2.c, + examples/example3.c, examples/example4.c, examples/example5.c, + java/Makefile.am, java/gnu/inet/encoding/CombiningClass.java, + java/gnu/inet/encoding/Composition.java, + java/gnu/inet/encoding/DecompositionKeys.java, + java/gnu/inet/encoding/DecompositionMappings.java, + java/gnu/inet/encoding/IDNA.java, + java/gnu/inet/encoding/IDNAException.java, + java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/NFKC.java, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java, + java/gnu/inet/encoding/RFC3454.java, + java/gnu/inet/encoding/Stringprep.java, + java/gnu/inet/encoding/StringprepException.java, + java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java, + java/misc/Makefile.am, java/misc/TestIDNA.java, + java/misc/TestNFKC.java, lib/Makefile.am, + lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl, + lib/gen-unicode-tables.pl, lib/idn-free.c, lib/idn-free.h, + lib/idna.c, lib/idna.h, lib/nfkc.c, lib/pr29.c, lib/pr29.h, + lib/profiles.c, lib/punycode.c, lib/punycode.h, + lib/strerror-idna.c, lib/strerror-pr29.c, lib/strerror-punycode.c, + lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c, + lib/stringprep.h.in, lib/tld.c, lib/tld.h, lib/toutf8.c, + lib/version.c, libidn.pc.in, maint-cfg.mk, po/POTFILES.in, + src/Makefile.am, src/idn.c, src/idn.ggo, src/idna.el, + src/punycode.el, tests/Makefile.am, tests/tst_idna.c, + tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_pr29.c, + tests/tst_punycode.c, tests/tst_strerror.c, tests/tst_stringprep.c, + tests/tst_tld.c, tests/utils.c, tests/utils.h: Bump copyright years + (also add older years which I forgot to add earlier). + +2007-01-04 Simon Josefsson + + * AUTHORS: Update PGP key. + +2007-01-03 Simon Josefsson + + * announce-gen, gl/Makefile.am, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, lib/gl/Makefile.am, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, + lib/gl/m4/lib-link.m4: Update. + +2006-12-28 Simon Josefsson + + * announce-gen, gl/Makefile.am, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4: Add. + +2006-12-28 Simon Josefsson + + * lib/gl/iconvme.c, lib/gl/m4/lib-link.m4, lib/gl/m4/stdint.m4, + lib/gl/strdup.h: Update. + +2006-12-26 Simon Josefsson + + * doc/specifications/draft-suignard-stringprep-bis-00.txt: Add. + +2006-12-10 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-11-30 Simon Josefsson + + * ChangeLog: [no log message] + +2006-11-30 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-11-30 Simon Josefsson + + * NEWS: Version 0.6.9. + +2006-11-30 Simon Josefsson + + * m4/.cvsignore: [no log message] + +2006-11-30 Simon Josefsson + + * NEWS: Add. + +2006-11-30 Simon Josefsson + + * m4/codeset.m4, m4/iconv.m4, m4/lib-link.m4: Remove. + +2006-11-30 Simon Josefsson + + * NEWS, configure.ac: Bump tool versions. + +2006-11-30 Simon Josefsson + + * gl/Makefile.am, gl/gettext.h, lib/gl/Makefile.am, + lib/gl/gettext.h, lib/gl/m4/stdint.m4: Update. + +2006-11-16 Simon Josefsson + + * java/misc/TestIDNA.java: Re-add test, with fixed code that doesn't + use Java 1.5 syntax. Suggested by "Stephane Mikaty" + . + +2006-11-16 Simon Josefsson + + * java/misc/TestIDNA.java: Revert (didn't compile). + +2006-11-15 Simon Josefsson + + * NEWS, THANKS: Add. + +2006-11-15 Simon Josefsson + + * java/misc/TestIDNA.java: New self-test to test for ToIDNA + regression regarding non-ascii dot-delimiters. Tiny patch from + "Stephane Mikaty" . + +2006-11-15 Simon Josefsson + + * java/gnu/inet/encoding/IDNA.java: Fix non-ascii dot in strings, + tiny patch from "Stephane Mikaty" . + +2006-11-15 Simon Josefsson + + * NEWS: Add. + +2006-11-15 Simon Josefsson + + * gl/Makefile.am, gl/getopt_.h, gl/gettext.h, gl/m4/gnulib-comp.m4, + gnupload, lib/gl/Makefile.am, lib/gl/gettext.h, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4, + lib/gl/m4/longlong.m4, lib/gl/stdint_.h: Update. + +2006-10-31 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-10-31 Simon Josefsson + + * gl/Makefile.am, gl/gettext.h, gl/m4/gnulib-comp.m4, + lib/gl/Makefile.am, lib/gl/gettext.h, lib/gl/iconvme.c, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4, lib/gl/stdint_.h: + Update. + +2006-10-26 Simon Josefsson + + * doc/specifications/draft-faltstrom-idnabis-tables-01.txt: Add. + +2006-10-20 Simon Josefsson + + * doc/specifications/draft-faltstrom-idnabis-tables-00.txt, + doc/specifications/draft-klensin-idnabis-issues-00.txt: Add. + +2006-10-18 Simon Josefsson + + * ChangeLog: [no log message] + +2006-10-18 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2006-10-18 Simon Josefsson + + * NEWS: Version 0.6.8. + +2006-10-18 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-10-18 Simon Josefsson + + * NEWS: Add. + +2006-10-18 Simon Josefsson + + * configure.ac, src/idn.c: Assume locale.h and setlocale. + +2006-10-18 Simon Josefsson + + * Makefile.am, lib/Makefile.am: Build lib/gl/ earlier. + +2006-10-18 Simon Josefsson + + * lib/gl/.cvsignore: [no log message] + +2006-10-18 Simon Josefsson + + * lib/Makefile.am: Build gl/ first. + +2006-10-18 Simon Josefsson + + * lib/Makefile.am, lib/gl/Makefile.am, + lib/gl/m4/absolute-header.m4, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/longlong.m4, + lib/gl/m4/stdint.m4, lib/gl/m4/ulonglong.m4, lib/gl/stdint_.h, + po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Add stdint module to lib/. + +2006-10-18 Simon Josefsson + + * gl/Makefile.am, gl/m4/absolute-header.m4, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4, gl/m4/longlong.m4, gl/m4/stdint.m4, + gl/m4/strdup.m4, gl/m4/ulonglong.m4, gl/stdint_.h, gl/strdup.c, + gl/strdup.h: Remove. + +2006-10-18 Simon Josefsson + + * doc/reference/Makefile.am: Ignore all of lib/gl/. + +2006-10-18 Simon Josefsson + + * configure.ac: Move libtool init, to avoid warnings. + +2006-10-18 Simon Josefsson + + * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/strverscmp.m4, + lib/gl/strverscmp.c, lib/gl/strverscmp.h: Add strverscmp. + +2006-10-18 Simon Josefsson + + * lib/version.c: Rewrite using strverscmp, to fix some corner-cases. + +2006-10-18 Simon Josefsson + + * lib/Makefile.am, lib/gl/Makefile.am, lib/gl/gettext.h, + lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, lib/iconvme.c, + lib/iconvme.h: Use iconvme from gnulib. + +2006-10-18 Simon Josefsson + + * doc/reference/Makefile.am: Ignore strdup.h. + +2006-10-18 Simon Josefsson + + * NEWS: Add. + +2006-10-18 Simon Josefsson + + * lib/gl/.cvsignore: [no log message] + +2006-10-18 Simon Josefsson + + * Makefile.am, configure.ac, gl/Makefile.am, gl/gettext.h, + gl/m4/gnulib-comp.m4, gl/m4/longlong.m4, gl/m4/stdint.m4, + gl/m4/ulonglong.m4, gl/stdint_.h, gl/strdup.c, gnupload, + lib/Makefile.am, lib/gl/Makefile.am, lib/gl/iconvme.c, + lib/gl/iconvme.h, lib/gl/m4/gnulib-cache.m4, + lib/gl/m4/gnulib-comp.m4, lib/gl/m4/gnulib-tool.m4, + lib/gl/m4/iconv.m4, lib/gl/m4/iconvme.m4, lib/gl/m4/lib-ld.m4, + lib/gl/m4/lib-link.m4, lib/gl/m4/lib-prefix.m4, + lib/gl/m4/strdup.m4, lib/gl/strdup.c, lib/gl/strdup.h: Separate + gnulib directories. Also update gnulib files. + +2006-10-17 Simon Josefsson + + * doc/specifications/draft-alvestrand-idna-bidi-00.txt: Add. + +2006-10-14 Simon Josefsson + + * doc/specifications/rfc4713.txt: Add. + +2006-10-02 Simon Josefsson + + * doc/specifications/rfc4690.txt: Add. + +2006-09-27 Simon Josefsson + + * configure.ac: Bump versions. + +2006-09-27 Simon Josefsson + + * NEWS: Add. + +2006-09-25 Simon Josefsson + + * gl/m4/gnulib-comp.m4, gl/override/doc/gpl.texi.diff, + gl/override/doc/lgpl.texi.diff, gl/override/gpl.texi.diff, + gl/override/lgpl.texi.diff: Update. + +2006-09-21 Simon Josefsson + + * doc/gpl.texi, doc/lgpl.texi, gl/override/gpl.texi.diff, + gl/override/lgpl.texi.diff: Update. + +2006-09-14 Simon Josefsson + + * gl/Makefile.am, gl/error.c, gl/getopt.c, gl/getopt1.c, + gl/strdup.c: Update. + +2006-09-13 Simon Josefsson + + * ChangeLog: [no log message] + +2006-09-13 Simon Josefsson + + * NEWS: Version 0.6.7. + +2006-09-13 Simon Josefsson + + * NEWS: Add. + +2006-09-13 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-09-13 Simon Josefsson + + * gl/m4/gnulib-comp.m4, gl/m4/onceonly_2_57.m4: Update. + +2006-09-12 Simon Josefsson + + * NEWS: Add. + +2006-09-12 Simon Josefsson + + * THANKS: Add. + +2006-09-12 Simon Josefsson + + * lib/Makefile.am: For C99 stdint.h platforms, create a dummy + idn-int.h that include stdint.h, reported by Paul Howarth + . + +2006-09-12 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-09-12 Simon Josefsson + + * doc/libidn.texi: Add. + +2006-09-12 Simon Josefsson + + * doc/libidn.texi: Move the index to the end. + +2006-09-12 Simon Josefsson + + * doc/libidn.texi: Fix refs. + +2006-09-12 Simon Josefsson + + * doc/fdl.texi, doc/gpl.texi, doc/lgpl.texi, doc/libidn.texi, + gl/Makefile.am, gl/m4/gnulib-comp.m4: Update. + +2006-09-04 Simon Josefsson + + * doc/fdl.texi, doc/gpl.texi, doc/lgpl.texi: Update. + +2006-09-04 Simon Josefsson + + * doc/libidn.texi: Fix. + +2006-09-04 Simon Josefsson + + * doc/Makefile.am, doc/gpl.texi, doc/lgpl.texi, doc/libidn.texi, + gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Add + lgpl and gpl from gnulib. + +2006-08-30 Simon Josefsson + + * Makefile.am: Use gnupload from gnulib. + +2006-08-30 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + gnupload: Update. + +2006-08-30 Simon Josefsson + + * gl/Makefile.am, gl/error.c, gl/m4/gnulib-cache.m4, + gl/m4/stdint.m4, gl/stdint_.h: Update. + +2006-08-28 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/stdint.m4, + gl/stdint_.h: Update. + +2006-08-23 Simon Josefsson + + * ChangeLog: [no log message] + +2006-08-23 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2006-08-23 Simon Josefsson + + * NEWS: Version 0.6.6. + +2006-08-23 Simon Josefsson + + * gl/m4/longlong.m4: Update. + +2006-08-23 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/strdup.m4, + gl/m4/strerror_r.m4: Update. + +2006-08-23 Simon Josefsson + + * gl/override/doc/gendocs_template: Add. + +2006-08-19 Simon Josefsson + + * gl/error.c, gl/m4/gnulib-comp.m4: Update. + +2006-08-09 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-08-09 Simon Josefsson + + * NEWS: Add. + +2006-08-09 Simon Josefsson + + * csharpcomp.sh.in, gendocs.sh, gl/Makefile.am, gl/error.c, + gl/error.h, gl/gettext.h, gl/m4/csharpcomp.m4, + gl/m4/gnulib-comp.m4, gl/m4/onceonly_2_57.m4, gl/m4/stdint.m4, + gl/stdint_.h: Update. + +2006-07-14 Simon Josefsson + + * Makefile.am: Fix. + +2006-07-14 Simon Josefsson + + * doc/gendocs.sh, gl/Makefile.am, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4: Update. + +2006-07-11 Simon Josefsson + + * doc/fdl.texi, gl/Makefile.am, gl/m4/absolute-header.m4, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/stdint.m4: + Update. + +2006-07-11 Simon Josefsson + + * doc/Makefile.am: Fix texi2dvi -I's. + +2006-07-10 Simon Josefsson + + * gl/m4/absolute-header.m4, gl/m4/getopt.m4, gl/m4/gnulib-comp.m4, + gl/m4/onceonly_2_57.m4: Update. + +2006-07-07 Simon Josefsson + + * gl/.cvsignore: [no log message] + +2006-07-07 Simon Josefsson + + * NEWS, configure.ac, gl/Makefile.am, gl/m4/absolute-header.m4, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/longlong.m4, + gl/m4/stdint.m4, gl/stdint_.h, lib/Makefile.am, + m4/ax_create_stdint_h.m4, po/da.po, po/de.po, po/eo.po, po/fr.po, + po/it.po, po/ja.po, po/nl.po, po/pl.po, po/ro.po, po/rw.po, + po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: Use gnulib stdint module + instead of AX_CREATE_STDINT_H. + +2006-07-07 Simon Josefsson + + * NEWS, configure.ac: Bump version. + +2006-07-07 Simon Josefsson + + * Makefile.am: Fix gendocs.sh run. + +2006-07-07 Simon Josefsson + + * ChangeLog: [no log message] + +2006-07-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2006-07-07 Simon Josefsson + + * NEWS: Version 0.6.5. + +2006-07-07 Simon Josefsson + + * doc/gendocs.sh: Update. + +2006-07-07 Simon Josefsson + + * NEWS: Add. + +2006-07-07 Simon Josefsson + + * NEWS: Add. + +2006-07-07 Simon Josefsson + + * contrib/doxygen/Doxyfile.in, contrib/doxygen/Doxyfile.orig: Update + to doxygen 1.4.7. + +2006-07-07 Simon Josefsson + + * NEWS, THANKS: Add. + +2006-07-07 Simon Josefsson + + * lib/Makefile.am: Need libintl too, for gettext, reported by Kirill + Ponomarew . + +2006-07-07 Simon Josefsson + + * gl/getopt.c: Update. + +2006-07-07 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-07-06 Simon Josefsson + + * ChangeLog: [no log message] + +2006-07-06 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, + po/vi.po, po/zh_CN.po: Generated. + +2006-07-06 Simon Josefsson + + * NEWS: Version 0.6.4. + +2006-07-06 Simon Josefsson + + * configure.ac: Fix valgrind test. + +2006-07-06 Simon Josefsson + + * configure.ac: Check if running valgrind works. + +2006-07-06 Simon Josefsson + + * doc/Makefile.am: Need -I for texi2dvi too. + +2006-07-06 Simon Josefsson + + * doc/libidn.texi: Fix paths. + +2006-07-06 Simon Josefsson + + * doc/man/.cvsignore: Add. + +2006-07-06 Simon Josefsson + + * gl/Makefile.am, gl/m4/onceonly_2_57.m4: Update. + +2006-07-06 Simon Josefsson + + * NEWS: Fix. + +2006-07-06 Simon Josefsson + + * tests/Makefile.am: Simplify valgrind usage. + +2006-07-06 Simon Josefsson + + * configure.ac: Check for valgrind. + +2006-06-27 Simon Josefsson + + * doc/gdoc: Use GNU-style warnings. + +2006-06-27 Simon Josefsson + + * doc/gdoc: Fix man output, sync. + +2006-06-22 Simon Josefsson + + * configure.ac: Use AC_LIBTOOL_WIN32_DLL. + +2006-06-16 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-06.txt: Add. + +2006-06-10 Simon Josefsson + + * po/LINGUAS, po/ja.po: Sync with TP. + +2006-06-09 Simon Josefsson + + * doc/specifications/rfc4518.txt: Add. + +2006-06-07 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update. + +2006-06-07 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update. + +2006-06-07 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update. + +2006-06-01 Simon Josefsson + + * NEWS: Add. + +2006-06-01 Simon Josefsson + + * src/idn.c: When printing size_t, use %lu and cast the value to + unsigned long, based on report from Joe Orton . + +2006-06-01 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync + with TP. + +2006-06-01 Simon Josefsson + + * NEWS: Add. + +2006-06-01 Simon Josefsson + + * lib/strerror-idna.c, lib/strerror-pr29.c, + lib/strerror-punycode.c, lib/strerror-stringprep.c, + lib/strerror-tld.c: Include config.h, to make NLS work, tiny patch + from Joe Orton . + +2006-05-16 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: + Update. + +2006-05-05 Simon Josefsson + + * doc/java/.cvsignore, doc/java/resources/.cvsignore: [no log + message] + +2006-05-04 Simon Josefsson + + * NEWS: Add. + +2006-05-04 Simon Josefsson + + * tests/Makefile.am: Run tests under valgrind, if present. + +2006-04-26 Simon Josefsson + + * doc/libidn.texi: Typo. + +2006-04-26 Simon Josefsson + + * gl/Makefile.am, gl/m4/strerror_r.m4: Update. + +2006-04-17 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-05.txt: Add. + +2006-03-14 Simon Josefsson + + * doc/libidn.texi: Fix title. + +2006-03-11 Simon Josefsson + + * README-alpha: Fix. + +2006-03-11 Simon Josefsson + + * maint-cfg.mk: fix + +2006-03-11 Simon Josefsson + + * gtk-doc.make: Add. + +2006-03-10 Simon Josefsson + + * doc/specifications/draft-farah-adntf-adns-guidelines-01.txt: Add. + +2006-03-08 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-03-08 Simon Josefsson + + * ChangeLog: [no log message] + +2006-03-08 Simon Josefsson + + * NEWS: Typo. + +2006-03-08 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2006-03-08 Simon Josefsson + + * NEWS: Version 0.6.3. + +2006-03-08 Simon Josefsson + + * NEWS: Add. + +2006-03-08 Simon Josefsson + + * NEWS, configure.ac, po/da.po, po/de.po, po/eo.po, po/fr.po, + po/it.po, po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, + po/sv.po, po/vi.po, po/zh_CN.po: Bump versions. + +2006-03-08 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4, + gl/unistd_.h, maint.mk: Update. + +2006-03-08 Simon Josefsson + + * gl/Makefile.am, gl/getopt.c, gl/m4/gnulib-comp.m4, + gl/m4/unistd_h.m4, gl/unistd_.h, maint.mk: Update. + +2006-03-07 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-04.txt: Add. + +2006-03-03 Simon Josefsson + + * po/LINGUAS, po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, + po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-03-03 Simon Josefsson + + * Makefile.am: Fix update-po rule. + +2006-03-03 Simon Josefsson + + * maint.mk: Update. + +2006-03-03 Simon Josefsson + + * maint.mk: Update. + +2006-03-03 Simon Josefsson + + * examples/example3.c, examples/example4.c, lib/nfkc.c: Doc fix. + +2006-03-03 Simon Josefsson + + * lib/idna.c, lib/nfkc.c, lib/stringprep.c, lib/toutf8.c, + lib/version.c, src/idn.c, tests/tst_idna.c, tests/tst_idna2.c, + tests/tst_nfkc.c, tests/tst_pr29.c, tests/tst_punycode.c, + tests/tst_strerror.c, tests/tst_stringprep.c, tests/tst_tld.c, + tests/utils.c: Stylistic fix. + +2006-03-03 Simon Josefsson + + * gl/getopt.c, maint.mk: Update. + +2006-03-03 Simon Josefsson + + * Makefile.am, examples/Makefile.am, lib/Makefile.am, + src/Makefile.am, tests/Makefile.am: Remove indent. + +2006-02-17 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-03.txt: Add. + +2006-02-16 Simon Josefsson + + * maint-cfg.mk: Fix. + +2006-02-16 Simon Josefsson + + * maint-cfg.mk: Fix. + +2006-02-16 Simon Josefsson + + * maint-cfg.mk: Fix. + +2006-02-16 Simon Josefsson + + * maint-cfg.mk: Fix. Add mingw32 target. + +2006-02-15 Simon Josefsson + + * maint.mk: Update. + +2006-02-14 Simon Josefsson + + * GNUmakefile, Makefile.cfg, Makefile.maint, gl/m4/gnulib-comp.m4, + maint-cfg.mk, maint.mk: Rename. + +2006-02-14 Simon Josefsson + + * Makefile.cfg: Fix. + +2006-02-14 Simon Josefsson + + * Makefile.cfg: Fix. + +2006-02-14 Simon Josefsson + + * Makefile.cfg: Fix. + +2006-02-14 Simon Josefsson + + * Makefile.cfg: Fix. + +2006-02-14 Simon Josefsson + + * autogen.sh: Remove. + +2006-02-14 Simon Josefsson + + * GNUmakefile, Makefile.cfg, Makefile.maint: Add. + +2006-02-11 Simon Josefsson + + * GNUmakefile, Makefile.maint, csharpcomp.sh.in, gl/Makefile.am, + gl/csharpcomp.sh.in, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: + Update gnulib. + +2006-02-07 Simon Josefsson + + * libidn.fms: 0.6.2. + +2006-02-07 Simon Josefsson + + * ChangeLog: [no log message] + +2006-02-07 Simon Josefsson + + * doc/libidn.texi: Fix includes, for make dist. + +2006-02-07 Simon Josefsson + + * doc/Makefile.am: Fix -I's again, for make dist. + +2006-02-07 Simon Josefsson + + * doc/libidn.texi: Fix @verbatiminclude's, for make dist. + +2006-02-07 Simon Josefsson + + * doc/Makefile.am: Fix -I's, for make dist. + +2006-02-07 Simon Josefsson + + * doc/Makefile.am: Add -I for examples. + +2006-02-07 Simon Josefsson + + * .cvscopying: Fix years. + +2006-02-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2006-02-07 Simon Josefsson + + * NEWS: Version 0.6.2. + +2006-02-07 Simon Josefsson + + * NEWS: Add. + +2006-02-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/vi.po: Update. + +2006-02-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync + with TP. + +2006-02-07 Simon Josefsson + + * gl/csharpcomp.sh.in, gl/getopt.c, gl/m4/getopt.m4, + gl/m4/gnulib-tool.m4: Update. + +2006-02-05 Simon Josefsson + + * NEWS: Add. + +2006-02-03 Simon Josefsson + + * java/misc/Makefile.am: Fix objdir != srcdir, tiny patch from + Bernard Leak . + +2006-02-03 Simon Josefsson + + * NEWS, THANKS: Add. + +2006-02-03 Simon Josefsson + + * doc/java/Makefile.am, java/Makefile.am: Fix objdir != srcdir, tiny + patch from Bernard Leak . + +2006-01-27 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync + with TP. + +2006-01-27 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2006-01-27 Simon Josefsson + + * doc/Makefile.am: Fix 'make distcheck'. + +2006-01-26 Simon Josefsson + + * doc/libidn.texi: Fix. + +2006-01-24 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-strprep-07.txt: Add. + +2006-01-20 Simon Josefsson + + * libidn.fms: 0.6.1. + +2006-01-20 Simon Josefsson + + * ChangeLog: [no log message] + +2006-01-20 Simon Josefsson + + * NEWS: Version 0.6.1. + +2006-01-20 Simon Josefsson + + * doc/libidn.texi: Add. + +2006-01-20 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2006-01-20 Simon Josefsson + + * NEWS: Add. + +2006-01-20 Simon Josefsson + + * doc/Makefile.am: Fix mingw32 builds. + +2006-01-20 Simon Josefsson + + * tests/Makefile.am: Fix make check on mingw32. + +2006-01-12 Simon Josefsson + + * doc/specifications/draft-xdlee-idn-cdnadmin-06.txt: Add. + +2006-01-11 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4: Update. + +2006-01-11 Simon Josefsson + + * doc/Makefile.am, doc/libidn.texi: Fix copyright years. + +2006-01-11 Simon Josefsson + + * README, README-alpha: Add. + +2006-01-11 Simon Josefsson + + * AUTHORS: Update PGP key. + +2006-01-11 Simon Josefsson + + * csharp/Makefile.am: Fix path to csharpcomp.sh. + +2006-01-11 Simon Josefsson + + * NEWS: Add. + +2006-01-11 Simon Josefsson + + * .cvsignore, gl/.cvsignore: [no log message] + +2006-01-11 Simon Josefsson + + * configure.ac: Fix. + +2006-01-11 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: + Update. + +2006-01-09 Simon Josefsson + + * gl/m4/gnulib-cache.m4, gl/m4/gnulib-tool.m4: Update. + +2006-01-09 Simon Josefsson + + * gl/Makefile.am, gl/csharpcomp.sh.in, gl/m4/gnulib-cache.m4, + gl/m4/gnulib-comp.m4: Update. + +2006-01-09 Simon Josefsson + + * tests/tst_idna2.c: Print USC4 code point numbers too. + +2005-12-23 Simon Josefsson + + * doc/specifications/rfc4290.txt: Add. + +2005-12-22 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-01.txt: Add. + +2005-12-12 Simon Josefsson + + * doc/libidn.texi: Add. + +2005-12-03 Simon Josefsson + + * libidn.fms: 0.6.0. + +2005-12-03 Simon Josefsson + + * NEWS, configure.ac: Bump version. + +2005-12-03 Simon Josefsson + + * ChangeLog: [no log message] + +2005-12-03 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2005-12-03 Simon Josefsson + + * NEWS: Version 0.6.0. + +2005-12-03 Simon Josefsson + + * doc/libidn.texi: Add. + +2005-12-03 Simon Josefsson + + * NEWS: Fix. + +2005-12-03 Simon Josefsson + + * NEWS: Fix. + +2005-12-03 Simon Josefsson + + * configure.ac: Csharp test is in gnulib now, remove it. + +2005-12-03 Simon Josefsson + + * doc/specifications/draft-iab-idn-nextsteps-00.txt: Add. + +2005-12-02 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync + with TP. + +2005-12-02 Simon Josefsson + + * doc/libidn.texi: Add C# notes. + +2005-12-02 Simon Josefsson + + * configure.ac: Fix message. + +2005-12-02 Simon Josefsson + + * gl/Makefile.am, gl/csharpcomp.sh.in, gl/m4/csharp.m4, + gl/m4/csharpcomp.m4, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, + m4/csharp.m4, m4/csharpcomp.m4: Use csharpcomp-script from gnulib. + +2005-12-02 Simon Josefsson + + * csharp/Makefile.am: Don't specify any C# compile flags (fixes + distcheck). + +2005-12-01 Simon Josefsson + + * po/da.po, po/rw.po, po/zh_CN.po: Sync with TP. + +2005-12-01 Simon Josefsson + + * NEWS: Add. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Dist MSVS stuff. + +2005-12-01 Simon Josefsson + + * csharp/libidn.csproj, csharp/libidn.csproj.user, + csharp/libidn.sln, csharp/libidn_PPC.csdproj, + csharp/libidn_PPC.csdproj.user, csharp/libidn_PPC.sln: Add MSVSC + project files. + +2005-12-01 Simon Josefsson + + * NEWS: Add. + +2005-12-01 Simon Josefsson + + * csharp/CombiningClass.cs, csharp/Composition.cs, + csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs, + csharp/IDNA.cs, csharp/IDNAException.cs, csharp/NFKC.cs, + csharp/Punycode.cs, csharp/PunycodeException.cs, csharp/RFC3454.cs, + csharp/Stringprep.cs, csharp/StringprepException.cs: Use GPL for the + port. + +2005-12-01 Simon Josefsson + + * NEWS: Fix. + +2005-12-01 Simon Josefsson + + * csharp/.cvsignore, gl/.cvsignore: [no log message] + +2005-12-01 Simon Josefsson + + * configure.ac, csharp/Makefile.am: Fix csharpcomp location. + +2005-12-01 Simon Josefsson + + * NEWS: Fix. + +2005-12-01 Simon Josefsson + + * NEWS, gl/csharpcomp.sh.in: Add. + +2005-12-01 Simon Josefsson + + * configure.ac, csharp/Makefile.am: Fix. + +2005-12-01 Simon Josefsson + + * configure.ac: Fix message. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Fix. + +2005-12-01 Simon Josefsson + + * m4/csharp.m4, m4/csharpcomp.m4: Add. + +2005-12-01 Simon Josefsson + + * configure.ac: Add C# tests. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Remove. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Fix. + +2005-12-01 Simon Josefsson + + * .cvscopying: Add 2005. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Add. + +2005-12-01 Simon Josefsson + + * AUTHORS, THANKS: Add. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Use gnulib, for csharpcomp. + +2005-12-01 Simon Josefsson + + * csharp/Makefile.am: Add. + +2005-12-01 Simon Josefsson + + * Makefile.am, configure.ac: C# fixes. + +2005-12-01 Simon Josefsson + + * csharp/AssemblyInfo.cs, csharp/CombiningClass.cs, + csharp/Composition.cs, csharp/DecompositionKeys.cs, + csharp/DecompositionMappings.cs, csharp/IDNA.cs, + csharp/IDNAException.cs, csharp/NFKC.cs, csharp/Punycode.cs, + csharp/PunycodeException.cs, csharp/RFC3454.cs, + csharp/Stringprep.cs, csharp/StringprepException.cs: Add C# port, + from Alexander Gnauck . + +2005-12-01 Simon Josefsson + + * NEWS, configure.ac: Bump version. + +2005-11-04 Simon Josefsson + + * NEWS: Fix. + +2005-11-04 Simon Josefsson + + * NEWS, THANKS: Add. + +2005-11-04 Simon Josefsson + + * lib/Makefile.am: Use -no-undefined for libtool, for cygwin, tiny + patch from "Yaakov S (Cygwin Ports)" + . + +2005-10-26 Simon Josefsson + + * po/da.po: Add. + +2005-10-23 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-10-23 Simon Josefsson + + * lib/pr29.c: (pr29_8z): Fix memory leak. + +2005-10-23 Simon Josefsson + + * libidn.fms: Add. + +2005-10-23 Simon Josefsson + + * ChangeLog: [no log message] + +2005-10-23 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2005-10-23 Simon Josefsson + + * doc/libidn.texi: Mention Suse on IBM OpenPower. + +2005-10-23 Simon Josefsson + + * libidn.fms: Fix. + +2005-10-23 Simon Josefsson + + * NEWS: Add. + +2005-10-23 Simon Josefsson + + * NEWS: Version 0.5.20. + +2005-10-23 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2005-10-23 Simon Josefsson + + * libidn.fms: Add. + +2005-10-23 Simon Josefsson + + * NEWS: Add. + +2005-10-23 Simon Josefsson + + * lib/Makefile.am: Install pr29.h. + +2005-10-22 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update. + +2005-10-07 Simon Josefsson + + * gl/getopt_.h: Update. + +2005-10-01 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-strprep-06.txt: Add. + +2005-09-22 Simon Josefsson + + * gl/m4/gnulib-comp.m4: Update. + +2005-09-20 Simon Josefsson + + * gl/getopt1.c: Update. + +2005-09-19 Simon Josefsson + + * gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Update. + +2005-09-19 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-09-19 Simon Josefsson + + * Makefile.am: Use gnupload. + +2005-09-19 Simon Josefsson + + * libidn.fms: 0.5.19. + +2005-09-19 Simon Josefsson + + * ChangeLog: [no log message] + +2005-09-19 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Update. + +2005-09-19 Simon Josefsson + + * NEWS: Version 0.5.19. + +2005-09-19 Simon Josefsson + + * NEWS: Add. + +2005-09-19 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Update. + +2005-09-19 Simon Josefsson + + * po/Makevars: Use --no-location, to minimize CVS diff's. + +2005-09-19 Simon Josefsson + + * doc/reference/tmpl/.cvsignore: [no log message] + +2005-09-15 Simon Josefsson + + * doc/reference/tmpl/libidn-unused.sgml: Add (to fix gtk-doc + makefile bug). + +2005-09-15 Simon Josefsson + + * doc/java/Makefile.am: Fix dependency. + +2005-09-13 Simon Josefsson + + * : Update. + +2005-09-13 Simon Josefsson + + * Makefile.am: Fix wget usage. + +2005-09-13 Simon Josefsson + + * po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/vi.po: Sync with TP. + +2005-09-13 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Sync with TP. + +2005-09-12 Simon Josefsson + + * m4/gtk-doc.m4: Update. + +2005-09-12 Simon Josefsson + + * doc/java/Makefile.am: Fix dependencies. + +2005-09-12 Simon Josefsson + + * doc/java/.cvsignore, doc/java/gnu/inet/encoding/.cvsignore, + doc/java/resources/.cvsignore: [no log message] + +2005-09-12 Simon Josefsson + + * NEWS: Fix. + +2005-09-12 Simon Josefsson + + * doc/java/.cvsignore: [no log message] + +2005-09-12 Simon Josefsson + + * java/Makefile.am: Call gjdoc directly. + +2005-09-12 Simon Josefsson + + * README-alpha, configure.ac: Replace javadoc with gjdoc. + +2005-09-12 Simon Josefsson + + * doc/java/Makefile.am: Dist files generated by gjdoc instead. + +2005-09-12 Simon Josefsson + + * NEWS: Add. + +2005-09-12 Simon Josefsson + + * NEWS: Add. + +2005-09-10 Simon Josefsson + + * lib/toutf8.c: Use HAVE_LOCALE_H. + +2005-09-10 Simon Josefsson + + * NEWS: Add. + +2005-09-10 Simon Josefsson + + * m4/codeset.m4: Update. + +2005-09-10 Simon Josefsson + + * THANKS: Add. + +2005-09-10 Simon Josefsson + + * src/idn.c: Fix header/setlocale checks. + +2005-09-10 Simon Josefsson + + * configure.ac: Check for locale.h. + +2005-09-10 Simon Josefsson + + * src/idn.c: Fix setlocale test. + +2005-09-10 Simon Josefsson + + * configure.ac: Check for setlocale. + +2005-09-09 Simon Josefsson + + * m4/codeset.m4: Add. + +2005-09-09 Simon Josefsson + + * lib/toutf8.c: Use modern nl_langinfo test. + +2005-09-09 Simon Josefsson + + * configure.ac: Simplify nl_langinfo test. + +2005-09-09 Simon Josefsson + + * src/idn.c: Fix #include's. + +2005-09-09 Simon Josefsson + + * configure.ac: Let's assume unistd.h and errno.h (in fact, we + already did in the source code and nobody complained). + +2005-09-09 Simon Josefsson + + * AUTHORS: Update PGP key. + +2005-09-09 Simon Josefsson + + * NEWS: Add. + +2005-09-09 Simon Josefsson + + * configure.ac, gl/Makefile.am, gl/m4/codeset.m4, gl/m4/getopt.m4, + gl/m4/gettext.m4, gl/m4/glibc2.m4, gl/m4/glibc21.m4, + gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/gnulib-tool.m4, + gl/m4/gnulib.m4, gl/m4/iconv.m4, gl/m4/intdiv0.m4, gl/m4/intmax.m4, + gl/m4/inttypes-pri.m4, gl/m4/inttypes.m4, gl/m4/inttypes_h.m4, + gl/m4/isc-posix.m4, gl/m4/lcmessage.m4, gl/m4/lib-ld.m4, + gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/longdouble.m4, + gl/m4/longlong.m4, gl/m4/nls.m4, gl/m4/onceonly_2_57.m4, + gl/m4/po.m4, gl/m4/printf-posix.m4, gl/m4/progtest.m4, + gl/m4/signed.m4, gl/m4/size_max.m4, gl/m4/stdint_h.m4, + gl/m4/strdup.m4, gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4, + gl/m4/wchar_t.m4, gl/m4/wint_t.m4, gl/m4/xsize.m4: Update gnulib. + +2005-07-16 Simon Josefsson + + * README: Fix typo. + +2005-07-16 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-07-16 Simon Josefsson + + * libidn.fms: Add. + +2005-07-16 Simon Josefsson + + * ChangeLog: [no log message] + +2005-07-16 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2005-07-16 Simon Josefsson + + * NEWS: Version 0.5.18. + +2005-07-16 Simon Josefsson + + * NEWS: Add. + +2005-07-16 Simon Josefsson + + * doc/libidn.texi: Link to help-libidn. + +2005-07-16 Simon Josefsson + + * README: Add. + +2005-07-16 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib.m4: Update. + +2005-07-16 Simon Josefsson + + * configure.ac: Simplify. + +2005-07-15 Simon Josefsson + + * gl/.cvsignore: [no log message] + +2005-06-24 Simon Josefsson + + * doc/specifications/draft-bakleh-reg-adm-acg-apu-01.txt: Add. + +2005-06-24 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Use 'sed 1q' instead of 'head -n 1', + more portable. + +2005-06-24 Simon Josefsson + + * doc/Makefile.am: Add 2005 to man page copyrights. + +2005-06-24 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Fix head usage (really!!). + +2005-06-24 Simon Josefsson + + * configure.ac: Fix license. + +2005-06-24 Simon Josefsson + + * configure.ac: Bump versions. + +2005-06-24 Simon Josefsson + + * NEWS: Add. + +2005-06-24 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Fix use of head. + +2005-06-24 Simon Josefsson + + * m4/ax_create_stdint_h.m4: New upstream release. + +2005-06-14 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/pl.po, + po/ro.po, po/sr.po, po/vi.po: Sync with TP. + +2005-06-14 Simon Josefsson + + * contrib/doxygen/gdoc2doxygen: Fix address in license. + +2005-06-12 Simon Josefsson + + * NEWS: Fix. + +2005-06-12 Simon Josefsson + + * THANKS: fix + +2005-06-12 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Turn 'head -1' into 'head -n -1', tiny + patch from Carsten Lohrke . + +2005-06-05 Simon Josefsson + + * NEWS, po/nl.po: Add. + +2005-05-26 Simon Josefsson + + * libidn.fms: 0.5.17. + +2005-05-26 Simon Josefsson + + * ChangeLog: [no log message] + +2005-05-26 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po, + po/zh_CN.po: Generated. + +2005-05-26 Simon Josefsson + + * NEWS: Version 0.5.17. + +2005-05-26 Simon Josefsson + + * doc/lgpl.texi: Fix sectioning. + +2005-05-26 Simon Josefsson + + * NEWS: Fix. + +2005-05-26 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/gettext.h, gl/m4/getopt.m4, + gl/m4/gettext.m4, gl/m4/glibc2.m4, gl/m4/gnulib.m4, + gl/m4/intdiv0.m4, gl/m4/intmax.m4, gl/m4/inttypes-pri.m4, + gl/m4/inttypes.m4, gl/m4/isc-posix.m4, gl/m4/lcmessage.m4, + gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/nls.m4, gl/m4/po.m4, + gl/m4/printf-posix.m4, gl/m4/progtest.m4, gl/m4/strdup.m4: Sync with + gnulib. + +2005-05-26 Simon Josefsson + + * AUTHORS, COPYING, COPYING.LIB, FAQ, Makefile.am, README, TODO, + configure.ac, contrib/README, contrib/java/Makefile.am, + doc/Makefile.am, doc/Makefile.gdoci, doc/fdl.texi, doc/gdoc, + doc/gendocs.sh, doc/gendocs_template, doc/java/Makefile.am, + doc/lgpl.texi, doc/specifications/Makefile.am, doc/tld/Makefile.am, + examples/Makefile.am, examples/example.c, examples/example2.c, + examples/example3.c, examples/example4.c, examples/example5.c, + gl/dummy.c, gl/error.c, gl/error.h, gl/getopt.c, gl/getopt1.c, + gl/getopt_.h, gl/getopt_int.h, gl/gettext.h, gl/strdup.c, + gl/strdup.h, java/Makefile.am, + java/gnu/inet/encoding/CombiningClass.java, + java/gnu/inet/encoding/Composition.java, + java/gnu/inet/encoding/DecompositionKeys.java, + java/gnu/inet/encoding/DecompositionMappings.java, + java/gnu/inet/encoding/IDNA.java, + java/gnu/inet/encoding/IDNAException.java, + java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/NFKC.java, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java, + java/gnu/inet/encoding/RFC3454.java, + java/gnu/inet/encoding/Stringprep.java, + java/gnu/inet/encoding/StringprepException.java, + java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java, + java/misc/Makefile.am, java/misc/TestIDNA.java, + java/misc/TestNFKC.java, lib/Makefile.am, + lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl, + lib/gen-unicode-tables.pl, lib/iconvme.c, lib/iconvme.h, + lib/idn-free.c, lib/idn-free.h, lib/idna.c, lib/idna.h, lib/nfkc.c, + lib/pr29.c, lib/pr29.h, lib/profiles.c, lib/punycode.c, + lib/punycode.h, lib/strerror-idna.c, lib/strerror-pr29.c, + lib/strerror-punycode.c, lib/strerror-stringprep.c, + lib/strerror-tld.c, lib/stringprep.c, lib/stringprep.h.in, + lib/tld.c, lib/tld.h, lib/toutf8.c, lib/version.c, libc/example.c, + libidn.pc.in, src/Makefile.am, src/idn.c, src/idn.ggo, src/idna.el, + src/punycode.el, tests/Makefile.am, tests/tst_idna.c, + tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_pr29.c, + tests/tst_punycode.c, tests/tst_strerror.c, tests/tst_stringprep.c, + tests/tst_tld.c, tests/utils.c, tests/utils.h: Update FSF address in + license. Fix copyrights. + +2005-05-26 Simon Josefsson + + * NEWS: Add. + +2005-05-18 Simon Josefsson + + * doc/specifications/draft-klensin-reg-guidelines-08.txt: Add. + +2005-05-12 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/rw.po, po/sr.po, po/zh_CN.po: Sync with TP. + +2005-05-10 Simon Josefsson + + * doc/libidn.texi: Add. + +2005-05-08 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-05-08 Simon Josefsson + + * libidn.fms: 0.5.16. + +2005-05-06 Simon Josefsson + + * ChangeLog: [no log message] + +2005-05-06 Simon Josefsson + + * NEWS: Version 0.5.16. + +2005-05-06 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/zh_CN.po: Sync with TP. + +2005-05-05 Simon Josefsson + + * NEWS: Add. + +2005-05-05 Simon Josefsson + + * lib/pr29.c: Use 'const' for static data, tiny patch from Joe Orton + . + +2005-04-16 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po: Sync with TP. + +2005-04-15 Simon Josefsson + + * configure.ac: Bump versions. + +2005-04-15 Simon Josefsson + + * NEWS: Add. + +2005-04-15 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/vi.po: Sync with TP. + +2005-04-06 Simon Josefsson + + * po/LINGUAS, po/rw.po, po/zh_CN.po: Sync with TP. + +2005-03-19 Simon Josefsson + + * ChangeLog: [no log message] + +2005-03-19 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: + Generated. + +2005-03-19 Simon Josefsson + + * NEWS: Version 0.5.15. + +2005-03-19 Simon Josefsson + + * NEWS: Fix. + +2005-03-19 Simon Josefsson + + * NEWS: Add. + +2005-03-19 Simon Josefsson + + * lib/iconvme.c: Sync with libc; fix license and fix arithmetic + overflow. + +2005-03-19 Simon Josefsson + + * lib/iconvme.h: Fix license. + +2005-03-19 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-03-19 Simon Josefsson + + * ChangeLog: [no log message] + +2005-03-19 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: + Generated. + +2005-03-19 Simon Josefsson + + * NEWS: Version 0.5.14. + +2005-03-19 Simon Josefsson + + * doc/libidn.texi: Ramblings. + +2005-03-19 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po: Sync with TP. + +2005-03-12 Simon Josefsson + + * NEWS, THANKS, po/LINGUAS, po/zh_CN.po: Add. + +2005-03-01 Simon Josefsson + + * doc/specifications/rfc4013.txt: Add. + +2005-02-27 Simon Josefsson + + * lib/idn-free.c: Include the specification first, to verify it is + standalone. Doc fix. + +2005-02-24 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-dn-16.txt: Add. + +2005-02-16 Simon Josefsson + + * THANKS: Add. + +2005-02-16 Simon Josefsson + + * THANKS: Reorder chronologically. + +2005-02-13 Simon Josefsson + + * NEWS: Add. + +2005-02-13 Simon Josefsson + + * NEWS: Add. + +2005-02-11 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-strprep-05.txt: Add. + +2005-02-07 Simon Josefsson + + * THANKS: Sort (should be sorted chronologically..). + +2005-02-07 Simon Josefsson + + * configure.ac: Bump versions. + +2005-02-07 Simon Josefsson + + * NEWS, THANKS, po/LINGUAS, po/vi.po: Add. + +2005-01-30 Simon Josefsson + + * lib/Makefile.am: Fix last commit, reported by Linus Nordberg + . + +2005-01-29 Simon Josefsson + + * lib/Makefile.am: Fix srcdir != objdir when bootstrapping from CVS, + patch from Linus Nordberg (tiny change). + +2005-01-29 Simon Josefsson + + * README-alpha: Fix. + +2005-01-29 Simon Josefsson + + * doc/reference/Makefile.am: Remove hack, fixed in gtk-doc CVS. + +2005-01-29 Simon Josefsson + + * libidn.fms: 0.5.13. + +2005-01-29 Simon Josefsson + + * ChangeLog: [no log message] + +2005-01-29 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, + po/pl.po, po/ro.po, po/sr.po, po/sv.po: Generated. + +2005-01-29 Simon Josefsson + + * NEWS: Version 0.5.13. + +2005-01-29 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update. + +2005-01-29 Simon Josefsson + + * configure.ac: Need dummy gnulib module again. + +2005-01-28 Simon Josefsson + + * lib/iconvme.c, lib/iconvme.h: Add. + +2005-01-28 Simon Josefsson + + * configure.ac, gl/Makefile.am, gl/iconvme.c, gl/iconvme.h, + gl/m4/gnulib.m4, gl/m4/iconvme.m4, lib/Makefile.am: Move iconvme to + lib, since linking gnulib in lib doesn't work due to program_name + symbol. + +2005-01-28 Simon Josefsson + + * gl/m4/codeset.m4, gl/m4/error.m4, gl/m4/getopt.m4, + gl/m4/glibc21.m4, gl/m4/iconv.m4, gl/m4/inttypes_h.m4, + gl/m4/lib-ld.m4, gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, + gl/m4/longdouble.m4, gl/m4/longlong.m4, gl/m4/signed.m4, + gl/m4/size_max.m4, gl/m4/stdint_h.m4, gl/m4/strdup.m4, + gl/m4/strerror_r.m4, gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4, + gl/m4/wchar_t.m4, gl/m4/wint_t.m4, gl/m4/xsize.m4: Update. + +2005-01-28 Simon Josefsson + + * NEWS: Typo. + +2005-01-27 Simon Josefsson + + * THANKS: Add. + +2005-01-27 Simon Josefsson + + * doc/libidn.texi: Add, reported by Simon Walter + . + +2005-01-20 Simon Josefsson + + * NEWS: Add. + +2005-01-17 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Sync with TP. + +2005-01-17 Simon Josefsson + + * README-alpha: Remove. + +2005-01-17 Simon Josefsson + + * java/gnu/inet/encoding/Makefile.am, java/misc/Makefile.am: Define + JAVAROOT unconditionally, because automake barf otherwise. + +2005-01-16 Simon Josefsson + + * README-alpha: Add. + +2005-01-16 Simon Josefsson + + * README-alpha: Add. + +2005-01-16 Simon Josefsson + + * THANKS: Add. + +2005-01-16 Simon Josefsson + + * README-alpha: Mention gettext requirement, suggested by Linus + Nordberg . + +2005-01-05 Simon Josefsson + + * configure.ac: Warn strongly about missing iconv. + +2005-01-05 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update. + +2005-01-05 Simon Josefsson + + * configure.ac: No need to use dummy gnulib module, no system has + iconvme. + +2005-01-05 Simon Josefsson + + * NEWS: Add. + +2005-01-05 Simon Josefsson + + * lib/Makefile.am: Link with gnulib (only LGPL files). + +2005-01-05 Simon Josefsson + + * lib/toutf8.c: Use iconv_string from gnulib. + +2005-01-05 Simon Josefsson + + * configure.ac, gl/Makefile.am, gl/iconvme.c, gl/iconvme.h, + gl/m4/gnulib.m4, gl/m4/iconvme.m4: Add iconvme from gnulib. + +2005-01-02 Simon Josefsson + + * src/idn.c: Add copyright for year 2005. + +2005-01-02 Simon Josefsson + + * NEWS: Add. + +2005-01-02 Simon Josefsson + + * po/sv.po: Update. + +2005-01-01 Simon Josefsson + + * gl/error.c: Update. + +2005-01-01 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2005-01-01 Simon Josefsson + + * NEWS, THANKS, po/LINGUAS, po/it.po: Add. + +2004-12-04 Simon Josefsson + + * libidn.fms: Add. + +2004-12-04 Simon Josefsson + + * ChangeLog: [no log message] + +2004-12-04 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-12-04 Simon Josefsson + + * NEWS: Version 0.5.12. + +2004-12-04 Simon Josefsson + + * NEWS: Add. + +2004-12-04 Simon Josefsson + + * gl/getopt_.h, gl/m4/getopt.m4: Update. + +2004-12-01 Simon Josefsson + + * java/gnu/inet/encoding/Stringprep.java: Doc fix, from Oliver Hitz + . + +2004-11-30 Simon Josefsson + + * doc/specifications/draft-bartosiewicz-idn-pltld-08.txt: Add. + +2004-11-29 Simon Josefsson + + * doc/libidn.texi: More PR29. + +2004-11-23 Simon Josefsson + + * configure.ac: Bump versions. + +2004-11-23 Simon Josefsson + + * NEWS: Add. + +2004-11-22 Simon Josefsson + + * THANKS: Add. + +2004-11-22 Simon Josefsson + + * java/gnu/inet/encoding/Stringprep.java: Fixed two bugs: + allowUnassigned not respected properly, buggy prohibited code points + check. Argument checks added. RFC3920 nodeprep and resourceprep + added, suggested by Matt Tucker. Convenience methods with + allowUnassigned set to false added. From Oliver Hitz + . + +2004-11-22 Simon Josefsson + + * java/gnu/inet/encoding/RFC3454.java, + java/misc/GenerateRFC3454.java: Add table C.1.1 and C.2.1, from + Oliver Hitz . + +2004-11-21 Simon Josefsson + + * doc/gdoc: Make sure all man pages follow 'foo -- purpose of foo' + format, even if there is no purpose description available, from + Shishi. + +2004-11-21 Simon Josefsson + + * libidn.fms: Add. + +2004-11-21 Simon Josefsson + + * ChangeLog: [no log message] + +2004-11-21 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Sync with TP. + +2004-11-21 Simon Josefsson + + * NEWS: Version 0.5.11. + +2004-11-21 Simon Josefsson + + * NEWS: Add. + +2004-11-21 Simon Josefsson + + * doc/gdoc: Add 'DO NOT MODIFY' warning to generated man pages. + +2004-11-21 Simon Josefsson + + * THANKS: Add. + +2004-11-21 Simon Josefsson + + * lib/idna.c: Doc fix. + +2004-11-21 Simon Josefsson + + * NEWS: Add. + +2004-11-21 Simon Josefsson + + * lib/nfkc.c, lib/strerror-punycode.c: Doc fix. + +2004-11-21 Simon Josefsson + + * lib/idna.c, lib/pr29.c, lib/strerror-idna.c, lib/strerror-pr29.c, + lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c, + lib/tld.c, lib/toutf8.c, lib/version.c: Doc fix. + +2004-11-21 Simon Josefsson + + * doc/gdoc: For man pages, don't use line breaking formatting codes + ("\n.I foo\n") but rather inline commands ("\fIfoo\fP"). + +2004-11-21 Simon Josefsson + + * lib/punycode.c: Doc fix. + +2004-11-21 Simon Josefsson + + * doc/gdoc: Skip leading whitespace in function purpose. Print + function purpose in man pages, if available. + +2004-11-21 Simon Josefsson + + * NEWS: Add. + +2004-11-21 Simon Josefsson + + * gl/getopt.c, gl/getopt1.c, gl/getopt_.h, gl/getopt_int.h, + gl/m4/getopt.m4: Update. + +2004-11-18 Simon Josefsson + + * doc/specifications/draft-ekrema-smldn-00.txt: Add. + +2004-11-17 Simon Josefsson + + * doc/specifications/draft-klensin-reg-guidelines-05.txt: Add. + +2004-11-16 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-11-09 Simon Josefsson + + * doc/specifications/Description.txt, + doc/specifications/IDNConnect.html, doc/specifications/testbed.html: + Add. + +2004-11-09 Simon Josefsson + + * doc/specifications/pr-29.html: Update. + +2004-11-08 Simon Josefsson + + * libidn.fms: Fix. + +2004-11-08 Simon Josefsson + + * ChangeLog: [no log message] + +2004-11-08 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-11-08 Simon Josefsson + + * NEWS: Version 0.5.10. + +2004-11-08 Simon Josefsson + + * tests/tst_pr29.c: No need for stringprep.h. + +2004-11-08 Simon Josefsson + + * examples/example2.c, libc/example.c, tests/tst_idna.c, + tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_punycode.c, + tests/tst_stringprep.c: Cosmetic fix. + +2004-11-08 Simon Josefsson + + * tests/utils.c: Typo. + +2004-11-08 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Sync with TP. + +2004-11-08 Simon Josefsson + + * Makefile.am: Simplify EXTRA_DIST. + +2004-11-08 Simon Josefsson + + * NEWS: Add. + +2004-11-08 Simon Josefsson + + * lib/Makefile.am: Use Libtool's -export-symbols-regex. + +2004-11-08 Simon Josefsson + + * doc/specifications/draft-klensin-reg-guidelines-04.txt, + doc/specifications/draft-xdlee-idn-cdnadmin-02.txt: Add. + +2004-11-08 Simon Josefsson + + * lib/idna.c, lib/nfkc.c, lib/profiles.c, lib/punycode.c, + lib/toutf8.c, lib/version.c: Cosmetic fix. + +2004-11-08 Simon Josefsson + + * lib/tld.c: Add copyright header for me. + +2004-11-07 Simon Josefsson + + * libidn.fms: Add. + +2004-11-07 Simon Josefsson + + * README-alpha: Fix. + +2004-11-07 Simon Josefsson + + * FAQ: Add. + +2004-11-07 Simon Josefsson + + * AUTHORS: Update PGP key. + +2004-11-07 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-11-07 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-anon-04.txt: Add. + +2004-11-07 Simon Josefsson + + * ChangeLog: [no log message] + +2004-11-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po: Generated. + +2004-11-07 Simon Josefsson + + * Makefile.am: Fix release target. + +2004-11-07 Simon Josefsson + + * NEWS: Version 0.5.9. + +2004-11-07 Simon Josefsson + + * po/sv.po: Sync with TP. + +2004-11-07 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-11-07 Simon Josefsson + + * doc/reference/Makefile.am, doc/reference/libidn.types: Simplify. + +2004-11-07 Simon Josefsson + + * doc/Makefile.am: Fix SUBDIRS order, because GTK-DOC need + components.png. + +2004-11-07 Simon Josefsson + + * autogen.sh: Fix. + +2004-11-07 Simon Josefsson + + * autogen.sh: Fix. + +2004-11-07 Simon Josefsson + + * NEWS: Add. + +2004-11-07 Simon Josefsson + + * doc/gendocs.sh, doc/gendocs_template: Update. + +2004-10-28 Simon Josefsson + + * doc/gdoc: Support -include, from GnuTLS. + +2004-10-27 Simon Josefsson + + * lib/profiles.c: Doc fix. + +2004-10-25 Simon Josefsson + + * doc/gdoc: Fix man output. + +2004-10-25 Simon Josefsson + + * lib/strerror-stringprep.c, lib/stringprep.c, lib/tld.c: Doc fix. + +2004-10-25 Simon Josefsson + + * lib/idna.c, lib/pr29.c, lib/punycode.c, lib/strerror-idna.c, + lib/strerror-pr29.c, lib/strerror-punycode.c, lib/tld.c: Doc fix. + +2004-10-25 Simon Josefsson + + * doc/gdoc: Use @code, not @var, for constants in texinfo output. + Fix newlines in man output. + +2004-10-25 Simon Josefsson + + * doc/gdoc: Use # instead of & for types. + +2004-10-25 Simon Josefsson + + * doc/reference/Makefile.am, doc/reference/libidn-docs.sgml: Add + image. + +2004-10-25 Simon Josefsson + + * autogen.sh: Run gtkdocize. + +2004-10-25 Simon Josefsson + + * po/LINGUAS, po/sv.po: Sync with TP. + +2004-10-25 Simon Josefsson + + * Makefile.am: (update-po): Fix. + +2004-10-25 Simon Josefsson + + * : Add. + +2004-10-24 Simon Josefsson + + * doc/reference/libidn.types: Fix. + +2004-10-24 Simon Josefsson + + * NEWS: Fix. + +2004-10-24 Simon Josefsson + + * Makefile.am: (DISTCHECK_CONFIGURE_FLAGS): Add --enable-gtk-doc. + +2004-10-24 Simon Josefsson + + * NEWS, doc/reference/Makefile.am, doc/reference/libidn-docs.sgml, + doc/reference/libidn-docs.tmpl: Align GTK-DOC build infrastructure + with GTK-DOC official recommendations. + +2004-10-24 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-10-24 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/ro.po, + po/sr.po: Sync with TP. + +2004-10-15 Simon Josefsson + + * gl/Makefile.am, gl/m4/getopt.m4: Update. + +2004-10-15 Simon Josefsson + + * po/pl.po: Sync with TP. + +2004-10-13 Simon Josefsson + + * libidn.fms: Update. + +2004-10-13 Simon Josefsson + + * libidn.fms: Update. + +2004-10-12 Simon Josefsson + + * README: Fix. + +2004-10-12 Simon Josefsson + + * README: Fix. + +2004-10-12 Simon Josefsson + + * README: Improve readability. + +2004-10-12 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-10-12 Simon Josefsson + + * ChangeLog: [no log message] + +2004-10-12 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-10-12 Simon Josefsson + + * NEWS: Version 0.5.8. + +2004-10-12 Simon Josefsson + + * NEWS: Add. + +2004-10-12 Simon Josefsson + + * lib/gen-unicode-tables.pl: Add coment to generated files to say + that they are generated, reported by "Gisle Vanem" . + +2004-10-12 Simon Josefsson + + * doc/specifications/Makefile.am: Distribute + BidiMirroring-3.2.0.txt, reported by "Gisle Vanem" . + +2004-10-12 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-10-12 Simon Josefsson + + * ChangeLog: [no log message] + +2004-10-12 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-10-12 Simon Josefsson + + * NEWS: Version 0.5.7. + +2004-10-12 Simon Josefsson + + * NEWS: Add. + +2004-10-11 Simon Josefsson + + * po/fr.po: Generated. + +2004-10-11 Simon Josefsson + + * po/fr.po: Sync with TP. + +2004-10-05 Simon Josefsson + + * gl/error.c: Update Gnulib. + +2004-10-04 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-10-04 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-10-02 Simon Josefsson + + * src/idn.c: Use EXIT_SUCCESS and EXIT_FAILURE. + +2004-10-02 Simon Josefsson + + * AUTHORS: Update PGP key. + +2004-10-02 Simon Josefsson + + * ChangeLog: [no log message] + +2004-10-02 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-10-02 Simon Josefsson + + * NEWS: Version 0.5.6. + +2004-10-02 Simon Josefsson + + * examples/example.c, examples/example3.c, examples/example4.c, + examples/example5.c: Use *strerror. + +2004-10-02 Simon Josefsson + + * Makefile.am, examples/Makefile.am: Fix indent. + +2004-10-02 Simon Josefsson + + * NEWS, libidn.fms: Fix. + +2004-10-02 Simon Josefsson + + * NEWS: Reorder. + +2004-10-02 Simon Josefsson + + * NEWS: Fix. + +2004-10-02 Simon Josefsson + + * lib/Makefile.am: Don't link with gnulib. + +2004-10-02 Simon Josefsson + + * lib/toutf8.c: Revert, don't use strdup. + +2004-10-02 Simon Josefsson + + * lib/strerror-idna.c: Simplify translation strings. + +2004-10-02 Simon Josefsson + + * NEWS: Add. + +2004-10-02 Simon Josefsson + + * NEWS: Fix. + +2004-10-02 Simon Josefsson + + * src/idn.c: Typo. + +2004-10-02 Simon Josefsson + + * lib/idna.h, lib/pr29.c, lib/pr29.h, lib/profiles.c, lib/toutf8.c, + src/idn.c, tests/tst_pr29.c, tests/tst_stringprep.c: Indent. + +2004-10-02 Simon Josefsson + + * src/idn.c: Use error. + +2004-10-02 Simon Josefsson + + * configure.ac, gl/Makefile.am, gl/error.c, gl/error.h, + gl/m4/error.m4, gl/m4/gnulib.m4, gl/m4/strerror_r.m4: Add error from + gnulib (slightly modified to avoid unlocked-io.h). + +2004-10-02 Simon Josefsson + + * tests/Makefile.am, tests/tst_strerror.c: Add. + +2004-10-02 Simon Josefsson + + * tests/.cvsignore: [no log message] + +2004-10-02 Simon Josefsson + + * lib/Makefile.am: (DEFS): Add LOCALEDIR. + +2004-10-02 Simon Josefsson + + * lib/strerror-idna.c, lib/strerror-pr29.c, + lib/strerror-punycode.c, lib/strerror-stringprep.c, + lib/strerror-tld.c: Setup gettext properly. + +2004-10-02 Simon Josefsson + + * po/POTFILES.in: Add. + +2004-10-02 Simon Josefsson + + * src/Makefile.am: Fix. + +2004-10-02 Simon Josefsson + + * NEWS, doc/Makefile.am, doc/libidn.texi, lib/Makefile.am, + lib/idna.h, lib/pr29.h, lib/punycode.h, lib/strerror-idna.c, + lib/strerror-pr29.c, lib/strerror-punycode.c, + lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.h.in, + lib/tld.c, lib/tld.h, src/idn.c: Add idna_strerror, pr29_strerror, + punycode_strerror, stringprep_strerror, and tld_strerror, suggested + by Daniel Stenberg . Make idn.c use them. Rename + TLD_NOTLD to TLD_NO_TLD. + +2004-09-29 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update. + +2004-09-28 Simon Josefsson + + * gl/Makefile.am, gl/m4/gnulib.m4: Update. + +2004-09-28 Simon Josefsson + + * gl/Makefile.am, gl/dummy.c, gl/getopt.c, gl/getopt1.c, + gl/getopt_.h, gl/getopt_int.h, gl/gettext.h, gl/m4/codeset.m4, + gl/m4/gettext.m4, gl/m4/glibc21.m4, gl/m4/gnulib.m4, + gl/m4/iconv.m4, gl/m4/intdiv0.m4, gl/m4/intmax.m4, + gl/m4/inttypes-pri.m4, gl/m4/inttypes.m4, gl/m4/inttypes_h.m4, + gl/m4/isc-posix.m4, gl/m4/lcmessage.m4, gl/m4/lib-ld.m4, + gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/longdouble.m4, + gl/m4/longlong.m4, gl/m4/nls.m4, gl/m4/po.m4, + gl/m4/printf-posix.m4, gl/m4/progtest.m4, gl/m4/signed.m4, + gl/m4/size_max.m4, gl/m4/stdint_h.m4, gl/m4/strdup.m4, + gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4, gl/m4/wchar_t.m4, + gl/m4/wint_t.m4, gl/m4/xsize.m4, gl/strdup.c, gl/strdup.h, + src/gettext.h: Use new GNULib. + +2004-09-28 Simon Josefsson + + * configure.ac: Specify gl_LGPL for new gnulib-tool. + +2004-09-26 Simon Josefsson + + * configure.ac: Bump versions. + +2004-09-26 Simon Josefsson + + * Makefile.am, NEWS, configure.ac, gl/.cvsignore, gl/Makefile.am, + gl/dummy.c, gl/getopt.c, gl/getopt1.c, gl/getopt_.h, + gl/getopt_int.h, gl/m4/getopt.m4, gl/m4/gnulib.m4, + gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4, gl/strdup.c, gl/strdup.h, + lib/Makefile.am, lib/toutf8.c, src/Makefile.am, src/getopt.c, + src/getopt1.c, src/getopt_.h, src/getopt_int.h, tests/Makefile.am: + Use Lesser GNULib. + +2004-09-21 Simon Josefsson + + * doc/specifications/draft-bakleh-reg-adm-acg-apu-00.txt: Add. + +2004-09-13 Simon Josefsson + + * libidn.fms: Add. + +2004-09-13 Simon Josefsson + + * ChangeLog: [no log message] + +2004-09-13 Simon Josefsson + + * doc/reference/Makefile.am: Clean more. + +2004-09-13 Simon Josefsson + + * NEWS: Version 0.5.5. + +2004-09-13 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-09-13 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-09-13 Simon Josefsson + + * Makefile.am: (POURL): Fix. + +2004-09-13 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Sync with TP. + +2004-09-13 Simon Josefsson + + * NEWS: Add. + +2004-09-05 Simon Josefsson + + * NEWS: Add. + +2004-09-05 Simon Josefsson + + * lib/nfkc.c: (g_utf8_skip): Hide variable, using "static". + +2004-09-02 Simon Josefsson + + * doc/libidn.texi: Move. Fix ack. + +2004-08-25 Simon Josefsson + + * doc/specifications/draft-farah-adntf-adns-guidelines-00.txt: Add. + +2004-08-23 Simon Josefsson + + * m4/autobuild.m4: Update. + +2004-08-18 Simon Josefsson + + * README: Fix. + +2004-08-18 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-08-17 Simon Josefsson + + * README: Add. + +2004-08-17 Simon Josefsson + + * NEWS, configure.ac: Bump version. + +2004-08-10 Simon Josefsson + + * src/idn.c: Shut up 'uno' by fixing array boundary. + +2004-08-08 Simon Josefsson + + * libidn.fms: Fix. + +2004-08-08 Simon Josefsson + + * libidn.fms: Add. + +2004-08-07 Simon Josefsson + + * ChangeLog: [no log message] + +2004-08-07 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-08-07 Simon Josefsson + + * NEWS: Version 0.5.4. + +2004-08-06 Simon Josefsson + + * po/LINGUAS: Sync with TP. + +2004-08-06 Simon Josefsson + + * Makefile.am: Fix. + +2004-08-06 Simon Josefsson + + * Makefile.am: Fix. + +2004-08-06 Simon Josefsson + + * Makefile.am: Fix. + +2004-08-06 Simon Josefsson + + * Makefile.am: (update-po): Add. + +2004-08-06 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po: Sync with TP. + +2004-08-05 Simon Josefsson + + * configure.ac: Bump version. + +2004-08-05 Simon Josefsson + + * NEWS: Add. + +2004-08-05 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po: Update. + +2004-08-05 Simon Josefsson + + * ChangeLog: [no log message] + +2004-08-05 Simon Josefsson + + * NEWS: Version 0.5.3. + +2004-08-05 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-08-05 Simon Josefsson + + * NEWS: Add. + +2004-08-05 Simon Josefsson + + * THANKS: Add. + +2004-08-05 Simon Josefsson + + * src/idn.c: Fix crash, tiny patch by Andreas Schwab reported by + Stephan Kulow . + +2004-08-01 Simon Josefsson + + * lib/pr29.c: Use PR29_* error mnemonics, instead of hard coded + integers. + +2004-08-01 Simon Josefsson + + * lib/pr29.c: Cosmetic fix. + +2004-07-29 Simon Josefsson + + * doc/specifications/COPYING.UCD: Add. + +2004-07-29 Simon Josefsson + + * doc/specifications/COPYING.UCD: Update. + +2004-07-14 Simon Josefsson + + * doc/gendocs.sh, doc/gendocs_template: Update. + +2004-07-14 Simon Josefsson + + * NEWS: Bump version. + +2004-07-14 Simon Josefsson + + * configure.ac: Bump versions. + +2004-07-14 Simon Josefsson + + * NEWS: Add. + +2004-07-14 Simon Josefsson + + * ChangeLog: [no log message] + +2004-07-14 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-07-14 Simon Josefsson + + * NEWS: Version 0.5.2. + +2004-07-14 Simon Josefsson + + * NEWS: Add. + +2004-07-14 Simon Josefsson + + * NEWS: Fix. + +2004-07-14 Simon Josefsson + + * configure.ac: Bump version. + +2004-07-14 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-07-14 Simon Josefsson + + * THANKS: Add. + +2004-07-14 Simon Josefsson + + * java/Makefile.am: (install-jar): Make DESTDIR compatible, patch from Oliver Hitz + based on report by Benjamin Reed + . + +2004-07-13 Simon Josefsson + + * libc/example.c: Doc fix. + +2004-07-13 Simon Josefsson + + * libc/example.c: Use setlocale, reported by Robert Scheck + . + +2004-07-13 Simon Josefsson + + * doc/specifications/draft-hoffman-pkix-stringmatch-00.txt: Add. + +2004-07-09 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-07-09 Simon Josefsson + + * doc/libidn.texi: Mention pr29.h. + +2004-07-09 Simon Josefsson + + * ChangeLog: [no log message] + +2004-07-09 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-07-09 Simon Josefsson + + * NEWS: Version 0.5.1. + +2004-07-09 Simon Josefsson + + * configure.ac: Use autobuild. + +2004-07-09 Simon Josefsson + + * NEWS, THANKS, m4/autobuild.m4: Add. + +2004-07-09 Simon Josefsson + + * examples/example.c, examples/example2.c, examples/example3.c, + examples/example4.c: Call setlocale to make iconv work, reported by + Robert Scheck . + +2004-07-02 Simon Josefsson + + * configure.ac, src/getopt.c, src/getopt1.c: Update getopt. + +2004-07-02 Simon Josefsson + + * NEWS: Add. + +2004-07-02 Simon Josefsson + + * .cvsignore, tests/.cvsignore: [no log message] + +2004-07-02 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-07-02 Simon Josefsson + + * examples/.cvsignore, src/.cvsignore: [no log message] + +2004-07-02 Simon Josefsson + + * src/.cvsignore: [no log message] + +2004-07-02 Simon Josefsson + + * src/getopt_int.h: Add. + +2004-07-02 Simon Josefsson + + * configure.ac, src/Makefile.am, src/getopt.c, src/getopt.h, + src/getopt1.c, src/getopt_.h: Update getopt module. Now work on, + e.g., uClibc systems which uses GNU Libc header files, but do not + implement getopt_long. + +2004-06-29 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-06-29 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-06-26 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-06-26 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-06-26 Simon Josefsson + + * ChangeLog: [no log message] + +2004-06-26 Simon Josefsson + + * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po, + po/ro.po, po/sr.po, po/sv.po: Generated. + +2004-06-26 Simon Josefsson + + * NEWS: Version 0.5.0. + +2004-06-26 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-06-26 Simon Josefsson + + * lib/pr29.c: Fix. + +2004-06-26 Simon Josefsson + + * doc/reference/Makefile.am: Fix. + +2004-06-26 Simon Josefsson + + * doc/reference/Makefile.am: (HTML_OBJECTS): Add libidn-pr29.html. + +2004-06-26 Simon Josefsson + + * doc/reference/libidn-docs.tmpl: Add PR29. + +2004-06-26 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-06-26 Simon Josefsson + + * lib/pr29.c: Add doc. + +2004-06-26 Simon Josefsson + + * doc/Makefile.am: Don't use wildcards for GDOC_SRC. + +2004-06-26 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-06-26 Simon Josefsson + + * lib/pr29.c: Use 'static'. + +2004-06-26 Simon Josefsson + + * lib/pr29.h: Typo. + +2004-06-26 Simon Josefsson + + * tests/.cvsignore: [no log message] + +2004-06-26 Simon Josefsson + + * NEWS, doc/libidn.texi, lib/Makefile.am, lib/pr29.c, lib/pr29.h, + tests/Makefile.am, tests/tst_pr29.c: Add PR29 functions. + +2004-06-25 Simon Josefsson + + * doc/specifications/HangulSyllableType-4.0.1.txt: Add. + +2004-06-25 Simon Josefsson + + * doc/specifications/DerivedCombiningClass-3.2.0.txt: Add. + +2004-06-12 Simon Josefsson + + * NEWS: Add. + +2004-06-12 Simon Josefsson + + * po/LINGUAS, po/eo.po: Add Esperanto translation, from Edmund + GRIMLEY EVANS , via the translation project. + +2004-06-11 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-06-11 Simon Josefsson + + * Makefile.am: Fix release target. + +2004-06-11 Simon Josefsson + + * ChangeLog: [no log message] + +2004-06-11 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-06-11 Simon Josefsson + + * NEWS: Version 0.4.9. + +2004-06-11 Simon Josefsson + + * java/Makefile.am: Work around automake limitation (cannot have + instal-data-local target in a conditional). + +2004-06-09 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-dn-14.txt, + doc/specifications/draft-ietf-ldapbis-strprep-04.txt: Add. + +2004-06-08 Simon Josefsson + + * lib/stringprep.c: Cosmetic fix, sync with libc. + +2004-06-07 Simon Josefsson + + * NEWS: Fix. + +2004-06-07 Simon Josefsson + + * java/Makefile.am: Create libidn.jar link. + +2004-06-06 Simon Josefsson + + * doc/specifications/draft-bakke-iscsi-stringprep-00.txt, + doc/specifications/draft-hoffman-stringprep-00.txt, + doc/specifications/draft-hoffman-stringprep-01.txt, + doc/specifications/draft-hoffman-stringprep-02.txt, + doc/specifications/draft-hoffman-stringprep-03.txt, + doc/specifications/draft-hoffman-stringprep-04.txt, + doc/specifications/draft-hoffman-stringprep-05.txt, + doc/specifications/draft-hoffman-stringprep-06.txt, + doc/specifications/draft-hoffman-stringprep-07.txt, + doc/specifications/draft-ietf-idn-nameprep-00.txt, + doc/specifications/draft-ietf-idn-nameprep-01.txt, + doc/specifications/draft-ietf-idn-nameprep-02.txt, + doc/specifications/draft-ietf-idn-nameprep-03.txt, + doc/specifications/draft-ietf-idn-nameprep-04.txt, + doc/specifications/draft-ietf-idn-nameprep-05.txt, + doc/specifications/draft-ietf-idn-nameprep-06.txt, + doc/specifications/draft-ietf-idn-nameprep-07.txt, + doc/specifications/draft-ietf-idn-nameprep-08.txt, + doc/specifications/draft-ietf-idn-nameprep-09.txt, + doc/specifications/draft-ietf-idn-nameprep-10.txt, + doc/specifications/draft-ietf-idn-nameprep-11.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-00.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-01.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-02.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-03.txt, + doc/specifications/draft-ietf-ldapbis-strprep-03.txt, + doc/specifications/draft-ietf-xmpp-core-18.txt, + doc/specifications/draft-ietf-xmpp-core-19.txt, + doc/specifications/draft-ietf-xmpp-core-20.txt, + doc/specifications/draft-ietf-xmpp-core-21.txt, + doc/specifications/draft-ietf-xmpp-core-22.txt, + doc/specifications/draft-ietf-xmpp-core-23.txt, + doc/specifications/draft-ietf-xmpp-core-24.txt, + doc/specifications/draft-zeilenga-ldapbis-strmatch-00.txt, + doc/specifications/draft-zeilenga-ldapbis-strmatch-01.txt: Add. + +2004-06-03 Simon Josefsson + + * java/.cvsignore: [no log message] + +2004-06-03 Simon Josefsson + + * java/misc/Makefile.am: Use versioned *.jar. + +2004-06-02 Simon Josefsson + + * java/Makefile.am: Versionize *.jar filename. + +2004-06-01 Simon Josefsson + + * NEWS: Add. + +2004-06-01 Simon Josefsson + + * doc/java/Makefile.am: Dist HTMLs. + +2004-06-01 Simon Josefsson + + * doc/gendocs_template: Add JavaDoc links. + +2004-06-01 Simon Josefsson + + * Makefile.am: Copy javadoc files. + +2004-06-01 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-06-01 Simon Josefsson + + * doc/java/.cvsignore: [no log message] + +2004-06-01 Simon Josefsson + + * doc/java/.cvsignore: [no log message] + +2004-06-01 Simon Josefsson + + * doc/java/Makefile.am: Fix. + +2004-06-01 Simon Josefsson + + * java/Makefile.am: Add javadoc. + +2004-06-01 Simon Josefsson + + * java/Makefile.am: Distribute libidn.jar, suggested by Oliver Hitz. + +2004-06-01 Simon Josefsson + + * m4/ac_prog_javadoc.m4: Add. + +2004-06-01 Simon Josefsson + + * doc/Makefile.am, doc/java/Makefile.am: Add java/. + +2004-06-01 Simon Josefsson + + * configure.ac: Build doc/java/Makefile. + +2004-06-01 Simon Josefsson + + * configure.ac: Find javadoc. + +2004-06-01 Simon Josefsson + + * ChangeLog: [no log message] + +2004-06-01 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-06-01 Simon Josefsson + + * NEWS: Version 0.4.8. + +2004-06-01 Simon Josefsson + + * NEWS: Add. + +2004-06-01 Simon Josefsson + + * java/misc/Makefile.am: Don't use GNU make specific 'override', + from Oliver Hitz. + +2004-06-01 Simon Josefsson + + * java/gnu/inet/encoding/Makefile.am, java/misc/Makefile.am: Dist + *.java, suggested by Oliver Hitz. + +2004-05-31 Simon Josefsson + + * README: Fix. + +2004-05-31 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-05-31 Simon Josefsson + + * ChangeLog: [no log message] + +2004-05-31 Simon Josefsson + + * NEWS: Version 0.4.7. + +2004-05-31 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-05-31 Simon Josefsson + + * NEWS: Fix. + +2004-05-31 Simon Josefsson + + * doc/libidn.texi: Markup fix. + +2004-05-31 Simon Josefsson + + * doc/libidn.texi: (Java API): Fix. + +2004-05-31 Simon Josefsson + + * doc/libidn.texi: Markup fixes. + +2004-05-31 Simon Josefsson + + * java/Makefile.am, java/README.UNICODE, java/README.html: Remove + (moved to doc/libidn.texi). + +2004-05-31 Simon Josefsson + + * doc/libidn.texi: (Introduction): Mention Java port. (Downloading and Installing): + Mention --enable-java. (Java API): Add, taken from java/README.html + and java/README.UNICODE by Oliver Hitz. + +2004-05-31 Simon Josefsson + + * java/Makefile.am: Revert, I don't want to require gcj for CVS + builds. + +2004-05-31 Simon Josefsson + + * java/Makefile.am: Dist libidn.jar (this seem to be the norm among + Java libraries?). + +2004-05-31 Simon Josefsson + + * NEWS: Add. + +2004-05-31 Simon Josefsson + + * java/gnu/inet/encoding/.cvsignore, java/misc/.cvsignore: [no log + message] + +2004-05-31 Simon Josefsson + + * java/Makefile.am: Build more. + +2004-05-31 Simon Josefsson + + * configure.ac, java/Makefile.am, java/README.UNICODE, + java/README.html, java/gnu/inet/encoding/CombiningClass.java, + java/gnu/inet/encoding/Composition.java, + java/gnu/inet/encoding/DecompositionKeys.java, + java/gnu/inet/encoding/DecompositionMappings.java, + java/gnu/inet/encoding/IDNA.java, + java/gnu/inet/encoding/IDNAException.java, + java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/NFKC.java, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java, + java/gnu/inet/encoding/RFC3454.java, + java/gnu/inet/encoding/Stringprep.java, + java/gnu/inet/encoding/StringprepException.java, + java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java, + java/misc/Makefile.am, java/misc/TestIDNA.java, + java/misc/TestNFKC.java: Improve JAVA port, from Oliver Hitz + . + +2004-05-26 Simon Josefsson + + * contrib/web/idn.php: Fixes. + +2004-05-25 Simon Josefsson + + * README-alpha: Fix. + +2004-05-24 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-05-24 Simon Josefsson + + * ChangeLog: [no log message] + +2004-05-24 Simon Josefsson + + * NEWS: Version 0.4.6. + +2004-05-24 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-05-24 Simon Josefsson + + * NEWS: Add. + +2004-05-24 Simon Josefsson + + * lib/Makefile.am: (include_HEADERS): Install idn-free.h, reported by Daniel Stenberg + . + +2004-05-21 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-05-21 Simon Josefsson + + * doc/specifications/pr-29.html: Update. + +2004-05-21 Simon Josefsson + + * ChangeLog: [no log message] + +2004-05-21 Simon Josefsson + + * NEWS: Version 0.4.5. + +2004-05-21 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-05-21 Simon Josefsson + + * doc/Makefile.am: Bump copyright years on man pages. + +2004-05-21 Simon Josefsson + + * configure.ac: Bump so version. + +2004-05-21 Simon Josefsson + + * doc/reference/Makefile.am: (HIGNORE): Add idn-free.h. + +2004-05-21 Simon Josefsson + + * lib/stringprep.c: (stringprep): Move declaration of temporary variable to start of + scope. + +2004-05-21 Simon Josefsson + + * NEWS: Add. + +2004-05-21 Simon Josefsson + + * lib/idna.c: (idna_to_unicode_4z4z): There was no double free, remove my + modification. + +2004-05-21 Simon Josefsson + + * NEWS: Add. + +2004-05-21 Simon Josefsson + + * lib/idna.c: (idna_to_ascii_4i, idna_to_unicode_4z4z): Fix memory leak when + memory allocation fails. From Ulrich Drepper , + but modified to fix double free and incorrect 'if' condition. + +2004-05-21 Simon Josefsson + + * NEWS: Add. + +2004-05-21 Simon Josefsson + + * lib/stringprep.c: (stringprep): Fix memory leak when memory allocation fails. From + Ulrich Drepper . + +2004-05-21 Simon Josefsson + + * lib/idna.c: Doc fix. + +2004-05-21 Simon Josefsson + + * lib/idna.c: Back port of (some) changes by Ulrich Drepper + . (idna_to_unicode_internal): Fix memory leaks when memory allocation + fails. Deallocate utf8in on failure. (idna_to_unicode_44i): Don't free, done in idna_to_unicode_internal. (idna_to_ascii_4z): Fix memory leak when memory allocation fails. + +2004-05-21 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-05-21 Simon Josefsson + + * lib/Makefile.am, lib/idn-free.c, lib/idn-free.h: Add idn_free, + suggested by "Gisle Vanem" . + +2004-04-30 Simon Josefsson + + * NEWS: Fix. + +2004-04-30 Simon Josefsson + + * lib/idna.c: (idna_to_ascii_lz): Doc fix, reported by Joe Orton + . + +2004-04-30 Simon Josefsson + + * tests/tst_nfkc.c: Add NFKC test vectors from pr-29.html. Fix + debug output. + +2004-04-30 Simon Josefsson + + * doc/specifications/pr-29.html: Add. + +2004-04-30 Simon Josefsson + + * tests/utils.c: Fix ucs4print debugging output. + +2004-04-29 Simon Josefsson + + * NEWS, doc/specifications/draft-ietf-sasl-saslprep-09.txt: Add. + +2004-04-29 Simon Josefsson + + * tests/tst_stringprep.c: Update SASLPrep test vectors. + +2004-04-29 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-04-29 Simon Josefsson + + * ChangeLog: [no log message] + +2004-04-29 Simon Josefsson + + * NEWS: Version 0.4.4. + +2004-04-29 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po, + po/sr.po, po/sv.po: Generated. + +2004-04-29 Simon Josefsson + + * NEWS: Add. + +2004-04-29 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-04-29 Simon Josefsson + + * tests/Makefile.am: Use -no-install to avoid libtool wrapper + script, tiny patch from Joe Orton . + +2004-04-29 Simon Josefsson + + * NEWS: Add. + +2004-04-29 Simon Josefsson + + * doc/specifications/stringprep-profiles: Update. + +2004-04-29 Simon Josefsson + + * NEWS, doc/specifications/rfc3722.txt: Add. + +2004-04-29 Simon Josefsson + + * tests/tst_stringprep.c: Add iSCSI test vectors to catch recent + bugs. + +2004-04-29 Simon Josefsson + + * lib/profiles.c: (stringprep_iscsi_prohibit): For start==0, use end!=1. + +2004-04-29 Simon Josefsson + + * lib/profiles.c: (stringprep_iscsi): Add C_1_1, C_2_1, and C_7 (after reading newly + published RFC 3722). + +2004-04-24 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-04-24 Simon Josefsson + + * po/LINGUAS, po/ro.po: Add, by Laurentiu Buzdugan + via translation project. + +2004-04-22 Simon Josefsson + + * lib/toutf8.c: Rename variable to avoid silly shadowing warnings. + +2004-04-22 Simon Josefsson + + * tests/.cvsignore: [no log message] + +2004-04-22 Simon Josefsson + + * tests/Makefile.am: Move utils.c and utils.h into a separate + library. + +2004-04-22 Simon Josefsson + + * tests/.cvsignore: [no log message] + +2004-04-22 Simon Josefsson + + * tests/Makefile.am, tests/tst_idna.c, tests/tst_idna2.c, + tests/tst_nfkc.c, tests/tst_punycode.c, tests/tst_stringprep.c, + tests/tst_tld.c, tests/utils.c, tests/utils.h: Split out common + stuff into utils.c and utils.h. + +2004-04-22 Simon Josefsson + + * tests/tst_nfkc.c: Fix warnings. + +2004-04-22 Simon Josefsson + + * configure.ac: Require modern autoconf. + +2004-04-22 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-04-22 Simon Josefsson + + * lib/toutf8.c: Indent. + +2004-04-22 Simon Josefsson + + * ChangeLog: [no log message] + +2004-04-22 Simon Josefsson + + * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/sr.po, + po/sv.po: Generated. + +2004-04-22 Simon Josefsson + + * NEWS: Version 0.4.3. + +2004-04-22 Simon Josefsson + + * NEWS: Add. + +2004-04-22 Simon Josefsson + + * NEWS: Add. + +2004-04-22 Simon Josefsson + + * lib/tld.h: (Tld_table): Mark "name" and "version" as const. + +2004-04-22 Simon Josefsson + + * NEWS: Add. + +2004-04-22 Simon Josefsson + + * tests/tst_stringprep.c: Add SASLprep test vectors (would catch the + C.2.1 bug). + +2004-04-22 Simon Josefsson + + * lib/stringprep.c: (stringprep_find_character_in_table): Fix end-of-table test, to + handle valid uses of start=0 (as in table C.2.1). + +2004-04-21 Simon Josefsson + + * AUTHORS: Update PGP key. + +2004-04-18 Simon Josefsson + + * THANKS: Add. + +2004-04-18 Simon Josefsson + + * libidn.pc.in: Drop -R lib flag, suggested by Martin Waitz + . + +2004-04-15 Simon Josefsson + + * doc/specifications/draft-costello-rfc3492bis-02.txt: Add. + +2004-04-15 Simon Josefsson + + * doc/specifications/rfc3743.txt: Add. + +2004-04-14 Simon Josefsson + + * doc/specifications/draft-hoffman-rfc3454bis-02.txt, + doc/specifications/draft-hoffman-rfc3490bis-02.txt, + doc/specifications/draft-hoffman-rfc3491bis-01.txt: Add. + +2004-04-12 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-saslprep-08.txt: Add. + +2004-04-11 Simon Josefsson + + * README-alpha: Fix versions. + +2004-04-09 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-04-09 Simon Josefsson + + * po/LINGUAS, po/nl.po: Add, from Elros Cyriatan + via Translation Project. + +2004-04-05 Simon Josefsson + + * contrib/idn-python/idn.c: Use new API, tiny patch from "Gisle + Vanem" . + +2004-03-28 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-03-28 Simon Josefsson + + * po/LINGUAS, po/de.po: Add German translation, from Roland Illig + via translation project. + +2004-03-23 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-saslprep-07.txt: Add. + +2004-03-20 Simon Josefsson + + * THANKS: Add. + +2004-03-20 Simon Josefsson + + * doc/Makefile.gdoci: Use TAB instead of \t, suggested by Jørgen + Thomsen . + +2004-03-20 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-03-20 Simon Josefsson + + * ChangeLog: [no log message] + +2004-03-20 Simon Josefsson + + * po/da.po, po/fr.po, po/pl.po, po/sr.po, po/sv.po: Generated. + +2004-03-20 Simon Josefsson + + * NEWS: Version 0.4.2. + +2004-03-20 Simon Josefsson + + * configure.ac: Inform about Java. + +2004-03-20 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Update. + +2004-03-20 Simon Josefsson + + * Makefile.am, libc/Banner, libc/Makefile, libc/README, + libc/Versions, libc/configure, libc/getaddrinfo.c, libc/idn-stub.c, + libc/libc.patch, libc/libidn.texi, libc/netdb.h: Remove most of libc + stuff (has been integrated in libc CVS). + +2004-03-20 Simon Josefsson + + * README, java/Makefile.am: Fix. + +2004-03-20 Simon Josefsson + + * COPYING: Add. + +2004-03-20 Simon Josefsson + + * NEWS, doc/libidn.texi: Fix. + +2004-03-20 Simon Josefsson + + * AUTHORS, THANKS: Add. + +2004-03-20 Simon Josefsson + + * THANKS: Add. + +2004-03-19 Simon Josefsson + + * NEWS: Add. + +2004-03-19 Simon Josefsson + + * java/Makefile.am, java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/Punycode.java, + java/gnu/inet/encoding/PunycodeException.java: Fix. + +2004-03-19 Simon Josefsson + + * m4/ac_prog_jar.m4, m4/ac_prog_javac.m4, m4/ac_prog_javac_works.m4: + Add, from GNU Autoconf Macro Archive. + +2004-03-19 Simon Josefsson + + * java/gnu/inet/encoding/.cvsignore: [no log message] + +2004-03-19 Simon Josefsson + + * java/gnu/inet/encoding/PunycodeException.java: Add, from Oliver + Hitz . + +2004-03-19 Simon Josefsson + + * java/gnu/inet/encoding/Makefile.am: (noinst_JAVA): Only include Punycode*.java for now. + +2004-03-19 Simon Josefsson + + * Makefile.am, configure.ac, java/Makefile.am, + java/gnu/Makefile.am, java/gnu/inet/Makefile.am, + java/gnu/inet/encoding/Makefile.am, + java/gnu/inet/encoding/Punycode.java: Add infrastructure for Java + code, and add Punycode, from Oliver Hitz . + +2004-03-19 Simon Josefsson + + * java/.cvsignore, java/gnu/.cvsignore, java/gnu/inet/.cvsignore, + java/gnu/inet/encoding/.cvsignore, m4/.cvsignore: [no log message] + +2004-03-16 Simon Josefsson + + * NEWS: Add. + +2004-03-16 Simon Josefsson + + * THANKS: Add. + +2004-03-16 Simon Josefsson + + * po/LINGUAS, po/da.po: Add, from Morten Bo Johansen + via Translation Project. + +2004-03-14 Simon Josefsson + + * po/pl.po: Update. + +2004-03-14 Simon Josefsson + + * po/.cvsignore: [no log message] + +2004-03-14 Simon Josefsson + + * po/LINGUAS: Add. + +2004-03-14 Simon Josefsson + + * THANKS: Fix. + +2004-03-14 Simon Josefsson + + * THANKS, doc/libidn.texi: Ack Unicode, Inc. + +2004-03-14 Simon Josefsson + + * doc/specifications/Makefile.am: Dist COPYING.UCD. + +2004-03-14 Simon Josefsson + + * doc/specifications/COPYING.UCD: Add. + +2004-03-14 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-03-14 Simon Josefsson + + * po/LINGUAS, po/fr.po: Add, from Michel Robitaille + via Translation Project. + +2004-03-14 Simon Josefsson + + * NEWS: Add. + +2004-03-14 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-03-14 Simon Josefsson + + * po/LINGUAS, po/sr.po: Add, from Aleksandar Jelenak + via Translation Project. + +2004-03-13 Simon Josefsson + + * doc/tld/no.tld: Add URLs. + +2004-03-13 Simon Josefsson + + * NEWS: Add. + +2004-03-13 Simon Josefsson + + * doc/tld/Makefile.am: Add no.tld. + +2004-03-13 Simon Josefsson + + * doc/tld/no.tld: Add, from Thomas Jacob . + +2004-03-13 Simon Josefsson + + * po/sv.po: Fix. + +2004-03-13 Simon Josefsson + + * doc/libidn.texi, src/idn.ggo: Add. + +2004-03-10 Simon Josefsson + + * THANKS: Fix. + +2004-03-10 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-03-10 Simon Josefsson + + * po/LINGUAS, po/pl.po: Add Polish translation, from Jakub Bogusz + . + +2004-03-10 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-saslprep-06.txt: Add. + +2004-03-09 Simon Josefsson + + * Makefile.am: Build lib/ before po/. + +2004-03-08 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-03-08 Simon Josefsson + + * ChangeLog: [no log message] + +2004-03-08 Simon Josefsson + + * po/sv.po: Generated. + +2004-03-08 Simon Josefsson + + * NEWS: Version 0.4.1. + +2004-03-08 Simon Josefsson + + * tests/tst_tld.c: Fix warning. + +2004-03-08 Simon Josefsson + + * NEWS: Fix. + +2004-03-08 Simon Josefsson + + * po/sv.po: Generated. + +2004-03-08 Simon Josefsson + + * src/Makefile.am: (idn_LDADD): Add LTLIBINTL. + +2004-03-08 Simon Josefsson + + * NEWS: Add. + +2004-03-08 Simon Josefsson + + * po/sv.po: Generated. + +2004-03-08 Simon Josefsson + + * po/sv.po: Fix. + +2004-03-08 Simon Josefsson + + * src/idn.c: Cosmetic fix. + +2004-03-08 Simon Josefsson + + * po/sv.po: Add. + +2004-03-08 Simon Josefsson + + * src/idn.c: Translation markup. + +2004-03-08 Simon Josefsson + + * po/.cvsignore: [no log message] + +2004-03-08 Simon Josefsson + + * po/.cvsignore: [no log message] + +2004-03-08 Simon Josefsson + + * po/sv.po: Fix. + +2004-03-08 Simon Josefsson + + * src/idn.c: Gettextiscate. + +2004-03-08 Simon Josefsson + + * po/sv.po: Add. + +2004-03-08 Simon Josefsson + + * .cvsignore, m4/.cvsignore, po/.cvsignore: [no log message] + +2004-03-08 Simon Josefsson + + * src/Makefile.am, src/gettext.h: Add gettext.h. Define LOCALEDIR + (for gettext). + +2004-03-08 Simon Josefsson + + * po/Makevars: Add. + +2004-03-08 Simon Josefsson + + * .cvsignore, m4/.cvsignore, po/.cvsignore: [no log message] + +2004-03-08 Simon Josefsson + + * config.rpath, m4/lib-ld.m4, m4/lib-prefix.m4: Remove, added by + gettextize. + +2004-03-08 Simon Josefsson + + * Makefile.am, configure.ac, po/LINGUAS, po/POTFILES.in: + Gettextiscate. + +2004-03-08 Simon Josefsson + + * NEWS: Add. + +2004-03-08 Simon Josefsson + + * NEWS: Fix. + +2004-03-08 Simon Josefsson + + * doc/libidn.texi: Fix IDNA_DLOPEN_ERROR. + +2004-03-08 Simon Josefsson + + * lib/toutf8.c: (stringprep_convert): Don't copy input. Check for malloc failures. + From Ulrich Drepper , via libidn integration in + libc. + +2004-03-08 Simon Josefsson + + * src/idn.c: Invoke setlocale (LC_ALL, ""). + +2004-03-08 Simon Josefsson + + * NEWS: Add. + +2004-03-08 Simon Josefsson + + * lib/toutf8.c: (stringprep_locale_charset_slow): Remove. (stringprep_locale_charset) [_LIBC]: Define to nl_langinfo(CODESET). (stringprep_locale_charset) [!_LIBC]: Don't cache charset. Remove + broken setlocale hack. All based on discussion with Ulrich Drepper + , during libidn integration in libc. + +2004-03-08 Simon Josefsson + + * lib/idna.c: (Idna_rc): Doc fix IDNA_DLOPEN_ERROR. + +2004-03-08 Simon Josefsson + + * NEWS: Fix. + +2004-03-08 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-03-08 Simon Josefsson + + * lib/nfkc.c: Fix warning, tiny patch by Ulrich Drepper + from libidn integration in libc. + +2004-03-08 Simon Josefsson + + * lib/idna.h: (Idna_rc): Add IDNA_DLOPEN_ERROR error code, for libidn part of + libc. + +2004-03-08 Simon Josefsson + + * lib/stringprep.h.in: (Stringprep_profiles): Mark 'name' as 'const'. Tiny patch to libidn + in libc by Ulrich Drepper . + +2004-03-07 Simon Josefsson + + * NEWS: Add. + +2004-03-07 Simon Josefsson + + * Makefile.am: Dist libc/idn-stub.c and libc/libidn.texi. + +2004-03-07 Simon Josefsson + + * libc/libc.patch: Update, from libc-alpha post. + +2004-03-07 Simon Josefsson + + * libc/idn-stub.c, libc/libidn.texi: Add, from libc-alpha post. + +2004-03-07 Simon Josefsson + + * libc/Makefile: Sync libc-alpha post. + +2004-03-07 Simon Josefsson + + * libc/README, libc/example.c: Update. + +2004-03-07 Simon Josefsson + + * libc/getaddrinfo.c, libc/netdb.h: Sync. + +2004-03-07 Simon Josefsson + + * lib/stringprep.c: Fix comment. + +2004-03-07 Simon Josefsson + + * NEWS: Add. + +2004-03-07 Simon Josefsson + + * README-alpha: Fix version requirements. + +2004-03-07 Simon Josefsson + + * README-alpha: Fix texinfo requirement. + +2004-03-05 Simon Josefsson + + * NEWS: Add. + +2004-03-05 Simon Josefsson + + * lib/profiles.c: (stringprep_saslprep): Fix typo; make sure non-ASCII space + characters are prohibited. + +2004-03-01 Simon Josefsson + + * doc/libidn.texi, doc/tld/README: Mention tldchk.berlios.de, + suggested by Thomas Jacob . + +2004-02-28 Simon Josefsson + + * lib/Makefile.am: Don't install tld.h if --disable-tld. + +2004-02-28 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-02-28 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-anon-01.txt, + doc/specifications/draft-ietf-sasl-anon-02.txt, + doc/specifications/draft-ietf-sasl-anon-03.txt, + doc/specifications/draft-ietf-sasl-saslprep-05.txt: Add. + +2004-02-28 Simon Josefsson + + * ChangeLog: [no log message] + +2004-02-28 Simon Josefsson + + * NEWS: Version 0.4.0. + +2004-02-28 Simon Josefsson + + * lib/toutf8.c: Always include errno.h (C89). + +2004-02-28 Simon Josefsson + + * lib/tld.c, src/idn.c: Indent. + +2004-02-28 Simon Josefsson + + * README: Mention TLD. + +2004-02-28 Simon Josefsson + + * lib/gen-tld-tables.pl: Handle draft-hoffman-idn-reg-*.txt tables + better. + +2004-02-28 Simon Josefsson + + * doc/tld/fr.tld: Add headers. Fix typos and comments. + +2004-02-28 Simon Josefsson + + * doc/tld/fr.tld: Add copying conditions. + +2004-02-28 Simon Josefsson + + * doc/tld/fr.tld: Add, from Stephane Bortzmeyer . + +2004-02-28 Simon Josefsson + + * doc/libidn.texi: Don't document Tld_table* for now. + +2004-02-28 Simon Josefsson + + * lib/tld.c: (_tld_checkchar): Use new Tld_table API. + +2004-02-28 Simon Josefsson + + * lib/tld.h: (Tld_table): Change valid definition. + +2004-02-28 Simon Josefsson + + * lib/gen-tld-tables.pl: Use new API. + +2004-02-28 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-28 Simon Josefsson + + * doc/libidn.texi: Improve Troubleshooting. + +2004-02-27 Simon Josefsson + + * lib/tld.c: Cosmetic fix. + +2004-02-27 Simon Josefsson + + * lib/tld.c: (tld_check_4): Don't write to NULL errpos, from Thomas Jacob + . + +2004-02-18 Simon Josefsson + + * lib/gen-tld-tables.pl: Typo. + +2004-02-18 Simon Josefsson + + * lib/gen-tld-tables.pl: Use hex in output. + +2004-02-18 Simon Josefsson + + * lib/gen-tld-tables.pl: Add comment. + +2004-02-18 Simon Josefsson + + * lib/gen-tld-tables.pl: Parse tables conforming to + draft-hoffman-idn-reg. + +2004-02-18 Simon Josefsson + + * doc/specifications/draft-hoffman-idn-reg-00.txt, + doc/specifications/draft-hoffman-idn-reg-01.txt, + doc/specifications/draft-hoffman-idn-reg-02.txt: Add. + +2004-02-18 Simon Josefsson + + * doc/libidn.texi: Fix typos. + +2004-02-18 Simon Josefsson + + * doc/libidn.texi: Fix autoconf stuff, suggested by Stephane + Bortzmeyer . + +2004-02-15 Simon Josefsson + + * NEWS: Fix. + +2004-02-13 Simon Josefsson + + * lib/tld.c: Doc fix. + +2004-02-13 Simon Josefsson + + * NEWS: Fix. + +2004-02-12 Simon Josefsson + + * lib/tld.c: Fix. Indent. + +2004-02-12 Simon Josefsson + + * lib/tld.c: (tld_get_z): Allocate correct amount, from Thomas Jacob + . + +2004-02-10 Simon Josefsson + + * examples/README: Fix title. + +2004-02-10 Simon Josefsson + + * examples/README: Add. + +2004-02-10 Simon Josefsson + + * NEWS: Add. + +2004-02-10 Simon Josefsson + + * examples/example5.c: Fix warning. + +2004-02-10 Simon Josefsson + + * src/idn.c: Fix TLD debug. + +2004-02-10 Simon Josefsson + + * src/idn.c: TLD check correct string. + +2004-02-10 Simon Josefsson + + * lib/tld.c: Fix warning. + +2004-02-10 Simon Josefsson + + * examples/Makefile.am: TLD fix. + +2004-02-10 Simon Josefsson + + * lib/gen-tld-tables.pl: Fix include, from Thomas Jacob + . + +2004-02-08 Simon Josefsson + + * lib/stringprep.c: Mention example5. + +2004-02-08 Simon Josefsson + + * lib/stringprep.c: Sync libidn text. + +2004-02-08 Simon Josefsson + + * doc/reference/libidn-docs.tmpl: Sync text. + +2004-02-08 Simon Josefsson + + * doc/libidn.texi: Fix introduction. + +2004-02-08 Simon Josefsson + + * lib/tld.c, tests/tst_tld.c: Typo. + +2004-02-08 Simon Josefsson + + * doc/libidn.texi: TLD fixes. + +2004-02-08 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-08 Simon Josefsson + + * doc/libidn.texi: Add example 5. + +2004-02-08 Simon Josefsson + + * lib/tld.c: (_tld_checkchar): Binary search, from jacob@internet24.de. + +2004-02-08 Simon Josefsson + + * NEWS: Remove. + +2004-02-08 Simon Josefsson + + * lib/tld.c, lib/tld.h: Indent. + +2004-02-08 Simon Josefsson + + * lib/tld.c: Whitespace. + +2004-02-08 Simon Josefsson + + * lib/tld.h: Doc fix. + +2004-02-08 Simon Josefsson + + * lib/gen-tld-tables.pl, lib/tld.c, lib/tld.h: Hide tld_tables. + +2004-02-08 Simon Josefsson + + * NEWS, doc/libidn.texi, lib/tld.c, lib/tld.h: (tld_get_z): Support any charset (renamed from tld_get_8z). + +2004-02-08 Simon Josefsson + + * NEWS, lib/tld.c, lib/tld.h: Typo. + +2004-02-08 Simon Josefsson + + * lib/tld.h: Typo. + +2004-02-08 Simon Josefsson + + * NEWS, doc/libidn.texi: Add. + +2004-02-08 Simon Josefsson + + * lib/tld.c, lib/tld.h: (tld_get_8z): Add. + +2004-02-08 Simon Josefsson + + * examples/.cvsignore: [no log message] + +2004-02-08 Simon Josefsson + + * examples/Makefile.am, examples/example5.c: Add. + +2004-02-08 Simon Josefsson + + * lib/idna.c: Doc fix. + +2004-02-08 Simon Josefsson + + * lib/gen-tld-tables.pl: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * lib/profiles.c, lib/tld.h, src/idn.c, tests/tst_tld.c: Indent. + +2004-02-06 Simon Josefsson + + * src/Makefile.am: Fix indent. + +2004-02-06 Simon Josefsson + + * doc/tld/README: Add. + +2004-02-06 Simon Josefsson + + * doc/tld/README: Fix. + +2004-02-06 Simon Josefsson + + * doc/tld/README: Rewrite. + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl: Fix "include". + +2004-02-06 Simon Josefsson + + * NEWS: Add. + +2004-02-06 Simon Josefsson + + * NEWS: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi, lib/tld.c, lib/tld.h, src/idn.c, tests/tst_tld.c: + Rename TLD_ILLEGAL to TLD_INVALID. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi, lib/tld.c, lib/tld.h: Rename TLD_ILLEGAL to + TLD_INVALID. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Update idn command line. + +2004-02-06 Simon Josefsson + + * src/idn.ggo: Move around. + +2004-02-06 Simon Josefsson + + * src/idn.ggo: Fix stringprep profiles. + +2004-02-06 Simon Josefsson + + * src/idn.c: TLD typo. + +2004-02-06 Simon Josefsson + + * src/idn.ggo: Make --tld the default. + +2004-02-06 Simon Josefsson + + * src/idn.c: Support --tld. Make sure output is hold in "p". Fix + error messages. + +2004-02-06 Simon Josefsson + + * src/idn.ggo: TLD fix. + +2004-02-06 Simon Josefsson + + * NEWS: Fix. + +2004-02-06 Simon Josefsson + + * NEWS: Fix. + +2004-02-06 Simon Josefsson + + * THANKS: Add. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Typos. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Doc fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Typo. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Doc fix. + +2004-02-06 Simon Josefsson + + * tests/tst_tld.c: Use new API. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: (tld_default_table): Add. (tld_get_table): Fix. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Typo. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Typo. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Revert. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Change semantics if tld_get_table. + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl, lib/tld.c, lib/tld.h: Typo. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Typos. + +2004-02-06 Simon Josefsson + + * tests/tst_tld.c: Use new API. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Rename tld_check_*. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Rename tld_check_*. Doc fix. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Rename tld_gettld_* to tld_get_*. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Use new API. (tld_get_table): Rewrite. + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl: Use new API. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Fix Tld_table. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Reorder. + +2004-02-06 Simon Josefsson + + * tests/tst_tld.c: Use new API. + +2004-02-06 Simon Josefsson + + * lib/tld.c, lib/tld.h: Don't export tld_checkchar. Rename + tld_finddomain to tld_get_table. Fixes. + +2004-02-06 Simon Josefsson + + * tests/tst_tld.c: Fix. + +2004-02-06 Simon Josefsson + + * lib/profiles.c, lib/punycode.c, lib/stringprep.c, lib/tld.c, + lib/tld.h: Indent. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix acks. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Add. + +2004-02-06 Simon Josefsson + + * AUTHORS: Add. + +2004-02-06 Simon Josefsson + + * doc/reference/libidn-docs.tmpl: Update. + +2004-02-06 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2004-02-06 Simon Josefsson + + * NEWS: Add. + +2004-02-06 Simon Josefsson + + * doc/components.fig: Add TLD. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-06 Simon Josefsson + + * doc/libidn.texi: Update introduction. Add TLD. Fix autoconf + example. Remove Kerberos 5 macro documentation. + +2004-02-06 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Fix. + +2004-02-06 Simon Josefsson + + * doc/reference/Makefile.am, doc/reference/libidn-docs.tmpl: Add + TLD. + +2004-02-06 Simon Josefsson + + * configure.ac: Bump versions. + +2004-02-06 Simon Josefsson + + * NEWS: Add. + +2004-02-06 Simon Josefsson + + * lib/Makefile.am, tests/Makefile.am: Make it possible to exclude + TLD. + +2004-02-06 Simon Josefsson + + * configure.ac: Add --disable-tld. + +2004-02-06 Simon Josefsson + + * configure.ac: Build doc/tld/Makefile. + +2004-02-06 Simon Josefsson + + * doc/tld/.cvsignore, tests/.cvsignore: [no log message] + +2004-02-06 Simon Josefsson + + * tests/Makefile.am: Add tst_tld. + +2004-02-06 Simon Josefsson + + * src/idn.ggo: Add --tld. + +2004-02-06 Simon Josefsson + + * tests/tst_tld.c: Add. + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl, lib/tld.h: Fix Tld_table. + +2004-02-06 Simon Josefsson + + * lib/tld.c: TLD code fix. + +2004-02-06 Simon Josefsson + + * lib/.cvsignore: [no log message] + +2004-02-06 Simon Josefsson + + * lib/tld.c: TLD fixes. + +2004-02-06 Simon Josefsson + + * lib/tld.h: TLD typos. + +2004-02-06 Simon Josefsson + + * lib/Makefile.am: TLD fix. + +2004-02-06 Simon Josefsson + + * lib/tld.c: Add, from Thomas Jacob . + +2004-02-06 Simon Josefsson + + * lib/tld.h: Fixes. + +2004-02-06 Simon Josefsson + + * lib/tld.h: Add, from Thomas Jacob . + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl: TLD fixes. + +2004-02-06 Simon Josefsson + + * lib/gen-tld-tables.pl: Print to stdout. + +2004-02-06 Simon Josefsson + + * lib/Makefile.am: TLD fixes. + +2004-02-06 Simon Josefsson + + * doc/Makefile.am: Add tld/. + +2004-02-06 Simon Josefsson + + * doc/tld/Makefile.am: Fix. + +2004-02-06 Simon Josefsson + + * doc/tld/README: Add copying conditions. + +2004-02-06 Simon Josefsson + + * doc/tld/Makefile.am, doc/tld/README, lib/Makefile.am, + lib/gen-tld-tables.pl: Add, from Thomas Jacob . + +2004-02-04 Simon Josefsson + + * doc/libidn.texi: Typo. + +2004-02-01 Simon Josefsson + + * doc/components.fig: Fix. + +2004-02-01 Simon Josefsson + + * doc/libidn.texi: Fix. + +2004-02-01 Simon Josefsson + + * doc/components.fig: Add. + +2004-02-01 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2004-02-01 Simon Josefsson + + * doc/Makefile.am: Build components.pdf too. + +2004-02-01 Simon Josefsson + + * doc/Makefile.am, doc/libidn.texi: Add components.fig. + +2004-01-31 Simon Josefsson + + * THANKS: Add. + +2004-01-31 Simon Josefsson + + * doc/libidn.texi: Fix, reported by nisse@lysator.liu.se (Niels + Möller). + +2004-01-22 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-01-22 Simon Josefsson + + * Makefile.am: Fix release target. + +2004-01-22 Simon Josefsson + + * doc/gendocs.sh: Upstream sync. + +2004-01-22 Simon Josefsson + + * ChangeLog: [no log message] + +2004-01-22 Simon Josefsson + + * NEWS: Version 0.3.7. + +2004-01-22 Simon Josefsson + + * Makefile.am: Add release target. + +2004-01-22 Simon Josefsson + + * .cvsignore: [no log message] + +2004-01-22 Simon Josefsson + + * .cvscopying, autogen.sh: Fix. + +2004-01-22 Simon Josefsson + + * .prev-version, GNUmakefile, Makefile.am, Makefile.cfg, + Makefile.maint, announce-gen: Remove ugly maintainance hacks. + +2004-01-22 Simon Josefsson + + * src/idn.c: Typo. + +2004-01-22 Simon Josefsson + + * src/idn.c: Update copyright years. + +2004-01-22 Simon Josefsson + + * NEWS: Add. + +2004-01-22 Simon Josefsson + + * NEWS, THANKS: Add. + +2004-01-22 Simon Josefsson + + * doc/libidn.texi, src/idn.ggo: Mention '--'. + +2004-01-21 Simon Josefsson + + * doc/specifications/stringprep-profiles: Add. + +2004-01-21 Simon Josefsson + + * contrib/web/idn.php, doc/libidn.texi, src/idn.ggo, + tests/tst_stringprep.c: Fix iSCSI profile name. + +2004-01-21 Simon Josefsson + + * lib/profiles.c: Add alias 'iSCSI'. + +2004-01-18 Simon Josefsson + + * doc/fdl.texi, doc/libidn.texi: Use FDL 1.2. + +2004-01-18 Simon Josefsson + + * src/idn.c: Fix warning. + +2004-01-14 Simon Josefsson + + * configure.ac: Don't use AC_LIBTOOL_TAGS, too experimental. + +2004-01-10 Simon Josefsson + + * doc/Makefile.am: Fix idn.1 depends. + +2004-01-10 Simon Josefsson + + * doc/Makefile.am: Dist texinfo.css. + +2004-01-10 Simon Josefsson + + * doc/gendocs_template: Sync with texinfo. + +2004-01-10 Simon Josefsson + + * doc/gendocs_template: Remove DocBook. + +2004-01-10 Simon Josefsson + + * NEWS: Add. + +2004-01-10 Simon Josefsson + + * configure.ac, doc/Makefile.am: Remove DocBook stuff. + +2004-01-10 Simon Josefsson + + * doc/Makefile.am, doc/libidn.css, doc/texinfo.css: Rename + libidn.css to texinfo.css. + +2004-01-10 Simon Josefsson + + * doc/libidn.css: Fix. + +2004-01-10 Simon Josefsson + + * doc/libidn.css: Fix. + +2004-01-10 Simon Josefsson + + * doc/Makefile.am: Use CSS for HTML. + +2004-01-10 Simon Josefsson + + * doc/libidn.css: Add. + +2004-01-06 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Add. + +2004-01-06 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2004-01-06 Simon Josefsson + + * .prev-version: . + +2004-01-06 Simon Josefsson + + * ChangeLog: [no log message] + +2004-01-06 Simon Josefsson + + * NEWS: Version 0.3.6. + +2004-01-06 Simon Josefsson + + * NEWS: Add. + +2004-01-06 Simon Josefsson + + * doc/libidn.texi: Fix license header. + +2004-01-06 Simon Josefsson + + * NEWS: Add. + +2004-01-01 Simon Josefsson + + * configure.ac, m4/ax_create_stdint_h.m4: Fix, to use ax_... + verbatim from upstream. + +2004-01-01 Simon Josefsson + + * m4/ac_compile_check_sizeof.m4: Remove (not used by ax_... any + more). + +2004-01-01 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Apply local fixes. + +2004-01-01 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Sync with upstream version 1.4. + +2003-12-30 Simon Josefsson + + * NEWS: Add. + +2003-12-30 Simon Josefsson + + * configure.ac: Allow autoconf 2.57. + +2003-12-18 Simon Josefsson + + * doc/libidn.texi: Encode file in ASCII. + +2003-12-16 Simon Josefsson + + * doc/libidn.texi: Replace non-ASCII with Texinfo accents. + +2003-12-16 Simon Josefsson + + * THANKS, doc/libidn.texi: Add Troubleshooting discussion for idn + tool. Suggested by "Jan-Hendrik Heuing" and Kai + Schaetzl . + +2003-12-15 Simon Josefsson + + * contrib/web/idn.php: Pass data on command line. Update error + enum's. Fix. + +2003-12-15 Simon Josefsson + + * ANNOUNCE: Remove (see doc/libidn.texi instead). + +2003-12-15 Simon Josefsson + + * README: Fix. + +2003-12-15 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-12-15 Simon Josefsson + + * .prev-version: . + +2003-12-15 Simon Josefsson + + * ChangeLog: [no log message] + +2003-12-15 Simon Josefsson + + * NEWS: Version 0.3.5. + +2003-12-15 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2003-12-15 Simon Josefsson + + * doc/libidn.texi: Use @finalout. + +2003-12-15 Simon Josefsson + + * NEWS: Add. + +2003-12-15 Simon Josefsson + + * doc/Makefile.am: Remove DocBook HTML targets (I'm tired of + updating the random filenames in the Makefile). + +2003-12-15 Simon Josefsson + + * doc/libidn.texi: Set charset cookie. Use @section instead of + @majorheading for DocBook. Add real examples to idn section. + +2003-12-15 Simon Josefsson + + * doc/gendocs.sh: Sync with Texinfo CVS. + +2003-12-15 Simon Josefsson + + * NEWS: Add. + +2003-12-15 Simon Josefsson + + * doc/Makefile.am: Update DocBook HTML target. + +2003-12-11 Simon Josefsson + + * NEWS, THANKS, doc/libidn.texi, lib/idna.c, lib/idna.h: Rename + IDNA_CONTAINS_LDH to IDNA_CONTAINS_NON_LDH. Reported by Graydon + Hoare . + +2003-12-10 Simon Josefsson + + * configure.ac: Check for autoconf 2.59 and automake 1.8. + +2003-12-09 Simon Josefsson + + * README-alpha: Mention versions. + +2003-12-04 Simon Josefsson + + * README: Fix. + +2003-12-03 Simon Josefsson + + * doc/specifications/draft-faltstrom-unicode-synchronisation-00.txt: + Add. + +2003-11-27 Simon Josefsson + + * NEWS: Add. + +2003-11-27 Simon Josefsson + + * configure.ac, src/Makefile.am, src/idn.ggo, src/idn.ggo.in: + Simplify gengetopt building. Use AM_CPPFLAGS, not *_CPPFLAGS. + +2003-11-27 Simon Josefsson + + * src/idn.c: Print instructions. Suggested by Kai Schaetzl + . + +2003-11-26 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Typo. + +2003-11-26 Simon Josefsson + + * NEWS: Add. + +2003-11-26 Simon Josefsson + + * doc/libidn.texi: Update Invoking idn. + +2003-11-26 Simon Josefsson + + * src/idn.c, src/idn.ggo.in: Make -a the default. + +2003-11-26 Simon Josefsson + + * doc/libidn.texi: Update Invoking idn. + +2003-11-26 Simon Josefsson + + * THANKS: Add. + +2003-11-26 Simon Josefsson + + * src/Makefile.am, src/idn.c: Support strings passed on command line + instead of on stdin. Suggested by Kai Schaetzl . + +2003-11-26 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Add todo. + +2003-11-25 Simon Josefsson + + * configure.ac: Disable fortran etc libtool checks. + +2003-11-23 Simon Josefsson + + * doc/gendocs.sh: Add --docbook. + +2003-11-23 Simon Josefsson + + * doc/gendocs.sh: Sync with texinfo. + +2003-11-20 Simon Josefsson + + * src/idn.c: Fix GREETING. + +2003-11-11 Simon Josefsson + + * doc/gdoc: TeX improvements. From Nikos Mavroyanopoulos + . + +2003-11-11 Simon Josefsson + + * doc/Makefile.am: Use AM_MAKEINFOHTMLFLAGS (with CVS automake) + instead of explicit libidn.html target. + +2003-11-10 Simon Josefsson + + * doc/specifications/rfc2279.txt, doc/specifications/rfc3629.txt: + Add. + +2003-11-09 Simon Josefsson + + * .cvsignore, doc/.cvsignore: [no log message] + +2003-11-09 Simon Josefsson + + * doc/Makefile.am: Update DocBook HTML destinations. + +2003-11-09 Simon Josefsson + + * doc/html/.cvsignore: Remove. + +2003-11-09 Simon Josefsson + + * doc/Makefile.am: Remove unused ps_TEXINFOS and pdf_TEXINFOS. + +2003-11-09 Simon Josefsson + + * doc/Makefile.am: Remove example source code to texinfo conversion + (@verbatiminclude is used directly on the source code instead). + +2003-11-09 Simon Josefsson + + * doc/libidn.texi: Use @verbatiminclude for examples. + +2003-11-09 Simon Josefsson + + * examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Use + *_CPPFLAGS instead of obsolete INCLUDES. + +2003-11-09 Simon Josefsson + + * configure.ac: Replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS. + +2003-11-09 Simon Josefsson + + * configure.ac: Autoupdate suggested changes: quote AC_INIT + parameters, and replace AC_TRY_RUN with AC_RUN_IFELSE. + +2003-11-09 Simon Josefsson + + * autogen.sh: Enable warnings. + +2003-11-09 Simon Josefsson + + * m4/.cvsignore: [no log message] + +2003-11-09 Simon Josefsson + + * src/Makefile.am: Use automake 1.7a idiom for elisp files. + +2003-11-09 Simon Josefsson + + * Makefile.am, configure.ac, m4/Makefile.am: Remove m4/ as it is not + needed with automake 1.7a. + +2003-11-09 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-11-09 Simon Josefsson + + * Makefile.maint: Use proper -o directory for gendocs.sh. + +2003-11-09 Simon Josefsson + + * .prev-version: . + +2003-11-09 Simon Josefsson + + * ChangeLog: [no log message] + +2003-11-09 Simon Josefsson + + * NEWS: Version 0.3.4. + +2003-11-09 Simon Josefsson + + * lib/idna.c, lib/stringprep.c: Fix memory leak. + +2003-11-07 Simon Josefsson + + * configure.ac: Remove libtool bug workaround. + +2003-11-05 Simon Josefsson + + * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix. + +2003-11-05 Simon Josefsson + + * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix date. + +2003-11-05 Simon Josefsson + + * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix bad + UTF-8. + +2003-11-02 Simon Josefsson + + * doc/gendocs.sh: Mkdir HTML. + +2003-11-02 Simon Josefsson + + * doc/reference/Makefile.am: Cleanup. + +2003-11-01 Simon Josefsson + + * m4/Makefile.am: Dist gtk-doc.m4. + +2003-11-01 Simon Josefsson + + * AUTHORS: Update expiry date on PGP key. + +2003-11-01 Simon Josefsson + + * m4/.cvsignore: [no log message] + +2003-11-01 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2003-11-01 Simon Josefsson + + * doc/reference/libidn-docs.sgml, doc/reference/libidn-docs.tmpl: + Rename. + +2003-11-01 Simon Josefsson + + * doc/reference/Makefile.am: Use my old cleaned up Makefile. + +2003-11-01 Simon Josefsson + + * doc/reference/Makefile.am: Don't break on first 'make'. + +2003-11-01 Simon Josefsson + + * doc/reference/Makefile.am: Make 'dist' work. + +2003-11-01 Simon Josefsson + + * reference/.cvsignore, reference/Makefile.am, + reference/libidn-docs.tmpl: Remove (replaced by doc/reference/). + +2003-11-01 Simon Josefsson + + * doc/reference/libidn-docs.sgml: Add. + +2003-11-01 Simon Josefsson + + * doc/reference/.cvsignore: [no log message] + +2003-11-01 Simon Josefsson + + * doc/reference/Makefile.am: Add, based on GTK-DOC example + Makefile.am. + +2003-11-01 Simon Josefsson + + * doc/Makefile.am: Add reference/. + +2003-11-01 Simon Josefsson + + * Makefile.am: Remove GTK-DOC subdir reference/ (moved to doc/). + +2003-11-01 Simon Josefsson + + * configure.ac: Build GTK-DOC Makefile in doc/reference instead of + reference/. + +2003-11-01 Simon Josefsson + + * configure.ac: Use GTK_DOC_CHECK macro for gtk-doc checks. + +2003-11-01 Simon Josefsson + + * m4/gtk-doc.m4: Add. + +2003-11-01 Simon Josefsson + + * Makefile.am: Use GTK-DOC conditional. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Rebuild Makefile after rebuilding + Makefile.gdoc. + +2003-11-01 Simon Josefsson + + * doc/Makefile.am: Set GDOC_MAN_EXTRA_ARGS. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Add GDOC_TEXI_EXTRA_ARGS, GDOC_MAN_EXTRA_ARGS. + +2003-11-01 Simon Josefsson + + * doc/Makefile.am: GDOC framework cleanup. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Create texinfo for whole sources files too. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Add -man parameters (move to Makefile.am?). + +2003-11-01 Simon Josefsson + + * autogen.sh: Just touch doc/Makefile.gdoc. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Mark Makefile.gdoc as BUILT_SOURCES. + +2003-11-01 Simon Josefsson + + * autogen.sh: Bootstrap doc/Makefile.gdoc. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: (Makefile.gdoc): Depend on ../configure for bootstrapping. + +2003-11-01 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2003-11-01 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2003-11-01 Simon Josefsson + + * doc/man/.cvsignore, doc/man/Makefile.am: Remove. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Mkdir. + +2003-11-01 Simon Josefsson + + * doc/Makefile.am: Update docbook HTMLs. + +2003-11-01 Simon Josefsson + + * doc/libidn.texi: Use gdoc @include's. + +2003-11-01 Simon Josefsson + + * doc/Makefile.am: Don't build in man/. Build idn.1 man page here. + Move man page dist targets from man/. Use Makefile.gdoci to + generate man pages and texinfo. + +2003-11-01 Simon Josefsson + + * doc/Makefile.gdoci: Add, initial version. + +2003-11-01 Simon Josefsson + + * configure.ac: Don't generate doc/man/Makefile. + +2003-10-31 Simon Josefsson + + * doc/libidn.texi: Move unicode utility functions from stringprep to + own chapter. Replace API documentation with @include'd GDOC + generated version. + +2003-10-31 Simon Josefsson + + * doc/Makefile.am: Generate more API manuals with gdoc. Replace + phony libidn-db.html with real targets. Update libidn-db.html + files. + +2003-10-31 Simon Josefsson + + * doc/.cvsignore, doc/html/.cvsignore: [no log message] + +2003-10-31 Simon Josefsson + + * doc/gdoc: Don't use @code for @deftypefun function name. + +2003-10-31 Simon Josefsson + + * lib/punycode.c: (punycode_encode): Rename parameter to match punycode.h (and more + importantly, to make gdoc function properly). + +2003-10-31 Simon Josefsson + + * lib/nfkc.c: Doc fixes. + +2003-10-31 Simon Josefsson + + * doc/gdoc: (dump_function): Handle parameters that look like 'char *foo[]'. + +2003-10-31 Simon Josefsson + + * doc/Makefile.am: Fix rule expansions. + +2003-10-31 Simon Josefsson + + * doc/Makefile.am: Dist gdoc and generated API texi's. Generate API + doc. Fix dependencies. + +2003-10-31 Simon Josefsson + + * doc/gdoc: Sync from GSSLib. + +2003-10-31 Simon Josefsson + + * README-alpha: Mention more tools. + +2003-10-31 Simon Josefsson + + * NEWS: Add. + +2003-10-31 Simon Josefsson + + * Makefile.maint: Fix doc generating commands. + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh: Fix HTML dir move. + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh: Fix outdir rm. + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh: Fix outdir rm. + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh: Don't remove $outdir (might contain CVS/). + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh, doc/gendocs_template: TAR fixes. Add + DocBook/Doxygen/GTK-DOC. + +2003-10-31 Simon Josefsson + + * doc/gendocs.sh, doc/gendocs_template: Add (taken from Texinfo + CVS). + +2003-10-31 Simon Josefsson + + * doc/.cvsignore, doc/html/.cvsignore: [no log message] + +2003-10-31 Simon Josefsson + + * doc/Makefile.am: Add docbook targets. + +2003-10-31 Simon Josefsson + + * configure.ac: Look for docbook tools. + +2003-10-29 Simon Josefsson + + * Makefile.am: Dist libc/getaddrinfo-idn.txt. + +2003-10-29 Simon Josefsson + + * configure.ac: Add AC_CONFIG_AUX_DIR(.) for broken CVS libtoolize. + +2003-10-29 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-saslprep-04.txt: Add. + +2003-10-28 Simon Josefsson + + * doc/specifications/draft-ietf-ldapbis-strprep-02.txt: Add. + +2003-10-28 Simon Josefsson + + * doc/specifications/draft-costello-rfc3492bis-01.txt: Add. + +2003-10-24 Simon Josefsson + + * doc/specifications/draft-ietf-ips-iscsi-string-prep-06.txt: Add. + +2003-10-24 Simon Josefsson + + * doc/specifications/IDNstatement.txt, + doc/specifications/draft-hoffman-rfc3490bis-01.txt: Add. + +2003-10-24 Simon Josefsson + + * THANKS: Fix. + +2003-10-19 Simon Josefsson + + * contrib/idn-python/README: Add. + +2003-10-19 Simon Josefsson + + * contrib/README: Fix. + +2003-10-19 Simon Josefsson + + * lib/gen-stringprep-tables.pl: Add warning in comment. + +2003-10-19 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Character set fixes. + +2003-10-19 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Fix. + +2003-10-19 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-10-18 Simon Josefsson + + * lib/stringprep.c: Add comment. + +2003-10-18 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-10-18 Simon Josefsson + + * .prev-version: . + +2003-10-18 Simon Josefsson + + * ChangeLog: [no log message] + +2003-10-18 Simon Josefsson + + * NEWS: Version 0.3.3. + +2003-10-18 Simon Josefsson + + * NEWS: Add. + +2003-10-18 Simon Josefsson + + * NEWS: Add. + +2003-10-18 Simon Josefsson + + * src/Makefile.am: Revert to old elisp automake idiom. + +2003-10-17 Simon Josefsson + + * NEWS: Add. + +2003-10-17 Simon Josefsson + + * lib/stringprep.h.in: (struct Stringprep_table, struct + Stringprep_profiles): Use 'const'. (stringprep_4i, stringprep_4zi, stringprep, stringprep_profile): + Likewise. + +2003-10-17 Simon Josefsson + + * lib/stringprep.c: (stringprep_find_character_in_table): Mark parameter as 'const'. (stringprep_find_string_in_table): Likewise. (stringprep_apply_table_to_string): Likewise. (stringprep_4i, stringprep_4zi_1, stringprep_4zi, stringprep): + Likewise. + +2003-10-17 Simon Josefsson + + * lib/stringprep.c: (stringprep_profile): Fix warning. + +2003-10-17 Simon Josefsson + + * tests/tst_idna.c, tests/tst_punycode.c: Fix warnings. + +2003-10-17 Simon Josefsson + + * tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c, + tests/tst_punycode.c, tests/tst_stringprep.c: Indent. + +2003-10-17 Simon Josefsson + + * lib/stringprep.c: Remove stringprep_generic documentation. + +2003-10-17 Simon Josefsson + + * doc/libidn.texi: Remove stringprep_generic. + +2003-10-17 Simon Josefsson + + * lib/gen-stringprep-tables.pl: Mark table elements as 'const'. + +2003-10-17 Simon Josefsson + + * lib/stringprep.c: (stringprep_apply_table_to_string): Remove 'name' parameter. (stringprep_4i): Likewise. + +2003-10-17 Simon Josefsson + + * lib/profiles.c: (stringprep_profiles): Remove "generic". Indent. + +2003-10-17 Simon Josefsson + + * lib/stringprep.h.in: (struct Stringprep_table): Remove 'name'. (stringprep_profiles, stringprep_rfc3454_A_1,stringprep_rfc3454_B_1) (stringprep_rfc3454_B_2, stringprep_rfc3454_B_3) (stringprep_rfc3454_C_1_1, stringprep_rfc3454_C_1_2) (stringprep_rfc3454_C_2_1, stringprep_rfc3454_C_2_2) (stringprep_rfc3454_C_3, stringprep_rfc3454_C_4) (stringprep_rfc3454_C_5, stringprep_rfc3454_C_6) (stringprep_rfc3454_C_7, stringprep_rfc3454_C_8) (stringprep_rfc3454_C_9, stringprep_rfc3454_D_1) (stringprep_rfc3454_D_2) (stringprep_nameprep) (stringprep_saslprep, stringprep_plain,stringprep_trace) (stringprep_kerberos5) (stringprep_xmpp_nodeprep, stringprep_xmpp_resourceprep) (stringprep_xmpp_nodeprep_prohibit) (stringprep_iscsi): Mark as 'const'. (stringprep_generic, stringprep_generic): Remove. + +2003-10-17 Simon Josefsson + + * lib/punycode.h, lib/stringprep.h.in, tests/tst_stringprep.c: + Indent. + +2003-10-17 Simon Josefsson + + * lib/stringprep.c: Fix memory leak. + +2003-10-16 Simon Josefsson + + * doc/gdoc: Fix #include for man pages. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Sync 'idn -h'. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-10-16 Simon Josefsson + + * lib/gen-stringprep-tables.pl, lib/idna.c, lib/nfkc.c, + lib/profiles.c, lib/punycode.c, lib/stringprep.c, lib/toutf8.c, + lib/version.c, src/idn.c, tests/tst_idna.c, tests/tst_idna2.c, + tests/tst_nfkc.c, tests/tst_stringprep.c: Include cleanup. We + assume C89, use <...> for headers we use, and use "..." for headers + we implement. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Add. + +2003-10-16 Simon Josefsson + + * src/Makefile.am: Fix gengetopt building. + +2003-10-16 Simon Josefsson + + * THANKS: Add. + +2003-10-16 Simon Josefsson + + * src/idn.ggo.in: Use less negations for --quiet, reported by Oden + Eriksson . + +2003-10-16 Simon Josefsson + + * src/Makefile.am: Fix gengetopt built source files. Use new + automake Emacs Lisp targets. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Use current version number in examples. + +2003-10-16 Simon Josefsson + + * configure.ac: Update so version. + +2003-10-16 Simon Josefsson + + * NEWS: Add. + +2003-10-16 Simon Josefsson + + * lib/punycode.h: Include parameter names in prototypes, for + GTK-DOC. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Fix typo. + +2003-10-16 Simon Josefsson + + * tests/tst_idna.c, tests/tst_punycode.c: Fix. + +2003-10-16 Simon Josefsson + + * lib/internal.h: Removed. + +2003-10-16 Simon Josefsson + + * src/idn.c, tests/tst_nfkc.c, tests/tst_stringprep.c: Make + #include's explicit. + +2003-10-16 Simon Josefsson + + * tests/tst_idna.c, tests/tst_idna2.c, tests/tst_punycode.c: Make + #include's explicit. Fix warnings. + +2003-10-16 Simon Josefsson + + * lib/Makefile.am: Remove internal.h. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2003-10-16 Simon Josefsson + + * lib/profiles.c, lib/stringprep.c, lib/toutf8.c, lib/version.c: + Make #include's explicit. + +2003-10-16 Simon Josefsson + + * lib/nfkc.c: Make #include's explicit. + +2003-10-16 Simon Josefsson + + * lib/idna.c: Fix. + +2003-10-16 Simon Josefsson + + * lib/idna.c: Make #include's explicit. + +2003-10-16 Simon Josefsson + + * lib/punycode.h: Fix typo. + +2003-10-16 Simon Josefsson + + * lib/punycode.c: Sync with latest draft, but change return types to + 'int' to be backwards compatible. + +2003-10-16 Simon Josefsson + + * lib/punycode.h: Sync with latest draft, but change return types to + 'int' to be backwards compatible. + +2003-10-16 Simon Josefsson + + * configure.ac, lib/internal.h: Remove DMALLOC stuff. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: Fix warnings. + +2003-10-16 Simon Josefsson + + * doc/libidn.texi: Typo. + +2003-10-16 Simon Josefsson + + * tests/tst_stringprep.c: Simplify debug prints. + +2003-10-16 Simon Josefsson + + * NEWS: Add. + +2003-10-16 Simon Josefsson + + * lib/idna.c: (idna_to_unicode_internal): Handle reallocating larger utf8in after + stringprep error STRINGPREP_TOO_SMALL_BUFFER. (idna_to_unicode_44i): Let new logic in idna_to_unicode_internal() + replace BUFSIZ alloc. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: (stringprep_profile): Loop around stringprep return + STRINGPREP_TOO_SMALL_BUFFER and increase buffer size. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: (stringprep): Check return value from stringprep_ucs4_to_utf8. + Don't use goto. + +2003-10-16 Simon Josefsson + + * lib/stringprep.c: (stringprep): Loop around stringprep_4i error + STRINGPREP_TOO_SMALL_BUFFER and increase buffer size. (stringprep_apply_table_to_string): Don't dereference possibly + unallocated memory just to do pointer arithmetic. + +2003-10-16 Simon Josefsson + + * lib/nfkc.c: Check malloc return value. + +2003-10-15 Simon Josefsson + + * lib/nfkc.c: Check malloc return code. + +2003-10-15 Simon Josefsson + + * NEWS: Add. + +2003-10-15 Simon Josefsson + + * doc/libidn.texi: Doc fox. Add stringprep_4i and stringprep_4zi. + +2003-10-15 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2003-10-15 Simon Josefsson + + * doc/man/Makefile.am: Add stringprep_4i.3, stringprep_4zi.3. + +2003-10-15 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2003-10-15 Simon Josefsson + + * lib/stringprep.h.in: (stringprep_4i, stringprep_4zi): Add. + +2003-10-15 Simon Josefsson + + * lib/stringprep.c: (stringprep1): Don't zero terminate. Rename to stringprep_4i and + export it. (stringprep_4zi_1): Add. Calls stringprep_4i, then zero terminate. (stringprep_4zi): Add. New API. (stringprep): Use stringprep_4zi_1. + +2003-10-15 Simon Josefsson + + * lib/stringprep.c: Fix typo. + +2003-10-15 Simon Josefsson + + * lib/stringprep.c: (stringprep): Split core part into stringprep1. (stringprep1): New, simplified version of core part. + +2003-10-15 Simon Josefsson + + * NEWS: Fix. + +2003-10-15 Simon Josefsson + + * contrib/web/idn.php: Remove generic. Add trace. + +2003-10-15 Simon Josefsson + + * src/idn.c: Print UCS-4 instead of UTF-8 in debug output for + --stringprep. + +2003-10-15 Simon Josefsson + + * NEWS: Add. + +2003-10-15 Simon Josefsson + + * src/idn.c: Fix UCS-4 output in --stringprep. Print debug output + even with --idna-to-ascii. Fix error message. + +2003-10-12 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Clarify alternative approaches. + +2003-10-11 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Fix. + +2003-10-11 Simon Josefsson + + * libc/getaddrinfo-idn.txt: Add. + +2003-10-10 Simon Josefsson + + * configure.ac: Revert typo. + +2003-10-10 Simon Josefsson + + * configure.ac: Fix so version comment (matches libtool manual). + +2003-10-09 Simon Josefsson + + * FAQ: Fix. + +2003-10-09 Simon Josefsson + + * NEWS: Add. + +2003-10-09 Simon Josefsson + + * src/idn.ggo.in: Remove 'generic' (should not be exposed). Add + 'trace'. + +2003-10-09 Simon Josefsson + + * doc/specifications/draft-hoffman-rfc3454bis-01.txt: Add. + +2003-10-07 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-10-07 Simon Josefsson + + * Makefile.maint: Fix doxygen generation. + +2003-10-07 Simon Josefsson + + * .prev-version: . + +2003-10-07 Simon Josefsson + + * ChangeLog: [no log message] + +2003-10-07 Simon Josefsson + + * NEWS: Version 0.3.2. + +2003-10-07 Simon Josefsson + + * Makefile.maint: Remove --rsyncable for now, Debian (stable) gzip + do not support it. + +2003-10-07 Simon Josefsson + + * GNUmakefile: TAR_OPTION crashes tar in Debian, comment out for + now. + +2003-10-07 Simon Josefsson + + * NEWS: Add. + +2003-10-07 Simon Josefsson + + * lib/nfkc.c: Doc fix. + +2003-10-07 Simon Josefsson + + * m4/Makefile.am, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: + Add. + +2003-10-07 Simon Josefsson + + * doc/specifications/draft-hoffman-rfc3490bis-00.txt, + doc/specifications/draft-hoffman-rfc3491bis-00.txt: Add. + +2003-10-06 Simon Josefsson + + * doc/specifications/draft-costello-rfc3492bis-00.txt, + doc/specifications/draft-hoffman-rfc3454bis-00.txt: Add. + +2003-10-06 Simon Josefsson + + * lib/stringprep.c, lib/stringprep.h.in: (stringprep_profile): Mark 'in' as 'const'. + +2003-10-02 Simon Josefsson + + * lib/profiles.c: Fix comment. + +2003-10-02 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-10-02 Simon Josefsson + + * NEWS: Add. + +2003-10-02 Simon Josefsson + + * lib/profiles.c, lib/stringprep.h.in: Add trace profile (SASL + ANONYMOS). + +2003-10-02 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-10-02 Simon Josefsson + + * doc/libidn.texi: Cosmetic fixes. + +2003-10-02 Simon Josefsson + + * Makefile.maint: Fix. + +2003-10-02 Simon Josefsson + + * .prev-version: . + +2003-10-02 Simon Josefsson + + * announce-gen: Perl 5.8.1 fix. + +2003-10-02 Simon Josefsson + + * ChangeLog: [no log message] + +2003-10-02 Simon Josefsson + + * NEWS: Version 0.3.1. + +2003-10-02 Simon Josefsson + + * lib/gen-unicode-tables.pl, lib/nfkc.c: Fix NFKC, from Noah Levitt + via bugzilla.gnome.org bug 123421. + +2003-09-28 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-09-28 Simon Josefsson + + * doc/libidn.texi: Add. + +2003-09-28 Simon Josefsson + + * THANKS: Add. + +2003-09-28 Simon Josefsson + + * tests/tst_idna2.c: Indent. + +2003-09-28 Simon Josefsson + + * lib/Makefile.am: Fix. + +2003-09-28 Simon Josefsson + + * Makefile.am: Fix indent target. + +2003-09-28 Simon Josefsson + + * src/Makefile.am, tests/Makefile.am: Add indent rule. + +2003-09-28 Simon Josefsson + + * lib/idna.c, lib/nfkc.c, lib/punycode.h: Indent. + +2003-09-28 Simon Josefsson + + * lib/Makefile.am: Fix. Add indent target. + +2003-09-26 Simon Josefsson + + * lib/nfkc.c: Fix Hangul patch. + +2003-09-25 Simon Josefsson + + * tests/tst_idna2.c: Fix typo. + +2003-09-25 Simon Josefsson + + * NEWS: Add. + +2003-09-25 Simon Josefsson + + * doc/specifications/BidiMirroring-3.2.0.txt, lib/Makefile.am, + lib/gen-unicode-tables.pl, lib/nfkc.c: Sync with GLIB for Unicode + stuff. + +2003-09-25 Simon Josefsson + + * lib/punycode.h: Fix typo. + +2003-09-25 Simon Josefsson + + * tests/tst_idna2.c: Update test vectors. + +2003-09-25 Simon Josefsson + + * src/idn.c: Fix debug messages. + +2003-09-25 Simon Josefsson + + * NEWS: Add. + +2003-09-25 Simon Josefsson + + * lib/idna.c: (DOTP): New. (idna_to_unicode_4z4z): Use it. (idna_to_ascii_4z): Use it. Make root label handling explicit. + +2003-09-25 Simon Josefsson + + * THANKS: Add. + +2003-09-25 Simon Josefsson + + * lib/nfkc.c: (decompose_hangul, combine_hangul): New. (combine, _g_utf8_normalize_wc): Use them. Adds support for + algorithmic composition of Hangul Syllables, adapted from a patch + written by Noah Levitt for GLIB, discussed in + and available + from . + +2003-09-25 Simon Josefsson + + * tests/tst_idna2.c: Fix. + +2003-09-25 Simon Josefsson + + * tests/Makefile.am, tests/tst_idna2.c: Add. + +2003-09-25 Simon Josefsson + + * tests/.cvsignore: [no log message] + +2003-09-25 Simon Josefsson + + * lib/idna.c: (idna_to_ascii_4z): Output "" instead of "." on input "". (Some + religions claim "" should fail though.) + +2003-09-23 Simon Josefsson + + * NEWS: Add. + +2003-09-23 Simon Josefsson + + * doc/libidn.texi: Doc fix. + +2003-09-23 Simon Josefsson + + * src/punycode.el: (punycode-shutdown): New. + +2003-09-23 Simon Josefsson + + * src/idna.el: (idna-to-ascii-parameters, idna-to-unicode-parameters): Add + --usestd3asciirules. (idna-shutdown): New. + +2003-09-23 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-09-23 Simon Josefsson + + * Makefile.maint: Fix. + +2003-09-23 Simon Josefsson + + * Makefile.maint: Fix. + +2003-09-23 Simon Josefsson + + * .prev-version: . + +2003-09-23 Simon Josefsson + + * ChangeLog: [no log message] + +2003-09-23 Simon Josefsson + + * NEWS: Version 0.3.0. + +2003-09-23 Simon Josefsson + + * libc/README: Fix. + +2003-09-23 Simon Josefsson + + * doc/specifications/draft-ietf-sasl-saslprep-03.txt: Add. + +2003-09-23 Simon Josefsson + + * libc/Makefile, libc/README: Fix. + +2003-09-22 Simon Josefsson + + * NEWS: Add. + +2003-09-22 Simon Josefsson + + * lib/profiles.c: (stringprep_saslprep): Prohibit inappropriate for canonical + representation characters. + +2003-09-14 Simon Josefsson + + * Makefile.am: Dist libc/Banner. + +2003-09-14 Simon Josefsson + + * libc/README: Create idna.h without dependency on idn-int.h. + +2003-09-14 Simon Josefsson + + * tests/tst_stringprep.c: Fix memory leak. + +2003-09-14 Simon Josefsson + + * src/idn.c: Fix memory leaks. + +2003-09-14 Simon Josefsson + + * src/idn.c: Fix greeting message. + +2003-09-14 Simon Josefsson + + * libc/README: Copy Banner. + +2003-09-14 Simon Josefsson + + * libc/Banner: Add. + +2003-09-12 Simon Josefsson + + * libc/README: Fix. + +2003-09-12 Simon Josefsson + + * lib/punycode.c: Cast. + +2003-09-12 Simon Josefsson + + * lib/internal.h: Fix. + +2003-09-12 Simon Josefsson + + * lib/internal.h: Simplify #include mess. + +2003-09-12 Simon Josefsson + + * configure.ac: Remove cruft. + +2003-09-12 Simon Josefsson + + * libc/README: Fix. + +2003-09-12 Simon Josefsson + + * reference/Makefile.am: Remove dummy.c. + +2003-09-12 Simon Josefsson + + * lib/stringprep.c: Doc fix. + +2003-09-12 Simon Josefsson + + * doc/libidn.texi, lib/punycode.c, lib/stringprep.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/idna.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/idna.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/punycode.c, lib/stringprep.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/punycode.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/punycode.h: Fix RFC compatibility. + +2003-09-12 Simon Josefsson + + * lib/punycode.h: Typedef Punycode_status. Use 'int' instead of + 'enum' for return codes. + +2003-09-12 Simon Josefsson + + * lib/punycode.c: Use 'int' instead of 'enum' for return code. + +2003-09-12 Simon Josefsson + + * configure.ac: Bump versions. + +2003-09-12 Simon Josefsson + + * lib/profiles.c, lib/stringprep.h.in: Rename stringprep_generic_* + to stringprep_rfc3454_*. + +2003-09-12 Simon Josefsson + + * lib/.cvsignore: [no log message] + +2003-09-12 Simon Josefsson + + * lib/Makefile.am: Rename stringprep_generic.c to rfc3454.c. Add to + BUILT_SOURCES. + +2003-09-12 Simon Josefsson + + * lib/gen-stringprep-tables.pl: Write to rfc3454.c. Rename + variables to stringprep_rfc3454_* from stringprep_generic_*. + +2003-09-12 Simon Josefsson + + * reference/dummy.c: Remove, merged into ../lib/*.c. + +2003-09-12 Simon Josefsson + + * lib/punycode.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/idna.c: Fix. + +2003-09-12 Simon Josefsson + + * doc/man/Makefile.am: Fix update-api. + +2003-09-12 Simon Josefsson + + * lib/idna.c, lib/stringprep.c: Doc fix. + +2003-09-12 Simon Josefsson + + * lib/stringprep.h.in: Indent. + +2003-09-12 Simon Josefsson + + * lib/stringprep.c: Use 'int' instead of 'enum's. + +2003-09-12 Simon Josefsson + + * lib/stringprep.h.in: Typedef Stringprep_rc, + Stringprep_profile_flags, and Stringprep_profile_steps. Use 'int' + instead of 'enum's (i.e., revert 0.2.3 changes). + +2003-09-12 Simon Josefsson + + * NEWS: Add. + +2003-09-12 Simon Josefsson + + * lib/Makefile.am, lib/obsolete.c: Remove obsolete.c. + +2003-09-12 Simon Josefsson + + * lib/Makefile.am, lib/idna.h, lib/stringprep_generic.h, + lib/stringprep_iscsi.h, lib/stringprep_kerberos5.h, + lib/stringprep_nameprep.h, lib/stringprep_plain.h, + lib/stringprep_xmpp.h: Remove obsolete headers. + +2003-09-12 Simon Josefsson + + * lib/idna.c, lib/obsolete.c: Use int instead of enum's. + +2003-09-12 Simon Josefsson + + * lib/idna.h: Typedef Idna_rc and Idna_flags. Use int instead of + enum's. + +2003-09-12 Simon Josefsson + + * reference/Makefile.am: Fix path to sources. Fix HIGNORE. + +2003-09-12 Simon Josefsson + + * libc/README: Workaround -I problem. + +2003-09-12 Simon Josefsson + + * libc/libc.patch: Against glibc 2.3.2. + +2003-09-12 Simon Josefsson + + * NEWS: Add. + +2003-09-12 Simon Josefsson + + * m4/Makefile.am, m4/memset.m4, m4/onceonly_2_57.m4, m4/strdup.m4: + Remove unused m4's. + +2003-09-12 Simon Josefsson + + * src/getopt.c, src/getopt.h, src/getopt1.c: Add (from gl/). + +2003-09-12 Simon Josefsson + + * lib/idna.c, lib/toutf8.c: Don't use strdup. + +2003-09-12 Simon Josefsson + + * Makefile.am, gl/.cvsignore, gl/Makefile.am, gl/getopt.c, + gl/getopt.h, gl/getopt1.c, gl/m4/.cvsignore, gl/m4/Makefile.am, + gl/m4/memset.m4, gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4, + gl/memset.c, gl/strdup.c, src/Makefile.am: Remove gl/. + +2003-09-12 Simon Josefsson + + * tests/Makefile.am: Fix. + +2003-09-12 Simon Josefsson + + * configure.ac: Remove checks for memset and strdup; we assume C89, + so memset exists, and we no longer use strdup. Remove gl/. + +2003-09-12 Simon Josefsson + + * doc/libidn.texi: Ported to Mac OS X / Darwin. + +2003-09-12 Simon Josefsson + + * gl/.cvsignore: [no log message] + +2003-09-12 Simon Josefsson + + * gl/Makefile.am: Use libtool. + +2003-09-12 Simon Josefsson + + * examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Make + LDADD libtool friendly. + +2003-09-12 Simon Josefsson + + * NEWS: Add. + +2003-09-12 Simon Josefsson + + * NEWS, configure.ac, doc/Makefile.am, doc/gdoc, + doc/man/.cvsignore, doc/man/Makefile.am: Build man pages. + +2003-09-12 Simon Josefsson + + * doc/specifications/idna-ace-prefix.txt, idna-ace-prefix.txt: Move. + +2003-09-12 Simon Josefsson + + * libc/README: Fix. + +2003-09-12 Simon Josefsson + + * THANKS: Add. + +2003-09-12 Simon Josefsson + + * libc/Versions: Typo. + +2003-09-12 Simon Josefsson + + * lib/internal.h: [_LIBC]: Define ICONV_CONST. + +2003-09-12 Simon Josefsson + + * libc/getaddrinfo.c: Use modern API. + +2003-09-12 Simon Josefsson + + * libc/Versions: Export modern API. + +2003-09-12 Simon Josefsson + + * libc/README: Update. + +2003-09-12 Simon Josefsson + + * libc/getaddrinfo.c: GLIBC 2.3.2 sync. + +2003-09-02 Simon Josefsson + + * libc/getaddrinfo.c, libc/libc.patch: Revert. + +2003-08-26 Simon Josefsson + + * AUTHORS: Update key. + +2003-08-26 Simon Josefsson + + * examples/Makefile.am, examples/README: Add examples/README. + +2003-08-26 Simon Josefsson + + * contrib/web/idn.php: Fixes. + +2003-08-25 Simon Josefsson + + * Makefile.am: Fix cvs2cl parameters. + +2003-08-25 Simon Josefsson + + * Makefile.am, gl/Makefile.am, lib/Makefile.am: Use $() instead of + @@. + +2003-08-25 Simon Josefsson + + * Makefile.maint: Do some tests that work. + +2003-08-25 Simon Josefsson + + * Makefile.cfg: Fix URL. + +2003-08-25 Simon Josefsson + + * NEWS, configure.ac: Bump versions. + +2003-08-25 Simon Josefsson + + * Makefile.am: Fix cvs2cl parameters. + +2003-08-25 Simon Josefsson + + * Makefile.maint: Ignore errors on www update. + +2003-08-25 Simon Josefsson + + * contrib/doxygen/Doxyfile.in: Update paths. + +2003-08-25 Simon Josefsson + + * .prev-version: . + +2003-08-25 Simon Josefsson + + * announce-gen: Revert. + +2003-08-25 Simon Josefsson + + * Makefile.maint: Fix. + +2003-08-25 Simon Josefsson + + * ChangeLog: [no log message] + +2003-08-25 Simon Josefsson + + * NEWS: Version 0.2.3. + +2003-08-25 Simon Josefsson + + * .cvsignore: [no log message] + +2003-08-25 Simon Josefsson + + * .cvscopying: Add tabs, for Makefile.maint check. + +2003-08-25 Simon Josefsson + + * Makefile.am: Replace release target with Makefile.maint etc. + +2003-08-25 Simon Josefsson + + * .prev-version, GNUmakefile, Makefile.cfg, Makefile.maint, + announce-gen: Add. + +2003-08-25 Simon Josefsson + + * examples/example3.c: Doc fix. + +2003-08-25 Simon Josefsson + + * NEWS, THANKS: Add. + +2003-08-25 Simon Josefsson + + * examples/example4.c: Really call ToUnicode instead of ToASCII. + Reported by Trond Haugen . + +2003-08-21 Simon Josefsson + + * doc/libidn.texi: Add port. + +2003-08-20 Simon Josefsson + + * gl/Makefile.am: Dist getopt.h. + +2003-08-20 Simon Josefsson + + * src/Makefile.am: Link with gl stuff. + +2003-08-20 Simon Josefsson + + * lib/toutf8.c: Fix warning message. + +2003-08-20 Simon Josefsson + + * configure.ac: Group portability stuff together. + +2003-08-20 Simon Josefsson + + * src/Makefile.am, tests/Makefile.am: Fix -I paths. + +2003-08-20 Simon Josefsson + + * lib/Makefile.am: Distcheck fixes. + +2003-08-20 Simon Josefsson + + * examples/Makefile.am: Fix paths. + +2003-08-20 Simon Josefsson + + * reference/Makefile.am: Fix paths (for distcheck). + +2003-08-20 Simon Josefsson + + * Makefile.am: Fix directory build order, for gtk-doc. + +2003-08-20 Simon Josefsson + + * reference/Makefile.am: Update paths to source code. + +2003-08-20 Simon Josefsson + + * lib/Makefile.am, lib/idna.c, lib/obsolete.c: Move obsolete + functions into separate file. + +2003-08-20 Simon Josefsson + + * lib/Makefile.am: Fixes. + +2003-08-20 Simon Josefsson + + * Makefile.am: Build doc after src, for help2man on idn. + +2003-08-20 Simon Josefsson + + * .cvsignore: [no log message] + +2003-08-20 Simon Josefsson + + * lib/Makefile.am: Add EXTRA_DISTs. + +2003-08-20 Simon Josefsson + + * Makefile.am: Add gl, lib, src, tests and examples to SUBDIRS. Add + gl/m4 to ACLOCAL_AMFLAGS. Remove rules that are moved into lib/, + src/, tests/ and examples/. + +2003-08-20 Simon Josefsson + + * configure.ac: Split up files into sub-directories. + +2003-08-20 Simon Josefsson + + * gdoc: Move gdoc to doc/. + +2003-08-20 Simon Josefsson + + * doc/specifications/.cvsignore, gl/.cvsignore, gl/m4/.cvsignore, + lib/.cvsignore, src/.cvsignore, tests/.cvsignore: [no log message] + +2003-08-20 Simon Josefsson + + * examples/.cvsignore, lib/.cvsignore: [no log message] + +2003-08-20 Simon Josefsson + + * CaseFolding-3.2.0.txt, CompositionExclusions-3.2.0.txt, + LineBreak-3.2.0.txt, SpecialCasing-3.2.0.txt, + UnicodeData-3.2.0.txt, doc/Makefile.am, doc/gdoc, + doc/specifications/CaseFolding-3.2.0.txt, + doc/specifications/CompositionExclusions-3.2.0.txt, + doc/specifications/LineBreak-3.2.0.txt, + doc/specifications/Makefile.am, + doc/specifications/SpecialCasing-3.2.0.txt, + doc/specifications/UnicodeData-3.2.0.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-04.txt, + doc/specifications/draft-ietf-ips-iscsi-string-prep-05.txt, + doc/specifications/draft-ietf-krb-wg-utf8-profile-01.txt, + doc/specifications/draft-ietf-ldapbis-dn-11.txt, + doc/specifications/draft-ietf-ldapbis-strprep-00.txt, + doc/specifications/draft-ietf-ldapbis-strprep-01.txt, + doc/specifications/draft-ietf-sasl-anon-00.txt, + doc/specifications/draft-ietf-sasl-saslprep-00.txt, + doc/specifications/draft-ietf-sasl-saslprep-01.txt, + doc/specifications/draft-ietf-sasl-saslprep-02.txt, + doc/specifications/draft-ietf-xmpp-nodeprep-01.txt, + doc/specifications/draft-ietf-xmpp-nodeprep-02.txt, + doc/specifications/draft-ietf-xmpp-nodeprep-03.txt, + doc/specifications/draft-ietf-xmpp-resourceprep-01.txt, + doc/specifications/draft-ietf-xmpp-resourceprep-02.txt, + doc/specifications/draft-ietf-xmpp-resourceprep-03.txt, + doc/specifications/draft-josefsson-idn-test-vectors-00.txt, + doc/specifications/draft-josefsson-idn-test-vectors.xml, + doc/specifications/draft-zeilenga-ldapbis-strmatch-02.txt, + doc/specifications/draft-zeilenga-ldapbis-strprep-00.txt, + doc/specifications/rfc3454.txt, doc/specifications/rfc3490.txt, + doc/specifications/rfc3491.txt, doc/specifications/rfc3492.txt, + draft-ietf-ips-iscsi-string-prep-04.txt, + draft-ietf-ips-iscsi-string-prep-05.txt, + draft-ietf-krb-wg-utf8-profile-01.txt, + draft-ietf-ldapbis-dn-11.txt, draft-ietf-ldapbis-strprep-00.txt, + draft-ietf-ldapbis-strprep-01.txt, draft-ietf-sasl-anon-00.txt, + draft-ietf-sasl-saslprep-00.txt, draft-ietf-sasl-saslprep-01.txt, + draft-ietf-sasl-saslprep-02.txt, draft-ietf-xmpp-nodeprep-01.txt, + draft-ietf-xmpp-nodeprep-02.txt, draft-ietf-xmpp-nodeprep-03.txt, + draft-ietf-xmpp-resourceprep-01.txt, + draft-ietf-xmpp-resourceprep-02.txt, + draft-ietf-xmpp-resourceprep-03.txt, + draft-josefsson-idn-test-vectors-00.txt, + draft-josefsson-idn-test-vectors.xml, + draft-zeilenga-ldapbis-strmatch-02.txt, + draft-zeilenga-ldapbis-strprep-00.txt, rfc3454.txt, rfc3490.txt, + rfc3491.txt, rfc3492.txt: Move documentation and specifications into + doc/ and doc/specifications/. + +2003-08-20 Simon Josefsson + + * getopt.c, getopt.h, getopt1.c, gl/Makefile.am, gl/getopt.c, + gl/getopt.h, gl/getopt1.c, gl/m4/Makefile.am, gl/m4/memset.m4, + gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4, gl/memset.c, gl/strdup.c, + memset.c, strdup.c: Move portability utilities into gl/. + +2003-08-20 Simon Josefsson + + * gen-stringprep-tables.pl, gen-unicode-tables.pl, idna.c, idna.h, + internal.h, lib/Makefile.am, lib/gen-stringprep-tables.pl, + lib/gen-unicode-tables.pl, lib/idna.c, lib/idna.h, lib/internal.h, + lib/nfkc.c, lib/profiles.c, lib/punycode.c, lib/punycode.h, + lib/stringprep.c, lib/stringprep.h.in, lib/stringprep_generic.h, + lib/stringprep_iscsi.h, lib/stringprep_kerberos5.h, + lib/stringprep_nameprep.h, lib/stringprep_plain.h, + lib/stringprep_xmpp.h, lib/toutf8.c, lib/version.c, nfkc.c, + profiles.c, punycode.c, punycode.h, stringprep.c, stringprep.h.in, + stringprep_generic.h, stringprep_iscsi.h, stringprep_kerberos5.h, + stringprep_nameprep.h, stringprep_plain.h, stringprep_xmpp.h, + toutf8.c, version.c: Move library into lib/. + +2003-08-20 Simon Josefsson + + * tests/Makefile.am, tests/tst_idna.c, tests/tst_nfkc.c, + tests/tst_punycode.c, tests/tst_stringprep.c, tst_idna.c, + tst_nfkc.c, tst_punycode.c, tst_stringprep.c: Move tests into + tests/. + +2003-08-20 Simon Josefsson + + * idn.c, idn.ggo.in, idna.el, punycode.el, src/Makefile.am, + src/idn.c, src/idn.ggo.in, src/idna.el, src/punycode.el: Move + applications into src/. + +2003-08-20 Simon Josefsson + + * example.c, example2.c, example3.c, example4.c, + examples/Makefile.am, examples/example.c, examples/example2.c, + examples/example3.c, examples/example4.c: Move examples into + examples/. + +2003-08-13 Simon Josefsson + + * TODO: Add. + +2003-08-13 Simon Josefsson + + * nfkc.c: Fix doc. + +2003-08-13 Simon Josefsson + + * tst_idna.c: Remove unused function. + +2003-08-13 Simon Josefsson + + * idn.c: Fix warnings. + +2003-08-13 Simon Josefsson + + * configure.ac: Bump versions. + +2003-08-13 Simon Josefsson + + * NEWS, doc/libidn.texi, reference/dummy.c: Add. + +2003-08-13 Simon Josefsson + + * idna.c, idna.h: Use enum types where appropriate. + +2003-08-13 Simon Josefsson + + * doc/libidn.texi: Doc fixes. + +2003-08-13 Simon Josefsson + + * stringprep.h.in: Fix. + +2003-08-13 Simon Josefsson + + * stringprep.c: Use enum/size_t/ssize_t where appropriate. Doc fix. + +2003-08-13 Simon Josefsson + + * stringprep.h.in: Replace int with proper enum, where appropriate. + +2003-08-13 Simon Josefsson + + * doc/libidn.texi: Typo. + +2003-08-13 Simon Josefsson + + * doc/libidn.texi: Add FreeBSD 4.8. + +2003-08-13 Simon Josefsson + + * ChangeLog: [no log message] + +2003-08-13 Simon Josefsson + + * NEWS: Version 0.2.2. + +2003-08-13 Simon Josefsson + + * NEWS: Fix. + +2003-08-13 Simon Josefsson + + * Makefile.am: Fix release target. + +2003-08-13 Simon Josefsson + + * Makefile.am: Fix release target. + +2003-08-13 Simon Josefsson + + * NEWS, TODO: Add. + +2003-08-13 Simon Josefsson + + * punycode.c: Typo. + +2003-08-13 Simon Josefsson + + * punycode.h: Indent. + +2003-08-13 Simon Josefsson + + * punycode.h: Revert to RFC code: use punycode_status. + +2003-08-13 Simon Josefsson + + * punycode.c: Revert to RFC code: use punycode_uint and enum + punycode_status. However, we do continue to use size_t to promote + use of sizeof() by application writers. We return + punycode_bad_input if a size_t value exceeds the largest + punycode_uint, since the code presumably cannot handle that. If + size_t is smaller than punycode_uint, it seems unlikely that an + application could be able to pass a string that is longer than + SIZE_MAX anyway, but should it happen the worst that occur is that + the punycode code will only see the beginning of the string, which + isn't unreasonable on a platform with a small SIZE_MAX. + +2003-08-13 Simon Josefsson + + * punycode.h: Define and use punycode_uint. + +2003-08-08 Simon Josefsson + + * toutf8.c: (stringprep_locale_charset): Improve docstring. + +2003-08-01 Simon Josefsson + + * draft-ietf-ips-iscsi-string-prep-05.txt: Add. + +2003-07-31 Simon Josefsson + + * Makefile.am: Replace gnudist with gnuftp. + +2003-07-31 Simon Josefsson + + * NEWS, THANKS: Add. + +2003-07-31 Simon Josefsson + + * idn.c: Encode -u output in locale charset, suggested by Adam M. + Costello. + +2003-07-11 Simon Josefsson + + * memset.c: Rewrite to get LGPL code. + +2003-07-11 Simon Josefsson + + * strdup.c: Revert, to get LGPL code. + +2003-07-11 Simon Josefsson + + * Makefile.am: Install but don't distribute idn-int.h. + +2003-07-11 Simon Josefsson + + * m4/.cvsignore: [no log message] + +2003-07-11 Simon Josefsson + + * Makefile.am, configure.ac, m4/Makefile.am: Dist m4's. + +2003-07-11 Simon Josefsson + + * Makefile.am, configure.ac, m4/memset.m4, m4/onceonly_2_57.m4, + m4/strdup.m4, strdup.c: Replace AC_REPLACE_OBJ with gnulib. + +2003-07-11 Simon Josefsson + + * configure.ac: Bump versions. + +2003-07-11 Simon Josefsson + + * NEWS: Add. + +2003-07-11 Simon Josefsson + + * Makefile.am: Use BUILT_SOURCES for idn_cmd.* and idn-int.h, and + don't include idn-int.h in the distribution. + +2003-07-08 Simon Josefsson + + * THANKS: Add. + +2003-07-08 Simon Josefsson + + * m4/ax_create_stdint_h.m4: Look in sys/types.h too, for cygwin. + +2003-07-05 Simon Josefsson + + * ANNOUNCE, doc/libidn.texi: Don't use () when talking about the + name of a function. + +2003-07-04 Simon Josefsson + + * ChangeLog: [no log message] + +2003-07-04 Simon Josefsson + + * NEWS: Version 0.2.1. + +2003-07-04 Simon Josefsson + + * Makefile.am: Create idn_cmd.* in srcdir. + +2003-07-04 Simon Josefsson + + * NEWS: Add. + +2003-07-04 Simon Josefsson + + * configure.ac: Bump versions. + +2003-07-04 Simon Josefsson + + * NEWS: Add. + +2003-07-04 Simon Josefsson + + * idna.c: Fix last commit. + +2003-07-04 Simon Josefsson + + * THANKS: Add. + +2003-07-04 Simon Josefsson + + * idna.c: Handle empty labels, tiny patch based on suggestion by + Marcos Sanz/Denic . + +2003-07-02 Simon Josefsson + + * THANKS: Add. + +2003-07-02 Simon Josefsson + + * Makefile.am: Ignore .cvs*. + +2003-07-02 Simon Josefsson + + * Makefile.am: Add legal information to ChangeLog. + +2003-07-02 Simon Josefsson + + * .cvscopying: Add. + +2003-07-02 Simon Josefsson + + * THANKS: Add. + +2003-07-02 Simon Josefsson + + * toutf8.c, tst_punycode.c: Indent. + +2003-07-02 Simon Josefsson + + * toutf8.c: (stringprep_convert): Use ICONV_CONST. Tiny patch suggested by + Robert Norris . + +2003-07-02 Simon Josefsson + + * draft-ietf-ldapbis-dn-11.txt, draft-ietf-ldapbis-strprep-01.txt: + Add. + +2003-06-24 Simon Josefsson + + * README-alpha: Gengetopt 2.10 or later is required. + +2003-06-24 Simon Josefsson + + * Makefile.am: Don't distclean idn_cmd.*, just maintainer-clean + them. + +2003-06-19 Simon Josefsson + + * ChangeLog: [no log message] + +2003-06-19 Simon Josefsson + + * NEWS: Version 0.2.0. + +2003-06-19 Simon Josefsson + + * Makefile.am: Distclean idn-int.h (really!). + +2003-06-19 Simon Josefsson + + * Makefile.am: Install and distclean idn-int.h properly. + +2003-06-19 Simon Josefsson + + * Makefile.am: Distclean idn-int.h. + +2003-06-19 Simon Josefsson + + * Makefile.am: Remove idn-int.h. + +2003-06-19 Simon Josefsson + + * doc/libidn.texi: Add woody armv4l. + +2003-06-19 Simon Josefsson + + * configure.ac: Bump so version. + +2003-06-19 Simon Josefsson + + * doc/libidn.texi: Tested on debian-sparc64. + +2003-06-19 Simon Josefsson + + * reference/Makefile.am: Ignore idn-int.h. + +2003-06-19 Simon Josefsson + + * Makefile.am: Build e.g. idn before doc/idn.1 is built. + +2003-06-19 Simon Josefsson + + * doc/libidn.texi, punycode.c, punycode.h: GTK-DOC doesn't like enum + return types. + +2003-06-18 Simon Josefsson + + * NEWS: Add. + +2003-06-18 Simon Josefsson + + * Makefile.am: Copy manual from right place. + +2003-06-18 Simon Josefsson + + * THANKS: Add. + +2003-06-18 Simon Josefsson + + * doc/.cvsignore: [no log message] + +2003-06-18 Simon Josefsson + + * Makefile.am, tst_oidna.c: Remove obsolete test (we break backwards + compatibility). + +2003-06-18 Simon Josefsson + + * doc/libidn.texi: Fix. + +2003-06-18 Simon Josefsson + + * idn.c, idna.c, nfkc.c, profiles.c, stringprep.c, toutf8.c, + tst_idna.c, tst_oidna.c, tst_stringprep.c: Indent. + +2003-06-18 Simon Josefsson + + * idn.c, tst_punycode.c: Fix typo. + +2003-06-18 Simon Josefsson + + * Makefile.am, tst_opunycode.c, tst_ostringprep.c: Not needed (new + API backwards compatible). + +2003-06-18 Simon Josefsson + + * tst_punycode.c, tst_stringprep.c: Use uint32_t instead of unsigned + long. + +2003-06-18 Simon Josefsson + + * NEWS: Fix. + +2003-06-18 Simon Josefsson + + * example2.c: Revert to RFC, but use uint32_t and size_t. + +2003-06-18 Simon Josefsson + + * idna.h: Revert last change. + +2003-06-18 Simon Josefsson + + * idna.c: Fixes. + +2003-06-18 Simon Josefsson + + * idna.h: Remove old interfaces. + +2003-06-18 Simon Josefsson + + * example3.c, example4.c, idn.c: Use modern API. + +2003-06-18 Simon Josefsson + + * toutf8.c: Fix warnings. + +2003-06-18 Simon Josefsson + + * idna.c: Use uint32_t instead of unsigned long. New functions + idna_to_ascii_4i, idna_to_unicode_44i, idna_to_ascii_4z, + idna_to_ascii_8z, idna_to_ascii_lz, idna_to_unicode_4z4z, + idna_to_unicode_8z4z, idna_to_unicode_8z8z, idna_to_unicode_8zlz, + idna_to_unicode_lzlz. + +2003-06-18 Simon Josefsson + + * tst_idna.c, tst_oidna.c: Fix. + +2003-06-18 Simon Josefsson + + * idna.h: Fix. + +2003-06-18 Simon Josefsson + + * idna.h: Include stddef.h and idn-int.h. Add IDNA flags. Add new + IDNA entry points. + +2003-06-18 Simon Josefsson + + * NEWS: Add. + +2003-06-18 Simon Josefsson + + * configure.ac: Bump version. + +2003-06-18 Simon Josefsson + + * stringprep.c: Change unsigned long to uint32_t. + +2003-06-18 Simon Josefsson + + * stringprep.h.in: Change unsigned long to uint32_t. Fix enum + definitions. + +2003-06-18 Simon Josefsson + + * internal.h: Remove inttypes/stdint, idn-int.h is used now. + +2003-06-18 Simon Josefsson + + * tst_oidna.c, tst_opunycode.c, tst_ostringprep.c: Add old API + tests. + +2003-06-18 Simon Josefsson + + * .cvsignore: [no log message] + +2003-06-18 Simon Josefsson + + * doc/Makefile.am: Fix. + +2003-06-18 Simon Josefsson + + * Makefile.am, configure.ac, doc/.cvsignore, doc/Makefile.am, + doc/fdl.texi, doc/lgpl.texi, doc/libidn.texi, fdl.texi, lgpl.texi, + libidn.texi: Move manual to doc/. + +2003-06-18 Simon Josefsson + + * Makefile.am: Don't use gdoc. + +2003-06-18 Simon Josefsson + + * nfkc.c: Use uint32_t instead of unsigned long. + +2003-06-18 Simon Josefsson + + * Makefile.am: Get m4's from m4/. Add tst_o*'s. Regenerate + ChangeLog only for releases. + +2003-06-18 Simon Josefsson + + * gen-unicode-tables.pl: Include internal.h for uint32_t and use it. + +2003-06-18 Simon Josefsson + + * punycode.c: Change unsigned long to uint32_t. Use enum + punycode_status return type. Sync with RFC (after indent). + +2003-06-18 Simon Josefsson + + * punycode.h: Include stddef and idn-int.h. Add RFC compatibility + enum punycode_status elements. Change return type to enum + punycode_status. Use uint32_t instead of unsigned long. + +2003-06-18 Simon Josefsson + + * .cvsignore: [no log message] + +2003-06-18 Simon Josefsson + + * Makefile.am, configure.ac, iconv.m4, + m4/ac_compile_check_sizeof.m4, m4/ax_create_stdint_h.m4, + m4/iconv.m4: New idn-int.h for portable fixed size integers. Create + m4/ and move iconv.m4 to it. + +2003-06-12 Simon Josefsson + + * Makefile.am: Remove GNU make specific idiom. + +2003-06-07 Simon Josefsson + + * ChangeLog: [no log message] + +2003-06-07 Simon Josefsson + + * NEWS: Version 0.1.15. + +2003-06-07 Simon Josefsson + + * NEWS: Add. + +2003-06-07 Simon Josefsson + + * configure.ac: Bump version. + +2003-06-07 Simon Josefsson + + * stringprep.c, tst_idna.c, tst_stringprep.c: Remove DRAFT stuff + (moved to separate branch). + +2003-06-06 Simon Josefsson + + * THANKS: Add. Fix. + +2003-06-06 Simon Josefsson + + * idna.c: Handle non-zero terminated inputs. Tiny patch suggested + by Thiago Macieira. + +2003-06-06 Simon Josefsson + + * draft-ietf-xmpp-nodeprep-03.txt, + draft-ietf-xmpp-resourceprep-03.txt: Add. + +2003-06-04 Simon Josefsson + + * THANKS: Add. + +2003-06-04 Simon Josefsson + + * nfkc.c: Check array bounds, tiny patch from Joe Hildebrand. + +2003-06-02 Simon Josefsson + + * ChangeLog: [no log message] + +2003-05-28 Simon Josefsson + + * draft-ietf-ldapbis-strprep-00.txt: Add. + +2003-05-28 Simon Josefsson + + * draft-ietf-sasl-saslprep-02.txt: Add. + +2003-05-10 Simon Josefsson + + * ChangeLog: [no log message] + +2003-05-10 Simon Josefsson + + * NEWS: Version 0.1.14. + +2003-05-10 Simon Josefsson + + * ChangeLog: [no log message] + +2003-05-10 Simon Josefsson + + * contrib/README: Add. + +2003-05-10 Simon Josefsson + + * idna.el, punycode.el: Bind process-environment correctly. + +2003-05-09 Simon Josefsson + + * Makefile.am: Copy doxygen docs. + +2003-05-09 Simon Josefsson + + * draft-ietf-ldapbis-dn-10.txt: Unrealted, mistakenly added. + +2003-05-09 Simon Josefsson + + * NEWS: Add. + +2003-05-09 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Add UTF-8 tests. + +2003-05-09 Simon Josefsson + + * punycode.el: Use process-environment instead of utility env. + Default values of punycode-program, punycode-to-ascii-parameters, + punycode-to-unicode-parameters changed, and punycode-environment + added. Use separate error strings. Handle when idn is not + installed. + +2003-05-09 Simon Josefsson + + * idna.el: Use process-environment instead of utility env. Default + values of idna-program, idna-to-ascii-parameters, + idna-to-unicode-parameters changed, and idna-environment added. Use + separate error strings. + +2003-05-09 Simon Josefsson + + * libidn.texi: Update Emacs Lisp API. Fix toc. + +2003-05-09 Simon Josefsson + + * THANKS: Add. + +2003-05-07 Simon Josefsson + + * idna.el: Handle when idn is not installed. + +2003-05-06 Simon Josefsson + + * draft-ietf-ldapbis-dn-10.txt, draft-ietf-sasl-saslprep-01.txt, + draft-zeilenga-ldapbis-strprep-00.txt: Add. + +2003-04-23 Simon Josefsson + + * NEWS: Add. + +2003-04-23 Simon Josefsson + + * NEWS: Fix NEWS entry of last release (API/ABI compatibility). + +2003-04-23 Simon Josefsson + + * draft-ietf-xmpp-nodeprep-02.txt, + draft-ietf-xmpp-resourceprep-02.txt: Add. + +2003-04-20 Simon Josefsson + + * draft-josefsson-idn-test-vectors-00.txt: Add. + +2003-04-16 Simon Josefsson + + * ANNOUNCE: Mention devices it runs on. + +2003-03-28 Simon Josefsson + + * tst_stringprep.c: Fix bad UTF-8. Self test for bad UTF-8. + +2003-03-26 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Text fixes. + +2003-03-26 Simon Josefsson + + * tst_idna.c, tst_stringprep.c: Fix -DDRAFT output. + +2003-03-26 Simon Josefsson + + * Makefile.am: Dist contrib/doxygen/. + +2003-03-26 Simon Josefsson + + * NEWS: Mention doxygen. + +2003-03-26 Simon Josefsson + + * configure.ac: Build contrib/doxygen/Doxyfile. + +2003-03-26 Simon Josefsson + + * contrib/doxygen/Doxyfile.orig: Add unmodified doxygen + configuration file, for future "diff"s. + +2003-03-26 Simon Josefsson + + * contrib/doxygen/Doxyfile.in: Use PDF hyperlinks. + +2003-03-26 Simon Josefsson + + * gdoc: Add -doxygen. + +2003-03-26 Simon Josefsson + + * internal.h: Add \mainpage for doxygen. + +2003-03-26 Simon Josefsson + + * contrib/README: Mention doxygen. + +2003-03-26 Simon Josefsson + + * contrib/doxygen/.cvsignore, contrib/doxygen/Doxyfile.in, + contrib/doxygen/gdoc2doxygen: Add doxygen template. + +2003-03-23 Simon Josefsson + + * FAQ: Fix. + +2003-03-23 Simon Josefsson + + * configure.ac: Bump versions. + +2003-03-23 Simon Josefsson + + * Makefile.am: Ignore draft.*xml in ChangeLog. + +2003-03-23 Simon Josefsson + + * idn.c: Fix debug prints. + +2003-03-22 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Fix sec cons. + +2003-03-22 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Cosmetic fixes. + +2003-03-22 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Add IDNA stuff. Ack + punycode. + +2003-03-22 Simon Josefsson + + * stringprep.c, tst_stringprep.c: Fixes for -DDRAFT. + +2003-03-22 Simon Josefsson + + * tst_idna.c: Support -DDRAFT. + +2003-03-22 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Editorial fixes. Sync + stringprep table. Fix references. + +2003-03-13 Simon Josefsson + + * ChangeLog: [no log message] + +2003-03-13 Simon Josefsson + + * NEWS: Version 0.1.13. + +2003-03-13 Simon Josefsson + + * libidn.texi: Sync ANNOUNCE. + +2003-03-13 Simon Josefsson + + * configure.ac: Bump so version. + +2003-03-13 Simon Josefsson + + * NEWS: Add. + +2003-03-13 Simon Josefsson + + * ANNOUNCE: Add lingos. + +2003-03-13 Simon Josefsson + + * contrib/java/README: Doc fix. + +2003-03-13 Simon Josefsson + + * Makefile.am: Dist Java stuff. + +2003-03-13 Simon Josefsson + + * contrib/java/README: Doc fix. + +2003-03-13 Simon Josefsson + + * NEWS: Mention Java API. + +2003-03-13 Simon Josefsson + + * contrib/README: Add java/. + +2003-03-13 Simon Josefsson + + * contrib/java/.cvsignore, contrib/java/ExampleIDNA.java, + contrib/java/IDNA.c, contrib/java/IDNA.java, + contrib/java/Makefile.am, contrib/java/README, + contrib/java/autogen.sh, contrib/java/configure.ac: Add JAVA API + proof of concept. + +2003-03-13 Simon Josefsson + + * libidn.texi: Tested on more platforms. + +2003-03-12 Simon Josefsson + + * stringprep.c, tst_stringprep.c: Fix mem leak. + +2003-03-12 Simon Josefsson + + * tst_idna.c: Fix mem leak. + +2003-03-12 Simon Josefsson + + * Makefile.am: Ignore errors instead of using missing for gengetopt. + +2003-03-12 Simon Josefsson + + * configure.ac: Ignore errors instead of using missing for + gengetopt. Bump version. + +2003-03-12 Simon Josefsson + + * libidn.texi: Add platform. + +2003-03-12 Simon Josefsson + + * ANNOUNCE: Spec update. + +2003-03-10 Simon Josefsson + + * Makefile.am: Cvs2cl ignore contrib. + +2003-03-10 Simon Josefsson + + * Makefile.am: Use cvs2cl's new --FSF. + +2003-03-10 Simon Josefsson + + * contrib/web/idn.php: Text fix. + +2003-03-10 Simon Josefsson + + * contrib/web/idn.php: Text fixes. Remove ASCII incompatible + encodings. + +2003-03-09 Simon Josefsson + + * contrib/web/idn.php: Use UTF-8 by default. Text fixes. Change + ascii and sjis charsets. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Don't reset data. Use iconv charsets. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Cleanup. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Fix text. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Fix charset. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Fix text. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Make charset selection clearer. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Fix HTML, based on Martin Duerst's + suggestions. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Use valid HTML. + +2003-03-08 Simon Josefsson + + * contrib/web/idn.php: Add. + +2003-03-08 Simon Josefsson + + * example2.c, punycode.c, punycode.h: Sync with RFC. + +2003-03-08 Simon Josefsson + + * draft-zeilenga-ldapbis-strmatch-02.txt: Add. + +2003-03-08 Simon Josefsson + + * draft-ietf-idn-idna-14.txt, draft-ietf-idn-nameprep-11.txt, + draft-ietf-idn-punycode-03.txt, rfc3490.txt, rfc3491.txt, + rfc3492.txt: Replace drafts with RFCs. + +2003-03-07 Simon Josefsson + + * README-alpha: Mention more prereqs. + +2003-03-07 Simon Josefsson + + * idna.c: Remove gtk-doc trigger for obsolete functions. + +2003-03-07 Simon Josefsson + + * libidn.texi: Move appendix last. Cleanup @copying. + +2003-03-07 Simon Josefsson + + * Makefile.am: Dist FAQ and contrib/web/idn.php. + +2003-03-07 Simon Josefsson + + * README: Add. Move todo list to TODO. + +2003-03-07 Simon Josefsson + + * TODO: Add, taken from README. + +2003-03-06 Simon Josefsson + + * libidn.texi: ANNOUNCE sync. + +2003-03-06 Simon Josefsson + + * ANNOUNCE: Cleanup. + +2003-03-06 Simon Josefsson + + * FAQ: Update questions and answers. + +2003-03-06 Simon Josefsson + + * FAQ: Moved faq from file README. + +2003-03-06 Simon Josefsson + + * README: Move faq to file FAQ. Add donation info. Update todo's. + +2003-03-06 Simon Josefsson + + * contrib/web/idn.php: Security fix. + +2003-03-06 Simon Josefsson + + * NEWS: Add forgotten 0.1.12 items. + +2003-03-06 Simon Josefsson + + * contrib/web/idn.php: Typo. + +2003-03-06 Simon Josefsson + + * contrib/web/idn.php: Add debug. + +2003-03-06 Simon Josefsson + + * draft-ietf-ips-iscsi-string-prep-03.txt, + draft-ietf-krb-wg-utf8-profile-00.txt: Remove. + +2003-03-06 Simon Josefsson + + * ChangeLog: [no log message] + +2003-03-06 Simon Josefsson + + * NEWS: Version 0.1.12. + +2003-03-06 Simon Josefsson + + * libidn.texi: Remove stringprep_*.h. Document stringprep in idn. + +2003-03-06 Simon Josefsson + + * THANKS: Add. + +2003-03-06 Simon Josefsson + + * libc/README: Fix ace. + +2003-03-06 Simon Josefsson + + * contrib/web/idn.php: Add errors. + +2003-03-06 Simon Josefsson + + * contrib/web/idn.php: Support stringprep. + +2003-03-06 Simon Josefsson + + * Makefile.am: Ignore gengetopt errors. + +2003-03-06 Simon Josefsson + + * draft-ietf-xmpp-nodeprep-00.txt, + draft-ietf-xmpp-resourceprep-00.txt: Remove. + +2003-03-06 Simon Josefsson + + * idn.c, idn.ggo.in: Add -s and -p for stringprep. + +2003-03-06 Simon Josefsson + + * NEWS: Mention stringprep API changes. + +2003-03-06 Simon Josefsson + + * profiles.c, stringprep.c, stringprep.h.in, tst_stringprep.c: Add + stringprep_profile(). + +2003-03-06 Simon Josefsson + + * reference/Makefile.am: Cosmetic fix. + +2003-03-06 Simon Josefsson + + * NEWS, example.c, internal.h, profiles.c, reference/Makefile.am, + reference/libidn-docs.tmpl, stringprep.h.in, stringprep_generic.h, + stringprep_iscsi.h, stringprep_kerberos5.h, stringprep_nameprep.h, + stringprep_plain.h, stringprep_xmpp.h: Deprecate stringprep_*.h. + +2003-03-06 Simon Josefsson + + * draft-ietf-ips-iscsi-string-prep-04.txt, + draft-ietf-krb-wg-utf8-profile-01.txt: Add. + +2003-03-04 Simon Josefsson + + * README-alpha: Fixup. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix typo. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Reorder. Add errors. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Add examples. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix ct. Add example. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Add example. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Examples. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fix typos. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Move examples to bottom. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Add examples. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Bug reporting. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Fixes. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Charset fixes. + +2003-03-02 Simon Josefsson + + * NEWS: Mention idn.php. + +2003-03-02 Simon Josefsson + + * contrib/README: Add. + +2003-03-02 Simon Josefsson + + * contrib/web/idn.php: Add. + +2003-03-01 Simon Josefsson + + * configure.ac: Check for gengetopt. + +2003-03-01 Simon Josefsson + + * Makefile.am: Use GENGETOPT. + +2003-03-01 Simon Josefsson + + * NEWS: Add glibc 2.3.2. + +2003-03-01 Simon Josefsson + + * configure.ac: Bump version. + +2003-03-01 Simon Josefsson + + * libc/README, libc/Versions, libc/getaddrinfo.c, libc/libc.patch: + Update to libc 2.3.2. + +2003-02-28 Simon Josefsson + + * NEWS: Add. + +2003-02-27 Simon Josefsson + + * libidn.texi: Copying conditions. + +2003-02-27 Simon Josefsson + + * profiles.c: Add SASLprep. + +2003-02-27 Simon Josefsson + + * stringprep.h.in: Add SASL profile. + +2003-02-27 Simon Josefsson + + * tst_stringprep.c: Test SASL profile. + +2003-02-27 Simon Josefsson + + * Makefile.am: Don't byte compile elisp. Cleanup EXTRA_DIST. + +2003-02-27 Simon Josefsson + + * idn.ggo.in: Add copyright. + +2003-02-27 Simon Josefsson + + * draft-ietf-sasl-saslprep-00.txt: Add. + +2003-02-27 Simon Josefsson + + * libidn.texi: Don't ack self. + +2003-02-26 Simon Josefsson + + * Makefile.am: Cleanup extra dist. + +2003-02-26 Simon Josefsson + + * Makefile.am: Make idn.c depend on idn_cmd.*. + +2003-02-26 Simon Josefsson + + * reference/Makefile.am: Ignore getopt.h. + +2003-02-26 Simon Josefsson + + * idna.el, punycode.el: Doc fix. + +2003-02-26 Simon Josefsson + + * libidn.texi: Reorder acks. Add function and variable index. + +2003-02-26 Simon Josefsson + + * fdl.texi, lgpl.texi: Fix TOC. + +2003-02-26 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-26 Simon Josefsson + + * NEWS: Version 0.1.11. + +2003-02-26 Simon Josefsson + + * Makefile.am: Distcheck fixes. + +2003-02-26 Simon Josefsson + + * libidn.texi: Document Emacs API. + +2003-02-26 Simon Josefsson + + * .cvsignore: [no log message] + +2003-02-26 Simon Josefsson + + * configure.ac: Bump versions. Look for help2man. + +2003-02-26 Simon Josefsson + + * Makefile.am: Build idn.1 man page. + +2003-02-26 Simon Josefsson + + * libidn.texi: Document idn. + +2003-02-26 Simon Josefsson + + * idna.el: Mention todo. + +2003-02-26 Simon Josefsson + + * Makefile.am: Build idna.el. + +2003-02-26 Simon Josefsson + + * idna.el: Elisp interface for IDNA. + +2003-02-26 Simon Josefsson + + * punycode.el: Add keywords. + +2003-02-26 Simon Josefsson + + * punycode.el: Fix doc. + +2003-02-26 Simon Josefsson + + * .cvsignore: [no log message] + +2003-02-26 Simon Josefsson + + * configure.ac: Add automake elisp check. + +2003-02-26 Simon Josefsson + + * Makefile.am: Add punycode.el. + +2003-02-26 Simon Josefsson + + * punycode.el: Elisp interface for punycode. + +2003-02-26 Simon Josefsson + + * Makefile.am: Fix gengetopt invocation. + +2003-02-26 Simon Josefsson + + * idn.c: Print help on usage error. Minor cleanup. + +2003-02-26 Simon Josefsson + + * idn.ggo.in: Fix package/version name. + +2003-02-26 Simon Josefsson + + * idn.ggo.in: Shorten line <80ch. + +2003-02-26 Simon Josefsson + + * .cvsignore: [no log message] + +2003-02-26 Simon Josefsson + + * getopt.c, getopt.h, getopt1.c: Add. + +2003-02-26 Simon Josefsson + + * configure.ac: Link with getopt if system doesn't have + getopt_long(). Build idn.ggo. + +2003-02-26 Simon Josefsson + + * Makefile.am: Build idn. + +2003-02-26 Simon Josefsson + + * idn.ggo.in: Add command line option specification for idn.c. + +2003-02-26 Simon Josefsson + + * idn.c: Add command line interface to library. + +2003-02-25 Simon Josefsson + + * draft-ietf-xmpp-nodeprep-01.txt, + draft-ietf-xmpp-resourceprep-01.txt: Add. + +2003-02-21 Simon Josefsson + + * profiles.c: NFKC XMPP resourceprep. + +2003-02-21 Simon Josefsson + + * profiles.c: NFKC XMPP nodeprep. + +2003-02-21 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-21 Simon Josefsson + + * NEWS: Version 0.1.10. + +2003-02-21 Simon Josefsson + + * reference/Makefile.am: Distribute libidn-stringprep-iscsi.html. + +2003-02-21 Simon Josefsson + + * idna.c: Doc fix. + +2003-02-21 Simon Josefsson + + * NEWS, idna.c, idna.h: Deprecate idna_*_to_ace() and + idna_*ace_to_*(). Add idna_to_ascii_from_*() and + idna_to_unicode_*_from_*(). + +2003-02-21 Simon Josefsson + + * Makefile.am: Make release project independent. + +2003-02-21 Simon Josefsson + + * NEWS: Add. + +2003-02-21 Simon Josefsson + + * ANNOUNCE, Makefile.am, README, internal.h, libidn.texi, + profiles.c, reference/dummy.c, reference/libidn-docs.tmpl, + stringprep_iscsi.h, tst_stringprep.c: Add iSCSI profile. + +2003-02-21 Simon Josefsson + + * NEWS: Add. + +2003-02-20 Simon Josefsson + + * configure.ac: Bump versions. + +2003-02-20 Simon Josefsson + + * NEWS: Add. + +2003-02-20 Simon Josefsson + + * Makefile.am: Distribute contrib/*. + +2003-02-20 Simon Josefsson + + * contrib/README: Describe contents of contrib/. + +2003-02-20 Simon Josefsson + + * contrib/idn-python/Makefile, contrib/idn-python/README, + contrib/idn-python/idn.c, contrib/idn-python/test.py: Add Stephane + Bortzmeyer's python interface. + +2003-02-20 Simon Josefsson + + * Makefile.am: Install punycode.h. + +2003-02-20 Simon Josefsson + + * Makefile.am: Install idna.h, tiny patch from Stephane Bortzmeyer. + +2003-02-20 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-20 Simon Josefsson + + * NEWS: Version 0.1.9. + +2003-02-20 Simon Josefsson + + * reference/libidn-docs.tmpl: Include stringprep_plain.sgml. + +2003-02-20 Simon Josefsson + + * reference/Makefile.am: Add libidn-stringprep-plain.html. + +2003-02-20 Simon Josefsson + + * reference/.cvsignore: [no log message] + +2003-02-20 Simon Josefsson + + * libidn.texi: Fix last commit. + +2003-02-20 Simon Josefsson + + * libidn.texi: Mention stringprep_plain.h. + +2003-02-20 Simon Josefsson + + * reference/dummy.c: Add stringprep_plain. + +2003-02-20 Simon Josefsson + + * profiles.c: Don't case fold XMPP resources. + +2003-02-20 Simon Josefsson + + * profiles.c: Really fix XMPP definition. + +2003-02-20 Simon Josefsson + + * Makefile.am: Add stringprep_plain.h. + +2003-02-20 Simon Josefsson + + * configure.ac: Bump versions. + +2003-02-20 Simon Josefsson + + * libidn.texi: Sync ANNOUNCE. + +2003-02-20 Simon Josefsson + + * ANNOUNCE: Mention SASL "plain". + +2003-02-20 Simon Josefsson + + * NEWS: Add. + +2003-02-20 Simon Josefsson + + * tst_stringprep.c: Remove broken XMPP tests. Add SASL test. + +2003-02-20 Simon Josefsson + + * draft-ietf-sasl-anon-00.txt: Add. + +2003-02-20 Simon Josefsson + + * internal.h: Include stringprep_plain.h. + +2003-02-20 Simon Josefsson + + * profiles.c: Add stringprep_plain for SASL ANONYMOUS plain profile. + +2003-02-20 Simon Josefsson + + * profiles.c: Fix XMPP definition. + +2003-02-20 Simon Josefsson + + * stringprep_plain.h: New file. + +2003-02-19 Simon Josefsson + + * NEWS: Add. + +2003-02-19 Simon Josefsson + + * THANKS: Add. + +2003-02-19 Simon Josefsson + + * profiles.c: Don't normalize or map ASCII space for XMPP nodeprep. + Tiny patch from Travis Shirk . + +2003-02-18 Simon Josefsson + + * README: Add. + +2003-02-15 Simon Josefsson + + * idna.c: Make sure decoded punycode data is zero terminated. + +2003-02-15 Simon Josefsson + + * tst_idna.c: Fix memory leak. + +2003-02-15 Simon Josefsson + + * idna.c: Fix memory leaks. Waste less memory. + +2003-02-15 Simon Josefsson + + * idna.c: Fix memory leak. + +2003-02-14 Simon Josefsson + + * tst_stringprep.c: Fix. + +2003-02-14 Simon Josefsson + + * nfkc.c: Fix typo. + +2003-02-14 Simon Josefsson + + * stringprep.c: Fix maplen calculation. + +2003-02-14 Simon Josefsson + + * stringprep.c: Fix gcc warnings. + +2003-02-14 Simon Josefsson + + * stringprep.c, stringprep.h.in: Change STRINGPREP_MAX_MAP_CHARS to + 4 to waste less space. + +2003-02-14 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-14 Simon Josefsson + + * NEWS: Version 0.1.8. + +2003-02-14 Simon Josefsson + + * Makefile.am: GTK-DOC fix. + +2003-02-13 Simon Josefsson + + * libidn.texi: Update port status. + +2003-02-13 Simon Josefsson + + * configure.ac: Use = instead of == as test operator. + +2003-02-13 Simon Josefsson + + * example2.c, stringprep.c: Use size_t for string lengths. + +2003-02-13 Simon Josefsson + + * example2.c: Revert missing-noreturn fix. + +2003-02-13 Simon Josefsson + + * idna.c: Use size_t for string lengths. + +2003-02-13 Simon Josefsson + + * Makefile.am, configure.ac: Condition GTK-DOC and disable by + default. + +2003-02-13 Simon Josefsson + + * reference/.cvsignore: [no log message] + +2003-02-13 Simon Josefsson + + * reference/tmpl/.cvsignore: Remove. + +2003-02-13 Simon Josefsson + + * configure.ac, reference/Makefile.am, reference/libidn-docs.sgml, + reference/libidn-docs.tmpl, reference/libidn.types, + reference/tmpl/idna.sgml, reference/tmpl/punycode.sgml, + reference/tmpl/stringprep.sgml, + reference/tmpl/stringprep_generic.sgml, + reference/tmpl/stringprep_kerberos5.sgml, + reference/tmpl/stringprep_nameprep.sgml, + reference/tmpl/stringprep_xmpp.sgml: Cleanup gtk-doc build. + +2003-02-12 Simon Josefsson + + * profiles.c: Zero terminate XMPP array. + +2003-02-12 Simon Josefsson + + * configure.ac: Bump version (both shared library and package). + +2003-02-12 Simon Josefsson + + * NEWS: Add. + +2003-02-12 Simon Josefsson + + * example.c, example2.c, gen-unicode-tables.pl, idna.c, internal.h, + nfkc.c, punycode.c, stringprep.c, stringprep.h.in, toutf8.c, + tst_idna.c, tst_nfkc.c, tst_punycode.c, tst_stringprep.c: Fix CFLAGS + warnings. + +2003-02-12 Simon Josefsson + + * example3.c, example4.c: Fix CFLAGS warnings. Use official IDNA + ACE prefix. + +2003-02-12 Simon Josefsson + + * tst_stringprep.c: Cleanups for including as appendix in draft. + +2003-02-12 Simon Josefsson + + * draft-josefsson-idn-test-vectors.xml: Add preliminary version. + +2003-02-12 Simon Josefsson + + * profiles.c: Don't optimize prohibited output tables (better trace + logs). + +2003-02-12 Simon Josefsson + + * tst_stringprep.c: More self tests. More debug info. + +2003-02-12 Simon Josefsson + + * stringprep.c: More debug output. + +2003-02-12 Simon Josefsson + + * : Official results. + +2003-02-12 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-12 Simon Josefsson + + * Makefile.am: Improve release target. + +2003-02-12 Simon Josefsson + + * Makefile.am: Add release target. + +2003-02-12 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-12 Simon Josefsson + + * NEWS, configure.ac: Version 0.1.7. + +2003-02-12 Simon Josefsson + + * tst_idna.c: Fix IDNA ACE prefix. + +2003-02-12 Simon Josefsson + + * idna.h: Use official IDNA prefix. + +2003-02-11 Simon Josefsson + + * ChangeLog: [no log message] + +2003-02-11 Simon Josefsson + + * Makefile.am: Add upload target. + +2003-02-11 Simon Josefsson + + * tst_idna.c: Use new IDNA ACE prefix. + +2003-02-11 Simon Josefsson + + * ChangeLog: Update. + +2003-02-11 Simon Josefsson + + * NEWS, configure.ac: Version 0.1.6. + +2003-02-11 Simon Josefsson + + * : Add my computation. + +2003-02-11 Simon Josefsson + + * idna.h: Chose IDNA prefix based on my computation. + +2003-02-09 Simon Josefsson + + * internal.h: Fix header. + +2003-02-09 Simon Josefsson + + * stringprep.h.in: Fix. + +2003-02-09 Simon Josefsson + + * draft-ietf-ips-iscsi-string-prep-03.txt: Add. + +2003-02-09 Simon Josefsson + + * profiles.c: Indent. + +2003-02-09 Simon Josefsson + + * autogen.sh: Don't run configure. + +2003-02-09 Simon Josefsson + + * Makefile.am: Fix cvs2cl. + +2003-02-07 Simon Josefsson + + * README: Fix. + +2003-02-07 Simon Josefsson + + * reference/libidn-docs.sgml: Reorder. + +2003-02-07 Simon Josefsson + + * reference/libidn-docs.sgml: Reorder. + +2003-02-07 Simon Josefsson + + * README-alpha: Add build instructions. + +2003-02-07 Simon Josefsson + + * autogen.sh: Fix. + +2003-02-07 Simon Josefsson + + * reference/tmpl/stringprep_xmpp.sgml: Generated. + +2003-02-07 Simon Josefsson + + * libidn.texi, reference/dummy.c: Add XMPP. + +2003-02-07 Simon Josefsson + + * reference/libidn-docs.sgml: Include xmpp. + +2003-02-07 Simon Josefsson + + * NEWS, reference/tmpl/stringprep_xmpp.sgml: Add. + +2003-02-07 Simon Josefsson + + * reference/libidn-docs.sgml: Update (from ANNOUNCE). + +2003-02-07 Simon Josefsson + + * profiles.c: Use table C.8 for bidi prohibited instead of C.9. + +2003-02-07 Simon Josefsson + + * Makefile.am, draft-ietf-xmpp-nodeprep-00.txt, + draft-ietf-xmpp-resourceprep-00.txt, internal.h, profiles.c, + stringprep_xmpp.h, tst_stringprep.c: Support XMPP. + +2003-02-07 Simon Josefsson + + * draft-ietf-krb-wg-utf8-profile-00.txt: Add. + +2003-02-07 Simon Josefsson + + * ANNOUNCE: Fix. + +2003-02-07 Simon Josefsson + + * stringprep_generic.h, stringprep_kerberos5.h, + stringprep_nameprep.h: Name fix. + +2003-02-05 Simon Josefsson + + * libc/README: Fix. + +2003-01-31 Simon Josefsson + + * tst_idna.c, tst_punycode.c: Indent. + +2003-01-31 Simon Josefsson + + * tst_punycode.c: Indent. + +2003-01-31 Simon Josefsson + + * example3.c, example4.c, idna.c, stringprep.c, toutf8.c, + tst_idna.c, tst_punycode.c: Indent. + +2003-01-30 Simon Josefsson + + * ANNOUNCE: Fix. + +2003-01-30 Simon Josefsson + + * libidn.texi: Typo. + +2003-01-29 Simon Josefsson + + * ANNOUNCE: Mention libc. + +2003-01-28 Simon Josefsson + + * libc/README: Typo. + +2003-01-28 Simon Josefsson + + * reference/Makefile.am: Really ignore netdb.h. + +2003-01-28 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-28 Simon Josefsson + + * configure.ac: Release 0.1.5. + +2003-01-28 Simon Josefsson + + * Makefile.am: Dist libc/*. + +2003-01-28 Simon Josefsson + + * reference/Makefile.am: Ignore netdb.h. + +2003-01-28 Simon Josefsson + + * libc/README: Fix. + +2003-01-28 Simon Josefsson + + * libc/README: Fix. + +2003-01-28 Simon Josefsson + + * libc/README: Add. + +2003-01-28 Simon Josefsson + + * NEWS, libc/.cvsignore, libc/Makefile, libc/README, libc/Versions, + libc/configure, libc/example.c, libc/getaddrinfo.c, + libc/libc.patch, libc/netdb.h: Libidn as libc add-on. + +2003-01-28 Simon Josefsson + + * .cvsignore: [no log message] + +2003-01-28 Simon Josefsson + + * idna.c, idna.h: Return new error code IDNA_ICONV_ERROR instead of + crashing when character set conversion fails. + +2003-01-28 Simon Josefsson + + * toutf8.c: Fix prototype. Move unused parameter unless + LOCALE_WORKS. + +2003-01-28 Simon Josefsson + + * internal.h: Work from within GNU Libc. + +2003-01-27 Simon Josefsson + + * THANKS: Add ack. + +2003-01-27 Simon Josefsson + + * libidn.texi: Point to THANKS for more acks. + +2003-01-27 Simon Josefsson + + * idna.c: Fix possible memory corruption. Noncopyrightable patch + from Waldo Bastian . + +2003-01-27 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-20 Simon Josefsson + + * configure.ac: Change bug email address. + +2003-01-18 Simon Josefsson + + * Makefile.am: Generate ChangeLog with --no-times. + +2003-01-15 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-15 Simon Josefsson + + * ChangeLog, NEWS, configure.ac: Release 0.1.4. + +2003-01-15 Simon Josefsson + + * toutf8.c: Fix functions on bad platforms. + +2003-01-15 Simon Josefsson + + * stringprep.c: Add comment. + +2003-01-15 Simon Josefsson + + * tst_idna.c: Test step 5 in ToASCII. + +2003-01-15 Simon Josefsson + + * idna.c, idna.h: Fix ToASCII(). + +2003-01-15 Simon Josefsson + + * libidn.texi: Fix copyright. + +2003-01-15 Simon Josefsson + + * libidn.texi: Fix dir entry. + +2003-01-15 Simon Josefsson + + * Makefile.am: Use automake's ps and pdf texinfo targets. Remove + txt texinfo target. + +2003-01-15 Simon Josefsson + + * Makefile.am: EXTRA_DIST lgplg.texi. Disable GTK-DOC for distcheck + builds (doesn't work). + +2003-01-15 Simon Josefsson + + * reference/Makefile.am: Add uninstall target. Fix distcheck + builds. + +2003-01-15 Simon Josefsson + + * lgpl.texi, libidn.texi: Add acknowledgements, lgpl. + +2003-01-15 Simon Josefsson + + * .cvsignore: [no log message] + +2003-01-15 Simon Josefsson + + * Makefile.am, configure.ac, example.c, example2.c, idna.c, idna.h, + libidn.texi, nfkc.c, profiles.c, punycode.c, punycode.h, + stringprep.c, stringprep.h.in, toutf8.c, tst_idna.c, tst_nfkc.c, + tst_punycode.c, tst_stringprep.c, version.c: Comment cleanup. + +2003-01-15 Simon Josefsson + + * .cvsignore: [no log message] + +2003-01-15 Simon Josefsson + + * Makefile.am, reference/dummy.c: Improve texinfo manual. + +2003-01-15 Simon Josefsson + + * stringprep.c: Add doc. + +2003-01-15 Simon Josefsson + + * libidn.texi: Add. + +2003-01-15 Simon Josefsson + + * README: Remove API documentation. + +2003-01-15 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-15 Simon Josefsson + + * NEWS, configure.ac: Release 0.1.3. + +2003-01-15 Simon Josefsson + + * .cvsignore, Makefile.am, fdl.texi, gdoc, libidn.texi: Add texinfo + manual. + +2003-01-15 Simon Josefsson + + * example2.c: Fix for texinfiscation. + +2003-01-15 Simon Josefsson + + * nfkc.c: Doc fixes. + +2003-01-08 Simon Josefsson + + * README-alpha: Add. + +2003-01-08 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-08 Simon Josefsson + + * NEWS, configure.ac: Release 0.1.2. + +2003-01-08 Simon Josefsson + + * example4.c, reference/tmpl/idna.sgml: Fix. + +2003-01-08 Simon Josefsson + + * .cvsignore, Makefile.am, example3.c, example4.c, idna.c, idna.h, + stringprep.h.in, toutf8.c: IDNA high-level API. + +2003-01-08 Simon Josefsson + + * reference/tmpl/idna.sgml, reference/tmpl/stringprep.sgml: Add. + +2003-01-08 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-08 Simon Josefsson + + * NEWS, configure.ac: Release 0.1.1. + +2003-01-08 Simon Josefsson + + * reference/Makefile.am: dist dummy.c. + +2003-01-08 Simon Josefsson + + * autogen.sh: Run configure. + +2003-01-08 Simon Josefsson + + * reference/tmpl/.cvsignore, reference/tmpl/idna.sgml, + reference/tmpl/punycode.sgml, reference/tmpl/stringprep.sgml, + reference/tmpl/stringprep_generic.sgml, + reference/tmpl/stringprep_kerberos5.sgml, + reference/tmpl/stringprep_nameprep.sgml: Fix. + +2003-01-08 Simon Josefsson + + * reference/Makefile.am, reference/tmpl/idna.sgml, + reference/tmpl/punycode.sgml, reference/tmpl/stringprep.sgml, + reference/tmpl/stringprep_generic.sgml, + reference/tmpl/stringprep_kerberos5.sgml, + reference/tmpl/stringprep_nameprep.sgml: Add templates. Don't parse + internal.h + +2003-01-08 Simon Josefsson + + * reference/libidn-docs.sgml: Add ANNOUNCE text. + +2003-01-08 Simon Josefsson + + * reference/dummy.c: Add. + +2003-01-08 Simon Josefsson + + * toutf8.c, version.c: Doc fix. + +2003-01-08 Simon Josefsson + + * idna.c, stringprep.c: Doc fix. + +2003-01-08 Simon Josefsson + + * nfkc.c, stringprep.c, version.c: Add GTK-DOC documentation. + +2003-01-08 Simon Josefsson + + * reference/Makefile.am, reference/dummy.c: Dummy GTK-DOC C file + with documentation for #define macros. + +2003-01-08 Simon Josefsson + + * stringprep.h.in: GTK-DOC fixes. + +2003-01-08 Simon Josefsson + + * toutf8.c: Add GTK-DOC documentation. + +2003-01-08 Simon Josefsson + + * reference/.cvsignore: [no log message] + +2003-01-08 Simon Josefsson + + * punycode.c: Add GTK-DOC documentation. + +2003-01-08 Simon Josefsson + + * Makefile.am, configure.ac, reference/Makefile.am, + reference/libidn-docs.sgml, reference/libidn.types: Add API + Reference Manual. + +2003-01-05 Simon Josefsson + + * ChangeLog: [no log message] + +2003-01-05 Simon Josefsson + + * configure.ac: Release 0.1.0. + +2003-01-05 Simon Josefsson + + * Makefile.am: Fix ChangeLog in distcheck. + +2003-01-05 Simon Josefsson + + * README, README-alpha: Fix. + +2003-01-05 Simon Josefsson + + * Makefile.am, idna.h: Add. + +2003-01-05 Simon Josefsson + + * tst_idna.c: Check idna_to_unicode(). + +2003-01-05 Simon Josefsson + + * idna.c: Fix. + +2003-01-05 Simon Josefsson + + * tst_punycode.c: Check decoding. + +2003-01-05 Simon Josefsson + + * README-alpha: Add. + +2003-01-04 Simon Josefsson + + * ANNOUNCE: Fix. + +2003-01-03 Simon Josefsson + + * README-alpha: Rename. + +2003-01-03 Simon Josefsson + + * NEWS: Fix. + +2003-01-03 Simon Josefsson + + * Makefile.am: Build IDNA. + +2003-01-03 Simon Josefsson + + * AUTHORS: Rename. + +2003-01-03 Simon Josefsson + + * ANNOUNCE, NEWS: Fix. + +2003-01-03 Simon Josefsson + + * .cvsignore, README, idna.c, idna.h, internal.h, tst_idna.c: Add + unfinished old IDNA stuff. + +2003-01-03 Simon Josefsson + + * libidn.pc.in: Rename and fix. + +2003-01-03 Simon Josefsson + + * README: Rename. + +2003-01-03 Simon Josefsson + + * THANKS, draft-ietf-idn-idna-14.txt, + draft-ietf-idn-nameprep-11.txt: Add. + +2003-01-03 Simon Josefsson + + * Makefile.am, THANKS, configure.ac: Rename. + +2003-01-03 Simon Josefsson + + * libidn.pc.in, libstringprep.pc.in: Rename libstringprep.pc.in to + libidn.pc.in. + +2003-01-02 Simon Josefsson + + * Makefile.am, draft-hoffman-stringprep-07.txt, + gen-stringprep-tables.pl, rfc3454.txt: Use rfc3454.txt instead of + draft-hoffman-stringprep-07.txt. + +2002-12-26 Simon Josefsson + + * ANNOUNCE: Fix. + +2002-12-26 Simon Josefsson + + * ANNOUNCE: Cleanup. + +2002-12-26 Simon Josefsson + + * ANNOUNCE: Initiate name change for savannah project registration. + +2002-12-26 Simon Josefsson + + * tst_punycode.c: Fixes. + +2002-12-26 Simon Josefsson + + * tst_stringprep.c: Fix. + +2002-12-26 Simon Josefsson + + * README-alpha: Add. + +2002-12-26 Simon Josefsson + + * ANNOUNCE: Fix. + +2002-12-26 Simon Josefsson + + * ANNOUNCE: Fix. + +2002-12-19 Simon Josefsson + + * .cvsignore, Makefile.am, NEWS, configure.ac, + draft-ietf-idn-punycode-03.txt, example.c, example2.c, internal.h, + nfkc.c, punycode.c, punycode.h, stringprep.c, stringprep.h.in, + tst_punycode.c: Add punycode. Use "unsigned long" for Unicode code + points. Copying condition fixes. Fixes. + +2002-12-14 Simon Josefsson + + * Makefile.am: Make sure ChangeLog is regenerated. + +2002-12-13 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-13 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-13 Simon Josefsson + + * NEWS, configure.ac: Release 0.0.8. + +2002-12-13 Simon Josefsson + + * AUTHORS, Makefile.am, NEWS, README, THANKS, configure.ac, + internal.h, libstringprep.pc.in, strdup.c, stringprep.c, + stringprep_generic.h, stringprep_kerberos5.h, + stringprep_nameprep.h, toutf8.c, tst_nfkc.c, tst_stringprep.c: + Portability fixes. + +2002-12-13 Simon Josefsson + + * Makefile.am: Link with libiconv. + +2002-12-10 Simon Josefsson + + * stringprep.c: Don't use uint32_t in one odd place. + +2002-12-10 Simon Josefsson + + * autogen.sh: [no log message] + +2002-12-10 Simon Josefsson + + * stringprep.c: Flawfinder. + +2002-12-10 Simon Josefsson + + * toutf8.c: Fix. + +2002-12-10 Simon Josefsson + + * stringprep.h.in: Remove comma on last enum entry. + +2002-12-09 Simon Josefsson + + * tst_nfkc.c: Fix memory leak. + +2002-12-09 Simon Josefsson + + * autogen.sh: Suggest dmalloc. + +2002-12-09 Simon Josefsson + + * configure.ac, internal.h, stringprep.c: Use dmalloc. Fix memory + leak when bidi fails. + +2002-12-09 Simon Josefsson + + * tst_stringprep.c: Check version. + +2002-12-09 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-09 Simon Josefsson + + * NEWS, configure.ac: Release 0.0.7 (version 0.0.6 was abandoned). + +2002-12-09 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-09 Simon Josefsson + + * configure.ac: Release 0.0.6. + +2002-12-09 Simon Josefsson + + * tst_stringprep.c: Check all upper string case mapping. + +2002-12-09 Simon Josefsson + + * stringprep.c: Apply table until it can't be applied any longer. + +2002-12-07 Simon Josefsson + + * tst_stringprep.c: Add nameprep vector. + +2002-12-07 Simon Josefsson + + * example.c: Cosmetic fix. + +2002-12-07 Simon Josefsson + + * stringprep.c: Fix printf() format warnings. Fix bidi table for + loop (affected only nameprep). + +2002-12-07 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-07 Simon Josefsson + + * NEWS: Release 0.0.5. + +2002-12-07 Simon Josefsson + + * Makefile.am, configure.ac: Add memset.c, an AC_LIBOBJ. + +2002-12-07 Simon Josefsson + + * memset.c: An AC_LIBOBJ, from gnulib. + +2002-12-07 Simon Josefsson + + * profiles.c, stringprep.c, stringprep.h.in: Indent. + +2002-12-07 Simon Josefsson + + * README: Use new types. + +2002-12-07 Simon Josefsson + + * profiles.c, stringprep.c, stringprep.h.in, tst_stringprep.c: + Fixes. + +2002-12-07 Simon Josefsson + + * profiles.c, stringprep.c, tst_stringprep.c: Fix bidi code and add + self tests. + +2002-12-07 Simon Josefsson + + * gen-stringprep-tables.pl, profiles.c, stringprep.c, + stringprep.h.in, stringprep_generic.h, stringprep_kerberos5.h, + stringprep_nameprep.h, tst_stringprep.c: Clean up internal profiling + definitions. + +2002-12-06 Simon Josefsson + + * example.c: Fix typo. + +2002-12-06 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-06 Simon Josefsson + + * configure.ac: Release 0.0.4. + +2002-12-06 Simon Josefsson + + * NEWS, README, profiles.c, stringprep.c, stringprep.h.in, + stringprep_nameprep.h, tst_stringprep.c: Add unassigned code point + handling, and self test. + +2002-12-06 Simon Josefsson + + * tst_stringprep.c: Don't modify constant string during debug. + +2002-12-05 Simon Josefsson + + * ChangeLog: [no log message] + +2002-12-05 Simon Josefsson + + * stringprep.c: Don't use *_fast(). + +2002-12-05 Simon Josefsson + + * Makefile.am: Don't use $< (GNU specific). + +2002-12-03 Simon Josefsson + + * Makefile.am: Portability fixes. + +2002-12-03 Simon Josefsson + + * internal.h, nfkc.c, stringprep.c, toutf8.c, tst_nfkc.c, + tst_stringprep.c, version.c: Simplify the #include-mess. (NULL + wasn't found on alpha-unknown-netbsd1.6) + +2002-11-30 Simon Josefsson + + * autogen.sh: Add --enable-maintainer-mode. + +2002-11-30 Simon Josefsson + + * .cvsignore: [no log message] + +2002-11-30 Simon Josefsson + + * ChangeLog, config.rpath: [no log message] + +2002-11-30 Simon Josefsson + + * NEWS, configure.ac: Release 0.0.3. + +2002-11-30 Simon Josefsson + + * Makefile.am, configure.ac, strdup.c: Add replacement strdup.c for + system's without it. Increment shared library version. Trim + autoconf tests. + +2002-11-30 Simon Josefsson + + * README: Added copying conditions. Added more API documentation. + +2002-11-30 Simon Josefsson + + * THANKS: Add copying conditions. + +2002-11-30 Simon Josefsson + + * AUTHORS: Add copying conditions and public key. + +2002-11-30 Simon Josefsson + + * Makefile.am, example.c, nfkc.c, stringprep.h.in, tst_stringprep.c: + Export stringprep_utf8_to_unichar. Rename stringprep_utf8_to_ucs4_fast to stringprep_utf8_to_ucs4 to + clean up API (old entry maintained for binary backwards + compatibility though). Indent. Add sign make target. + +2002-11-29 Simon Josefsson + + * nfkc.c, profiles.c, toutf8.c: indent + +2002-11-29 Simon Josefsson + + * stringprep.c: improve debugging output + +2002-11-29 Simon Josefsson + + * autogen.sh: pass CFLAGS directly + +2002-11-14 Simon Josefsson + + * .cvsignore: [no log message] + +2002-11-14 Simon Josefsson + + * configure.ac: AC_PROG_RANLIB obsoleted by libtool. + +2002-11-14 Simon Josefsson + + * autogen.sh: Use autoreconf. + +2002-11-07 Simon Josefsson + + * example.c: improve comment + +2002-11-07 Simon Josefsson + + * Makefile.am: add dependency + +2002-11-07 Simon Josefsson + + * ChangeLog: [no log message] + +2002-11-07 Simon Josefsson + + * NEWS, configure.ac: Release 0.0.2. + +2002-11-07 Simon Josefsson + + * toutf8.c: Remove unused variable. + +2002-11-07 Simon Josefsson + + * stringprep.c: Fix memory leak. + +2002-11-07 Simon Josefsson + + * .cvsignore, Makefile.am, tst_nfkc.c, tst_stringprep.c: Add NFKC + self test. + +2002-11-06 Simon Josefsson + + * stringprep.h.in, toutf8.c: Cosmetic fixes. + +2002-11-06 Simon Josefsson + + * ANNOUNCE: Add. + +2002-11-06 Simon Josefsson + + * README: Explain why GLIB is not used. + +2002-11-06 Simon Josefsson + + * ChangeLog: [no log message] + +2002-11-06 Simon Josefsson + + * ChangeLog, Makefile.am, README: Build fixes. + +2002-11-06 Simon Josefsson + + * .cvsignore, Makefile.am, NEWS, README, THANKS, autogen.sh, + configure.ac, example.c, iconv.m4, libstringprep.pc.in, profiles.c, + stringprep.h.in, stringprep_generic.h, stringprep_kerberos5.h, + stringprep_nameprep.h, toutf8.c: Add example. Add toutf8.c. Check + if OS has locale functions. Add -R to pkg-config info file. Moved + profile variables to profile.c from header files. + +2002-11-06 Simon Josefsson + + * ChangeLog: [no log message] + +2002-11-05 Simon Josefsson + + * Initial version. + + ----- + + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + + Copying and distribution of this file, with or without + modification, are permitted provided the copyright notice + and this notice are preserved. diff --git a/FAQ b/FAQ new file mode 100644 index 0000000..e48d4e2 --- /dev/null +++ b/FAQ @@ -0,0 +1,46 @@ +Libidn FAQ -- Anticipated Frequently Asked Questions. +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +Q#1: Why doesn't Libidn use a separate library for the Unicode + operations? + +A#1: Separate libraries (Glib, QT, libiconv) seldom mark the + Unicode tables with the corresponding Unicode version they + implement, nor do they provide a interface where a specific + version can be requested. This violates the stringprep + specification which requires that a specific version must be + used. Also, some of these third party libraries depend on + non-portable behavior (e.g. threads). + +Q#2: Why do Libidn include several stringprep profiles? They waste + space! + +A#2: The stringprep profiles included are usually derived from the + generic stringprep tables, and doesn't waste more than say a few + hundred bytes (see profiles.c). The Unicode normalization tables + and the generic stringprep tables are roughly equivalent in size, + although the latter tables can surely be compressed much further. + They occupy about 100 kilobytes on typical platforms. However, + if in the future several large Stringprep profiles are added, + configure options will be added to help reduce size. + +Q#3: I thought GNU was encouraging libraries to be licensed under the GPL? + +A#3: The reasoning for this was for libraries that provide unique + functionality to encourage more free programs. Since there are + several IDN libraries out there, using the GPL for Libidn would + only encourage people not to use Libidn which would not help the + spread of free software. + +Q#4: How do I add a new stringprep profile? + +A#4: Add the profile definition to profiles.c, export the symbol and + optionally add a CPP macro in stringprep.h (and document it in + stringprep.c). If you want to add self tests, do it through + tst_stringprep.c. Mention it in NEWS. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..33eb3aa --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,127 @@ +# Having a separate GNUmakefile lets me `include' the dynamically +# generated rules created via cfg.mk (package-local configuration) +# as well as maint.mk (generic maintainer rules). +# This makefile is used only if you run GNU Make. +# It is necessary if you want to build targets usually of interest +# only to the maintainer. + +# Copyright (C) 2001, 2003, 2006-2009 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 3 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, see . + +# Systems where /bin/sh is not the default shell need this. The $(shell) +# command below won't work with e.g. stock DOS/Windows shells. +ifeq ($(wildcard /bin/s[h]),/bin/sh) +SHELL = /bin/sh +else +# will be used only with the next shell-test line, then overwritten +# by a configured-in value +SHELL = sh +endif + +# If the user runs GNU make but has not yet run ./configure, +# give them a diagnostic. +_have-Makefile := $(shell test -f Makefile && echo yes) +ifeq ($(_have-Makefile),yes) + +# Make tar archive easier to reproduce. +export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner + +# Allow the user to add to this in the Makefile. +ALL_RECURSIVE_TARGETS = + +include Makefile + +# Some projects override e.g., _autoreconf here. +-include $(srcdir)/cfg.mk +include $(srcdir)/maint.mk + +# Allow cfg.mk to override these. +_build-aux ?= build-aux +_autoreconf ?= autoreconf + +# Ensure that $(VERSION) is up to date for dist-related targets, but not +# for others: rerunning autoreconf and recompiling everything isn't cheap. +_have-git-version-gen := \ + $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes) +ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL)) + _is-dist-target ?= $(filter-out %clean, \ + $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS))) + _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS))) + ifneq (,$(_is-dist-target)$(_is-install-target)) + _curr-ver := $(shell cd $(srcdir) \ + && $(_build-aux)/git-version-gen .tarball-version) + ifneq ($(_curr-ver),$(VERSION)) + ifeq ($(_curr-ver),UNKNOWN) + $(info WARNING: unable to verify if $(VERSION) is the correct version) + else + ifneq (,$(_is-install-target)) + # GNU Coding Standards state that 'make install' should not cause + # recompilation after 'make all'. But as long as changing the version + # string alters config.h, the cost of having 'make all' always have an + # up-to-date version is prohibitive. So, as a compromise, we merely + # warn when installing a version string that is out of date; the user + # should run 'autoreconf' (or something like 'make distcheck') to + # fix the version, 'make all' to propagate it, then 'make install'. + $(info WARNING: version string $(VERSION) is out of date;) + $(info run '$(MAKE) _version' to fix it) + else + $(info INFO: running autoreconf for new version string: $(_curr-ver)) + _dummy := $(shell $(MAKE) $(AM_MAKEFLAGS) _version) + endif + endif + endif + endif +endif + +.PHONY: _version +_version: + cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf) + +else + +.DEFAULT_GOAL := abort-due-to-no-makefile +srcdir = . + +# The package can override .DEFAULT_GOAL to run actions like autoreconf. +-include ./cfg.mk +include ./maint.mk + +ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) +$(MAKECMDGOALS): abort-due-to-no-makefile +endif + +abort-due-to-no-makefile: + @echo There seems to be no Makefile in this directory. 1>&2 + @echo "You must run ./configure before running \`make'." 1>&2 + @exit 1 + +endif + +# Tell version 3.79 and up of GNU make to not build goals in this +# directory in parallel, in case someone tries to build multiple +# targets, and one of them can cause a recursive target to be invoked. + +# Only set this if Automake doesn't provide it. +AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) \ + dist distcheck tags ctags + +ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS) + +ifneq ($(word 2, $(MAKECMDGOALS)), ) +ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), ) +.NOTPARALLEL: +endif +endif diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..2550dab --- /dev/null +++ b/INSTALL @@ -0,0 +1,302 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + 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, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + 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 you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' 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. + + Running `configure' might take a while. 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. + + 6. Often, you can also type `make uninstall' to remove the installed + files again. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +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 can use 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 `..'. + + With a non-GNU `make', it is safer 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. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' 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. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + 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 machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +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. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--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. + +`--prefix=DIR' + Use DIR as the installation prefix. *Note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..44599c1 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,45 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +SUBDIRS = gl lib/gl lib po src gltests lib/gltests tests examples \ + csharp +#java csharp doc + +EXTRA_DIST = cfg.mk maint.mk .clcopying + +ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/gl/m4 +#DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc + +EXTRA_DIST += FAQ libc/README libc/getaddrinfo-idn.txt libc/example.c \ + contrib/README contrib/idn-python/README \ + contrib/idn-python/Makefile contrib/idn-python/idn.c \ + contrib/idn-python/test.py contrib/web/idn.php \ + #contrib/java/README contrib/java/autogen.sh \ + #contrib/java/configure.ac contrib/java/Makefile.am \ + #contrib/java/ExampleIDNA.java contrib/java/IDNA.java \ + #contrib/java/IDNA.c contrib/doxygen/Doxyfile.in \ + #contrib/doxygen/Doxyfile.orig contrib/doxygen/gdoc2doxygen + +# Visual Studio project files. +EXTRA_DIST += win32/libidn.sln win32/libidn.vcproj \ + win32/include/unistd.h win32/include/idn-int.h \ + win32/include/stdbool.h win32/include/ac-stdint.h \ + win32/include/config.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libidn.pc diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..0c2226f --- /dev/null +++ b/Makefile.in @@ -0,0 +1,1114 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/libidn.pc.in \ + $(top_srcdir)/build-aux/csharpcomp.sh.in \ + $(top_srcdir)/configure \ + $(top_srcdir)/contrib/doxygen/Doxyfile.in ABOUT-NLS AUTHORS \ + COPYING COPYING.LIB ChangeLog INSTALL NEWS THANKS TODO \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \ + build-aux/texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = csharpcomp.sh libidn.pc contrib/doxygen/Doxyfile +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = gl lib/gl lib po src gltests lib/gltests tests examples \ + csharp + +#java csharp doc +#DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc + +# Visual Studio project files. +EXTRA_DIST = cfg.mk maint.mk .clcopying FAQ libc/README \ + libc/getaddrinfo-idn.txt libc/example.c contrib/README \ + contrib/idn-python/README contrib/idn-python/Makefile \ + contrib/idn-python/idn.c contrib/idn-python/test.py \ + contrib/web/idn.php #contrib/java/configure.ac \ + contrib/java/Makefile.am #contrib/java/ExampleIDNA.java \ + contrib/java/IDNA.java #contrib/java/IDNA.c \ + contrib/doxygen/Doxyfile.in #contrib/doxygen/Doxyfile.orig \ + contrib/doxygen/gdoc2doxygen win32/libidn.sln \ + win32/libidn.vcproj win32/include/unistd.h \ + win32/include/idn-int.h win32/include/stdbool.h \ + win32/include/ac-stdint.h win32/include/config.h +ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/gl/m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libidn.pc +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +csharpcomp.sh: $(top_builddir)/config.status $(top_srcdir)/build-aux/csharpcomp.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libidn.pc: $(top_builddir)/config.status $(srcdir)/libidn.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +contrib/doxygen/Doxyfile: $(top_builddir)/config.status $(top_srcdir)/contrib/doxygen/Doxyfile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_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 + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgconfigDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-pkgconfigDATA + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..6a59799 --- /dev/null +++ b/NEWS @@ -0,0 +1,1275 @@ +Libidn NEWS -- History of user-visible changes. -*- outline -*- +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +* Version 1.15 (released 2009-06-08) + +** libidn: Use c_strcasecmp instead of strcasecmp. +For portability to NetWare CLIB. The specification requires a ASCII +comparison, so it is also more appropriate to use c_strcasecmp. +Reported by Guenter Knauf . + +** java: Fix some Java compiler warnings. + +** doc: Improved sections for the info manual. +We now follow the advice given by the texinfo manual on which +directory categories to use. In particular, libidn moved from the +'GNU Libraries' section to the 'Software libraries' and 'Invoking idn' +moved from 'GNU utilities' to 'Localization'. + +** New configure parameters to set packaging specific information. +The parameters are --with-packager, --with-packager-version, and +--with-packager-bug-reports. See + for more +details. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.14 (released 2009-04-03) + +** libidn: Install a libidn-*.def file when building under MinGW. +The file is useful if you develop programs in Visual Studio that links +to libidn. + +** tests/tst_toutf8: Don't crash if stringprep_utf8_to_locale returns NULL. +Reported by Dagobert Michelsen in +. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.13 (released 2009-03-06) + +** libidn: Use a LD version script on platforms where it is supported. +Currently only GNU LD and the Solaris linker supports it. This helps +Debian package tools to produce better dependencies. Before we used +Libtool -export-symbols-regex that created an anonymous version tag. +Libidn uses -export-symbols-regex if the system does not support LD +version scripts, but that only affect symbol visibility. + +** libidn: Compiled with -fvisibility=hidden by default if supported. +Currently only GCC supports it for ELF targets. This hides internal +symbols and has other advantages, see +. + +** libidn: Compiled with warning flags only when GCC is used. +This avoids the problem that some flags confuse non-GCC compilers, for +example -fdiagnostics-show-option. Reported by +jens.rehsack@bayerbbs.com. + +** doc: The idn_free function is now documented. +Suggested by "Sisyphus" . + +** API and ABI is backwards compatible with the previous version. + +* Version 1.12 (released 2009-01-23) + +** idn: New parameter --no-tld to deprecate the old parameter --tld. +The new parameter --no-tld disable TLD checking of the input string. +The --tld parameter was broken; it behaved opposite to its documented +behaviour. To avoid confusion over what --tld means, we decided to +deprecate it. Now --tld is not printed in the idn --help output, but +will continue to work as before. + +** doc: Modernize doxygen configuration. + +** doc: Change license on the manual to GFDLv1.3+. + +** doc: Improve JavaDoc output. + +** Update gnulib files and translations. + +** Build with more warnings. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.11 (released 2008-10-28) + +** libidn: New WARN_CFLAGS configure variable. +It is used internally to add -Werror and other warnings flags, to +catch coding mistakes before releases. + +** Win32: Perl is no longer required to build Libidn in Visual Studio. + +** Win32: Functions in idna.h are also exported. +Reported by Adam Strzelecki . + +** doc: Included cyclomatic code complexity charts of the library code. +See doc/cyclo/. + +** tests: Add more self-tests to get more self-test code coverage. + +** tests: New 'make coverage' command to generate code coverage reports. +The output is created in doc/coverage/. Requires the LCOV tools. See +http://www.gnu.org/software/libidn/coverage/ for a pre-generated copy. + +** Clarify copyright and license for gdoc, man pages, and C# port. + +** Update gnulib files and translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.10 (released 2008-08-27) + +** idn: accept -n as short form for --nfkc. +Before '-k' was used as the short form, but all documentation has said +'-n'. We now accept both short forms, and -n remains the documented +short form. Reported by John McGowan in +. + +** Fix compiler warnings. + +** Update gnulib files. + +** Update translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.9 (released 2008-07-01) + +** idn: fix error message when NFKC fails, and some other translation fixes. +Reported by Benno Schulenberg . + +** C# Libidn.dll: Work around bug that cause a failure during C# compilation. +See . + +** Remove more non-free text from doc/specifications/rfc3454.txt. +The remaining data tables are not copyrightable. + +** Update gnulib files, and include gnulib self-tests. + +** Update translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.8 (released 2008-04-23) + +** Translations files not stored directly in git to avoid merge conflicts. +This allows us to avoid use of --no-location which makes the +translation teams happier. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.7 (released 2008-04-10) + +** idn: new parameter --nfkc to process string with Unicode v3.2 NFKC. + +** Minor build fix for native Win32 builds. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.6 (released 2008-03-19) + +** Add native Windows Visual Studio project files. +Contributed by Adam Strzelecki . + +** Remove non-free portions of RFC 3454 in doc/specifications/rfc3454.txt. + +** Update gnulib files. + +** Doc fixes in IDNA to clarify that some functions operate on +** just one domain labels and some operate on domain name (which +** can contain several domain labels). + +** API and ABI is backwards compatible with the previous version. + +* Version 1.5 (released 2008-02-19) + +** Don't include wchar.h in idn-int.h. +Fixes problems on uClibc systems which lack a wchar.h. Reported by +Mike Frysinger , see +. + +** Added appendix 'On Label Separators' to the manual. +Thanks to Erik van der Poel for bringing the issue +to our attention and for discussing the matter. See +. + +** Improved rendering of non-ASCII in the info manual. +Done by adding a @documentencoding UTF-8. This affect how the +examples are encoded, the files examples/*.c are now encoded using +UTF-8 instead of a mix of ISO-8859-1 and ISO-8859-15. + +** Fix non-portable use of brace expansion in makefiles. + +** Update translations. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.4 (released 2008-01-09) + +** Fixes to make the C# port compile under Mono. + +** Update gnulib files. + +** Improve idn --version and --help output to conform to GNU standards. +This also enables translations of --help output. + +** Update translations. +Added Finish translation, thanks to Jorma Karvonen. Updated Dutch and +Vietnamese. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.3 (released 2007-12-11) + +** Some hints on Windows installation in the manual. + +** Update translations. +Added Czech translation, thanks to Petr Pisar. + +** Use gettext 0.17. + +** Update gnulib files. +Top-level gnulib files are now distributed under GPLv3+. (The gnulib +files used by the core library are still under LGPLv2.1+.) + +** API and ABI is backwards compatible with the previous version. + +* Version 1.2 (released 2007-10-01) + +** Development git tree moved to savannah. +See . + +** Update gnulib files. +Including mono detection fixes. + +** Update translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.1 (released 2007-09-01) + +** Fix compilation error in idn-int.h. +The error would typically be 'error: no include path in which to +search for stdint.h'. Reported by Remko van der Vossen +, see + and +. + +** Declare external variables with __declspec(import) for Windows. +Apparently this is required for variables in DLL's on Windows. This +is enabled if __DECLSPEC_SUPPORTED is defined (MinGW), or if _MSC_VER +and_DLL is defined (MSVC). + +** Update gnulib files. + +** Update translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 1.0 (released 2007-07-31) + +** Command-line tools, examples, etc are now licensed under GPL version 3. +The library is still licensed under LGPL v2.1 for compatibility +reasons (it is included in glibc). + +** Updated documentation as per license change. + +** Update gnulib files. + +** Update translations. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.14 (released 2007-05-31) + +** Libidn is now developed using Git instead of CVS. +A public git mirror is available from +. If you have pulled from this +repository before this release, you need to erase your clone because +it has been re-generated from scratch. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.13 (released 2007-05-31) + +** Documentation fixes. +Clarify that the C# and Java libraries are licensed under the LGPL. +Earlier, some places incorrectly said that these were licensed under +the GPL. If you encounter other places that still suggest that GPL +applies to the C# and Java library, please let me know. + +** Updated Polish and Vietnamese translations. +Thanks to Jakub Bogusz and Clytie Siddall +. + +** Install images for the manual in $infodir. +This fixes the broken image in the info manual. Image files will be +called libidn-*.png to avoid namespace collisions with images from +other info manuals. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.12 (released 2007-04-25) + +** Use AM_JAVACFLAGS instead of JAVACFLAGS in java/misc/Makefile.am. +Reported by Petteri Räty . + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.11 (released 2007-03-13) + +** Update of the C# Libidn port, by Alexander Gnauck. +The code has been refactored and the namespace has been modified to +comply with .NET naming conventions. An IDNA bug was fixed. + +** Update gnulib files. +We now use the "striconv" module instead of the "iconvme", which +causes a slight increase of code size (from 303kb to 319kb with +debugging symbols on i386). The reason is the use of a new locale +independent strcasecmp, which may cause faster operation in some +locales where, e.g., "ASCII" and "ascii" are not treated as the same. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.10 (released 2007-01-04) + +** Corrected year in copyright notices. + +** Update gnulib files. +Including the code to convert strings between different encodings +(noted in case this introduces problems). + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.9 (released 2006-11-30) + +** The Java code is fixed to properly translate any non-ASCII dot into '.'. +Reported and fixed by "Stephane Mikaty" . + +** Update gnulib files. + +** Bump tool versions to autoconf 2.61, automake 1.10, and gettext 0.16. + +** Old versions of iconv.m4, codeset.m4 and lib-link.m4 removed from m4/. +Modern versions are part of gnulib. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.8 (released 2006-10-18) + +** The gnulib directory is separated into two directories. +One gnulib directory (lib/gl/) for the LGPL library in lib/, and one +gnulib directory (gl/) for the GPL tools in src/. This allows the +GPL'd tools to use more gnulib modules than before, since earlier all +gnulib files had to be LGPL. + +** Update gnulib files. + +** Some minor cleanups, like assuming locale.h and setlocale(). + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.7 (released 2006-09-13) + +** Fix build failure of idn-int.h on C99 platforms. +Reported by Paul Howarth . + +** The manual includes the GPL license, for the command-line tools. + +** The function, variable and concept index is moved to the end of the manual. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.6 (released 2006-08-23) + +** Instead of AX_CREATE_STDINT_H, use the stdint gnulib module, for idn-int.h. +This solves building on some HPPA systems. Note that the generated +idn-int.h is specific to the build environment that libidn was built +under, and is not generally usable by any other compiler (if any) on +the host. This was true before too. + +** Update gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.5 (released 2006-06-07) + +** Link the library with external libintl, for gettext. +This fixes building on FreeBSD, reported by Kirill Ponomarew +. + +** Update doxygen config file to version 1.4.7. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.4 (released 2006-06-07) + +** Fix translation of error messages. +Thanks to Joe Orton . + +** Fix warnings on 64-bit platforms. +Thanks to Joe Orton . + +** The tests are run under valgrind, if it is installed. +Use --disable-valgrind-tests to unconditionally disable this. It is +disabled by default for cross compiles. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.3 (released 2006-03-08) + +** Fixes for the build environment. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.2 (released 2006-02-07) + +** Fix objdir != srcdir builds for the Java documentation. +Thanks to Bernard Leak . + +** Update of gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.1 (released 2006-01-20) + +** Make it possible to cross-compile to mingw32. +You can build Libidn for Windows by invoking `./configure +--host=i586-mingw32msvc' (or similar). + +** Minor changes in how the C# code is built. + +** Update of gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.6.0 (released 2005-12-03) + +** A C# port of Libidn has been contributed by Alexander Gnauck. +The port resides in the csharp/ directory. Configure will build it if +a working C# compiler can be found. Mono's "mcs" compiler is known to +work (available in Debian in the "mono-mcs" package), but PNET's +"cscc" compiler should also work (available in Debian in the "pnet" +package). The port is licensed under the GPL. Some Microsoft Visual +Studio project files are also present in the csharp/ directory, which +may be useful when building the port under Windows. The C# API is +currently not documented, improvements are gratefully accepted. + +** Support shared libraries on Cygwin and Mingw32, thanks to Yaakov S. + +** Fix memory leak. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.20 (released 2005-10-23) + +** The header file pr29.h is now installed by 'make install'. + +** Translation updates. + +** Update of gnulib files. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.19 (released 2005-09-19) + +** The test for setlocale and nl_langinfo has now been separated. +The autoconf script now test for locale.h, setlocale and +nl_langinfo(CODESET) independently. + +** Gnulib updates, fixes for getopt. + +** Java manuals in doc/java/ are now generated by Gjdoc from GNU Classpath. + +** Kaffe is used to link the pre-built libidn-*.jar file. + +** Translation updates. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.18 (released 2005-07-16) + +** The macro AX_CREATE_STDINT_H that is used to create idn-int.h +** has been updated. + +** Fix use of 'head -1' in configure script (should be 'head -n -1'), +** thanks to Carsten Lohrke. + +** Announce the help-libidn mailing list in documentation and README. + +** Translation updates. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.17 (released 2005-05-26) + +** The gnulib portability files were updated. + +** The license template in files were updated with the new address. + +** Translation updated. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.16 (released 2005-05-06) + +** Mark static PR29 data tables as 'const', thanks to Joe Orton. + +** Kinyarwanda translations added, thanks to Steve Murphy. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.15 (released 2005-03-19) + +** Improvements to code to convert data between character sets. +The license template was changed to the LGPL, from the GPL template +that was mistakenly used in the previous two releases. Document here +that cleaning up this code has solved memory allocation and arithmetic +overflow problems. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.14 (released 2005-03-19) + +** Building for srcdir != objdir from CVS now work, thanks to Linus Nordberg. + +** Simplified Chinese translations added, thanks to Meng Jie. + +** Vietnamese translation added, thanks to Clytie Siddall. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.13 (released 2005-01-29) + +** The code to convert data between character encodings have been cleaned up. +The stringprep_convert function has been added to gnulib, under the +name iconv_string, and is now used by libidn. This should not have +any user-visible consequences, though. + +** It is now possible to bootstrap with unmodified Automake installations. + +** Italian translation added, thanks to Marco Colombo. + +** Swedish translation updated. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.12 (released 2004-12-04) + +** Java code now support the XMPP NodePrep and ResourcePrep profiles. + +** Bug fixes and improvements to Java code. +The allowUnassigned flag is now respected properly. The prohibited +code points check now works. Arguments are now checked. Convenience +method with allowUnassigned set to false was added. + +** Update getopt from gnulib. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.11 (released 2004-11-21) + +** Fix formatting of man pages, based on warnings from Doclifter. + +** Update of gnulib files to fix potential getopt problem on ELF systems. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.10 (released 2004-11-08) + +** Libtool's -export-symbols-regex is now used to only export official APIs. +Before, applications might accidentally access internal functions. +Note that this is not supported on all platforms, so you must still +make sure you are not using undocumented symbols in Libidn. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.9 (released 2004-11-07) + +** Align GTK-DOC build infrastructure with GTK-DOC official recommendations. +This mean that you can now browse the Libidn API manual using Devhelp. + +** Update of gnulib files to fix potential problem in getopt on BSD. + +** Documentation improvements. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.8 (released 2004-10-12) + +** BidiMirroring-3.2.0.txt is now included, not only the generated source code. +This allow builds to succeed after 'make realclean'. + +** Generated files now have consistent 'DO NOT EDIT!' comments. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.7 (released 2004-10-12) + +** Shared library version incremented, because new APIs were added. +This was forgotten in the last release. + +** French translation updated. + +** Minor bug fixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.6 (released 2004-10-02) + +** Added functions to convert return codes to human readable text. + +** Now using GNULib in command line front end (src/) for portability code. +See for more information on +GNULib. This should make the code easier to read and maintain. + +** API and ABI is backwards compatible with the previous version. +idna_strerror: ADD. +pr29_strerror: ADD. +punycode_strerror: ADD. +stringprep_strerror: ADD. +tld_strerror: ADD. +TLD_NO_TLD: ADD. Replaces TLD_NOTLD. +TLD_NOTLD: DEPRECATED. Use TLD_NO_TLD instead. + +* Version 0.5.5 (released 2004-09-13) + +** Hide accidentally exported variable g_utf8_skip, by marking it as static. + +** Various fixes. + +** API and ABI is backwards compatible with the previous version. +g_utf8_skip: REMOVED. (But never meant to be used.) + +* Version 0.5.4 (released 2004-08-08) + +** Translation updates. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.3 (released 2004-08-05) + +** Fix crash in `idn --tld' command line tool. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.2 (released 2004-07-14) + +** Java "make install" rules are now DESTDIR compatible. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.1 (released 2004-07-09) + +** Cross compile builds should work. +It should work for any sane cross compile target, but the only tested +platform is uClibc/uClinux on Motorola Coldfire. + +** The example programs now correctly invoke `setlocale (LC_ALL, "")'. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.5.0 (released 2004-06-26) + +** Functions to detect "normalization problem sequences" as per PR-29 added. +See the new chapter "PR29 Functions" in the manual +(doc/libidn.{ps,pdf,html}) for more information and the background +story. An external link that discuss the problem is +. + +** More translations. +Added Esperanto (by Edmund GRIMLEY EVANS). + +** API and ABI is backwards compatible with the previous version. +pr29.h: ADD. Prototypes for PR29 types and functions. +pr29_4, pr29_4z, pr29_8z: ADD. New API entry points for PR29 functions. +Pr29_rc: ADD. New error code enum type for PR29 functions. + +* Version 0.4.9 (released 2004-06-11) + +** The Java library (java/libidn-*.jar) is included in the distribution. + +** JavaDoc manuals (doc/javadoc/) are included. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.8 (released 2004-06-01) + +** The Java source code is actually included in the distribution. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.7 (released 2004-05-31) + +** The Java port should now be functional, contributed by Oliver Hitz. +See the new section "Java API" in the manual for more information. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.6 (released 2004-05-24) + +** The header file idn-free.h is actually installed by 'make install'. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.5 (released 2004-05-21) + +** In IDNA ToUnicode, a `free' on a stale pointer fixed by Ulrich Drepper. + +** Several memory leaks fixed by Ulrich Drepper. + +** Added more SASLPrep and NFKC test vectors. + +** Automake 1.8.4 is used. + +** API and ABI is backwards compatible with the previous version. +idn_free: ADD. Wrapper around system `free'. +idn-free.h: ADD. Prototype for `idn_free'. + See idn-free.h for discussion. The interface is + currently not documented. Comments and feedback is + appreciated. + +* Version 0.4.4 (released 2004-04-29) + +** Fixed two bugs in iSCSI definition, syncing with newly published RFC 3722. +The first bug was an omission of prohibiting the characters in C.1.1, +C.1.2 and C.7 (space characters and characters that are inappropriate +for canonical representation). The second was a bug in the definition +of the table, causing the entire table to be skipped, of the special +prohibited output character table defined in RFC 3722 (see section 6, +the characters in the table are various ASCII characters and U+3002). + +** A few test vectors for iSCSI were added. + +** The self tests are linked with libtool -no-install to avoid wrapper script. + +** Separated self test utilities into a separate library, shared by all tests. + +** More translations. +Added Romanian (by Laurentiu Buzdugan). + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.3 (released 2004-04-22) + +** Fixed a bug in table processing code to prohibit control characters. +The problem was that the code used a code point of 0 to indicate end +of table, but if (as for table C.2.1) a range starts with 0, this +logic would fail. The end-of-table test is now that both the start +and end code points of the range is 0. Table C.2.1 is responsible for +prohibiting non-ASCII control characters, i.e. ASCII 0-31 and 127. +Before, libidn silently accepted such strings without complaining. + +** A few test vectors for SASLprep were added. + +** The pkg-config script no longer include a -R parameter. + +** More translations. +Added Dutch (by Elros Cyriatan), and German (by Roland Illig). + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.2 (released 2004-03-20) + +** A Punycode implementation in Java was added, by Oliver Hitz. +Eventually hopefully a StringPrep, Nameprep and IDNA implementation +will be added as well. Currently you need to specify --enable-java to +enable the Java interface. The Java sources (below java/) are +compiled into byte-code (not native code) into a JAR library. + +** More translations. +Added Danish (by Morten Bo Johansen), French (by Michel Robitaille), +Polish (by Jakub Bogusz), and Serbian (by Aleksandar Jelenak). + +** Norwegian TLD table added, by Thomas Jacob. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.4.1 (released 2004-03-08) + +** The user messages from the command line utility are now translated. +Currently English and Swedish is supported. + +** Logic of stringprep_locale_charset modified. +Future versions will use, in order, $CHARSET iff defined, nl_langinfo +(CODESET) iff working, or fall back to returning "ASCII". Earlier it +attempted to guess the system locale, in contrast with the current +application's locale, via some setlocale save/set/reset magic. This +change may require you to invoke setlocale() in your application, +which is (should be) required for non-ASCII to work anyway. Based on +discussion with Ulrich Drepper. + +** The command-line utility now invoke setlocale (LC_ALL, "") at startup. + +** Fixed SASLprep tables to prohibit non-ASCII space in output. +Non-ASCII space has always been mapped to ASCII space, so it is not +clear this really have any effect, but the specification require it. + +** Building Libidn as part of GLIBC has been updated. +Refer to libc/README for more information. Incidentally, GLIBC in CVS +now include a copy of Libidn. + +** API and ABI is backwards compatible with the previous version. +IDNA_DLOPEN_ERROR: ADD. Only used internally by Libidn in libc. + +* Version 0.4.0 (released 2004-02-28) + +** Support for TLD restrictions on IDN strings, contributed by Thomas Jacob. +Many TLDs restrict the set of characters that can be used, from the +full Unicode 3.2 range that is normally available. This contribution +make it possible for you to test strings for TLD conformance locally. +The code can be disabled by --disable-tld. If enabled (the default), +the new API "tld.h" is installed which can be used to check a string +for conformance to TLD specific rules. This add a new self test, and +a new chapter in the manual. People responsible for maintaining TLD +tables are hereby encouraged to contribute them (under reasonable +licensing terms) for inclusion in future versions of Libidn. Be +warned that the API for TLD checking may change throughout the 0.4.x +series as we get feedback on it. + +** Kerberos 5 stringprep profile macro is no longer documented. +The macro itself will probably be removed in the future, if the +specification is dropped from the Kerberos WG agenda. + +** API and ABI is backwards compatible with the previous version. +stringprep_kerberos5: DEPRECATED. +Tld_table_element: +Tld_table: +Tld_rc: ADD. New data types. +tld_get_4: +tld_get_4z: +tld_get_z: ADD. New functions to extract TLD from string. +tld_get_table: +tld_default_table: ADD. New functions to get TLD table from TLD name. +tld_check_4t: +tld_check_4tz: ADD. New function to provide core TLD operations. +tld_check_4: +tld_check_4z: +tld_check_8z: +tld_check_lz: ADD. New functions that combine all TLD operations in one call. + +* Version 0.3.7 (released 2004-01-22) + +** The command line parameter '--' idiom is documented. + +** The iSCSI stringprep profile now recognized as "iSCSI". +The earlier name "ISCSIprep" is still recognized, for backwards +compatibility. + +** DocBook manuals no longer included (the tools are too unstable). + +** API and ABI is backwards compatible with the previous version. + +* Version 0.3.6 (released 2004-01-06) + +** The manual now contain a troubleshooting section for the command line tool. + +** The PHP interface pass the string directly on the command line. + +** The macro that create 'idn-int.h' has been updated to latest version. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.3.5 (released 2003-12-15) + +** The program 'idn' accepts input strings directly on the command line. + +** The program 'idn' defaults to --idna-to-ascii if no parameter is given. + +** The program 'idn' now print user instructions before waiting for input. + +** DocBook HTML output not included any longer. +The reason is that the filenames generated by docbook2html appear to +be rather random, so it is difficult to maintain the Makefile.am rules +for them. + +** Autoconf 2.59, automake 1.8 and libtool from CVS is used. + +** API and ABI is backwards compatible with the previous version. +IDNA_CONTAINS_NON_LDH: ADD. Same integer value as IDNA_CONTAINS_LDH. +IDNA_CONTAINS_LDH: DEPRECATED. LDH (letter-digits-hyphens) characters + are not an error, but non-LDH characters are, when + IDNA_USE_STD3_ASCII_RULES is used. The logic of the + mnemonic name of this error constant was reversed. + +* Version 0.3.4 (released 2003-11-09) + +** DocBook manuals in XML, PDF, PostScript, ASCII and HTML formats included. + +* Version 0.3.3 (released 2003-10-18) + +** Fixed list of Stringprep profiles in 'idn --help' and 'idn.php'. + +** Fixed debug information in 'idn'. + +** Internal improvements. +Leads to reduced heap memory usage. Simplified inter-dependency among +files in lib/* to make it easier to copy them into your project. + +** Debugging stringprep profile 'generic' removed. + +** Punycode implementation updated to rfc3492bis-00. + +** API and ABI is backwards compatible with the previous version. +stringprep_4i: NEW. +stringprep_4zi: NEW. +stringprep: CHANGED. 'profile' is marked as 'const'. +stringprep_profile: CHANGED. 'profile' is marked as 'const'. +stringprep_generic: REMOVED. Never meant for public use. + +* Version 0.3.2 (released 2003-10-07) + +** SASL ANONYMOUS stringprep profile "trace" added. +It is equivalent to the already supported "plain" SASL ANONYMOUS +stringprep profile, except for the name. + +** API and ABI is backwards compatible with the previous version. +The 'in' parameter to stringprep_profile was changed from 'char*' to +'const char*'. + +* Version 0.3.1 (released 2003-10-02) + +** Fixed handling of implicit and explicit zero-length root labels in ToASCII. + +** Fixed support for Hangul Syllables during Unicode NFKC normalization. + +** Fixed Unicode NFKC normalization of (some) BMP code points. +This was done by syncing the NFKC code with latest GLIB, and may have +fixed other bugs in the earlier versions of the updated functions. + +** Added more IDNA test vectors. + +** Emacs Lisp IDNA implementation now set the UseSTD3ASCIIRules flag. +This is the appropriate setting for mail-related uses of IDNA. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.3.0 (released 2003-09-23) + +** Ported to Mac OS X. + +** Gnulib code removed, we now assume a C89 compatible environment. + +** Building libidn as a libc add-on now works again. + +** Man pages for all public API functions are included. + +** Fixed bug in SASLprep profile. + +** API and ABI is NOT backwards compatible with the previous version. +All previously labeled (since 0.1.x) obsolete functions have been dropped. +The use of 'enum' types instead of 'int' added in 0.2.3 reverted, it +confused documentation generators and wasn't all that common practice. + +* Version 0.2.3 (released 2003-08-26) + +** Example 4 was the same as example 3, now changed to demo ToUnicode. + +** Documentation improvements. + +** Prototype cleanups. +The proper enum types (Stringprep_rc, Idna_rc, etc) are now used in +several places where plain int where used before. String lengths are +handled by (s)size_t instead of int. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.2.2 (released 2003-08-13) + +** Fixed problem with strings longer than 4GB in punycode functions. +The punycode code cannot handle strings longer than 4GB. The code now +return PUNYCODE_BAD_INPUT on too long input, instead of failing in an +unknown way. + +** The "idn --idna-to-unicode" command now output locale encoded strings. + +** Build fixes, bug fixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.2.1 (released 2003-07-04) + +** Don't reject zero-length trailing labels as in, e.g., "www.example.org.". +The IDNA RFC is not clear on this topic, zero-length labels in general +are forbidden by the ToASCII algorithm in section 4.1 step 8, but the +terminology section define, inside a parenthesis, that the zero-length +root label is in fact not considered a label at all in IDNA. + +** Bug fixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.2.0 (released 2003-06-19) + +** Unicode code point data is now uint32_t, defined in "idn-int.h". +A header file "idn-int.h" is generated and installed to make sure the +"uint32_t" data type is available on all platforms. The reason for +this change is that on 64-bit platforms, the application was required +to convert 32 bit integers (which is how Unicode code points are +typically represented) into 64 bit integers before calling libidn +functions. + +** New idna_*() functions have improved flags handling. +The allowunassigned and usestd3asciirules parameters were collapsed +into a flags parameter, that can take on the IDNA_ALLOW_UNASSIGNED and +IDNA_USE_STD3_ASCII_RULES values. This allows for easier extensions +to support, e.g., Unicode 4.0 or RFC 952 ASCII rules checking. Note +that the old entry points are unmodified (in this regard), and new +entry points with this modification were added. + +** The manual was moved into a separate directory doc/. + +** Bugfixes. + +** API and ABI is not backwards compatible. +In punycode.h and stringprep.h the "unsigned long" data type was +changed into "uint32_t", which cause a API and ABI missmatch. For +idna.h, the old entry points that used "unsigned long" still exist, +and new entry points that uses "uint32_t" was added. To update your +application, you probably only need to change "unsigned long" to +"uint32_t". As a result of these changes, the shared object version +has been increased. + +* Version 0.1.15 (released 2003-06-07) + +** Bugfixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.14 (released 2003-05-10) + +** Experimental documentation generation in contrib/doxygen/. +Simply invoke "doxygen" in that directory and it should build the +documentation. + +** Lisp API bug fixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.13 (released 2003-03-13) + +** Unfinished Java *.class files implementing the libidn API. +See the contrib/java/ directory. It is implemented using the Java +Native Interface, and light initial testing indicate interoperability +between GCJ, IBM's JDK and Sun's JDK. + +** Building is now silent when gengetopt is not present. + +** Bug fixes. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.12 (released 2003-03-06) + +** Building libidn doesn't require gengetopt. +Warnings are still printed though. Gengetopt will be replaced by argp +eventually. + +** Command line tool "idn" supports stringprep too. + +** New stringprep API entry point: stringprep_profile(). +It takes a name of the stringprep profile as an argument instead of +the stringprep table structure. + +** stringprep_*.h are deprecated and will be removed in the future. +All symbols have been moved to stringprep.h. The reasons are that (1) +the files typically only defined one CPP macro and exported one symbol +definition, which is wasteful as it generates too much work in the +manual, and (2) using one header file for all profiles allows easier +access to all stringprep profiles during runtime. Note that the files +are still installed, but they only #include stringprep.h now, for +backwards compatibility. + +** GNU Libc add-on build instructions updated to GNU Libc 2.3.2. + +** SASLprep stringprep profile added. + +** An online interface to libidn written in PHP added to contrib/web/. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.11 (released 2003-02-26) + +** Command line application "idn" is included. +A simple wrapper around the library that allows you to invoke punycode +encoding/decoding and IDNA ToASCII/ToUnicode on the command line. + +** Emacs Lisp interface for punycode and IDNA included. +See punycode.el and idna.el. + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.10 (released 2003-02-21) + +** idna_*_to_ace() and idna_*ace_to_*() are deprecated in favor of +** idna_to_ascii_from_*() and idna_to_unicode_*_from_*() respectively. +The reason was that the old interfaces did not accept the +AllowUnassigned and UseSTD3ASCIIRules flags. Note that the old +functions are not removed, but will be in the future. + +** IPS iSCSI stringprep profile added. + +** A new contrib/ directory added. +Currently it contains a Python interface to Libidn, contributed by +Stephane Bortzmeyer. + +** idna.h and punycode.h are now installed by "make install". + +** API and ABI is backwards compatible with the previous version. + +* Version 0.1.9 (released 2003-02-20) + +** SASL ANONYMOUS "plain" stringprep profile added. + +** XMPP nodeprep profile fixed. + +** API and ABI is backwards compatible with the previous version. +For future releases, the NEWS entry will specifically mention whether +the C header API or library ABI backwards compatibility is affected. + +* Version 0.1.8 (released 2003-02-14) + +** Portability fixes. +This includes not building the API Reference Manual with GTK-DOC by +default, if you want it use configure parameter --enable-gtk-doc after +making sure your gtkdoc-mkdb accept the --tmpl-dir parameter. + +** The type for string length variables is now (s)size_t. +Unfortunately this means binary shared library binary backwards +compatible is lost. + +** New nameprep test vectors. + +* Version 0.1.7 (released 2003-02-12) + +** Uses official IDNA ACE prefix. + +* Version 0.1.6 (released 2003-02-11) + +** Uses tentative IDNA ACE prefix. + +** Added XMPP Node/Resource Identifiers stringprep profiles. + +** Fixed prohibited character checks for bidi. + +* Version 0.1.5 (released 2003-01-28) + +** The library can now be built as part of GNU Libc. +This is experimental and only tested against GNU Libc version 2.3.1. +See the libc/ directory, and libc/README in particular. + +** Bug fixes. + +* Version 0.1.4 (released 2003-01-15) + +** Documentation fixes. + +** Portability fixes. + +** Bug fixes. + +* Version 0.1.3 (released 2003-01-15) + +** Added texinfo manual. + +* Version 0.1.2 (released 2003-01-08) + +** Added high-level IDNA API. + +** Added example3.c and example4.c demonstrating the high-level IDNA API. + +* Version 0.1.1 (released 2003-01-08) + +** Added documentation using GTK-DOC. + +** The obsolete stringprep_utf8_to_ucs4_fast API entry point was removed. +By accident it was never removed in 0.1.0. + +* Version 0.1.0 (released 2003-01-05) + +** Official GNU project. + +** Renamed from libstringprep to libidn. + +** Supports punycode and IDNA. Caveat emptor: I don't use it myself. + +** Uses "unsigned long" for Unicode code points instead of "long". +Long is guaranteed to be at least 32 bits by C standards so it is +always sufficiently large, no need to use uint32_t and the like. + +** The obsolete stringprep_utf8_to_ucs4_fast API entry point was removed. + +* Version 0.0.8 (released 2002-12-13) + +** Portability fixes (now works under Cygwin on Windows 2000). + +** Bug fixes. + +* Version 0.0.7 (released 2002-12-09) + +** Apply all tables to entire strings, not just first hit. + +** Fix bidi infloop. + +* Version 0.0.5 (released 2002-12-07) + +** Fix prohibited characters handling. + +** Fix bidi. + +** Renamed type (struct) stringprep_table_element to Stringprep_table_element. + +** Renamed type stringprep_profile to Stringprep_profile. + +** Renamed type (struct) stringprep_table to Stringprep_table. + +** Added more self-tests. + +* Version 0.0.4 (released 2002-12-06) + +** Add unassigned code point handling, including self test cases. + +** Portability fixes. + +* Version 0.0.3 (released 2002-11-30) + +** Exported utility function `stringprep_utf8_to_unichar', complementary +to existing `stringprep_unichar_to_utf8'. + +** Renamed `stringprep_utf8_to_ucs4_fast' to `stringprep_utf8_to_ucs4' to +clean up API. The old entry point is maintained for binary backwards +compatibility though. + +** The distribution is from now on signed using GnuPG. + +** Bug fixes. + +* Version 0.0.2 (released 2002-11-07) + +** NFKC self test. + +** Bug fixes. + +* Version 0.0.1 (released 2002-11-06) + +** Add utility functions stringprep_locale_charset(), stringprep_convert() +and stringprep_locale_to_utf8 () that can be used to convert text from +system's locale into UTF-8, which should be done before invoking +stringprep(). The functions requires iconv() in the operating system. + +** An example program (example.c) that illustrates how libstringprep can be +used is included. + +** The pkg-config --libs output should now include necessary -R options. + +* Version 0.0.0 (released 2002-11-05) + +** Initial release + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/README b/README new file mode 100644 index 0000000..bc3fa9b --- /dev/null +++ b/README @@ -0,0 +1,32 @@ +Libidn README -- Important introductory notes. +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +Libidn is a package for internationalized string handling based on the +Stringprep, Punycode, IDNA and TLD specifications. Libidn is a GNU +project. + +Read INSTALL for installation instructions, and doc/libidn.* for the +manual in various formats (including Info, HTML, PostScript, and PDF). + +The C library (libidn.a), C# library (Libidn.dll) and Java library +(libidn-*.jar) are licensed under the GNU Lesser General Public +License version 2.1 or later. See the file COPYING.LIB. + +The command line tool, self tests, examples, and other auxilliary +files, are licensed under the GNU General Public License version 3.0 +or later. See the file COPYING. + +Libidn will not be stable without your help. Report bugs, proof read +the manual, or make a monetary donation. + +If you need help to use Libidn, or wish to help others, you are +invited to join our mailing list help-libidn@gnu.org, see +. + +For more information, see . + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..add6340 --- /dev/null +++ b/THANKS @@ -0,0 +1,97 @@ +Libidn THANKS -- Acknowledgements. +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +The punycode code was taken from the IETF IDN Punycode specification, +by Adam M. Costello. The TLD code was contributed by Thomas Jacob. +The Java implementation was contributed by Oliver Hitz. The C# +implementation was contributed by Alexander Gnauck. The Unicode +tables were provided by Unicode, Inc. Some functions for dealing with +Unicode (see nfkc.c and toutf8.c) are borrowed from GLib downloaded +from www.gtk.org. + +Suggestions, bug reports, patches, translations, test vectors or other +contributions were also received from or written by the people +mentioned below. If you have contributed and aren't mentioned here, +please let us know! + +Stephane Bortzmeyer +Seungho Lee +Waldo Bastian +Travis Shirk +Hugo Salgado H. +Leonard Stiles +Ryan M. Golbeck +Joe Hildebrand +Thiago Macieira +Ienup Sung +Wim Lewis +Robert Norris +Patrik Wallstrom +Marcos Sanz +Gerrit P. Haase +Adam M. Costello +Trond Haugen +Marco d'Itri +Arkadiusz Miskiewicz +Noah Levitt +Paul Hoffman / JDNA +Oden Eriksson +Kai Schaetzl +Graydon Hoare +Jan-Hendrik Heuing +Chris Moore +Niels Möller +Thomas Jacob +Ulrich Drepper +Jakub Bogusz +Aleksandar Jelenak +Michel Robitaille +Morten Bo Johansen +Oliver Hitz +Jørgen Thomsen +Roland Illig +Elros Cyriatan +Martin Waitz +Laurentiu Buzdugan +Joe Orton +Daniel Stenberg +Gisle Vanem +Robert Scheck +Benjamin Reed +Edmund GRIMLEY EVANS +Stephan Kulow +Andreas Schwab +Eric S. Raymond +Matt Tucker +Marco Colombo +Linus Nordberg +Simon Walter +Clytie Siddall +Meng Jie +Carsten Lohrke +Wim Lewis +Yaakov S +Alexander Gnauck +Bernard Leak +Kirill Ponomarew +Paul Howarth +Stephane Mikaty +Petteri Räty +Petr Pisar +Christian Ehrlicher +Remko van der Vossen +Erik van der Poel +Mike Frysinger +Adam Strzelecki +Benno Schulenberg +John McGowan +Sisyphus +Jens Rehsack +Dagobert Michelsen +Guenter Knauf + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/TODO b/TODO new file mode 100644 index 0000000..92af868 --- /dev/null +++ b/TODO @@ -0,0 +1,21 @@ +Libidn TODO -- Future directions. +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +If you like to start working on anything, please let me know so work +duplication can be avoided. + + - Optimize stringprep for speed, the table searching is slow (but + does it matter?). + - Optimize for size? The stringprep tables can be compressed _alot_ + (most map entries are simply zeroes). + - Port applications to use libidn. + - Include more stringprep profiles. + - Improve IDN tool. + - Reimplement punycode without string length restrictions. + - Reject invalid Unicode data. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..55c3a19 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1076 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file 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. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, +[m4_warning([this file was generated for autoconf 2.67. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# This file 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. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file 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. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file 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. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 +# Free Software Foundation, Inc. +# +# This file 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. + +# serial 10 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file 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. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check for Java compiler. -*- Autoconf -*- +# For now we only handle the GNU compiler. + +# Copyright (C) 1999, 2000, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file 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. + +AC_DEFUN([AM_PROG_GCJ],[ +AC_CHECK_TOOLS(GCJ, gcj, gcj) +test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH]) +if test "x${GCJFLAGS-unset}" = xunset; then + GCJFLAGS="-g -O2" +fi +AC_SUBST(GCJFLAGS) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(GCJ)]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file 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. + +# serial 16 + +# 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. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file 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. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file 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. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +# 2006 Free Software Foundation, Inc. +# +# This file 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. + +# serial 10 + +# AM_PATH_LISPDIR +# --------------- +AC_DEFUN([AM_PATH_LISPDIR], +[AC_PREREQ([2.60])dnl + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + AC_CHECK_PROGS([EMACS], [emacs xemacs], [no]) + AC_ARG_VAR([EMACS], [the Emacs editor command]) + AC_ARG_VAR([EMACSLOADPATH], [the Emacs library search path]) + AC_ARG_WITH([lispdir], + [ --with-lispdir override the default lisp directory], + [ lispdir="$withval" + AC_MSG_CHECKING([where .elc files should go]) + AC_MSG_RESULT([$lispdir])], + [ + AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [ + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly + # Some emacsen will start up in interactive mode, requiring C-x C-c to exit, + # which is non-obvious for non-emacs users. + # Redirecting /dev/null should help a bit; pity we can't detect "broken" + # emacsen earlier and avoid running this altogether. + AC_RUN_LOG([$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' conftest.out]) + am_cv_lispdir=`sed -n \ + -e 's,/$,,' \ + -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \ + -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \ + conftest.out` + rm conftest.out + fi + fi + test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp' + ]) + lispdir="$am_cv_lispdir" +]) +AC_SUBST([lispdir]) +])# AM_PATH_LISPDIR + +AU_DEFUN([ud_PATH_LISPDIR], [AM_PATH_LISPDIR]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file 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. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file 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. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file 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. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file 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. + +# serial 4 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file 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. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# 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" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $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]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file 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. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# +# This file 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. + +# serial 2 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file 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. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([lib/gl/m4/gnulib-comp.m4]) +m4_include([lib/gl/m4/iconv_h.m4]) +m4_include([lib/gl/m4/iconv_open.m4]) +m4_include([lib/gl/m4/ld-output-def.m4]) +m4_include([lib/gl/m4/ld-version-script.m4]) +m4_include([lib/gl/m4/locale-fr.m4]) +m4_include([lib/gl/m4/locale-tr.m4]) +m4_include([lib/gl/m4/multiarch.m4]) +m4_include([lib/gl/m4/stdbool.m4]) +m4_include([lib/gl/m4/stdint.m4]) +m4_include([lib/gl/m4/strverscmp.m4]) +m4_include([lib/gl/m4/wchar.m4]) +m4_include([gl/m4/00gnulib.m4]) +m4_include([gl/m4/autobuild.m4]) +m4_include([gl/m4/csharp.m4]) +m4_include([gl/m4/csharpcomp.m4]) +m4_include([gl/m4/errno_h.m4]) +m4_include([gl/m4/error.m4]) +m4_include([gl/m4/extensions.m4]) +m4_include([gl/m4/getopt.m4]) +m4_include([gl/m4/gnulib-common.m4]) +m4_include([gl/m4/gnulib-comp.m4]) +m4_include([gl/m4/include_next.m4]) +m4_include([gl/m4/manywarnings.m4]) +m4_include([gl/m4/pmccabe2html.m4]) +m4_include([gl/m4/stdarg.m4]) +m4_include([gl/m4/strerror.m4]) +m4_include([gl/m4/string_h.m4]) +m4_include([gl/m4/unistd_h.m4]) +m4_include([gl/m4/version-etc.m4]) +m4_include([gl/m4/warnings.m4]) +m4_include([m4/ac_prog_jar.m4]) +m4_include([m4/codeset.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/gtk-doc.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/pkg.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/update-header-version.m4]) +m4_include([m4/valgrind.m4]) +m4_include([m4/visibility.m4]) +m4_include([m4/wchar_t.m4]) +m4_include([m4/wint_t.m4]) diff --git a/build-aux/config.guess b/build-aux/config.guess new file mode 100755 index 0000000..da83314 --- /dev/null +++ b/build-aux/config.guess @@ -0,0 +1,1561 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. + +timestamp='2009-04-27' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# 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 build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +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 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # 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. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + 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 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + 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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /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 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # 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 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + 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 -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${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=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #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 + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + 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 -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd | genuineintel) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 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 i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # 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. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # 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. + echo i386-sequent-sysv4 + exit ;; + 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 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + 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|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + 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 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +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\n"); 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) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# 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 -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/config.rpath b/build-aux/config.rpath new file mode 100755 index 0000000..85c2f20 --- /dev/null +++ b/build-aux/config.rpath @@ -0,0 +1,672 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2008 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file 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. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + 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 cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # 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=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# 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. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +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 + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + 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 | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -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/'` + ;; + -sco5v6*) + # 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. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # 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*86 | x86_64) + 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. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # 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 + ;; + abacus) + basic_machine=abacus-unknown + ;; + 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 + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + 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 | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + 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 + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*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 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + 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 + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + 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 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + 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 + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-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/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-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 + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + 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 + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-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 + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + 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 + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + 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* \ + | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -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|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -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[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -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 + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + 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 + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-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 + ;; + f30[01]-fujitsu | f700-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* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/csharpcomp.sh.in b/build-aux/csharpcomp.sh.in new file mode 100644 index 0000000..69e7eb7 --- /dev/null +++ b/build-aux/csharpcomp.sh.in @@ -0,0 +1,158 @@ +#!/bin/sh +# Compile a C# program. + +# Copyright (C) 2003-2006 Free Software Foundation, Inc. +# Written by Bruno Haible , 2003. +# +# 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 3 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, see . + +# This uses the same choices as csharpcomp.c, but instead of relying on the +# environment settings at run time, it uses the environment variables +# present at configuration time. +# +# This is a separate shell script, because the various C# compilers have +# different command line options. +# +# Usage: /bin/sh csharpcomp.sh [OPTION] SOURCE.cs ... RES.resource ... +# Options: +# -o PROGRAM.exe or -o LIBRARY.dll +# set the output assembly name +# -L DIRECTORY search for C# libraries also in DIRECTORY +# -l LIBRARY reference the C# library LIBRARY.dll +# -O optimize +# -g generate debugging information + +# func_tmpdir +# creates a temporary directory. +# Sets variable +# - tmp pathname of freshly created temporary directory +func_tmpdir () +{ + # Use the environment variable TMPDIR, falling back to /tmp. This allows + # users to specify a different temporary directory, for example, if their + # /tmp is filled up or too small. + : ${TMPDIR=/tmp} + { + # Use the mktemp program if available. If not available, hide the error + # message. + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/gtXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { + # Use a simple mkdir command. It is guaranteed to fail if the directory + # already exists. $RANDOM is bash specific and expands to empty in shells + # other than bash, ksh and zsh. Its use does not increase security; + # rather, it minimizes the probability of failure in a very cluttered /tmp + # directory. + tmp=$TMPDIR/gt$$-$RANDOM + (umask 077 && mkdir "$tmp") + } || + { + echo "$0: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } + } +} + +sed_quote_subst='s/\([|&;<>()$`"'"'"'*?[#~=% \\]\)/\\\1/g' +options_cscc= +options_mcs= +options_csc="-nologo" +sources= +while test $# != 0; do + case "$1" in + -o) + case "$2" in + *.dll) + options_cscc="$options_cscc -shared" + options_mcs="$options_mcs -target:library" + options_csc="$options_csc -target:library" + ;; + *.exe) + options_csc="$options_csc -target:exe" + ;; + esac + options_cscc="$options_cscc -o "`echo "$2" | sed -e "$sed_quote_subst"` + options_mcs="$options_mcs -out:"`echo "$2" | sed -e "$sed_quote_subst"` + options_csc="$options_csc -out:"`echo "$2" | sed -e "$sed_quote_subst"` + shift + ;; + -L) + options_cscc="$options_cscc -L "`echo "$2" | sed -e "$sed_quote_subst"` + options_mcs="$options_mcs -lib:"`echo "$2" | sed -e "$sed_quote_subst"` + options_csc="$options_csc -lib:"`echo "$2" | sed -e "$sed_quote_subst"` + shift + ;; + -l) + options_cscc="$options_cscc -l "`echo "$2" | sed -e "$sed_quote_subst"` + options_mcs="$options_mcs -reference:"`echo "$2" | sed -e "$sed_quote_subst"` + options_csc="$options_csc -reference:"`echo "$2" | sed -e "$sed_quote_subst"`".dll" + shift + ;; + -O) + options_cscc="$options_cscc -O" + options_csc="$options_csc -optimize+" + ;; + -g) + options_cscc="$options_cscc -g" + options_mcs="$options_mcs -debug" + options_csc="$options_csc -debug+" + ;; + -*) + echo "csharpcomp: unknown option '$1'" 1>&2 + exit 1 + ;; + *.resources) + options_cscc="$options_cscc -fresources="`echo "$1" | sed -e "$sed_quote_subst"` + options_mcs="$options_mcs -resource:"`echo "$1" | sed -e "$sed_quote_subst"` + options_csc="$options_csc -resource:"`echo "$1" | sed -e "$sed_quote_subst"` + ;; + *.cs) + sources="$sources "`echo "$1" | sed -e "$sed_quote_subst"` + ;; + *) + echo "csharpcomp: unknown type of argument '$1'" 1>&2 + exit 1 + ;; + esac + shift +done + +if test -n "@HAVE_CSCC@"; then + test -z "$CSHARP_VERBOSE" || echo cscc $options_cscc $sources + exec cscc $options_cscc $sources +else + if test -n "@HAVE_MCS@"; then + # mcs prints it errors and warnings to stdout, not stderr. Furthermore it + # adds a useless line "Compilation succeeded..." at the end. Correct both. + sed_drop_success_line='${ +/^Compilation succeeded/d +}' + func_tmpdir + trap 'rm -rf "$tmp"' 1 2 3 15 + test -z "$CSHARP_VERBOSE" || echo mcs $options_mcs $sources + mcs $options_mcs $sources > "$tmp"/mcs.err + result=$? + sed -e "$sed_drop_success_line" < "$tmp"/mcs.err >&2 + rm -rf "$tmp" + exit $result + else + if test -n "@HAVE_CSC@"; then + test -z "$CSHARP_VERBOSE" || echo csc $options_csc $sources + exec csc $options_csc $sources + else + echo 'C# compiler not found, try installing pnet, then reconfigure' 1>&2 + exit 1 + fi + fi +fi diff --git a/build-aux/depcomp b/build-aux/depcomp new file mode 100755 index 0000000..df8eea7 --- /dev/null +++ b/build-aux/depcomp @@ -0,0 +1,630 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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, see . + +# 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. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh new file mode 100644 index 0000000..a1ed4b4 --- /dev/null +++ b/build-aux/gendocs.sh @@ -0,0 +1,361 @@ +#!/bin/sh +# gendocs.sh -- generate a GNU manual in many formats. This script is +# mentioned in maintain.texi. See the help message below for usage details. + +scriptversion=2009-04-08.09 + +# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# 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 3 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, see . +# +# Original author: Mohit Agarwal. +# Send bug reports and any other correspondence to bug-texinfo@gnu.org. + +prog=`basename "$0"` +srcdir=`pwd` + +scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" +templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" + +: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} +: ${MAKEINFO="makeinfo"} +: ${TEXI2DVI="texi2dvi -t @finalout"} +: ${DVIPS="dvips"} +: ${DOCBOOK2HTML="docbook2html"} +: ${DOCBOOK2PDF="docbook2pdf"} +: ${DOCBOOK2PS="docbook2ps"} +: ${DOCBOOK2TXT="docbook2txt"} +: ${GENDOCS_TEMPLATE_DIR="."} +: ${TEXI2HTML="texi2html"} +unset CDPATH +unset use_texi2html + +version="gendocs.sh $scriptversion + +Copyright 2009 Free Software Foundation, Inc. +There is NO warranty. You may redistribute this software +under the terms of the GNU General Public License. +For more information about these matters, see the files named COPYING." + +usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE + +Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source. +See the GNU Maintainers document for a more extensive discussion: + http://www.gnu.org/prep/maintain_toc.html + +Options: + -o OUTDIR write files into OUTDIR, instead of manual/. + --email ADR use ADR as contact in generated web pages. + --docbook convert to DocBook too (xml, txt, html, pdf and ps). + --html ARG pass indicated ARG to makeinfo or texi2html for HTML targets. + --texi2html use texi2html to generate HTML targets. + --help display this help and exit successfully. + --version display version information and exit successfully. + +Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" + +Typical sequence: + cd PACKAGESOURCE/doc + wget \"$scripturl\" + wget \"$templateurl\" + $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" + +Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR +to override). Move all the new files into your web CVS tree, as +explained in the Web Pages node of maintain.texi. + +Please use the --email ADDRESS option to specify your bug-reporting +address in the generated HTML pages. + +MANUAL-TITLE is included as part of the HTML of the overall +manual/index.html file. It should include the name of the package being +documented. manual/index.html is created by substitution from the file +$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the +generic template for your own purposes.) + +If you have several manuals, you'll need to run this script several +times with different MANUAL values, specifying a different output +directory with -o each time. Then write (by hand) an overall index.html +with links to them all. + +If a manual's Texinfo sources are spread across several directories, +first copy or symlink all Texinfo sources into a single directory. +(Part of the script's work is to make a tar.gz of the sources.) + +You can set the environment variables MAKEINFO, TEXI2DVI, and DVIPS to +control the programs that get executed, and GENDOCS_TEMPLATE_DIR to +control where the gendocs_template file is looked for. (With --docbook, +the environment variables DOCBOOK2HTML, DOCBOOK2PDF, DOCBOOK2PS, and +DOCBOOK2TXT are also respected.) + +By default, makeinfo is run in the default (English) locale, since +that's the language of most Texinfo manuals. If you happen to have a +non-English manual and non-English web site, see the SETLANG setting +in the source. + +Email bug reports or enhancement requests to bug-texinfo@gnu.org. +" + +calcsize() +{ + size=`ls -ksl $1 | awk '{print $1}'` + echo $size +} + +MANUAL_TITLE= +PACKAGE= +EMAIL=webmasters@gnu.org # please override with --email +htmlarg= +outdir=manual + +while test $# -gt 0; do + case $1 in + --email) shift; EMAIL=$1;; + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + -o) shift; outdir=$1;; + --docbook) docbook=yes;; + --html) shift; htmlarg=$1;; + --texi2html) use_texi2html=1;; + -*) + echo "$0: Unknown option \`$1'." >&2 + echo "$0: Try \`--help' for more information." >&2 + exit 1;; + *) + if test -z "$PACKAGE"; then + PACKAGE=$1 + elif test -z "$MANUAL_TITLE"; then + MANUAL_TITLE=$1 + else + echo "$0: extra non-option argument \`$1'." >&2 + exit 1 + fi;; + esac + shift +done + +if test -s "$srcdir/$PACKAGE.texinfo"; then + srcfile=$srcdir/$PACKAGE.texinfo +elif test -s "$srcdir/$PACKAGE.texi"; then + srcfile=$srcdir/$PACKAGE.texi +elif test -s "$srcdir/$PACKAGE.txi"; then + srcfile=$srcdir/$PACKAGE.txi +else + echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 + exit 1 +fi + +if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then + echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 + echo "$0: it is available from $templateurl." >&2 + exit 1 +fi + +case $outdir in + /*) dotdot_outdir="$outdir";; + *) dotdot_outdir="../$outdir";; +esac + +echo Generating output formats for $srcfile + +cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\"" +echo "Generating info files... ($cmd)" +eval "$cmd" +mkdir -p $outdir/ +tar czf $outdir/$PACKAGE.info.tar.gz $PACKAGE.info* +info_tgz_size=`calcsize $outdir/$PACKAGE.info.tar.gz` +# do not mv the info files, there's no point in having them available +# separately on the web. + +cmd="${TEXI2DVI} \"$srcfile\"" +echo "Generating dvi ... ($cmd)" +eval "$cmd" + +# now, before we compress dvi: +echo Generating postscript... +${DVIPS} $PACKAGE -o +gzip -f -9 $PACKAGE.ps +ps_gz_size=`calcsize $PACKAGE.ps.gz` +mv $PACKAGE.ps.gz $outdir/ + +# compress/finish dvi: +gzip -f -9 $PACKAGE.dvi +dvi_gz_size=`calcsize $PACKAGE.dvi.gz` +mv $PACKAGE.dvi.gz $outdir/ + +cmd="${TEXI2DVI} --pdf \"$srcfile\"" +echo "Generating pdf ... ($cmd)" +eval "$cmd" +pdf_size=`calcsize $PACKAGE.pdf` +mv $PACKAGE.pdf $outdir/ + +cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\"" +echo "Generating ASCII... ($cmd)" +eval "$cmd" +ascii_size=`calcsize $PACKAGE.txt` +gzip -f -9 -c $PACKAGE.txt >$outdir/$PACKAGE.txt.gz +ascii_gz_size=`calcsize $outdir/$PACKAGE.txt.gz` +mv $PACKAGE.txt $outdir/ + +html_split() +{ + opt="--split=$1 $htmlarg --node-files" + cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" + echo "Generating html by $1... ($cmd)" + eval "$cmd" + split_html_dir=$PACKAGE.html + ( + cd ${split_html_dir} || exit 1 + ln -sf ${PACKAGE}.html index.html + tar -czf $dotdot_outdir/${PACKAGE}.html_$1.tar.gz -- *.html + ) + eval html_$1_tgz_size=`calcsize $outdir/${PACKAGE}.html_$1.tar.gz` + rm -f $outdir/html_$1/*.html + mkdir -p $outdir/html_$1/ + mv ${split_html_dir}/*.html $outdir/html_$1/ + rmdir ${split_html_dir} +} + +if test -z "$use_texi2html"; then + opt="--no-split --html -o $PACKAGE.html $htmlarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" + echo "Generating monolithic html... ($cmd)" + rm -rf $PACKAGE.html # in case a directory is left over + eval "$cmd" + html_mono_size=`calcsize $PACKAGE.html` + gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz + html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz` + mv $PACKAGE.html $outdir/ + + cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\"" + echo "Generating html by node... ($cmd)" + eval "$cmd" + split_html_dir=$PACKAGE.html + ( + cd ${split_html_dir} || exit 1 + tar -czf $dotdot_outdir/${PACKAGE}.html_node.tar.gz -- *.html + ) + html_node_tgz_size=`calcsize $outdir/${PACKAGE}.html_node.tar.gz` + rm -f $outdir/html_node/*.html + mkdir -p $outdir/html_node/ + mv ${split_html_dir}/*.html $outdir/html_node/ + rmdir ${split_html_dir} +else + cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\"" + echo "Generating monolithic html... ($cmd)" + rm -rf $PACKAGE.html # in case a directory is left over + eval "$cmd" + html_mono_size=`calcsize $PACKAGE.html` + gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz + html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz` + mv $PACKAGE.html $outdir/ + + html_split node + html_split chapter + html_split section +fi + +echo Making .tar.gz for sources... +srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null` +tar cvzfh $outdir/$PACKAGE.texi.tar.gz $srcfiles +texi_tgz_size=`calcsize $outdir/$PACKAGE.texi.tar.gz` + +if test -n "$docbook"; then + cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml" + echo "Generating docbook XML... $(cmd)" + eval "$cmd" + docbook_xml_size=`calcsize $PACKAGE-db.xml` + gzip -f -9 -c $PACKAGE-db.xml >$outdir/$PACKAGE-db.xml.gz + docbook_xml_gz_size=`calcsize $outdir/$PACKAGE-db.xml.gz` + mv $PACKAGE-db.xml $outdir/ + + cmd="${DOCBOOK2HTML} -o $split_html_db_dir ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook HTML... ($cmd)" + eval "$cmd" + split_html_db_dir=html_node_db + ( + cd ${split_html_db_dir} || exit 1 + tar -czf $dotdot_outdir/${PACKAGE}.html_node_db.tar.gz -- *.html + ) + html_node_db_tgz_size=`calcsize $outdir/${PACKAGE}.html_node_db.tar.gz` + rm -f $outdir/html_node_db/*.html + mkdir -p $outdir/html_node_db + mv ${split_html_db_dir}/*.html $outdir/html_node_db/ + rmdir ${split_html_db_dir} + + cmd="${DOCBOOK2TXT} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook ASCII... ($cmd)" + eval "$cmd" + docbook_ascii_size=`calcsize $PACKAGE-db.txt` + mv $PACKAGE-db.txt $outdir/ + + cmd="${DOCBOOK2PS} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook PS... $(cmd)" + eval "$cmd" + gzip -f -9 -c $PACKAGE-db.ps >$outdir/$PACKAGE-db.ps.gz + docbook_ps_gz_size=`calcsize $outdir/$PACKAGE-db.ps.gz` + mv $PACKAGE-db.ps $outdir/ + + cmd="${DOCBOOK2PDF} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook PDF... ($cmd)" + eval "$cmd" + docbook_pdf_size=`calcsize $PACKAGE-db.pdf` + mv $PACKAGE-db.pdf $outdir/ +fi + +echo "Writing index file..." +if test -z "$use_texi2html"; then + CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ + /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" +else + CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" +fi +curdate=`$SETLANG date '+%B %d, %Y'` +sed \ + -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ + -e "s!%%EMAIL%%!$EMAIL!g" \ + -e "s!%%PACKAGE%%!$PACKAGE!g" \ + -e "s!%%DATE%%!$curdate!g" \ + -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ + -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ + -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ + -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ + -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ + -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ + -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ + -e "s!%%PDF_SIZE%%!$pdf_size!g" \ + -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \ + -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ + -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ + -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ + -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ + -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ + -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \ + -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ + -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ + -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ + -e "s,%%SCRIPTURL%%,$scripturl,g" \ + -e "s!%%SCRIPTNAME%%!$prog!g" \ + -e "$CONDS" \ +$GENDOCS_TEMPLATE_DIR/gendocs_template >$outdir/index.html + +echo "Done, see $outdir/ subdirectory for new files." + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/build-aux/gnupload b/build-aux/gnupload new file mode 100755 index 0000000..002cee3 --- /dev/null +++ b/build-aux/gnupload @@ -0,0 +1,412 @@ +#!/bin/sh +# Sign files and upload them. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation +# +# 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 3, 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, see <http://www.gnu.org/licenses/>. + +# Originally written by Alexandre Duret-Lutz <adl@gnu.org>. + +set -e + +GPG='gpg --batch --no-tty' +conffile=.gnuploadrc +to= +dry_run=false +symlink_files= +delete_files= +delete_symlinks= +collect_var= +dbg= + +usage="Usage: $0 [OPTIONS]... [COMMAND] FILES... [[COMMAND] FILES...] + +Sign all FILES, and upload them to selected destinations, according to +<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>. + +Commands: + --delete delete FILES from destination + --symlink create symbolic links + --rmsymlink remove symbolic links + -- treat the remaining arguments as files to upload + +Options: + --help print this help text and exit + --to DEST specify one destination for FILES + (multiple --to options are allowed) + --user NAME sign with key NAME + --symlink-regex[=EXPR] use sed script EXPR to compute symbolic link names + --dry-run do nothing, show what would have been done + --version output version information and exit + +If --symlink-regex is given without EXPR, then the link target name +is created by replacing the version information with \`-latest', e.g.: + + foo-1.3.4.tar.gz -> foo-latest.tar.gz + +Recognized destinations are: + alpha.gnu.org:DIRECTORY + savannah.gnu.org:DIRECTORY + savannah.nongnu.org:DIRECTORY + ftp.gnu.org:DIRECTORY + build directive files and upload files by FTP + download.gnu.org.ua:{alpha|ftp}/DIRECTORY + build directive files and upload files by SFTP + [user@]host:DIRECTORY upload files with scp + +Options and commands are applied in order. If the file $conffile exists +in the current working directory, its contents are prepended to the +actual command line options. Use this to keep your defaults. Comments +(#) and empty lines in $conffile are allowed. + +Examples: +1. Upload automake-1.8.2b.tar.gz and automake-1.8.2b.tar.bz2 to two sites: + gnupload --to sources.redhat.com:~ftp/pub/automake \\ + --to alpha.gnu.org:automake \\ + automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2 + +2. Same as above, but also create symbolic links to automake-latest.tar.*: + gnupload --to sources.redhat.com:~ftp/pub/automake \\ + --to alpha.gnu.org:automake \\ + --symlink-regex \\ + automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2 + +3. Symlink automake-1.8.2b.tar.gz to automake-latest.tar.gz and +automake-1.8.2b.tar.bz2 to automake-latest.tar.bz2 on both sites: + + gnupload --to sources.redhat.com:~ftp/pub/automake \\ + --to alpha.gnu.org:automake \\ + --symlink automake-1.8.2b.tar.gz automake-latest.tar.gz \\ + automake-1.8.2b.tar.bz2 automake-latest.tar.bz2 + +4. Delete automake-1.8.2a.tar.gz and .bz2, remove symlink +automake-latest.tar.gz and upload automake-1.8.2b.tar.gz: + + gnupload --to sources.redhat.com:~ftp/pub/automake \\ + --to alpha.gnu.org:automake \\ + --delete automake-1.8.2a.tar.gz automake-1.8.2a.tar.bz2 \\ + --rmsymlink automake-latest.tar.gz \\ + -- \\ + automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2 + +Report bugs to <bug-automake@gnu.org>. +Send patches to <automake-patches@gnu.org>." + +# Read local configuration file +if test -r "$conffile"; then + echo "$0: Reading configuration file $conffile" + eval set x "`sed 's/#.*$//;/^$/d' \"$conffile\" | tr '\012\015' ' '` \"\$@\"" + shift +fi + +while test -n "$1"; do + case $1 in + -*) + collect_var= + case $1 in + --help) + echo "$usage" + exit $? + ;; + --to) + if test -z "$2"; then + echo "$0: Missing argument for --to" 1>&2 + exit 1 + else + to="$to $2" + shift + fi + ;; + --user) + if test -z "$2"; then + echo "$0: Missing argument for --user" 1>&2 + exit 1 + else + GPG="$GPG --local-user $2" + shift + fi + ;; + --delete) + collect_var=delete_files + ;; + --rmsymlink) + collect_var=delete_symlinks + ;; + --symlink-regex=*) + symlink_expr=`expr "$1" : '[^=]*=\(.*\)'` + ;; + --symlink-regex) + symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|' + ;; + --symlink) + collect_var=symlink_files + ;; + --dry-run|-n) + dry_run=: + ;; + --version) + echo "gnupload $scriptversion" + exit $? + ;; + --) + shift + break + ;; + -*) + echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2 + exit 1 + ;; + esac + ;; + *) + if test -z "$collect_var"; then + break + else + eval "$collect_var=\"\$$collect_var $1\"" + fi + ;; + esac + shift +done + +dprint() +{ + echo "Running $*..." +} + +if $dry_run; then + dbg=dprint +fi + +if test -z "$to"; then + echo "$0: Missing destination sites" >&2 + exit 1 +fi + +if test -n "$symlink_files"; then + x=`echo "$symlink_files" | sed 's/[^ ]//g;s/ //g'` + if test -n "$x"; then + echo "$0: Odd number of symlink arguments" >&2 + exit 1 + fi +fi + +if test $# = 0; then + if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then + echo "$0: No file to upload" 1>&2 + exit 1 + fi +else + # Make sure all files exist. We don't want to ask + # for the passphrase if the script will fail. + for file + do + if test ! -f $file; then + echo "$0: Cannot find \`$file'" 1>&2 + exit 1 + elif test -n "$symlink_expr"; then + linkname=`echo $file | sed "$symlink_expr"` + if test -z "$linkname"; then + echo "$0: symlink expression produces empty results" >&2 + exit 1 + elif test "$linkname" = $file; then + echo "$0: symlink expression does not alter file name" >&2 + exit 1 + fi + fi + done +fi + +# Make sure passphrase is not exported in the environment. +unset passphrase + +# Reset PATH to be sure that echo is a built-in. We will later use +# `echo $passphrase' to output the passphrase, so it is important that +# it is a built-in (third-party programs tend to appear in `ps' +# listings with their arguments...). +# Remember this script runs with `set -e', so if echo is not built-in +# it will exit now. +PATH=/empty echo -n "Enter GPG passphrase: " +stty -echo +read -r passphrase +stty echo +echo + +if test $# -ne 0; then + for file + do + echo "Signing $file..." + rm -f $file.sig + echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file + done +fi + + +# mkdirective DESTDIR BASE FILE STMT +# Arguments: See upload, below +mkdirective () +{ + stmt="$4" + if test -n "$3"; then + stmt=" +filename: $3$stmt" + fi + + cat >${2}.directive<<EOF +version: 1.1 +directory: $1 +comment: gnupload v. $scriptversion$stmt +EOF + if $dry_run; then + echo "File ${2}.directive:" + cat ${2}.directive + echo "File ${2}.directive:" | sed 's/./-/g' + fi +} + +mksymlink () +{ + while test $# -ne 0 + do + echo "symlink: $1 $2" + shift + shift + done +} + +# upload DEST DESTDIR BASE FILE STMT FILES +# Arguments: +# DEST Destination site; +# DESTDIR Destination directory; +# BASE Base name for the directive file; +# FILE Name of the file to distribute (may be empty); +# STMT Additional statements for the directive file; +# FILES List of files to upload. +upload () +{ + dest=$1 + destdir=$2 + base=$3 + file=$4 + stmt=$5 + files=$6 + + rm -f $base.directive $base.directive.asc + case $dest in + alpha.gnu.org:*) + mkdirective "$destdir" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc + ;; + ftp.gnu.org:*) + mkdirective "$destdir" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc + ;; + savannah.gnu.org:*) + if test -z "$files"; then + echo "$0: warning: standalone directives not applicable for $dest" >&2 + fi + $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files + ;; + savannah.nongnu.org:*) + if test -z "$files"; then + echo "$0: warning: standalone directives not applicable for $dest" >&2 + fi + $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files + ;; + download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*) + destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'` + destdir_topdir=`echo "$destdir" | sed 's,/.*,,'` + mkdirective "$destdir_p1" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + for f in $files $base.directive.asc + do + echo put $f + done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir + ;; + /*) + dest_host=`echo "$dest" | sed 's,:.*,,'` + mkdirective "$destdir" "$base" "$file" "$stmt" + echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive + $dbg cp $files $base.directive.asc $dest_host + ;; + *) + if test -z "$files"; then + echo "$0: warning: standalone directives not applicable for $dest" >&2 + fi + $dbg scp $files $dest + ;; + esac + rm -f $base.directive $base.directive.asc +} + +##### +# Process any standalone directives +stmt= +if test -n "$symlink_files"; then + stmt="$stmt +`mksymlink $symlink_files`" +fi + +for file in $delete_files +do + stmt="$stmt +archive: $file" +done + +for file in $delete_symlinks +do + stmt="$stmt +rmsymlink: $file" +done + +if test -n "$stmt"; then + for dest in $to + do + destdir=`echo $dest | sed 's/[^:]*://'` + upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt" + done +fi + +# Process actual uploads +for dest in $to +do + for file + do + echo "Uploading $file to $dest..." + stmt= + files="$file $file.sig" + destdir=`echo $dest | sed 's/[^:]*://'` + if test -n "$symlink_expr"; then + linkname=`echo $file | sed "$symlink_expr"` + stmt="$stmt +symlink: $file $linkname +symlink: $file.sig $linkname.sig" + fi + upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files" + done +done + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/install-sh b/build-aux/install-sh new file mode 100755 index 0000000..6781b98 --- /dev/null +++ b/build-aux/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# 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. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # 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 $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/link-warning.h b/build-aux/link-warning.h new file mode 100644 index 0000000..fda0194 --- /dev/null +++ b/build-aux/link-warning.h @@ -0,0 +1,28 @@ +/* GL_LINK_WARNING("literal string") arranges to emit the literal string as + a linker warning on most glibc systems. + We use a linker warning rather than a preprocessor warning, because + #warning cannot be used inside macros. */ +#ifndef GL_LINK_WARNING + /* This works on platforms with GNU ld and ELF object format. + Testing __GLIBC__ is sufficient for asserting that GNU ld is in use. + Testing __ELF__ guarantees the ELF object format. + Testing __GNUC__ is necessary for the compound expression syntax. */ +# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__ +# define GL_LINK_WARNING(message) \ + GL_LINK_WARNING1 (__FILE__, __LINE__, message) +# define GL_LINK_WARNING1(file, line, message) \ + GL_LINK_WARNING2 (file, line, message) /* macroexpand file and line */ +# define GL_LINK_WARNING2(file, line, message) \ + GL_LINK_WARNING3 (file ":" #line ": warning: " message) +# define GL_LINK_WARNING3(message) \ + ({ static const char warning[sizeof (message)] \ + __attribute__ ((__unused__, \ + __section__ (".gnu.warning"), \ + __aligned__ (1))) \ + = message "\n"; \ + (void)0; \ + }) +# else +# define GL_LINK_WARNING(message) ((void) 0) +# endif +#endif diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh new file mode 100755 index 0000000..b36c4ad --- /dev/null +++ b/build-aux/ltmain.sh @@ -0,0 +1,8406 @@ +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [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 +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# 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 `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to <bug-libtool@gnu.org>. + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=2.2.6 +TIMESTAMP="" +package_revision=1.3012 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# 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). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/usr/bin/grep -E"} +: ${FGREP="/usr/bin/grep -F"} +: ${GREP="/usr/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/opt/local/bin/gsed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# 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='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# 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 "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit $EXIT_SUCCESS +fi + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +# $mode is unset +nonopt= +execute_dlfiles= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +opt_dry_run=false +opt_duplicate_deps=false +opt_silent=false +opt_debug=: + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_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 $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <<EOF +# $write_libobj - a libtool object file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object=$write_lobj + +# Name of the non-PIC object +non_pic_object=$write_oldobj + +EOF + $MV "${write_libobj}T" "${write_libobj}" + } +} + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + pie_flag="$pie_flag $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_quote_for_eval "$arg" + lastarg="$lastarg $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_quote_for_eval "$lastarg" + base_compile="$base_compile $func_quote_for_eval_result" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.obj | *.sx) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # 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" + else + output_obj= + 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 $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "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." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # 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 + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + 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." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + 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." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build 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, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [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 + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only 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: $progname [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: $progname [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: $progname [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 following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [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-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -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 + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +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: $progname [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." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + 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 func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + 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 $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + 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. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $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 the \`-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" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # 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 || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # 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) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -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. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + 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 + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # 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 + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_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 + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # 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" | + if sort -k 3 </dev/null >/dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + 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/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + 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*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + 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 +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# 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' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +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 "\ + + # 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 +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + 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 "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $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 "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + 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 "\ + # 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 "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + 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\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat <<EOF + +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION + + The $output program cannot be directly executed until all the libtool + libraries that it depends on are installed. + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. + + Currently, it simply execs the wrapper *script* "$SHELL $output", + but could eventually absorb all of the scripts functionality and + exec $objdir/$outputname directly. +*/ +EOF + cat <<"EOF" +#include <stdio.h> +#include <stdlib.h> +#ifdef _MSC_VER +# include <direct.h> +# include <process.h> +# include <io.h> +# define setmode _setmode +#else +# include <unistd.h> +# include <stdint.h> +# ifdef __CYGWIN__ +# include <io.h> +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include <malloc.h> +#include <stdarg.h> +#include <assert.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> +#include <sys/stat.h> + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <<EOF + +static const char *script_text_part2 = +EOF + func_emit_wrapper_part2 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + + cat <<EOF +const char * MAGIC_EXE = "$magic_exe"; +const char * LIB_PATH_VARNAME = "$shlibpath_var"; +EOF + + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + func_to_host_pathlist "$temp_rpath" + cat <<EOF +const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; +EOF + else + cat <<"EOF" +const char * LIB_PATH_VALUE = ""; +EOF + fi + + if test -n "$dllsearchpath"; then + func_to_host_pathlist "$dllsearchpath:" + cat <<EOF +const char * EXE_PATH_VARNAME = "PATH"; +const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; +EOF + else + cat <<"EOF" +const char * EXE_PATH_VARNAME = ""; +const char * EXE_PATH_VALUE = ""; +EOF + fi + + if test "$fast_install" = yes; then + cat <<EOF +const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ +EOF + else + cat <<EOF +const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ +EOF + fi + + + cat <<"EOF" + +#define LTWRAPPER_OPTION_PREFIX "--lt-" +#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 + +static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; +static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; + +static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; + +static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; +static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; + /* argument is putenv-style "foo=bar", value of foo is set to bar */ + +static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; +static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; + /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ + +static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; +static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; + /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ + +int +main (int argc, char *argv[]) +{ + char **newargz; + int newargc; + char *tmp_pathspec; + char *actual_cwrapper_path; + char *actual_cwrapper_name; + char *target_name; + char *lt_argv_zero; + intptr_t rval = 127; + + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); + LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); + + /* very simple arg parsing; don't want to rely on getopt */ + for (i = 1; i < argc; i++) + { + if (strcmp (argv[i], dumpscript_opt) == 0) + { +EOF + case "$host" in + *mingw* | *cygwin* ) + # make stdout use "unix" line endings + echo " setmode(1,_O_BINARY);" + ;; + esac + + cat <<"EOF" + printf ("%s", script_text_part1); + printf ("%s", script_text_part2); + return 0; + } + } + + newargz = XMALLOC (char *, argc + 1); + tmp_pathspec = find_executable (argv[0]); + if (tmp_pathspec == NULL) + lt_fatal ("Couldn't find %s", argv[0]); + LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", + tmp_pathspec)); + + actual_cwrapper_path = chase_symlinks (tmp_pathspec); + LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", + actual_cwrapper_path)); + XFREE (tmp_pathspec); + + actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); + strendzap (actual_cwrapper_path, actual_cwrapper_name); + + /* wrapper name transforms */ + strendzap (actual_cwrapper_name, ".exe"); + tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); + XFREE (actual_cwrapper_name); + actual_cwrapper_name = tmp_pathspec; + tmp_pathspec = 0; + + /* target_name transforms -- use actual target program name; might have lt- prefix */ + target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); + strendzap (target_name, ".exe"); + tmp_pathspec = lt_extend_str (target_name, ".exe", 1); + XFREE (target_name); + target_name = tmp_pathspec; + tmp_pathspec = 0; + + LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", + target_name)); +EOF + + cat <<EOF + newargz[0] = + XMALLOC (char, (strlen (actual_cwrapper_path) + + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); + strcpy (newargz[0], actual_cwrapper_path); + strcat (newargz[0], "$objdir"); + strcat (newargz[0], "/"); +EOF + + cat <<"EOF" + /* stop here, and copy so we don't have to do this twice */ + tmp_pathspec = xstrdup (newargz[0]); + + /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ + strcat (newargz[0], actual_cwrapper_name); + + /* DO want the lt- prefix here if it exists, so use target_name */ + lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); + XFREE (tmp_pathspec); + tmp_pathspec = NULL; +EOF + + case $host_os in + mingw*) + cat <<"EOF" + { + char* p; + while ((p = strchr (newargz[0], '\\')) != NULL) + { + *p = '/'; + } + while ((p = strchr (lt_argv_zero, '\\')) != NULL) + { + *p = '/'; + } + } +EOF + ;; + esac + + cat <<"EOF" + XFREE (target_name); + XFREE (actual_cwrapper_path); + XFREE (actual_cwrapper_name); + + lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ + lt_setenv ("DUALCASE", "1"); /* for MSK sh */ + lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); + lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); + + newargc=0; + for (i = 1; i < argc; i++) + { + if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) + { + if (argv[i][env_set_opt_len] == '=') + { + const char *p = argv[i] + env_set_opt_len + 1; + lt_opt_process_env_set (p); + } + else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_set (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_set_opt); + continue; + } + if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) + { + if (argv[i][env_prepend_opt_len] == '=') + { + const char *p = argv[i] + env_prepend_opt_len + 1; + lt_opt_process_env_prepend (p); + } + else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_prepend (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_prepend_opt); + continue; + } + if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) + { + if (argv[i][env_append_opt_len] == '=') + { + const char *p = argv[i] + env_append_opt_len + 1; + lt_opt_process_env_append (p); + } + else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_append (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_append_opt); + continue; + } + if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) + { + /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX + namespace, but it is not one of the ones we know about and + have already dealt with, above (inluding dump-script), then + report an error. Otherwise, targets might begin to believe + they are allowed to use options in the LTWRAPPER_OPTION_PREFIX + namespace. The first time any user complains about this, we'll + need to make LTWRAPPER_OPTION_PREFIX a configure-time option + or a configure.ac-settable value. + */ + lt_fatal ("Unrecognized option in %s namespace: '%s'", + ltwrapper_option_prefix, argv[i]); + } + /* otherwise ... */ + newargz[++newargc] = xstrdup (argv[i]); + } + newargz[++newargc] = NULL; + + LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # 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 invocation. + # 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 + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_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 + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append 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= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + 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 + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -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 + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $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" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + continue + fi # $pass = conv + + + # 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 + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + 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 + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + 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 + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # 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_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $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." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + 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 + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + 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 + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + 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 + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # 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 behavior. + 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. + $opt_dry_run || $RM conftest.c + cat > conftest.c <<EOF + int main() { return 0; } +EOF + $opt_dry_run || $RM conftest + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then + ldd_output=`ldd conftest` + for i in $deplibs; do + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $ECHO + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + $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 I believe you do not have" + $ECHO "*** because a test_compile did reveal that the linker did not use it for" + $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." + fi + fi + ;; + *) + newdeplibs="$newdeplibs $i" + ;; + esac + done + else + # Error occurred in the first compile. Let's try to salvage + # the situation: Compile a separate program for each library. + for i in $deplibs; do + case $i in + -l*) + func_stripname -l '' "$i" + name=$func_stripname_result + $opt_dry_run || $RM conftest + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then + ldd_output=`ldd conftest` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` + set dummy $deplib_matches; shift + deplib_match=$1 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $ECHO + $ECHO "*** Warning: dynamic linker does not accept needed library $i." + $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" + $ECHO "*** because a test_compile did reveal that the linker did not use this one" + $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." + fi + fi + else + droppeddeps=yes + $ECHO + $ECHO "*** Warning! Library $i is needed by this library but I was not able to" + $ECHO "*** make it link in! You will probably need to install it or some" + $ECHO "*** library that it depends on before this library will be fully" + $ECHO "*** functional. Installing it before continuing would be even better." + fi + ;; + *) + newdeplibs="$newdeplibs $i" + ;; + esac + done + fi + ;; + file_magic*) + set dummy $deplibs_check_method; shift + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/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 -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $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" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $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" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -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 + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + 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." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + 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 + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # 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 + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $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\" + dep_rpath="$dep_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" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_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 + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_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 and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${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" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + 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 "$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 + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + 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" + + 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 + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; 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. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + 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 "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + 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" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + 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. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --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 not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + 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 $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh new file mode 100755 index 0000000..e631b22 --- /dev/null +++ b/build-aux/mdate-sh @@ -0,0 +1,205 @@ +#!/bin/sh +# Get modification time of a file or directory and pretty-print it. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free +# Software Foundation, Inc. +# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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, see <http://www.gnu.org/licenses/>. + +# 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. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +case $1 in + '') + echo "$0: No file. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: mdate-sh [--help] [--version] FILE + +Pretty-print the modification time of FILE. + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "mdate-sh $scriptversion" + exit $? + ;; +esac + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume `unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 + +# Find out how to get the extended ls output of a file or directory. +if ls -L /dev/null 1>/dev/null 2>&1; then + ls_command='ls -L -l -d' +else + ls_command='ls -l -d' +fi +# Avoid user/group names that might have spaces, when possible. +if ls -n /dev/null 1>/dev/null 2>&1; then + ls_command="$ls_command -n" +fi + +# A `ls -l' line looks as follows on OS/2. +# drwxrwx--- 0 Aug 11 2001 foo +# This differs from Unix, which adds ownership information. +# drwxrwx--- 2 root root 4096 Aug 11 2001 foo +# +# To find the date, we split the line on spaces and iterate on words +# until we find a month. This cannot work with files whose owner is a +# user named `Jan', or `Feb', etc. However, it's unlikely that `/' +# will be owned by a user whose name is a month. So we first look at +# the extended ls output of the root directory to decide how many +# words should be skipped to get the date. + +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +set x`$ls_command /` + +# Find which argument is the month. +month= +command= +until test $month +do + shift + # Add another shift to the command. + command="$command 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 + +# Get the extended ls output of the file or directory. +set dummy x`eval "$ls_command \"\$save_arg1\""` + +# Remove all preceding arguments +eval $command + +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +case $2 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 + +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac + +# 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 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/missing b/build-aux/missing new file mode 100755 index 0000000..28055d2 --- /dev/null +++ b/build-aux/missing @@ -0,0 +1,376 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 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, see <http://www.gnu.org/licenses/>. + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -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' + autom4te touch the output file, or create a stub one + 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 + help2man touch the output file + 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] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to <bug-automake@gnu.org>." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. 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 $msg. You should only need it if + you modified \`${configure_ac}'. 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 $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. 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_ac}` + 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 $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + 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 + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. 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 test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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 test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && 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 is $msg. + 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 prerequisites 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 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/pmccabe.css b/build-aux/pmccabe.css new file mode 100644 index 0000000..2d94c91 --- /dev/null +++ b/build-aux/pmccabe.css @@ -0,0 +1,227 @@ +body { + + font-family: Helvetica, sans-serif; + +} + +.page_title { + + font: 18pt Georgia, serif; +/* font-size: 1.5em; + font-weight: bold; */ + color: darkred; + border-bottom: 2px solid darkred; +} + +.section_title { + + font: 14pt Georgia, serif; + color: darkred; + border-bottom: 2px dashed darkred; +} + +.report_timestamp { + + color: darkred; + font-weight: bold; + +} + +.function_src { + + text-align: left; + background: white; +} + +.resume_table { + +} + +.resume_header_entry { + + color: black; +} + +.resume_number_entry { + + color: darkred; + font-weight: bold; + text-align: right; +} + +.ranges_table { + + border-spacing: 0px; + border-bottom: solid 2px black; + border-top: solid 2px black; + border-left: solid 2px black; + border-right: solid 2px black; +} + +.ranges_header_entry { + + padding: 5px; + border-bottom: solid 1px black; + font-size: 1em; + font-weight: bold; + color: darkred; + text-align: left; +} + +.ranges_entry { + +} + +.ranges_entry_simple { + + background: #87ff75; + +} + +.ranges_entry_moderate { + + background: #fffc60; + +} + +.ranges_entry_high { + + background: #ff5a5d; + +} + +.ranges_entry_untestable { + + background: #993300 + +} + + +.function_table { + + border-spacing: 0px; + border-bottom: solid 2px black; + border-top: solid 2px black; + border-left: solid 2px black; + border-right: solid 2px black; +} + +.function_table_caption { + + font-size: 1.1em; + font-weight: bold; + color: black; + padding: 5px; +} + +.function_table_header { + +} + + +.function_table_header_entry { + + padding: 5px; + border-bottom: solid 1px black; + font-size: 1em; + font-weight: bold; + color: darkred; + text-align: left; +} + +.function_entry { + + +} + + +.function_entry_simple { + + background: #87ff75; + +} + +.function_entry_moderate { + + background: #fffc60; + +} + +.function_entry_high { + + background: #ff5a5d; + +} + +.function_entry_untestable { + + background: #993300 + +} + + +.function_entry_name { + + font-size: 1em; + text-align: left; + font-weight: bold; + text-valign: top; + + border-top: solid 1px black; + padding: 3px; +} + +.function_entry_cyclo { + + font-size: 1em; + text-align: right; + text-valign: top; + + border-top: solid 1px black; + padding: 3px; +} + +.function_entry_number { + + font-size: 1em; + text-align: right; + text-valign: top; + + border-top: solid 1px black; + padding: 3px; +} + +.function_entry_filename { + + font-size: 1em; + text-align: left; + text-valign: top; + + border-top: solid 1px black; + padding: 3px; +} + +.sidemenu { + + border: 1px black solid; + padding: 5px; + +} + +.sidemenuheader { + + color: darkred; + font-size: 1.1em; + font-weight: bold; + border-bottom: 1px dashed darkred; +} + +.sidemenuentry { + + +} + +.menu { + +} + diff --git a/build-aux/pmccabe2html b/build-aux/pmccabe2html new file mode 100755 index 0000000..27bb8f3 --- /dev/null +++ b/build-aux/pmccabe2html @@ -0,0 +1,908 @@ +#!/usr/bin/awk -f +# pmccabe2html - pmccabe to html converter + +# Copyright (C) 2007, 2008 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 3 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, see <http://www.gnu.org/licenses/>. + +# Written by Jose E. Marchesi <jemarch@gnu.org>. +# Adapted for gnulib by Simon Josefsson <simon@josefsson.org>. +# Added support for C++ by Giuseppe Scrivano <gscrivano@gnu.org>. + +# Typical Invocation is from a Makefile.am: +# +# cyclo-libidn.html: +# $(PMCCABE) ${top_srcdir}/lib/*.[ch] \ +# | sort -nr \ +# | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ +# -v lang=html -v name="$(PACKAGE_NAME)" \ +# -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \ +# -v url="http://www.gnu.org/software/libidn/" \ +# -v css=../../build-aux/pmccabe.css \ +# > tmp +# mv tmp $@ +# +# The variables available are: +# lang output language, either 'html' or 'wiki' +# name project name +# url link to project's home page +# vcurl URL to version controlled source code browser, +# a %FILENAME% in the string is replaced with the relative +# source filename +# css CSS stylesheet filename, included verbatim in HTML output +# css_url link to CSS stylesheet, an URL + +# Prologue & configuration +BEGIN { + section_global_stats_p = 1 + section_function_cyclo_p = 1 + + # "html" or "wiki" + package_name = name + output_lang = lang + + # General Options + cyclo_simple_max = 10 + cyclo_moderate_max = 20 + cyclo_high_max = 50 + cut_dir = "/../" + source_file_link_tmpl = vcurl + + # HTML options + if (url != "") + { + html_prolog = "<a href=\"" url "\">Back to " package_name " Homepage</a><br/><br/>" + } + html_epilog = "<hr color=\"black\" size=\"2\"/> \ +Copyright (c) 2007, 2008 Free Software Foundation Inc." + html_doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \ +\"http://www.w3.org/TR/html401/loose.dtd\">" + html_comment = "<!-- Generated by gnulib's pmccabe2html at " systime() " -->" + html_title = "Cyclomatic Complexity report for " package_name + + # Wiki options + wiki_prolog = "{{Note|This page has been automatically generated}}" + wiki_epilog = "" + + # Internal variables + nfuncs = 0; +} + +# Functions + +function build_stats() +{ + # Maximum modified cyclo + for (fcn in mcyclo) + { + num_of_functions++ + if (mcyclo[fcn] > max_mcyclo) + { + max_mcyclo = mcyclo[fcn] + } + + if (mcyclo[fcn] > cyclo_high_max) + { + num_of_untestable_functions++ + } + else if (mcyclo[fcn] > cyclo_moderate_max) + { + num_of_high_functions++ + } + else if (mcyclo[fcn] > cyclo_simple_max) + { + num_of_moderate_functions++ + } + else + { + num_of_simple_functions++ + } + } +} + +function html_fnc_table_complete (caption) +{ + html_fnc_table(caption, 1, 0, 1, 1, 1, 0, 1) +} + +function html_fnc_table_abbrev (caption) +{ + html_fnc_table(caption, 1, 0, 1, 0, 1, 0, 0) +} + + +function html_fnc_table (caption, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + print "<table width=\"90%\" class=\"function_table\" cellpadding=\"0\" cellspacing=\"0\">" + if (caption != "") + { + print "<caption class=\"function_table_caption\">" caption "</caption>" + } + html_fnc_header(fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) + for (nfnc = 1; nfnc < nfuncs; nfnc++) + { + html_fnc(nfnc, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) + } + print "</table>" +} + +function html_header () +{ + print html_doctype + print "<html>" + print html_comment + print "<head>" + print "<title>" html_title "" + print "" + print "" + print "" + print "" + print "" + print "" + print "" + print "" + + + if (css_url != "") + { + print "" + } + if (css != "") + { + print "" + close(css) + } + print "" + print "" +} + +function html_footer () +{ + print "" + print "" +} + +function html_fnc_header (fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + print "" + if (fname_p) + { + # Function name + print "" + print "" + print "" + + print "" + print "Function Name" + print "" + } + if (mcyclo_p) + { + # Modified cyclo + print "" + print "Modified Cyclo" + print "" + } + if (cyclo_p) + { + # Cyclo + print "" + print "Cyclomatic" + print "
" + print "Complexity" + print "" + } + if (num_statements_p) + { + print "" + print "Number of" + print "
" + print "Statements" + print "" + } + if (num_lines_p) + { + print "" + print "Number of" + print "
" + print "Lines" + print "" + } + if (first_line_p) + { + print "" + print "First Line" + print "" + } + if (file_p) + { + print "" + print "Source File" + print "" + + } + print "" +} + +function html_fnc (nfun, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + fname = fnames[nfun] + + # Function name + trclass = "function_entry_simple" + if (mcyclo[nfun] > cyclo_high_max) + { + trclass="function_entry_untestable" + } + else if (mcyclo[nfun] > cyclo_moderate_max) + { + trclass="function_entry_high" + } + else if (mcyclo[nfun] > cyclo_simple_max) + { + trclass="function_entry_moderate" + } + + print "" + if (fname_p) + { + print "" + if (file_p && mcyclo[nfun] > cyclo_simple_max) + { + print "\ +" + } + else + { + print " " + } + print "" + + print "" + print fname + print "" + } + if (mcyclo_p) + { + # Modified cyclo + print "" + print mcyclo[nfun] + print "" + } + if (cyclo_p) + { + # Cyclo + print "" + print cyclo[nfun] + print "" + } + if (num_statements_p) + { + # Number of statements + print "" + print num_statements[nfun] + print "" + } + if (num_lines_p) + { + # Number of lines + print "" + print num_lines[nfun] + print "" + } + if (first_line_p) + { + # First line + print "" + print first_line[nfun] + print "" + } + if (file_p) + { + href = "" + if (source_file_link_tmpl != "") + { + # Get href target + href = source_file_link_tmpl + sub(/%FILENAME%/, file[nfun], href) + } + + # Source file + print "" + if (href != "") + { + print "" file[nfun] "" + } + else + { + print file[nfun] + } + + print "" + + + print "" + + if (mcyclo[nfun] > cyclo_simple_max) + { + print "" + + num_columns = 1; + if (fname_p) { num_columns++ } + if (mcyclo_p) { num_columns++ } + if (cyclo_p) { num_columns++ } + if (num_statements_p) { num_columns++ } + if (num_lines_p) { num_columns++ } + if (first_line_p) { num_columns++ } + if (file_p) { num_columns++ } + + print "" + print "
" + print "
"
+
+            while ((getline codeline < (fname nfun "_fn.txt")) > 0)
+            {
+                sub(/\\/, ">", codeline)
+                sub(/&/, "&", codeline)
+                
+                print codeline
+            }
+            close(fname nfun "_fn.txt")
+            system("rm " fname nfun "_fn.txt")
+            print "
" + print "
" + print "" + print "" + } + + } +} + +function html_global_stats () +{ + print "
Resume
" + + print "
" + print "" + # Total number of functions + print "" + print "" + print "" + print "" + # Number of simple functions + print "" + print "" + print "" + print "" + # Number of moderate functions + print "" + print "" + print "" + print "" + # Number of high functions + print "" + print "" + print "" + print "" + # Number of untestable functions + print "" + print "" + print "" + print "" + print "
" + print "Total number of functions" + print "" + print num_of_functions + print "
" + print "Number of low risk functions" + print "" + print num_of_simple_functions + print "
" + print "Number of moderate risk functions" + print "" + print num_of_moderate_functions + print "
" + print "Number of high risk functions" + print "" + print num_of_high_functions + print "
" + print "Number of untestable functions" + print "" + print num_of_untestable_functions + print "
" + print "
" +} + +function html_function_cyclo () +{ + print "
Details for all functions
" + print "

Used ranges:

" + + print "" + print "" + print "" + print "" + print "" + print "" + # Simple + print "" + print "" + print "" + print "" + print "" + # Moderate + print "" + print "" + print "" + print "" + print "" + # High + print "" + print "" + print "" + print "" + print "" + # Untestable + print "" + print "" + print "" + print "" + print "" + print "
" + print " " + print "" + print "Cyclomatic Complexity" + print "" + print "Risk Evaluation" + print "
" + print " " + print "" + print "0 - " cyclo_simple_max + print "" + print "Simple module, without much risk" + print "
" + print " " + print "" + print cyclo_simple_max + 1 " - " cyclo_moderate_max + print "" + print "More complex module, moderate risk" + print "
" + print " " + print "" + print cyclo_moderate_max + 1 " - " cyclo_high_max + print "" + print "Complex module, high risk" + print "
" + print " " + print "" + print "greater than " cyclo_high_max + print "" + print "Untestable module, very high risk" + print "
" + print "
" + html_fnc_table_complete("") +} + +function wiki_global_stats () +{ + print "{| class=\"cyclo_resume_table\"" + # Total number of functions + print "|-" + print "| class=\"cyclo_resume_header_entry\" | Total number of functions" + print "| class=\"cyclo_resume_number_entry\" |" num_of_functions + # Number of simple functions + print "|-" + print "| class=\"cyclo_resume_header_entry\" | Number of low risk functions" + print "| class=\"cyclo_resume_number_entry\" |" num_of_simple_functions + # Number of moderate functions + print "|-" + print "| class=\"cyclo_resume_header_entry\" | Number of moderate risk functions" + print "| class=\"cyclo_resume_number_entry\" |" num_of_moderate_functions + # Number of high functions + print "|-" + print "| class=\"cyclo_resume_header_entry\" | Number of high risk functions" + print "| class=\"cyclo_resume_number_entry\" |" num_of_high_functions + # Number of untestable functions + print "|-" + print "| class=\"cyclo_resume_header_entry\" | Number of untestable functions" + print "| class=\"cyclo_resume_number_entry\" |" num_of_untestable_functions + print "|}" +} + +function wiki_function_cyclo () +{ + print "==Details for all functions==" + + print "Used ranges:" + + print "{| class =\"cyclo_ranges_table\"" + print "|-" + print "| class=\"cyclo_ranges_header_entry\" | " + print "| class=\"cyclo_ranges_header_entry\" | Cyclomatic Complexity" + print "| class=\"cyclo_ranges_header_entry\" | Risk Evaluation" + # Simple + print "|-" + print "| class=\"cyclo_ranges_entry_simple\" | " + print "| class=\"cyclo_ranges_entry\" | 0 - " cyclo_simple_max + print "| class=\"cyclo_ranges_entry\" | Simple module, without much risk" + # Moderate + print "|-" + print "| class=\"cyclo_ranges_entry_moderate\" | " + print "| class=\"cyclo_ranges_entry\" |" cyclo_simple_max + 1 " - " cyclo_moderate_max + print "| class=\"cyclo_ranges_entry\" | More complex module, moderate risk" + # High + print "|-" + print "| class=\"cyclo_ranges_entry_high\" | " + print "| class=\"cyclo_ranges_entry\" |" cyclo_moderate_max + 1 " - " cyclo_high_max + print "| class=\"cyclo_ranges_entry\" | Complex module, high risk" + # Untestable + print "|-" + print "| class=\"cyclo_ranges_entry_untestable\" | " + print "| class=\"cyclo_ranges_entry\" | greater than " cyclo_high_max + print "| class=\"cyclo_ranges_entry\" | Untestable module, very high risk" + print "|}" + + print "" + print "" + wiki_fnc_table_complete("") +} + +function wiki_fnc_table_complete (caption) +{ + wiki_fnc_table(caption, 1, 0, 1, 1, 1, 0, 1) +} + +function wiki_fnc_table_abbrev (caption) +{ + wiki_fnc_table(caption, 1, 0, 0, 0, 0, 0, 0) +} + +function wiki_fnc_table (caption, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + print "{| width=\"90%\" class=\"cyclo_function_table\" cellpadding=\"0\" cellspacing=\"0\">" + if (caption != "") + { + print "|+" caption + } + wiki_fnc_header(fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) + for (nfnc = 1; nfnc < nfuncs; nfnc++) + { + wiki_fnc(nfnc, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) + } + print "|}" +} + +function wiki_fnc_header (fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + if (fname_p) + { + # Function name + print "! class=\"cyclo_function_table_header_entry\" | Function Name" + } + if (mcyclo_p) + { + # Modified cyclo + print "! class=\"cyclo_function_table_header_entry\" | Modified Cyclo" + } + if (cyclo_p) + { + # Cyclo + print "! class=\"cyclo_function_table_header_entry\" | Cyclomatic Complexity" + } + if (num_statements_p) + { + print "! class=\"cyclo_function_table_header_entry\" | Number of Statements" + } + if (num_lines_p) + { + print "! class=\"cyclo_function_table_header_entry\" | Number of Lines" + } + if (first_line_p) + { + print "! class=\"cyclo_function_table_header_entry\" | First Line" + } + if (file_p) + { + print "! class=\"cyclo_function_table_header_entry\" | Source File" + } +} + +function wiki_fnc (nfnc, + fname_p, + mcyclo_p, + cyclo_p, + num_statements_p, + num_lines_p, + first_line_p, + file_p) +{ + fname = fnames[nfnc] + + # Function name + trclass = "cyclo_function_entry_simple" + if (mcyclo[nfnc] > cyclo_high_max) + { + trclass="cyclo_function_entry_untestable" + } + else if (mcyclo[nfnc] > cyclo_moderate_max) + { + trclass="cyclo_function_entry_high" + } + else if (mcyclo[nfnc] > cyclo_simple_max) + { + trclass="cyclo_function_entry_moderate" + } + + print "|- class=\"" trclass "\"" + if (fname_p) + { + print "| class=\"cyclo_function_entry_name\" |" fname + } + if (mcyclo_p) + { + # Modified cyclo + print "| class=\"cyclo_function_entry_cyclo\" |" mcyclo[nfnc] + } + if (cyclo_p) + { + # Cyclo + print "| class=\"cyclo_function_entry_cyclo\" |" cyclo[nfnc] + } + if (num_statements_p) + { + # Number of statements + print "| class=\"cyclo_function_entry_number\" |" num_statements[nfnc] + } + if (num_lines_p) + { + # Number of lines + print "| class=\"cyclo_function_entry_number\" |" num_lines[nfnc] + } + if (first_line_p) + { + # First line + print "| class=\"cyclo_function_entry_number\" |" first_line[nfnc] + } + if (file_p) + { + href = "" + if (source_file_link_tmpl != "") + { + # Get href target + href = source_file_link_tmpl + sub(/%FILENAME%/, file[nfnc], href) + } + + # Source file + print "| class=\"cyclo_function_entry_filename\" |" \ + ((href != "") ? "[" href " " file[nfnc] "]" : "[" file[nfnc] "]") + } +} + +# Scan data from a line +{ + function_name = $7 + + nfuncs++; + fnames[nfuncs] = function_name + mcyclo[nfuncs] = $1 + cyclo[nfuncs] = $2 + num_statements[nfuncs] = $3 + first_line[nfuncs] = $4 + num_lines[nfuncs] = $5 + + # Build the filename from the file_spec ($6) + begin_util_path = index($6, cut_dir) + tmpfilename = substr($6, begin_util_path + length(cut_dir)) + sub(/\([0-9]+\):/, "", tmpfilename) + file[nfuncs] = tmpfilename + + if (mcyclo[nfuncs] > cyclo_simple_max) + { + # Extract function contents to a fn_txt file + filepath = $6 + + sub(/\([0-9]+\):/, "", filepath) + num_line = 0 + + while ((getline codeline < filepath) > 0) + { + num_line++; + if ((num_line >= first_line[nfuncs]) && + (num_line < first_line[nfuncs] + num_lines[nfuncs])) + { + print codeline > (function_name nfuncs "_fn.txt") + } + } + close (function_name nfuncs "_fn.txt") + close(filepath) + } + + # Initial values for statistics variables + num_of_functions = 0 + max_mcyclo = 0 + max_function_length = 0 + num_of_simple_functions = 0 + num_of_moderate_functions = 0 + num_of_high_functions = 0 + num_of_untestable_functions = 0 +} + +# Epilogue +END { + # Print header (only for html) + if (output_lang == "html") + { + html_header() + } + + # Print prolog + if ((output_lang == "html") && + (html_prolog != "")) + { + print html_prolog + } + if ((output_lang == "wiki") && + (wiki_prolog != "")) + { + print wiki_prolog + } + + if (output_lang == "html") + { + print "
" package_name " Cyclomatic Complexity Report
" + print "

Report generated at: " strftime() "

" + } + if (output_lang == "wiki") + { + print "==" package_name " Cyclomatic Complexity Report==" + print "Report generated at: '''" strftime() "'''" + } + + if (section_global_stats_p) + { + build_stats() + + if (output_lang == "html") + { + html_global_stats() + } + if (output_lang == "wiki") + { + wiki_global_stats() + } + } + if (section_function_cyclo_p) + { + if (output_lang == "html") + { + html_function_cyclo() + } + if (output_lang == "wiki") + { + wiki_function_cyclo() + } + } + + # Print epilog + if ((output_lang == "html") && + (html_epilog != "")) + { + print html_epilog + } + if ((output_lang == "wiki") && + (wiki_epilog != "")) + { + print wiki_epilog + } + + # Print footer (html only) + if (output_lang == "html") + { + html_footer() + } +} + +# End of pmccabe2html diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex new file mode 100644 index 0000000..0d3ba16 --- /dev/null +++ b/build-aux/texinfo.tex @@ -0,0 +1,9291 @@ +% 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{2009-05-16.16} +% +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009 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 3 of the +% License, 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 program. If not, see . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. (This has been our intent since Texinfo was invented.) +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or +% ftp://tug.org/tex/texinfo.tex +% (and all CTAN mirrors, see http://www.ctan.org). +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% 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; this makes foo.ps. +% The extra TeX runs 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, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/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} + + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros 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\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexstar=\* +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active +\global\let\ptexquoteright'}% Math-mode def from plain.tex. +\let\ptexraggedright=\raggedright + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% 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 % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% 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\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences. +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dashChar = `\- +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\lquoteChar= `\` +\chardef\questChar = `\? +\chardef\rquoteChar= `\' +\chardef\semiChar = `\; +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% 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} + +% @| 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 + }% + }% +} + +% 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. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\undefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\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 + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. The solution is +% described on page 260 of The TeXbook. It involves outputting two +% marks for the sectioning macros, one before the section break, and +% one after. I won't pretend I can describe this better than DEK... +\def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 + \noexpand\or \the\toks4 \the\toks6 + \noexpand\else \the\toks8 + }% +} +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} + +% 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). + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \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. + % + \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. + % We don't want .vr (or whatever) entries like this: + % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\tt \backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \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 \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \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 \indexdummies + \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\relax \unvbox#1\relax +\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{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +% +% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my +% favourite TeX trick. --kasal, 16nov03 + +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % 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. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % 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 \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + out of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +%% 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 \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @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 @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% + \kern-.15em + \TeX +} + +% 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} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% + \fi\fi +} + +% @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. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % 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 +} +% +% The \vtop 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. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts +} +% +% 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 + +% Old definition--didn't work. +%\parseargdef\need{\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 +%}} + +\parseargdef\need{% + % 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 (and is undocumented). + +\let\br = \par + +% @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. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} + +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\next\centerH + \else + \let\next\centerV + \fi + \next{\hfil \ignorespaces#1\unskip \hfil}% +} +\def\centerH#1{% + {% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break + }% +} +\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} + +% @sp n outputs n lines of vertical space + +\parseargdef\sp{\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. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \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. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% +} + +\gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% +} + + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a \ character. +% FYI, plain.tex uses \\ as a temporary control sequence (why?), but +% this is not advertised and we don't care. Texinfo does not +% otherwise define @\. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% Some math mode symbols. +\def\bullet{$\ptexbullet$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @comma{} is so commas can be inserted into text without messing up +% Texinfo's parsing. +% +\let\comma = , + +% @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{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \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 + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as \undefined, +% borrowed from ifpdf.sty. +\ifx\pdfoutput\undefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html +% (and related messages, the final outcome is that it is up to the TeX +% user to double the backslashes and otherwise make the string valid, so +% that's what we do). + +% double active backslashes. +% +{\catcode`\@=0 \catcode`\\=\active + @gdef@activebackslashdouble{% + @catcode`@\=@active + @let\=@doublebackslash} +} + +% To handle parens, we must adopt a different approach, since parens are +% not active characters. hyperref.dtx (which has the same problem as +% us) handles it with this amazing macro to replace tokens, with minor +% changes for Texinfo. It is included here under the GPL by permission +% from the author, Heiko Oberdiek. +% +% #1 is the tokens to replace. +% #2 is the replacement. +% #3 is the control sequence with the string. +% +\def\HyPsdSubst#1#2#3{% + \def\HyPsdReplace##1#1##2\END{% + ##1% + \ifx\\##2\\% + \else + #2% + \HyReturnAfterFi{% + \HyPsdReplace##2\END + }% + \fi + }% + \xdef#3{\expandafter\HyPsdReplace#3#1\END}% +} +\long\def\HyReturnAfterFi#1\fi{\fi#1} + +% #1 is a control sequence in which to do the replacements. +\def\backslashparens#1{% + \xdef#1{#1}% redefine it as its expansion; the definition is simply + % \lastnode when called from \setref -> \pdfmkdest. + \HyPsdSubst{(}{\realbackslash(}{#1}% + \HyPsdSubst{)}{\realbackslash)}{#1}% +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros based on pdfcolor.tex. + \def\cmykDarkRed{0.28 1 1 0.35} + \def\cmykBlack{0 0 0 1} + % + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 k #1 K}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\cmykBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .png, .jpg, .pdf (among + % others). Let's try in that order. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \imagewidth \fi + \ifdim \wd2 >0pt height \imageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \turnoffactive + \activebackslashdouble + \makevalueexpandable + \def\pdfdestname{#1}% + \backslashparens\pdfdestname + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + }} + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use a color that is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. + \def\urlcolor{\cmykDarkRed} + \def\linkcolor{\cmykDarkRed} + \def\endlink{\setcolor{\maincolor}\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 by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \def\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + % Doubled backslashes in the name. + {\activebackslashdouble \xdef\pdfoutlinedest{#3}% + \backslashparens\pdfoutlinedest}% + \fi + % + % Also double the backslashes in the display string. + {\activebackslashdouble \xdef\pdfoutlinetext{#1}% + \backslashparens\pdfoutlinetext}% + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % xx to do this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Right + % now, I guess we'll just let the pdf reader have its way. + \indexnofonts + \setupdatafile + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + % + \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 + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#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|\relax + \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{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold. Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% Default leading. +\newdimen\textleading \textleading = 13.2pt + +% 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} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\undefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% 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, #5 is the CMap +% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass +% empty to omit). +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% emacs-page end of cmaps + +% 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} + +% Definitions for a main text size of 11pt. This is the default in +% Texinfo. +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +% reset the current fonts +\textfonts +\rm +} % end of 11pt text font size definitions + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +% reduce space between paragraphs +\divide\parskip by 2 + +% reset the current fonts +\textfonts +\rm +} % end of 10pt text font size definitions + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xword{10} +\def\xiword{11} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + \wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + + +% 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 except +% in the main text, 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 because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used in +% the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\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 + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\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 + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts\rmisbold #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 + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \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 + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \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 + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\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 + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +\message{markup,} + +% 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 } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} + +\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +\let\markupsetuplqsamp \markupsetnoligaturesquoteleft +\let\markupsetuplqkbd \markupsetnoligaturesquoteleft + +% Allow an option to not replace quotes with a regular directed right +% quote/apostrophe (char 0x27), but instead use the undirected quote +% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it +% the default, but it works for pasting with more pdf viewers (at least +% evince), the lilypond developers report. xpdf does work with the +% regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +%% 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 + \ptexslash\fi\fi\fi} +\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} + +% like \smartslanted except unconditionally uses \ttsl. +% @var is set to this for defun arguments. +\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% 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 + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% 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 = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\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}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% ctrl is no longer a Texinfo command. +\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 + \plainfrenchspacing + #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 + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\realdash + \let_\realunder + \fi + \codex + } +} + +\def\realdash{-} +\def\codedash{-\discretionary{}{}{}} +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} +\def\codex #1{\tclose{#1}\endgroup} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is undesirable in +% some manuals, especially if they don't have long identifiers in +% general. @allowcodebreaks provides a way to control this. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg'}% + \fi\fi +} + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} + +% @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). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle option `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +\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\setupmarkupstyle{kbd}\look}}\fi +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} + +% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. +\let\indicateurl=\code +\let\env=\code +\let\command=\code + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% @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} + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% 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 + +% 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} + +% @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} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + + +\message{glyphs,} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\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 \reducedsf error\kern-1.5pt} +% +\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} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. +\def\ecfont{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\undefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + + +\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 + +\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % 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 + \let\page = \oldpage + \page + \null + }% +} + +\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 + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % 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 +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +%%% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \leftline{\titlefonts\rmisbold #1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rmisbold \leftline{#1}}% + \fi +} + + +%%% 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\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\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 -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @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 +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\undefined +\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} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(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, @ftable, 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\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#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. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \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 list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr +} + +% \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'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % 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 \doitemize, 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 + \doitemize{#1.}\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} + + +% @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. + +% 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 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 @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\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\space}% 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 +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. +% Assignments have to be global since we are inside the implicit group +% of an alignment entry. \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we again encounter the problem the 1sp was intended to solve. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % 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. + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % 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 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \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\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\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,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @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. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\- = \active \catcode`\_ = \active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\realdash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), 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'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get special treatment of `@end ifset,' call \makeond and the redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @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 macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \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\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + + +% @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. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \relax + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% 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}}} + +% Take care of Texinfo commands that can appear in an index entry. +% Since there are some commands we want to expand, and others we don't, +% we have to laboriously prevent expansion for those that we don't. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % 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 + % + % I don't entirely understand this, but when an index entry is + % generated from a macro call, the \endinput which \scanmacro inserts + % causes processing to be prematurely terminated. This is, + % apparently, because \indexsorttmp is fully expanded, and \endinput + % is an expandable command. The redefinition below makes \endinput + % disappear altogether for that purpose -- although logging shows that + % processing continues to some further point. On the other hand, it + % seems \endinput does not hurt in the printed index arg, since that + % is still getting written without apparent harm. + % + % Sample source (mac-idx3.tex, reported by Graham Percival to + % help-texinfo, 22may06): + % @macro funindex {WORD} + % @findex xyz + % @end macro + % ... + % @funindex commtest + % + % The above is not enough to reproduce the bug, but it gives the flavor. + % + % Sample whatsit resulting: + % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} + % + % So: + \let\endinput = \empty + % + % Do the redefinitions. + \commondummies +} + +% For the aux and toc files, @ is the escape character. So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files). When everything uses @, +% this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash +} + +% Called from \indexdummies and \atdummies. +% +\def\commondummies{% + % + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control% words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\expansion + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\result + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ogonek + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sc + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\acronym + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref +} + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % Hopefully, all control words can become @asis. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + % how to handle braces? + \def\_{\normalunderscore}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{ZZZ}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\guillemetleft{<<}% + \def\guillemetright{>>}% + \def\guilsinglleft{<}% + \def\guilsinglright{>}% + \def\minus{-}% + \def\point{.}% + \def\pounds{pounds}% + \def\print{-|}% + \def\quotedblbase{"}% + \def\quotedblleft{"}% + \def\quotedblright{"}% + \def\quoteleft{`}% + \def\quoteright{'}% + \def\quotesinglbase{,}% + \def\registeredsymbol{R}% + \def\result{=>}% + \def\textdegree{o}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist +} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% 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 most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi +} + +% Write the entry in \toks0 to the index file: +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % 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 (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} + +% Take care of unwanted page breaks/skips around a whatsit: +% +% 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 or \pdfdest 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. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{% +\ifhmode + #1% +\else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi +} + +% 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). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % 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{\backslashcurfont}% + \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. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % 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}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip +}} + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +% A straightforward implementation would start like this: +% \def\entry#1#2{... +% But this freezes the catcodes in the argument, and can cause problems to +% @code, which sets - active. This problem was fixed by a kludge--- +% ``-'' was active throughout whole index, but this isn't really right. +% +% The right solution is to prevent \entry from swallowing the whole text. +% --kasal, 21nov03 +\def\entry{% + \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 + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. +} +\def\finishentry#1{% + % #1 is the page number. + % + % 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. + \setbox\boxA = \hbox{#1}% + \ifdim\wd\boxA = 0pt + \ % + \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#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup +} + +% Like plain.tex's \dotfill, except uses up at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\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 + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \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.) + \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 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% +} +% +% All done with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \pageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \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 +} +% +% Called at the end of the double column material. +\def\balancecolumns{% + \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. + +% \unnumberedno is an oxymoron, of course. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\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 ugly conditional instead of the above simple +% construct 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 these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@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 + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achive this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unmlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unmlevel + \chardef\unmlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unmlevel + \def\headtype{U}% + \else + \chardef\unmlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % 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)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% 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. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\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{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\ptexraggedright + \rmisbold #1\hfill}}% + \bigskip \par\penalty 200\relax + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% 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} + +%%% 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} +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% + \hbox to 0pt{}% + \chappager + \endgroup + \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 + +% Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yomitfromtockeyword{Yomitfromtoc} +\def\Yappendixkeyword{Yappendix} +% +\def\chapmacro#1#2#3{% + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rmisbold + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\ptexraggedright + \rmisbold #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 {\rmisbold #1}\hfill}}\bigskip \par\nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is +% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the +% section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rmisbold + % + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) + \vskip-\parskip + % + % This is purely so the last item on the list is a known \penalty > + % 10000. This is so \startdefun can avoid allowing breakpoints after + % section headings. Otherwise, it would insert a valid breakpoint between: + % + % @section sec-whatever + % @deffn def-whatever + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% 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. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \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 \global\pageno = \lastnegativepageno \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% 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, ... + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% 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} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% 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} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @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. + +\envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode`\`=\other + \catcode`\'=\other + \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\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (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} + +% 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{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\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 + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \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 = t% + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of \def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it by one command: +\def\makedispenv #1#2{ + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two synonyms: +\def\maketwodispenvs #1#2#3{ + \makedispenv{#1}{#3} + \makedispenv{#2}{#3} +} + +% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvs {lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenv {display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenv{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\def\quotationstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \parsearg\quotationlabel +} + +\envdef\quotation{% + \setnormaldispenv + \quotationstart +} + +\envdef\smallquotation{% + \setsmalldispenv + \quotationstart +} +\let\Esmallquotation = \Equotation + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\undefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +\def\starttabbox{\setbox0=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen0=\wd0 % the width so far, or since the previous tab + \divide\dimen0 by\tabw + \multiply\dimen0 by\tabw % compute previous multiple of \tabw + \advance\dimen0 by\tabw % advance to next multiple of \tabw + \wd0=\dimen0 \box0 \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + % Easiest (and conventionally used) font for verbatim + \tt + \def\par{\leavevmode\egroup\box0\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is very desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a minor refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +%%% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +%%% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +%%% Type: +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % How we'll format the type name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % (plain.tex says that \dimen1 should be used only as global.) + \parshape 2 0in \dimen0 \defargsindent \dimen2 + % + % Put the type name to the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% return value type + \ifx\temp\empty\else \tclose{\temp} \fi + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. Let's try @var for that. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\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 = ) + +% 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. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\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\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\def\scanmacro#1{% + \begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % ... and \example + \spaceisspace + % + % Append \endinput to make sure that TeX does not see the ending newline. + % I've verified that it is necessary both for e-TeX and for ordinary TeX + % --kasal, 29nov03 + \scantokens{#1\endinput}% + \endgroup +} + +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\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=\other \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 \. + +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. + +% 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\scanctxt{% + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi +} + +\def\scanargctxt{% + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +\def\macroargctxt{% + \scanctxt + \catcode`\\=\other +} + +% \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{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \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 + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \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\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \macnamexxx} + + +% @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{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\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 only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \lastsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout + }% + \fi +} + +% @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\printedrefname{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual\unskip}% + \setbox0=\hbox{\printedrefname\unskip}% + \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\printedrefname{\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\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + {\indexnofonts + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. + \getfilename{#4}% + % + % See comments at \activebackslashdouble. + {\activebackslashdouble \xdef\pdfxrefdest{#1}% + \backslashparens\pdfxrefdest}% + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \setcolor{\linkcolor}% + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd0 = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % if the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd1 > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % 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. + \ifdim \wd1 > 0pt + \putwordSection{} ``\printedrefname'' \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. + {\turnoffactive + % 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 + }% + % output the `[mynode]' via a macro so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi + \fi + \endlink +\endgroup} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\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{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\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. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + {% The node name might contain 8-bit characters, which in our current + % implementation are changed to commands like @'e. Don't let these + % mess up the control sequence name. + \indexnofonts + \turnoffactive + \xdef\safexrefname{#1}% + }% + % + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \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 + % It was suggested to set the catcode of ^ to 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 + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \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 + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count1=128 + \def\loop{% + \catcode\count1=\other + \advance\count1 by 1 + \ifnum \count1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including 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 + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \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}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% 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) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \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. + \hsize=\pagewidth + \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 + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\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 +} +}%end \catcode `\@=11 + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. + +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @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 + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% 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 (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing this stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \nobreak\medskip + % 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 + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. On the other hand, if + % it's at the top level, we don't want the normal paragraph indentation. + \noindent + % + % Output the image. + \ifpdf + \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 + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode \medskip \fi % space after the standalone image +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \lastsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{\begingroup + \let_=\normalunderscore % normal _ character for filenames + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore{#1_\finish}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +\endgroup} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\parseargdef\documentencoding{% + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \setnonasciicharscatcode\active + \utfeightchardefs + % + \else + \message{Unknown document encoding #1, ignoring.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdef^^a0{~} + \gdef^^a1{\exclamdown} + \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a3{{\pounds}} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\missingcharmsg{YEN SIGN}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} + \gdef^^aa{\ordf} + \gdef^^ab{\guillemetleft} + \gdef^^ac{$\lnot$} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} + \gdef^^af{\={}} + % + \gdef^^b0{\textdegree} + \gdef^^b1{$\pm$} + \gdef^^b2{$^2$} + \gdef^^b3{$^3$} + \gdef^^b4{\'{}} + \gdef^^b5{$\mu$} + \gdef^^b6{\P} + % + \gdef^^b7{$^.$} + \gdef^^b8{\cedilla\ } + \gdef^^b9{$^1$} + \gdef^^ba{\ordm} + % + \gdef^^bb{\guilletright} + \gdef^^bc{$1\over4$} + \gdef^^bd{$1\over2$} + \gdef^^be{$3\over4$} + \gdef^^bf{\questiondown} + % + \gdef^^c0{\`A} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\~A} + \gdef^^c4{\"A} + \gdef^^c5{\ringaccent A} + \gdef^^c6{\AE} + \gdef^^c7{\cedilla C} + \gdef^^c8{\`E} + \gdef^^c9{\'E} + \gdef^^ca{\^E} + \gdef^^cb{\"E} + \gdef^^cc{\`I} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\"I} + % + \gdef^^d0{\DH} + \gdef^^d1{\~N} + \gdef^^d2{\`O} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\~O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\O} + \gdef^^d9{\`U} + \gdef^^da{\'U} + \gdef^^db{\^U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\TH} + \gdef^^df{\ss} + % + \gdef^^e0{\`a} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\~a} + \gdef^^e4{\"a} + \gdef^^e5{\ringaccent a} + \gdef^^e6{\ae} + \gdef^^e7{\cedilla c} + \gdef^^e8{\`e} + \gdef^^e9{\'e} + \gdef^^ea{\^e} + \gdef^^eb{\"e} + \gdef^^ec{\`{\dotless i}} + \gdef^^ed{\'{\dotless i}} + \gdef^^ee{\^{\dotless i}} + \gdef^^ef{\"{\dotless i}} + % + \gdef^^f0{\dh} + \gdef^^f1{\~n} + \gdef^^f2{\`o} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\~o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\o} + \gdef^^f9{\`u} + \gdef^^fa{\'u} + \gdef^^fb{\^u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\th} + \gdef^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdef^^a4{\euro} + \gdef^^a6{\v S} + \gdef^^a8{\v s} + \gdef^^b4{\v Z} + \gdef^^b8{\v z} + \gdef^^bc{\OE} + \gdef^^bd{\oe} + \gdef^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdef^^a0{~} + \gdef^^a1{\ogonek{A}} + \gdef^^a2{\u{}} + \gdef^^a3{\L} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\v L} + \gdef^^a6{\'S} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\v S} + \gdef^^aa{\cedilla S} + \gdef^^ab{\v T} + \gdef^^ac{\'Z} + \gdef^^ad{\-} + \gdef^^ae{\v Z} + \gdef^^af{\dotaccent Z} + % + \gdef^^b0{\textdegree} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} + \gdef^^b3{\l} + \gdef^^b4{\'{}} + \gdef^^b5{\v l} + \gdef^^b6{\'s} + \gdef^^b7{\v{}} + \gdef^^b8{\cedilla\ } + \gdef^^b9{\v s} + \gdef^^ba{\cedilla s} + \gdef^^bb{\v t} + \gdef^^bc{\'z} + \gdef^^bd{\H{}} + \gdef^^be{\v z} + \gdef^^bf{\dotaccent z} + % + \gdef^^c0{\'R} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\u A} + \gdef^^c4{\"A} + \gdef^^c5{\'L} + \gdef^^c6{\'C} + \gdef^^c7{\cedilla C} + \gdef^^c8{\v C} + \gdef^^c9{\'E} + \gdef^^ca{\ogonek{E}} + \gdef^^cb{\"E} + \gdef^^cc{\v E} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\v D} + % + \gdef^^d0{\DH} + \gdef^^d1{\'N} + \gdef^^d2{\v N} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\H O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\v R} + \gdef^^d9{\ringaccent U} + \gdef^^da{\'U} + \gdef^^db{\H U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\cedilla T} + \gdef^^df{\ss} + % + \gdef^^e0{\'r} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\u a} + \gdef^^e4{\"a} + \gdef^^e5{\'l} + \gdef^^e6{\'c} + \gdef^^e7{\cedilla c} + \gdef^^e8{\v c} + \gdef^^e9{\'e} + \gdef^^ea{\ogonek{e}} + \gdef^^eb{\"e} + \gdef^^ec{\v e} + \gdef^^ed{\'\i} + \gdef^^ee{\^\i} + \gdef^^ef{\v d} + % + \gdef^^f0{\dh} + \gdef^^f1{\'n} + \gdef^^f2{\v n} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\H o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\v r} + \gdef^^f9{\ringaccent u} + \gdef^^fa{\'u} + \gdef^^fb{\H u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\cedilla t} + \gdef^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +\begingroup + \catcode`\~13 + \catcode`\"12 + + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiTwoOctets\string~}} + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiThreeOctets\string~}} + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiFourOctets\string~}} + \UTFviiiLoop +\endgroup + +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + + \gdef\DeclareUnicodeCharacter#1#2{% + \countUTFz = "#1\relax + \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + \begingroup + \parseXMLCharref + \def\UTFviiiTwoOctets##1##2{% + \csname u8:##1\string ##2\endcsname}% + \def\UTFviiiThreeOctets##1##2##3{% + \csname u8:##1\string ##2\string ##3\endcsname}% + \def\UTFviiiFourOctets##1##2##3##4{% + \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \gdef\UTFviiiTmp{#2}% + \endgroup} + + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctets.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \fi\fi\fi + } + + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz + \multiply\countUTFz by 64 + \advance\countUTFx by -\countUTFz + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +\def\utfeightchardefs{% + \DeclareUnicodeCharacter{00A0}{\tie} + \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A8}{\"{ }} + \DeclareUnicodeCharacter{00A9}{\copyright} + \DeclareUnicodeCharacter{00AA}{\ordf} + \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AD}{\-} + \DeclareUnicodeCharacter{00AE}{\registeredsymbol} + \DeclareUnicodeCharacter{00AF}{\={ }} + + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00BA}{\ordm} + \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BF}{\questiondown} + + \DeclareUnicodeCharacter{00C0}{\`A} + \DeclareUnicodeCharacter{00C1}{\'A} + \DeclareUnicodeCharacter{00C2}{\^A} + \DeclareUnicodeCharacter{00C3}{\~A} + \DeclareUnicodeCharacter{00C4}{\"A} + \DeclareUnicodeCharacter{00C5}{\AA} + \DeclareUnicodeCharacter{00C6}{\AE} + \DeclareUnicodeCharacter{00C7}{\cedilla{C}} + \DeclareUnicodeCharacter{00C8}{\`E} + \DeclareUnicodeCharacter{00C9}{\'E} + \DeclareUnicodeCharacter{00CA}{\^E} + \DeclareUnicodeCharacter{00CB}{\"E} + \DeclareUnicodeCharacter{00CC}{\`I} + \DeclareUnicodeCharacter{00CD}{\'I} + \DeclareUnicodeCharacter{00CE}{\^I} + \DeclareUnicodeCharacter{00CF}{\"I} + + \DeclareUnicodeCharacter{00D0}{\DH} + \DeclareUnicodeCharacter{00D1}{\~N} + \DeclareUnicodeCharacter{00D2}{\`O} + \DeclareUnicodeCharacter{00D3}{\'O} + \DeclareUnicodeCharacter{00D4}{\^O} + \DeclareUnicodeCharacter{00D5}{\~O} + \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D8}{\O} + \DeclareUnicodeCharacter{00D9}{\`U} + \DeclareUnicodeCharacter{00DA}{\'U} + \DeclareUnicodeCharacter{00DB}{\^U} + \DeclareUnicodeCharacter{00DC}{\"U} + \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} + \DeclareUnicodeCharacter{00DF}{\ss} + + \DeclareUnicodeCharacter{00E0}{\`a} + \DeclareUnicodeCharacter{00E1}{\'a} + \DeclareUnicodeCharacter{00E2}{\^a} + \DeclareUnicodeCharacter{00E3}{\~a} + \DeclareUnicodeCharacter{00E4}{\"a} + \DeclareUnicodeCharacter{00E5}{\aa} + \DeclareUnicodeCharacter{00E6}{\ae} + \DeclareUnicodeCharacter{00E7}{\cedilla{c}} + \DeclareUnicodeCharacter{00E8}{\`e} + \DeclareUnicodeCharacter{00E9}{\'e} + \DeclareUnicodeCharacter{00EA}{\^e} + \DeclareUnicodeCharacter{00EB}{\"e} + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + + \DeclareUnicodeCharacter{00F0}{\dh} + \DeclareUnicodeCharacter{00F1}{\~n} + \DeclareUnicodeCharacter{00F2}{\`o} + \DeclareUnicodeCharacter{00F3}{\'o} + \DeclareUnicodeCharacter{00F4}{\^o} + \DeclareUnicodeCharacter{00F5}{\~o} + \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F8}{\o} + \DeclareUnicodeCharacter{00F9}{\`u} + \DeclareUnicodeCharacter{00FA}{\'u} + \DeclareUnicodeCharacter{00FB}{\^u} + \DeclareUnicodeCharacter{00FC}{\"u} + \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} + \DeclareUnicodeCharacter{00FF}{\"y} + + \DeclareUnicodeCharacter{0100}{\=A} + \DeclareUnicodeCharacter{0101}{\=a} + \DeclareUnicodeCharacter{0102}{\u{A}} + \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} + \DeclareUnicodeCharacter{0106}{\'C} + \DeclareUnicodeCharacter{0107}{\'c} + \DeclareUnicodeCharacter{0108}{\^C} + \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} + \DeclareUnicodeCharacter{010A}{\dotaccent{C}} + \DeclareUnicodeCharacter{010B}{\dotaccent{c}} + \DeclareUnicodeCharacter{010C}{\v{C}} + \DeclareUnicodeCharacter{010D}{\v{c}} + \DeclareUnicodeCharacter{010E}{\v{D}} + + \DeclareUnicodeCharacter{0112}{\=E} + \DeclareUnicodeCharacter{0113}{\=e} + \DeclareUnicodeCharacter{0114}{\u{E}} + \DeclareUnicodeCharacter{0115}{\u{e}} + \DeclareUnicodeCharacter{0116}{\dotaccent{E}} + \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{011A}{\v{E}} + \DeclareUnicodeCharacter{011B}{\v{e}} + \DeclareUnicodeCharacter{011C}{\^G} + \DeclareUnicodeCharacter{011D}{\^g} + \DeclareUnicodeCharacter{011E}{\u{G}} + \DeclareUnicodeCharacter{011F}{\u{g}} + + \DeclareUnicodeCharacter{0120}{\dotaccent{G}} + \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0124}{\^H} + \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0128}{\~I} + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} + \DeclareUnicodeCharacter{012A}{\=I} + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} + \DeclareUnicodeCharacter{012C}{\u{I}} + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + + \DeclareUnicodeCharacter{0130}{\dotaccent{I}} + \DeclareUnicodeCharacter{0131}{\dotless{i}} + \DeclareUnicodeCharacter{0132}{IJ} + \DeclareUnicodeCharacter{0133}{ij} + \DeclareUnicodeCharacter{0134}{\^J} + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0139}{\'L} + \DeclareUnicodeCharacter{013A}{\'l} + + \DeclareUnicodeCharacter{0141}{\L} + \DeclareUnicodeCharacter{0142}{\l} + \DeclareUnicodeCharacter{0143}{\'N} + \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0147}{\v{N}} + \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{014C}{\=O} + \DeclareUnicodeCharacter{014D}{\=o} + \DeclareUnicodeCharacter{014E}{\u{O}} + \DeclareUnicodeCharacter{014F}{\u{o}} + + \DeclareUnicodeCharacter{0150}{\H{O}} + \DeclareUnicodeCharacter{0151}{\H{o}} + \DeclareUnicodeCharacter{0152}{\OE} + \DeclareUnicodeCharacter{0153}{\oe} + \DeclareUnicodeCharacter{0154}{\'R} + \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0158}{\v{R}} + \DeclareUnicodeCharacter{0159}{\v{r}} + \DeclareUnicodeCharacter{015A}{\'S} + \DeclareUnicodeCharacter{015B}{\'s} + \DeclareUnicodeCharacter{015C}{\^S} + \DeclareUnicodeCharacter{015D}{\^s} + \DeclareUnicodeCharacter{015E}{\cedilla{S}} + \DeclareUnicodeCharacter{015F}{\cedilla{s}} + + \DeclareUnicodeCharacter{0160}{\v{S}} + \DeclareUnicodeCharacter{0161}{\v{s}} + \DeclareUnicodeCharacter{0162}{\cedilla{t}} + \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0164}{\v{T}} + + \DeclareUnicodeCharacter{0168}{\~U} + \DeclareUnicodeCharacter{0169}{\~u} + \DeclareUnicodeCharacter{016A}{\=U} + \DeclareUnicodeCharacter{016B}{\=u} + \DeclareUnicodeCharacter{016C}{\u{U}} + \DeclareUnicodeCharacter{016D}{\u{u}} + \DeclareUnicodeCharacter{016E}{\ringaccent{U}} + \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + + \DeclareUnicodeCharacter{0170}{\H{U}} + \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0174}{\^W} + \DeclareUnicodeCharacter{0175}{\^w} + \DeclareUnicodeCharacter{0176}{\^Y} + \DeclareUnicodeCharacter{0177}{\^y} + \DeclareUnicodeCharacter{0178}{\"Y} + \DeclareUnicodeCharacter{0179}{\'Z} + \DeclareUnicodeCharacter{017A}{\'z} + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} + \DeclareUnicodeCharacter{017C}{\dotaccent{z}} + \DeclareUnicodeCharacter{017D}{\v{Z}} + \DeclareUnicodeCharacter{017E}{\v{z}} + + \DeclareUnicodeCharacter{01C4}{D\v{Z}} + \DeclareUnicodeCharacter{01C5}{D\v{z}} + \DeclareUnicodeCharacter{01C6}{d\v{z}} + \DeclareUnicodeCharacter{01C7}{LJ} + \DeclareUnicodeCharacter{01C8}{Lj} + \DeclareUnicodeCharacter{01C9}{lj} + \DeclareUnicodeCharacter{01CA}{NJ} + \DeclareUnicodeCharacter{01CB}{Nj} + \DeclareUnicodeCharacter{01CC}{nj} + \DeclareUnicodeCharacter{01CD}{\v{A}} + \DeclareUnicodeCharacter{01CE}{\v{a}} + \DeclareUnicodeCharacter{01CF}{\v{I}} + + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} + \DeclareUnicodeCharacter{01D1}{\v{O}} + \DeclareUnicodeCharacter{01D2}{\v{o}} + \DeclareUnicodeCharacter{01D3}{\v{U}} + \DeclareUnicodeCharacter{01D4}{\v{u}} + + \DeclareUnicodeCharacter{01E2}{\={\AE}} + \DeclareUnicodeCharacter{01E3}{\={\ae}} + \DeclareUnicodeCharacter{01E6}{\v{G}} + \DeclareUnicodeCharacter{01E7}{\v{g}} + \DeclareUnicodeCharacter{01E8}{\v{K}} + \DeclareUnicodeCharacter{01E9}{\v{k}} + + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} + \DeclareUnicodeCharacter{01F1}{DZ} + \DeclareUnicodeCharacter{01F2}{Dz} + \DeclareUnicodeCharacter{01F3}{dz} + \DeclareUnicodeCharacter{01F4}{\'G} + \DeclareUnicodeCharacter{01F5}{\'g} + \DeclareUnicodeCharacter{01F8}{\`N} + \DeclareUnicodeCharacter{01F9}{\`n} + \DeclareUnicodeCharacter{01FC}{\'{\AE}} + \DeclareUnicodeCharacter{01FD}{\'{\ae}} + \DeclareUnicodeCharacter{01FE}{\'{\O}} + \DeclareUnicodeCharacter{01FF}{\'{\o}} + + \DeclareUnicodeCharacter{021E}{\v{H}} + \DeclareUnicodeCharacter{021F}{\v{h}} + + \DeclareUnicodeCharacter{0226}{\dotaccent{A}} + \DeclareUnicodeCharacter{0227}{\dotaccent{a}} + \DeclareUnicodeCharacter{0228}{\cedilla{E}} + \DeclareUnicodeCharacter{0229}{\cedilla{e}} + \DeclareUnicodeCharacter{022E}{\dotaccent{O}} + \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + + \DeclareUnicodeCharacter{0232}{\=Y} + \DeclareUnicodeCharacter{0233}{\=y} + \DeclareUnicodeCharacter{0237}{\dotless{j}} + + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + + \DeclareUnicodeCharacter{1E20}{\=G} + \DeclareUnicodeCharacter{1E21}{\=g} + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} + \DeclareUnicodeCharacter{1E26}{\"H} + \DeclareUnicodeCharacter{1E27}{\"h} + + \DeclareUnicodeCharacter{1E30}{\'K} + \DeclareUnicodeCharacter{1E31}{\'k} + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} + \DeclareUnicodeCharacter{1E3E}{\'M} + \DeclareUnicodeCharacter{1E3F}{\'m} + + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + + \DeclareUnicodeCharacter{1E54}{\'P} + \DeclareUnicodeCharacter{1E55}{\'p} + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + + \DeclareUnicodeCharacter{1E7C}{\~V} + \DeclareUnicodeCharacter{1E7D}{\~v} + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + + \DeclareUnicodeCharacter{1E80}{\`W} + \DeclareUnicodeCharacter{1E81}{\`w} + \DeclareUnicodeCharacter{1E82}{\'W} + \DeclareUnicodeCharacter{1E83}{\'w} + \DeclareUnicodeCharacter{1E84}{\"W} + \DeclareUnicodeCharacter{1E85}{\"w} + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} + \DeclareUnicodeCharacter{1E8C}{\"X} + \DeclareUnicodeCharacter{1E8D}{\"x} + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + + \DeclareUnicodeCharacter{1E90}{\^Z} + \DeclareUnicodeCharacter{1E91}{\^z} + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} + \DeclareUnicodeCharacter{1E97}{\"t} + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} + \DeclareUnicodeCharacter{1EBC}{\~E} + \DeclareUnicodeCharacter{1EBD}{\~e} + + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + + \DeclareUnicodeCharacter{1EF2}{\`Y} + \DeclareUnicodeCharacter{1EF3}{\`y} + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + + \DeclareUnicodeCharacter{1EF8}{\~Y} + \DeclareUnicodeCharacter{1EF9}{\~y} + + \DeclareUnicodeCharacter{2013}{--} + \DeclareUnicodeCharacter{2014}{---} + \DeclareUnicodeCharacter{2018}{\quoteleft} + \DeclareUnicodeCharacter{2019}{\quoteright} + \DeclareUnicodeCharacter{201A}{\quotesinglbase} + \DeclareUnicodeCharacter{201C}{\quotedblleft} + \DeclareUnicodeCharacter{201D}{\quotedblright} + \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{2026}{\dots} + \DeclareUnicodeCharacter{2039}{\guilsinglleft} + \DeclareUnicodeCharacter{203A}{\guilsinglright} + \DeclareUnicodeCharacter{20AC}{\euro} + + \DeclareUnicodeCharacter{2192}{\expansion} + \DeclareUnicodeCharacter{21D2}{\result} + + \DeclareUnicodeCharacter{2212}{\minus} + \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2261}{\equiv} +}% end of \utfeightchardefs + + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} + +\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, 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; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \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 + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \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. +% +\parseargdef\pagesizes{\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{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% 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{$}%$ font-lock fix + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), 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\_} +\let\realunder=_ +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\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}%$ font-lock fix + +% 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} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active +@def@normalbackslash{{@tt@backslashcurfont}} +% On startup, @fixbackslash assigns: +% @let \ = @normalbackslash + +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +@def@normalturnoffactive{% + @let\=@normalbackslash + @let"=@normaldoublequote + @let~=@normaltilde + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let<=@normalless + @let>=@normalgreater + @let+=@normalplus + @let$=@normaldollar %$ font-lock fix + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces +} + +% 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 turn back 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 Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Gnulib now utterly and painfully insists on no trailing whitespace. +@c So we have to nuke it. + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c eval: (add-hook 'write-file-hooks 'nuke-trailing-whitespace) +@c page-delimiter: "^\\\\message" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free new file mode 100755 index 0000000..abcdef2 --- /dev/null +++ b/build-aux/useless-if-before-free @@ -0,0 +1,206 @@ +#!/usr/bin/perl -T +# Detect instances of "if (p) free (p);". +# Likewise for "if (p != NULL) free (p);". And with braces. +# Also detect "if (NULL != p) free (p);". +# And with 0 in place of NULL. + +my $VERSION = '2009-04-16 15:57'; # UTC +# The definition above must lie within the first 8 lines in order +# for the Emacs time-stamp write hook (at end) to update it. +# If you change this file with Emacs, please let the write hook +# do its job. Otherwise, update this string manually. + +# Copyright (C) 2008, 2009 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 3 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, see . + +# Written by Jim Meyering + +use strict; +use warnings; +use Getopt::Long; + +(my $ME = $0) =~ s|.*/||; + +# use File::Coda; # http://meyering.net/code/Coda/ +END { + defined fileno STDOUT or return; + close STDOUT and return; + warn "$ME: failed to close standard output: $!\n"; + $? ||= 1; +} + +sub usage ($) +{ + my ($exit_code) = @_; + my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); + if ($exit_code != 0) + { + print $STREAM "Try `$ME --help' for more information.\n"; + } + else + { + print $STREAM < sub { usage 0 }, + version => sub { print "$ME version $VERSION\n"; exit }, + list => \$list, + 'name=s@' => \@name, + ) or usage 1; + + # Make sure we have the right number of non-option arguments. + # Always tell the user why we fail. + @ARGV < 1 + and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR; + + my $or = join '|', @name; + my $regexp = qr/(?:$or)/; + + # Set the input record separator. + # Note: this makes it impractical to print line numbers. + $/ = '"'; + + my $found_match = 0; + FILE: + foreach my $file (@ARGV) + { + open FH, '<', $file + or (warn "$ME: can't open `$file' for reading: $!\n"), + $err = EXIT_ERROR, next; + while (defined (my $line = )) + { + while ($line =~ + /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\) + # 1 2 3 + (?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)| + \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg) + { + my $all = $1; + my ($lhs, $rhs) = ($2, $3); + my ($free_opnd, $braced_free_opnd) = ($4, $5); + my $non_NULL; + if (!defined $rhs) { $non_NULL = $lhs } + elsif (is_NULL $rhs) { $non_NULL = $lhs } + elsif (is_NULL $lhs) { $non_NULL = $rhs } + else { next } + + # Compare the non-NULL part of the "if" expression and the + # free'd expression, without regard to white space. + $non_NULL =~ tr/ \t//d; + my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd; + $e2 =~ tr/ \t//d; + if ($non_NULL eq $e2) + { + $found_match = 1; + $list + and (print "$file\0"), next FILE; + print "$file: $all\n"; + } + } + } + } + continue + { + close FH; + } + + $found_match && $err == EXIT_NO_MATCH + and $err = EXIT_MATCH; + + exit $err; +} + +my $foo = <<'EOF'; +# The above is to *find* them. +# This adjusts them, removing the unnecessary "if (p)" part. + +# FIXME: do something like this as an option (doesn't do braces): +free=xfree +git grep -l -z "$free *(" \ + | xargs -0 useless-if-before-free -l --name="$free" \ + | xargs -0 perl -0x3b -pi -e \ + 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\))/$2/s' + +# Use the following to remove redundant uses of kfree inside braces. +# Note that -0777 puts perl in slurp-whole-file mode; +# but we have plenty of memory, these days... +free=kfree +git grep -l -z "$free *(" \ + | xargs -0 useless-if-before-free -l --name="$free" \ + | xargs -0 perl -0777 -pi -e \ + 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms' + +Be careful that the result of the above transformation is valid. +If the matched string is followed by "else", then obviously, it won't be. + +When modifying files, refuse to process anything other than a regular file. +EOF + +## Local Variables: +## indent-tabs-mode: nil +## eval: (add-hook 'write-file-hooks 'time-stamp) +## time-stamp-start: "my $VERSION = '" +## time-stamp-format: "%:y-%02m-%02d %02H:%02M" +## time-stamp-time-zone: "UTC" +## time-stamp-end: "'; # UTC" +## End: diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files new file mode 100755 index 0000000..9376e3d --- /dev/null +++ b/build-aux/vc-list-files @@ -0,0 +1,116 @@ +#!/bin/sh +# List version-controlled file names. + +# Print a version string. +scriptversion=2009-04-25.13; # UTC + +# Copyright (C) 2006-2009 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 3 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, see . + + +# List the specified version-controlled files. +# With no argument, list them all. With a single DIRECTORY argument, +# list the version-controlled files in that directory. + +# If there's an argument, it must be a single, "."-relative directory name. +# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/ + +postprocess= +case $1 in + --help) cat <. +EOF + exit ;; + + --version) + year=`echo "$scriptversion" | sed 's/[^0-9].*//'` + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +EOF + exit ;; + + -C) + test "$2" = . || postprocess="| sed 's|^|$2/|'" + cd "$2" || exit 1 + shift; shift ;; +esac + +dir= +case $# in + 0) ;; + 1) dir=$1 ;; + *) echo "$0: too many arguments" 1>&2 + echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;; +esac + +test "x$dir" = x && dir=. + +if test -d .git; then + test "x$dir" = x. \ + && dir= sed_esc= \ + || dir="$dir/" sed_esc=`echo "$dir"|sed 's,\([\\/]\),\\\\\1,g'` + # Ignore git symlinks - either they point into the tree, in which case + # we don't need to visit the target twice, or they point somewhere + # else (often into a submodule), in which case the content does not + # belong to this package. + eval exec git ls-tree -r 'HEAD:"$dir"' \ + \| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess +elif test -d .hg; then + eval exec hg locate '"$dir/*"' $postprocess +elif test -d .bzr; then + test "$postprocess" = '' && postprocess="| sed 's|^\./||'" + eval exec bzr ls --versioned '"$dir"' $postprocess +elif test -d CVS; then + test "$postprocess" = '' && postprocess="| sed 's|^\./||'" + if test -x build-aux/cvsu; then + eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess + elif (cvsu --help) >/dev/null 2>&1; then + eval cvsu --find --types=AFGM '"$dir"' $postprocess + else + eval awk -F/ \''{ \ + if (!$1 && $3 !~ /^-/) { \ + f=FILENAME; \ + if (f ~ /CVS\/Entries$/) \ + f = substr(f, 1, length(f)-11); \ + print f $2; \ + }}'\'' \ + `find "$dir" -name Entries -print` /dev/null' $postprocess + fi +else + echo "$0: Failed to determine type of version control used in `pwd`" 1>&2 + exit 1 +fi + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/cfg.mk b/cfg.mk new file mode 100644 index 0000000..d4541ab --- /dev/null +++ b/cfg.mk @@ -0,0 +1,101 @@ +# Copyright (C) 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +WFLAGS ?= --enable-gcc-warnings +ADDFLAGS ?= +CFGFLAGS ?= --enable-java --enable-gtk-doc $(ADDFLAGS) $(WFLAGS) + +ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) +.DEFAULT_GOAL := bootstrap +endif + +local-checks-to-skip = sc_prohibit_strcmp sc_prohibit_have_config_h \ + sc_require_config_h sc_require_config_h_first \ + sc_prohibit_HAVE_MBRTOWC sc_program_name sc_trailing_blank \ + sc_useless_cpp_parens sc_GPL_version sc_immutable_NEWS \ + sc_two_space_separator_in_usage sc_m4_quote_check sc_po_check \ + sc_copyright_check + +doc/Makefile.gdoc: + printf "gdoc_MANS =\ngdoc_TEXINFOS =\n" > doc/Makefile.gdoc + +autoreconf: doc/Makefile.gdoc + for f in po/*.po.in; do \ + cp $$f `echo $$f | sed 's/.in//'`; \ + done + mv build-aux/config.rpath build-aux/config.rpath- + test -f ./configure || autoreconf --install + mv build-aux/config.rpath- build-aux/config.rpath + +update-po: refresh-po + for f in `ls po/*.po | grep -v quot.po`; do \ + cp $$f $$f.in; \ + done + git add po/*.po.in + git commit -m "Sync with TP." po/LINGUAS po/*.po.in + +bootstrap: autoreconf + ./configure $(CFGFLAGS) + +web-coverage: + rm -fv `find $(htmldir)/coverage -type f | grep -v CVS` + cp -rv $(COVERAGE_OUT)/* $(htmldir)/coverage/ + +upload-web-coverage: + cd $(htmldir) && \ + cvs commit -m "Update." coverage + +W32ROOT ?= $(HOME)/gnutls4win/inst + +mingw32: autoreconf + ./configure --enable-gtk-doc --host=i586-mingw32msvc --build=`build-aux/config.guess` --prefix=$(W32ROOT) + +ChangeLog: + git2cl > ChangeLog + cat .clcopying >> ChangeLog + +tag = $(PACKAGE)-`echo $(VERSION) | sed 's/\./-/g'` +htmldir = ../www-$(PACKAGE) + +release: prepare upload web upload-web + +prepare: + ! git tag -l $(tag) | grep $(PACKAGE) > /dev/null + rm -f ChangeLog + $(MAKE) ChangeLog distcheck + git commit -m Generated. ChangeLog + git tag -u b565716f! -m $(VERSION) $(tag) + +upload: + git push + git push --tags + build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) --to alpha.gnu.org:$(PACKAGE) $(distdir).tar.gz + cp $(distdir).tar.gz $(distdir).tar.gz.sig ../releases/$(PACKAGE)/ + +web: + cd doc && env MAKEINFO="makeinfo -I ../examples" \ + TEXI2DVI="texi2dvi -I ../examples" \ + ../build-aux/gendocs.sh --html "--css-include=texinfo.css" \ + -o ../$(htmldir)/manual/ $(PACKAGE) "$(PACKAGE_NAME)" + cd contrib/doxygen && doxygen && cd ../.. && cp -v contrib/doxygen/html/* $(htmldir)/doxygen/ && cd contrib/doxygen/latex && make refman.pdf && cd ../../../ && cp contrib/doxygen/latex/refman.pdf $(htmldir)/doxygen/$(PACKAGE).pdf + cp -v doc/reference/html/*.html doc/reference/html/*.png doc/reference/html/*.devhelp doc/reference/html/*.css $(htmldir)/reference/ + cp -rv doc/java/* $(htmldir)/javadoc/ + cp -v doc/cyclo/cyclo-$(PACKAGE).html $(htmldir)/cyclo/ + +upload-web: + cd $(htmldir) && \ + cvs commit -m "Update." manual/ javadoc/ reference/ doxygen/ diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..e2ab277 --- /dev/null +++ b/config.h.in @@ -0,0 +1,314 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if the compiler is building for multiple architectures of Apple + platforms at once. */ +#undef AA_APPLE_UNIVERSAL_BUILD + +/* Define to the number of bits in type 'ptrdiff_t'. */ +#undef BITSIZEOF_PTRDIFF_T + +/* Define to the number of bits in type 'sig_atomic_t'. */ +#undef BITSIZEOF_SIG_ATOMIC_T + +/* Define to the number of bits in type 'size_t'. */ +#undef BITSIZEOF_SIZE_T + +/* Define to the number of bits in type 'wchar_t'. */ +#undef BITSIZEOF_WCHAR_T + +/* Define to the number of bits in type 'wint_t'. */ +#undef BITSIZEOF_WINT_T + +/* Define if mono is the preferred C# implementation. */ +#undef CSHARP_CHOICE_MONO + +/* Define if pnet is the preferred C# implementation. */ +#undef CSHARP_CHOICE_PNET + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#undef HAVE_DECL_GETENV + +/* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ +#undef HAVE_DECL_STRERROR + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#undef HAVE_DECL_STRERROR_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define to 1 if you have the `getopt_long_only' function. */ +#undef HAVE_GETOPT_LONG_ONLY + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_ICONV_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if 'sig_atomic_t' is a signed integer type. */ +#undef HAVE_SIGNED_SIG_ATOMIC_T + +/* Define to 1 if 'wchar_t' is a signed integer type. */ +#undef HAVE_SIGNED_WCHAR_T + +/* Define to 1 if 'wint_t' is a signed integer type. */ +#undef HAVE_SIGNED_WINT_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDARG_H + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strverscmp' function. */ +#undef HAVE_STRVERSCMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_BITYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type `unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#undef HAVE_VISIBILITY + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINSOCK2_H + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define to a symbolic name denoting the flavor of iconv_open() + implementation. */ +#undef ICONV_FLAVOR + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* String identifying the packager of this software */ +#undef PACKAGE_PACKAGER + +/* Packager info for bug reports (URL/e-mail/...) */ +#undef PACKAGE_PACKAGER_BUG_REPORTS + +/* Packager-specific version information */ +#undef PACKAGE_PACKAGER_VERSION + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type + 'ptrdiff_t'. */ +#undef PTRDIFF_T_SUFFIX + +/* Define this to 1 if strerror is broken. */ +#undef REPLACE_STRERROR + +/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type + 'sig_atomic_t'. */ +#undef SIG_ATOMIC_T_SUFFIX + +/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type + 'size_t'. */ +#undef SIZE_T_SUFFIX + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if strerror_r returns char *. */ +#undef STRERROR_R_CHAR_P + +/* Version number of package */ +#undef VERSION + +/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type + 'wchar_t'. */ +#undef WCHAR_T_SUFFIX + +/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type + 'wint_t'. */ +#undef WINT_T_SUFFIX + +/* Define to 1 if you want TLD code. */ +#undef WITH_TLD + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to 500 only on HP-UX. */ +#undef _XOPEN_SOURCE + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Define to rpl_ if the getopt replacement functions and variables should be + used. */ +#undef __GETOPT_PREFIX + +/* A replacement for va_copy, if needed. */ +#define gl_va_copy(a,b) ((a) = (b)) + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for MacOS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#undef restrict +/* Work around a bug in Sun C++: it does not support _Restrict, even + though the corresponding Sun C compiler does, which causes + "#define restrict _Restrict" in the previous line. Perhaps some future + version of Sun C++ will work with _Restrict; if so, it'll probably + define __RESTRICT, just as Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +#endif + +/* Define as a marker that can be attached to function parameter declarations + for parameters that are not used. This helps to reduce warnings, such as + from GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _UNUSED_PARAMETER_ __attribute__ ((__unused__)) +#else +# define _UNUSED_PARAMETER_ +#endif + + +/* Define as a macro for copying va_list variables. */ +#undef va_copy diff --git a/configure b/configure new file mode 100755 index 0000000..eb338d7 --- /dev/null +++ b/configure @@ -0,0 +1,24089 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.67 for GNU Libidn 1.15. +# +# Report bugs to . +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Copyright (c) 2002-2008 Simon Josefsson . +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-libidn@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +ECHO=${lt_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 <<_LT_EOF +$* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + 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 && + { 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' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # 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. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_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' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "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 configure 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' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "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 echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "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-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Libidn' +PACKAGE_TARNAME='libidn' +PACKAGE_VERSION='1.15' +PACKAGE_STRING='GNU Libidn 1.15' +PACKAGE_BUGREPORT='bug-libidn@gnu.org' +PACKAGE_URL='http://www.gnu.org/software/libidn/' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +gt_needs= +ac_header_list= +ac_subst_vars='lgltests_LTLIBOBJS +lgltests_LIBOBJS +lgl_LTLIBOBJS +lgl_LIBOBJS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +WSTACK_CFLAGS +WERROR_CFLAGS +VALGRIND +CSHARP_FALSE +CSHARP_TRUE +JAVA_FALSE +JAVA_TRUE +GJDOC +JAR +am__fastdepGCJ_FALSE +am__fastdepGCJ_TRUE +GCJDEPMODE +GCJFLAGS +ac_ct_GCJ +GCJ +GTK_DOC_USE_REBASE_FALSE +GTK_DOC_USE_REBASE_TRUE +GTK_DOC_USE_LIBTOOL_FALSE +GTK_DOC_USE_LIBTOOL_TRUE +GTK_DOC_BUILD_PDF_FALSE +GTK_DOC_BUILD_PDF_TRUE +GTK_DOC_BUILD_HTML_FALSE +GTK_DOC_BUILD_HTML_TRUE +ENABLE_GTK_DOC_FALSE +ENABLE_GTK_DOC_TRUE +PKG_CONFIG +HTML_DIR +GTKDOC_MKPDF +GTKDOC_REBASE +GTKDOC_CHECK +TLD_FALSE +TLD_TRUE +LIBTESTS_LIBDEPS +LOCALE_TR_UTF8 +LOCALE_FR +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H +NEXT_WCHAR_H +HAVE_WCHAR_H +HAVE_WINT_T +WCHAR_H +REPLACE_WCWIDTH +REPLACE_WCSNRTOMBS +REPLACE_WCSRTOMBS +REPLACE_WCRTOMB +REPLACE_MBSNRTOWCS +REPLACE_MBSRTOWCS +REPLACE_MBRLEN +REPLACE_MBRTOWC +REPLACE_MBSINIT +REPLACE_WCTOB +REPLACE_BTOWC +REPLACE_MBSTATE_T +HAVE_DECL_WCWIDTH +HAVE_DECL_WCTOB +HAVE_WCSNRTOMBS +HAVE_WCSRTOMBS +HAVE_WCRTOMB +HAVE_MBSNRTOWCS +HAVE_MBSRTOWCS +HAVE_MBRLEN +HAVE_MBRTOWC +HAVE_MBSINIT +HAVE_BTOWC +GNULIB_WCWIDTH +GNULIB_WCSNRTOMBS +GNULIB_WCSRTOMBS +GNULIB_WCRTOMB +GNULIB_MBSNRTOWCS +GNULIB_MBSRTOWCS +GNULIB_MBRLEN +GNULIB_MBRTOWC +GNULIB_MBSINIT +GNULIB_WCTOB +GNULIB_BTOWC +STDINT_H +WINT_T_SUFFIX +WCHAR_T_SUFFIX +SIG_ATOMIC_T_SUFFIX +SIZE_T_SUFFIX +PTRDIFF_T_SUFFIX +HAVE_SIGNED_WINT_T +HAVE_SIGNED_WCHAR_T +HAVE_SIGNED_SIG_ATOMIC_T +BITSIZEOF_WINT_T +BITSIZEOF_WCHAR_T +BITSIZEOF_SIG_ATOMIC_T +BITSIZEOF_SIZE_T +BITSIZEOF_PTRDIFF_T +HAVE_SYS_BITYPES_H +HAVE_SYS_INTTYPES_H +HAVE_STDINT_H +NEXT_AS_FIRST_DIRECTIVE_STDINT_H +NEXT_STDINT_H +HAVE_SYS_TYPES_H +HAVE_INTTYPES_H +HAVE_UNSIGNED_LONG_LONG_INT +HAVE_LONG_LONG_INT +HAVE__BOOL +STDBOOL_H +APPLE_UNIVERSAL_BUILD +HAVE_VISIBILITY +CFLAG_VISIBILITY +HAVE_LD_VERSION_SCRIPT_FALSE +HAVE_LD_VERSION_SCRIPT_TRUE +HAVE_LD_OUTPUT_DEF_FALSE +HAVE_LD_OUTPUT_DEF_TRUE +NEXT_AS_FIRST_DIRECTIVE_ICONV_H +NEXT_ICONV_H +ICONV_H +REPLACE_ICONV_UTF +REPLACE_ICONV_OPEN +REPLACE_ICONV +abs_aux_dir +WARN_CFLAGS +HAVE_UNISTD_H +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H +NEXT_UNISTD_H +UNISTD_H_HAVE_WINSOCK2_H +REPLACE_WRITE +REPLACE_LSEEK +REPLACE_LCHOWN +REPLACE_GETPAGESIZE +REPLACE_GETCWD +REPLACE_FCHDIR +REPLACE_CLOSE +REPLACE_CHOWN +HAVE_SYS_PARAM_H +HAVE_OS_H +HAVE_DECL_GETLOGIN_R +HAVE_DECL_ENVIRON +HAVE_SLEEP +HAVE_READLINK +HAVE_LINK +HAVE_GETUSERSHELL +HAVE_GETPAGESIZE +HAVE_GETHOSTNAME +HAVE_GETDTABLESIZE +HAVE_GETDOMAINNAME +HAVE_FTRUNCATE +HAVE_FSYNC +HAVE_EUIDACCESS +HAVE_DUP2 +GNULIB_WRITE +GNULIB_UNISTD_H_SIGPIPE +GNULIB_SLEEP +GNULIB_READLINK +GNULIB_LSEEK +GNULIB_LINK +GNULIB_LCHOWN +GNULIB_GETUSERSHELL +GNULIB_GETPAGESIZE +GNULIB_GETLOGIN_R +GNULIB_GETHOSTNAME +GNULIB_GETDTABLESIZE +GNULIB_GETDOMAINNAME +GNULIB_GETCWD +GNULIB_FTRUNCATE +GNULIB_FSYNC +GNULIB_FCHDIR +GNULIB_EUIDACCESS +GNULIB_ENVIRON +GNULIB_DUP2 +GNULIB_CLOSE +GNULIB_CHOWN +NEXT_AS_FIRST_DIRECTIVE_STRING_H +NEXT_STRING_H +REPLACE_STRSIGNAL +REPLACE_STRERROR +REPLACE_STRCASESTR +REPLACE_STRSTR +REPLACE_STRDUP +REPLACE_MEMMEM +HAVE_STRVERSCMP +HAVE_DECL_STRSIGNAL +HAVE_DECL_STRERROR +HAVE_DECL_STRTOK_R +HAVE_STRCASESTR +HAVE_STRSEP +HAVE_STRPBRK +HAVE_DECL_STRNLEN +HAVE_DECL_STRNDUP +HAVE_STRNDUP +HAVE_DECL_STRDUP +HAVE_STRCHRNUL +HAVE_STPNCPY +HAVE_STPCPY +HAVE_RAWMEMCHR +HAVE_DECL_MEMRCHR +HAVE_MEMPCPY +HAVE_DECL_MEMMEM +GNULIB_STRVERSCMP +GNULIB_STRSIGNAL +GNULIB_STRERROR +GNULIB_MBSTOK_R +GNULIB_MBSSEP +GNULIB_MBSSPN +GNULIB_MBSPBRK +GNULIB_MBSCSPN +GNULIB_MBSCASESTR +GNULIB_MBSPCASECMP +GNULIB_MBSNCASECMP +GNULIB_MBSCASECMP +GNULIB_MBSSTR +GNULIB_MBSRCHR +GNULIB_MBSCHR +GNULIB_MBSNLEN +GNULIB_MBSLEN +GNULIB_STRTOK_R +GNULIB_STRCASESTR +GNULIB_STRSTR +GNULIB_STRSEP +GNULIB_STRPBRK +GNULIB_STRNLEN +GNULIB_STRNDUP +GNULIB_STRDUP +GNULIB_STRCHRNUL +GNULIB_STPNCPY +GNULIB_STPCPY +GNULIB_RAWMEMCHR +GNULIB_MEMRCHR +GNULIB_MEMPCPY +GNULIB_MEMMEM +NEXT_AS_FIRST_DIRECTIVE_STDARG_H +NEXT_STDARG_H +STDARG_H +PMCCABE +GETOPT_H +EOVERFLOW_VALUE +EOVERFLOW_HIDDEN +ENOLINK_VALUE +ENOLINK_HIDDEN +EMULTIHOP_VALUE +EMULTIHOP_HIDDEN +ERRNO_H +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H +NEXT_ERRNO_H +PRAGMA_SYSTEM_HEADER +INCLUDE_NEXT_AS_FIRST_DIRECTIVE +INCLUDE_NEXT +CSHARPCOMPFLAGS +HAVE_CSC +HAVE_MCS +HAVE_CSCC +HAVE_CSC_IN_PATH +HAVE_MCS_IN_PATH +HAVE_CSCC_IN_PATH +CSHARP_CHOICE +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +lispdir +EMACSLOADPATH +EMACS +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +HELP2MAN +PERL +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +AR +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +EGREP +GREP +CPP +RANLIB +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +OBJDUMP +DLLTOOL +AS +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +DLL_VERSION +LT_AGE +LT_REVISION +LT_CURRENT +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +enable_libtool_lock +enable_nls +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_lispdir +enable_csharp +with_packager +with_packager_version +with_packager_bug_reports +enable_ld_version_script +enable_tld +with_html_dir +enable_gtk_doc +enable_gtk_doc_html +enable_gtk_doc_pdf +enable_java +enable_valgrind_tests +enable_gcc_warnings +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +EMACS +EMACSLOADPATH +PKG_CONFIG' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$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 ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 | -n) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$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_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 <<_ACEOF +\`configure' configures GNU Libidn 1.15 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libidn] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --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 + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Libidn 1.15:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --enable-csharp[=IMPL] choose preferred C# implementation (pnet or mono) + --enable-ld-version-script + enable linker version script (default is enabled + when possible) + --disable-tld disable TLD code + --enable-gtk-doc use gtk-doc to build documentation [[default=no]] + --enable-gtk-doc-html build documentation in html format [[default=yes]] + --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] + --enable-java enable Java API + --enable-valgrind-tests run self tests under valgrind + --enable-gcc-warnings turn on lots of GCC warnings (for developers) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-lispdir override the default lisp directory + --with-packager String identifying the packager of this software + --with-packager-version Packager-specific version information + --with-packager-bug-reports + Packager info for bug reports (URL/e-mail/...) + --with-html-dir=PATH path to installed docs + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + EMACS the Emacs editor command + EMACSLOADPATH + the Emacs library search path + PKG_CONFIG path to pkg-config utility + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +GNU Libidn home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Libidn configure 1.15 +generated by GNU Autoconf 2.67 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Copyright (c) 2002-2008 Simon Josefsson . +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval "test \"\${$3+set}\"" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## --------------------------------- ## +## Report this to bug-libidn@gnu.org ## +## --------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_decl + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU Libidn $as_me 1.15, which was +generated by GNU Autoconf 2.67. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5 ; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +gt_needs="$gt_needs " +as_fn_append ac_header_list " errno.h" +as_fn_append ac_header_list " stdarg.h" +as_fn_append ac_header_list " sys/socket.h" +as_fn_append ac_header_list " string.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " iconv.h" +as_fn_append ac_header_list " stdint.h" +as_fn_append ac_header_list " wchar.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +# Library code modified: REVISION++ +# Interfaces changed/added/removed: CURRENT++ REVISION=0 +# Interfaces added: AGE++ +# Interfaces removed: AGE=0 +LT_CURRENT=16 + +LT_REVISION=44 + +LT_AGE=5 + + +# For DEF file. +DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}` + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; 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 + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +am__api_version='1.11' + +# 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 +# AmigaOS /C/install, which installs bootblocks on floppy discs +# 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" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /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 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&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}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;; +esac + +# 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" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $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". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +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" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libidn' + VERSION='1.15' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + +ac_config_headers="$ac_config_headers config.h" + + +# Checks for programs. +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_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 $# != 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 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5 ; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5 ; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5 ; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#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; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +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; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5 ; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = x""yes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + case "$host_os" in + hpux*) + +$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + + + + + + + + + + case $ac_cv_prog_cc_stdc in #( + no) : + ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if test "${ac_cv_prog_cc_c99+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#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; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +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; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 +else + ac_cv_prog_cc_stdc=no +fi + +fi + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 +$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } + if test "${ac_cv_prog_cc_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +fi + + case $ac_cv_prog_cc_stdc in #( + no) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; #( + '') : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 +$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; +esac + + + + + + + + if test -z "$AB_PACKAGE"; then + AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild project... $AB_PACKAGE" >&5 +$as_echo "$as_me: autobuild project... $AB_PACKAGE" >&6;} + + if test -z "$AB_VERSION"; then + AB_VERSION=${PACKAGE_VERSION:-$VERSION} + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild revision... $AB_VERSION" >&5 +$as_echo "$as_me: autobuild revision... $AB_VERSION" >&6;} + + hostname=`hostname` + if test "$hostname"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild hostname... $hostname" >&5 +$as_echo "$as_me: autobuild hostname... $hostname" >&6;} + fi + + + + date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` + if test "$?" != 0; then + date=`date` + fi + if test "$date"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild timestamp... $date" >&5 +$as_echo "$as_me: autobuild timestamp... $date" >&6;} + fi + + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.2.6' +macro_revision='1.3012' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if test "${ac_cv_path_FGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-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 "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_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 + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$ac_tool_prefix"; then + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if test "${lt_cv_nm_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:6194: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:6197: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:6200: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_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 extended 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. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_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]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +# 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]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && 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 $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + 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 $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + + + + + + + + + + + + + + + + + + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 7402 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + 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" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&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 + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +# Set options + + + + enable_dlopen=no + + + + # Check whether --enable-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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + + + + + + + + + + + + + + +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 + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +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' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&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 + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&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 + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8662: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8666: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + + + + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9001: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9005: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9106: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9110: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9161: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9165: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # 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 extended regexp 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_|_GLOBAL__F[ID]_.*' + # 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. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': 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 $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(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=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + 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 $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + 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 + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # 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 + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -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$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + 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 $linker_flags /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 $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + 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 $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +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" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) 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. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + 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' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + 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" + # 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* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + 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}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + 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" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$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.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent 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 "$_LT_TAGVAR(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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; 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 + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 11528 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 11624 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + 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 + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&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 + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +PERL=${PERL-"${am_missing_run}perl"} + + +HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"} + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.17 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GMSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_XGETTEXT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGMERGE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-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 + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${acl_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&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 + acl_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. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${acl_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if test "${acl_cv_rpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIBICONV_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if eval "test \"\${$gt_func_gnugettext_libc+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libc=yes" +else + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if test "${am_cv_func_iconv_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIBINTL_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if eval "test \"\${$gt_func_gnugettext_libintl+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libintl=yes" +else + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if test "${am_cv_func_iconv_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if test "${am_cv_proto_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +$as_echo "${ac_t:- + }$am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + # If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test x"$EMACS" = xt && EMACS= + for ac_prog in emacs xemacs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_EMACS+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$EMACS"; then + ac_cv_prog_EMACS="$EMACS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_EMACS="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +EMACS=$ac_cv_prog_EMACS +if test -n "$EMACS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5 +$as_echo "$EMACS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$EMACS" && break +done +test -n "$EMACS" || EMACS="no" + + + + +# Check whether --with-lispdir was given. +if test "${with_lispdir+set}" = set; then : + withval=$with_lispdir; lispdir="$withval" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5 +$as_echo_n "checking where .elc files should go... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lispdir" >&5 +$as_echo "$lispdir" >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5 +$as_echo_n "checking where .elc files should go... " >&6; } +if test "${am_cv_lispdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $EMACS != "no"; then + if test x${lispdir+set} != xset; then + # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly + # Some emacsen will start up in interactive mode, requiring C-x C-c to exit, + # which is non-obvious for non-emacs users. + # Redirecting /dev/null should help a bit; pity we can't detect "broken" + # emacsen earlier and avoid running this altogether. + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) \"\\n\")) (setq load-path (cdr load-path)))' conftest.out"; } >&5 + ($EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' conftest.out) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + am_cv_lispdir=`sed -n \ + -e 's,/$,,' \ + -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \ + -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \ + conftest.out` + rm conftest.out + fi + fi + test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp' + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_lispdir" >&5 +$as_echo "$am_cv_lispdir" >&6; } + lispdir="$am_cv_lispdir" + +fi + + + + +if test "$am_cv_func_iconv" != "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: +*** + +Your system does not have iconv(). The iconv() function is not +strictly required by the source code. However, that may change in +the future, unless you report that this may be a problem for you. + +Please report this to $PACKAGE_BUGREPORT. + +***" >&5 +$as_echo "$as_me: +*** + +Your system does not have iconv(). The iconv() function is not +strictly required by the source code. However, that may change in +the future, unless you report that this may be a problem for you. + +Please report this to $PACKAGE_BUGREPORT. + +***" >&6;} +fi + +# Checks for header files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + + +# For gnulib stuff in gl/. + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for preferred C# implementation" >&5 +$as_echo_n "checking for preferred C# implementation... " >&6; } + # Check whether --enable-csharp was given. +if test "${enable_csharp+set}" = set; then : + enableval=$enable_csharp; CSHARP_CHOICE="$enableval" +else + CSHARP_CHOICE=any +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CSHARP_CHOICE" >&5 +$as_echo "$CSHARP_CHOICE" >&6; } + case "$CSHARP_CHOICE" in + pnet) + +$as_echo "#define CSHARP_CHOICE_PNET 1" >>confdefs.h + + ;; + mono) + +$as_echo "#define CSHARP_CHOICE_MONO 1" >>confdefs.h + + ;; + esac + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C# compiler" >&5 +$as_echo_n "checking for C# compiler... " >&6; } + HAVE_CSHARPCOMP=1 + # Extract the first word of "cscc", so it can be a program name with args. +set dummy cscc; ac_word=$2 +: +if test "${ac_cv_prog_HAVE_CSCC_IN_PATH+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$HAVE_CSCC_IN_PATH"; then + ac_cv_prog_HAVE_CSCC_IN_PATH="$HAVE_CSCC_IN_PATH" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_HAVE_CSCC_IN_PATH="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +HAVE_CSCC_IN_PATH=$ac_cv_prog_HAVE_CSCC_IN_PATH +if test -n "$HAVE_CSCC_IN_PATH"; then + : +else + : +fi + + + # Extract the first word of "mcs", so it can be a program name with args. +set dummy mcs; ac_word=$2 +: +if test "${ac_cv_prog_HAVE_MCS_IN_PATH+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$HAVE_MCS_IN_PATH"; then + ac_cv_prog_HAVE_MCS_IN_PATH="$HAVE_MCS_IN_PATH" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_HAVE_MCS_IN_PATH="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +HAVE_MCS_IN_PATH=$ac_cv_prog_HAVE_MCS_IN_PATH +if test -n "$HAVE_MCS_IN_PATH"; then + : +else + : +fi + + + # Extract the first word of "csc", so it can be a program name with args. +set dummy csc; ac_word=$2 +: +if test "${ac_cv_prog_HAVE_CSC_IN_PATH+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$HAVE_CSC_IN_PATH"; then + ac_cv_prog_HAVE_CSC_IN_PATH="$HAVE_CSC_IN_PATH" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_HAVE_CSC_IN_PATH="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +HAVE_CSC_IN_PATH=$ac_cv_prog_HAVE_CSC_IN_PATH +if test -n "$HAVE_CSC_IN_PATH"; then + : +else + : +fi + + + for impl in "$CSHARP_CHOICE" pnet mono sscli no; do + case "$impl" in + pnet) + if test -n "$HAVE_CSCC_IN_PATH" \ + && cscc --version >/dev/null 2>/dev/null \ + && ( + # See if pnetlib is well installed. + echo 'class ConfTest { static void Main() { } }' > conftest.cs + cscc -o conftest.exe conftest.cs 2>/dev/null + error=$? + rm -f conftest.cs conftest.exe + exit $error + ); then + HAVE_CSCC=1 + ac_result="cscc" + break + fi + ;; + mono) + if test -n "$HAVE_MCS_IN_PATH" \ + && mcs --version >/dev/null 2>/dev/null \ + && mcs --version 2>/dev/null | grep Mono >/dev/null; then + HAVE_MCS=1 + ac_result="mcs" + break + fi + ;; + sscli) + if test -n "$HAVE_CSC_IN_PATH" \ + && csc -help >/dev/null 2>/dev/null \ + && { if csc -help 2>/dev/null | grep -i chicken > /dev/null; then false; else true; fi; }; then + HAVE_CSC=1 + ac_result="csc" + break + fi + ;; + no) + HAVE_CSHARPCOMP= + ac_result="no" + break + ;; + esac + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_result" >&5 +$as_echo "$ac_result" >&6; } + + + + if test -z "${CSHARPCOMPFLAGS+set}"; then + CSHARPCOMPFLAGS="-O -g" + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5 +$as_echo_n "checking whether the preprocessor supports include_next... " >&6; } +if test "${gl_cv_have_include_next+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + rm -rf conftestd1a conftestd1b conftestd2 + mkdir conftestd1a conftestd1b conftestd2 + cat < conftestd1a/conftest.h +#define DEFINED_IN_CONFTESTD1 +#include_next +#ifdef DEFINED_IN_CONFTESTD2 +int foo; +#else +#error "include_next doesn't work" +#endif +EOF + cat < conftestd1b/conftest.h +#define DEFINED_IN_CONFTESTD1 +#include +#include_next +#ifdef DEFINED_IN_CONFTESTD2 +int foo; +#else +#error "include_next doesn't work" +#endif +EOF + cat < conftestd2/conftest.h +#ifndef DEFINED_IN_CONFTESTD1 +#error "include_next test doesn't work" +#endif +#define DEFINED_IN_CONFTESTD2 +EOF + gl_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_have_include_next=yes +else + CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_have_include_next=buggy +else + gl_cv_have_include_next=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$gl_save_CPPFLAGS" + rm -rf conftestd1a conftestd1b conftestd2 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5 +$as_echo "$gl_cv_have_include_next" >&6; } + PRAGMA_SYSTEM_HEADER= + if test $gl_cv_have_include_next = yes; then + INCLUDE_NEXT=include_next + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next + if test -n "$GCC"; then + PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' + fi + else + if test $gl_cv_have_include_next = buggy; then + INCLUDE_NEXT=include + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next + else + INCLUDE_NEXT=include + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include + fi + fi + + + + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5 +$as_echo_n "checking for complete errno.h... " >&6; } +if test "${gl_cv_header_errno_h_complete+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if !defined ENOMSG +booboo +#endif +#if !defined EIDRM +booboo +#endif +#if !defined ENOLINK +booboo +#endif +#if !defined EPROTO +booboo +#endif +#if !defined EMULTIHOP +booboo +#endif +#if !defined EBADMSG +booboo +#endif +#if !defined EOVERFLOW +booboo +#endif +#if !defined ENOTSUP +booboo +#endif +#if !defined ECANCELED +booboo +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "booboo" >/dev/null 2>&1; then : + gl_cv_header_errno_h_complete=no +else + gl_cv_header_errno_h_complete=yes +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5 +$as_echo "$gl_cv_header_errno_h_complete" >&6; } + if test $gl_cv_header_errno_h_complete = yes; then + ERRNO_H='' + else + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_errno_h='<'errno.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_errno_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_errno_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/errno.h#{ + s#.*"\(.*/errno.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_errno_h='<'errno.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5 +$as_echo "$gl_cv_next_errno_h" >&6; } + fi + NEXT_ERRNO_H=$gl_cv_next_errno_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'errno.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_errno_h + fi + NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive + + + + ERRNO_H='errno.h' + fi + + + if test -n "$ERRNO_H"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5 +$as_echo_n "checking for EMULTIHOP value... " >&6; } +if test "${gl_cv_header_errno_h_EMULTIHOP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef EMULTIHOP +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_EMULTIHOP=yes +else + gl_cv_header_errno_h_EMULTIHOP=no +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_EMULTIHOP = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define _XOPEN_SOURCE_EXTENDED 1 +#include +#ifdef EMULTIHOP +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_EMULTIHOP=hidden +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then + if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" " +#define _XOPEN_SOURCE_EXTENDED 1 +#include +/* The following two lines are a workaround against an autoconf-2.52 bug. */ +#include +#include +"; then : + +fi + + fi + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5 +$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; } + case $gl_cv_header_errno_h_EMULTIHOP in + yes | no) + EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE= + ;; + *) + EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP" + ;; + esac + + + fi + + + if test -n "$ERRNO_H"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5 +$as_echo_n "checking for ENOLINK value... " >&6; } +if test "${gl_cv_header_errno_h_ENOLINK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENOLINK +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_ENOLINK=yes +else + gl_cv_header_errno_h_ENOLINK=no +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_ENOLINK = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define _XOPEN_SOURCE_EXTENDED 1 +#include +#ifdef ENOLINK +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_ENOLINK=hidden +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_ENOLINK = hidden; then + if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" " +#define _XOPEN_SOURCE_EXTENDED 1 +#include +/* The following two lines are a workaround against an autoconf-2.52 bug. */ +#include +#include +"; then : + +fi + + fi + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5 +$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; } + case $gl_cv_header_errno_h_ENOLINK in + yes | no) + ENOLINK_HIDDEN=0; ENOLINK_VALUE= + ;; + *) + ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK" + ;; + esac + + + fi + + + if test -n "$ERRNO_H"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5 +$as_echo_n "checking for EOVERFLOW value... " >&6; } +if test "${gl_cv_header_errno_h_EOVERFLOW+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef EOVERFLOW +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_EOVERFLOW=yes +else + gl_cv_header_errno_h_EOVERFLOW=no +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_EOVERFLOW = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define _XOPEN_SOURCE_EXTENDED 1 +#include +#ifdef EOVERFLOW +yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + gl_cv_header_errno_h_EOVERFLOW=hidden +fi +rm -f conftest* + + if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then + if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" " +#define _XOPEN_SOURCE_EXTENDED 1 +#include +/* The following two lines are a workaround against an autoconf-2.52 bug. */ +#include +#include +"; then : + +fi + + fi + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5 +$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; } + case $gl_cv_header_errno_h_EOVERFLOW in + yes | no) + EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE= + ;; + *) + EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW" + ;; + esac + + + fi + + +ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" +if test "x$ac_cv_have_decl_strerror_r" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR_R $ac_have_decl +_ACEOF + +for ac_func in strerror_r +do : + ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r" +if test "x$ac_cv_func_strerror_r" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRERROR_R 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 +$as_echo_n "checking whether strerror_r returns char *... " >&6; } +if test "${ac_cv_func_strerror_r_char_p+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + ac_cv_func_strerror_r_char_p=no + if test $ac_cv_have_decl_strerror_r = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + char *p = strerror_r (0, buf, sizeof buf); + return !p || x; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_func_strerror_r_char_p=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + # strerror_r is not declared. Choose between + # systems that have relatively inaccessible declarations for the + # function. BeOS and DEC UNIX 4.0 fall in this category, but the + # former has a strerror_r that returns char*, while the latter + # has a strerror_r that returns `int'. + # This test should segfault on the DEC system. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + extern char *strerror_r (); +int +main () +{ +char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + return ! isalpha (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_strerror_r_char_p=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 +$as_echo "$ac_cv_func_strerror_r_char_p" >&6; } +if test $ac_cv_func_strerror_r_char_p = yes; then + +$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h + +fi + + + XGETTEXT_EXTRA_OPTIONS= + + + if test -z "$GETOPT_H"; then + for ac_header in getopt.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" +if test "x$ac_cv_header_getopt_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_H 1 +_ACEOF + +else + GETOPT_H=getopt.h +fi + +done + + fi + + if test -z "$GETOPT_H"; then + for ac_func in getopt_long_only +do : + ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only" +if test "x$ac_cv_func_getopt_long_only" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_LONG_ONLY 1 +_ACEOF + +else + GETOPT_H=getopt.h +fi +done + + fi + + if test -z "$GETOPT_H"; then + ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include +" +if test "x$ac_cv_have_decl_optreset" = x""yes; then : + GETOPT_H=getopt.h +fi + + fi + + if test -z "$GETOPT_H"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5 +$as_echo_n "checking for working GNU getopt function... " >&6; } +if test "${gl_cv_func_gnu_getopt+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_fn_c_check_decl "$LINENO" "getopt_clip" "ac_cv_have_decl_getopt_clip" "#include +" +if test "x$ac_cv_have_decl_getopt_clip" = x""yes; then : + gl_cv_func_gnu_getopt=no +else + gl_cv_func_gnu_getopt=yes +fi + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + char *myargv[3]; + myargv[0] = "conftest"; + myargv[1] = "-+"; + myargv[2] = 0; + return getopt (2, myargv, "+a") != '?'; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_gnu_getopt=yes +else + gl_cv_func_gnu_getopt=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gnu_getopt" >&5 +$as_echo "$gl_cv_func_gnu_getopt" >&6; } + if test "$gl_cv_func_gnu_getopt" = "no"; then + GETOPT_H=getopt.h + fi + fi + +ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default" +if test "x$ac_cv_have_decl_getenv" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETENV $ac_have_decl +_ACEOF + + + + + GNULIB_MEMMEM=0; + GNULIB_MEMPCPY=0; + GNULIB_MEMRCHR=0; + GNULIB_RAWMEMCHR=0; + GNULIB_STPCPY=0; + GNULIB_STPNCPY=0; + GNULIB_STRCHRNUL=0; + GNULIB_STRDUP=0; + GNULIB_STRNDUP=0; + GNULIB_STRNLEN=0; + GNULIB_STRPBRK=0; + GNULIB_STRSEP=0; + GNULIB_STRSTR=0; + GNULIB_STRCASESTR=0; + GNULIB_STRTOK_R=0; + GNULIB_MBSLEN=0; + GNULIB_MBSNLEN=0; + GNULIB_MBSCHR=0; + GNULIB_MBSRCHR=0; + GNULIB_MBSSTR=0; + GNULIB_MBSCASECMP=0; + GNULIB_MBSNCASECMP=0; + GNULIB_MBSPCASECMP=0; + GNULIB_MBSCASESTR=0; + GNULIB_MBSCSPN=0; + GNULIB_MBSPBRK=0; + GNULIB_MBSSPN=0; + GNULIB_MBSSEP=0; + GNULIB_MBSTOK_R=0; + GNULIB_STRERROR=0; + GNULIB_STRSIGNAL=0; + GNULIB_STRVERSCMP=0; + HAVE_DECL_MEMMEM=1; + HAVE_MEMPCPY=1; + HAVE_DECL_MEMRCHR=1; + HAVE_RAWMEMCHR=1; + HAVE_STPCPY=1; + HAVE_STPNCPY=1; + HAVE_STRCHRNUL=1; + HAVE_DECL_STRDUP=1; + HAVE_STRNDUP=1; + HAVE_DECL_STRNDUP=1; + HAVE_DECL_STRNLEN=1; + HAVE_STRPBRK=1; + HAVE_STRSEP=1; + HAVE_STRCASESTR=1; + HAVE_DECL_STRTOK_R=1; + HAVE_DECL_STRERROR=1; + HAVE_DECL_STRSIGNAL=1; + HAVE_STRVERSCMP=1; + REPLACE_MEMMEM=0; + REPLACE_STRDUP=0; + REPLACE_STRSTR=0; + REPLACE_STRCASESTR=0; + REPLACE_STRERROR=0; + REPLACE_STRSIGNAL=0; + + + + + + + if test -z "$ERRNO_H"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5 +$as_echo_n "checking for working strerror function... " >&6; } +if test "${gl_cv_func_working_strerror+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +return !*strerror (-2); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_working_strerror=yes +else + gl_cv_func_working_strerror=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +return !*strerror (-2); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_working_strerror=yes +else + gl_cv_func_working_strerror=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5 +$as_echo "$gl_cv_func_working_strerror" >&6; } + if test $gl_cv_func_working_strerror = no; then + REPLACE_STRERROR=1 + fi + else + REPLACE_STRERROR=1 + fi + if test $REPLACE_STRERROR = 1; then + + ac_fn_c_check_decl "$LINENO" "strerror" "ac_cv_have_decl_strerror" "$ac_includes_default" +if test "x$ac_cv_have_decl_strerror" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR $ac_have_decl +_ACEOF + + + if test $ac_cv_header_sys_socket_h != yes; then + for ac_header in winsock2.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" +if test "x$ac_cv_header_winsock2_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WINSOCK2_H 1 +_ACEOF + +fi + +done + + fi + + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +$as_echo_n "checking for C/C++ restrict keyword... " >&6; } +if test "${ac_cv_c_restrict+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_restrict=no + # The order here caters to the fact that C++ does not require restrict. + for ac_kw in __restrict __restrict__ _Restrict restrict; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +typedef int * int_ptr; + int foo (int_ptr $ac_kw ip) { + return ip[0]; + } +int +main () +{ +int s[1]; + int * $ac_kw t = s; + t[0] = 0; + return foo(t) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_restrict=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_restrict" != no && break + done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +$as_echo "$ac_cv_c_restrict" >&6; } + + case $ac_cv_c_restrict in + restrict) ;; + no) $as_echo "#define restrict /**/" >>confdefs.h + ;; + *) cat >>confdefs.h <<_ACEOF +#define restrict $ac_cv_c_restrict +_ACEOF + ;; + esac + + + + + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_string_h='<'string.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_string_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_string_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/string.h#{ + s#.*"\(.*/string.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_string_h='<'string.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5 +$as_echo "$gl_cv_next_string_h" >&6; } + fi + NEXT_STRING_H=$gl_cv_next_string_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'string.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_string_h + fi + NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive + + + + + + GNULIB_CHOWN=0; + GNULIB_CLOSE=0; + GNULIB_DUP2=0; + GNULIB_ENVIRON=0; + GNULIB_EUIDACCESS=0; + GNULIB_FCHDIR=0; + GNULIB_FSYNC=0; + GNULIB_FTRUNCATE=0; + GNULIB_GETCWD=0; + GNULIB_GETDOMAINNAME=0; + GNULIB_GETDTABLESIZE=0; + GNULIB_GETHOSTNAME=0; + GNULIB_GETLOGIN_R=0; + GNULIB_GETPAGESIZE=0; + GNULIB_GETUSERSHELL=0; + GNULIB_LCHOWN=0; + GNULIB_LINK=0; + GNULIB_LSEEK=0; + GNULIB_READLINK=0; + GNULIB_SLEEP=0; + GNULIB_UNISTD_H_SIGPIPE=0; + GNULIB_WRITE=0; + HAVE_DUP2=1; + HAVE_EUIDACCESS=1; + HAVE_FSYNC=1; + HAVE_FTRUNCATE=1; + HAVE_GETDOMAINNAME=1; + HAVE_GETDTABLESIZE=1; + HAVE_GETHOSTNAME=1; + HAVE_GETPAGESIZE=1; + HAVE_GETUSERSHELL=1; + HAVE_LINK=1; + HAVE_READLINK=1; + HAVE_SLEEP=1; + HAVE_DECL_ENVIRON=1; + HAVE_DECL_GETLOGIN_R=1; + HAVE_OS_H=0; + HAVE_SYS_PARAM_H=0; + REPLACE_CHOWN=0; + REPLACE_CLOSE=0; + REPLACE_FCHDIR=0; + REPLACE_GETCWD=0; + REPLACE_GETPAGESIZE=0; + REPLACE_LCHOWN=0; + REPLACE_LSEEK=0; + REPLACE_WRITE=0; + UNISTD_H_HAVE_WINSOCK2_H=0; + + + + + if true; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=true + + + + + + + + + + gl_source_base='gl' + + ac_config_files="$ac_config_files csharpcomp.sh:build-aux/csharpcomp.sh.in" + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 +$as_echo_n "checking for error_at_line... " >&6; } +if test "${ac_cv_lib_error_at_line+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +error_at_line (0, 0, "", 0, "an error occurred"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_error_at_line=yes +else + ac_cv_lib_error_at_line=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 +$as_echo "$ac_cv_lib_error_at_line" >&6; } +if test $ac_cv_lib_error_at_line = no; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext" + +fi + + + + : + + + + + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format" + + + + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format" + + + + if test -n "$GETOPT_H"; then : + + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" + + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" + + + GETOPT_H=getopt.h + +$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h + + + + + + + +fi + + + + # Autoconf 2.61a.99 and earlier don't support linking a file only + # in VPATH builds. But since GNUmakefile is for maintainer use + # only, it does not matter if we skip the link with older autoconf. + # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH + # builds, so use a shell variable to bypass this. + GNUmakefile=GNUmakefile + ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" + + + + # Extract the first word of "pmccabe", so it can be a program name with args. +set dummy pmccabe; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PMCCABE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PMCCABE in + [\\/]* | ?:[\\/]*) + ac_cv_path_PMCCABE="$PMCCABE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PMCCABE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PMCCABE" && ac_cv_path_PMCCABE="false" + ;; +esac +fi +PMCCABE=$ac_cv_path_PMCCABE +if test -n "$PMCCABE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PMCCABE" >&5 +$as_echo "$PMCCABE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + STDARG_H=''; + NEXT_STDARG_H=''; + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5 +$as_echo_n "checking for va_copy... " >&6; } + if test "${gl_cv_func_va_copy+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef va_copy +void (*func) (va_list, va_list) = va_copy; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_va_copy=yes +else + gl_cv_func_va_copy=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_va_copy" >&5 +$as_echo "$gl_cv_func_va_copy" >&6; } + if test $gl_cv_func_va_copy = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _AIX && !defined __GNUC__ + AIX vaccine + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "vaccine" >/dev/null 2>&1; then : + gl_aixcc=yes +else + gl_aixcc=no +fi +rm -f conftest* + + if test $gl_aixcc = yes; then + STDARG_H=stdarg.h + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_stdarg_h='<'stdarg.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_stdarg_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_stdarg_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_stdarg_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/stdarg.h#{ + s#.*"\(.*/stdarg.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_stdarg_h='<'stdarg.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdarg_h" >&5 +$as_echo "$gl_cv_next_stdarg_h" >&6; } + fi + NEXT_STDARG_H=$gl_cv_next_stdarg_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'stdarg.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_stdarg_h + fi + NEXT_AS_FIRST_DIRECTIVE_STDARG_H=$gl_next_as_first_directive + + + + if test "$gl_cv_next_stdarg_h" = '""'; then + gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' + NEXT_STDARG_H="$gl_cv_next_stdarg_h" + fi + else + + saved_as_echo_n="$as_echo_n" + as_echo_n=':' + if test "${gl_cv_func___va_copy+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef __va_copy +error, bail out +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func___va_copy=yes +else + gl_cv_func___va_copy=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + as_echo_n="$saved_as_echo_n" + + if test $gl_cv_func___va_copy = yes; then + +$as_echo "#define va_copy __va_copy" >>confdefs.h + + else + + +$as_echo "#define va_copy gl_va_copy" >>confdefs.h + + fi + fi + fi + + + + if test $REPLACE_STRERROR = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext" + + +cat >>confdefs.h <<_ACEOF +#define REPLACE_STRERROR $REPLACE_STRERROR +_ACEOF + + fi + + + + GNULIB_STRERROR=1 + + + + + + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_unistd_h='<'unistd.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_unistd_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_unistd_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/unistd.h#{ + s#.*"\(.*/unistd.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_unistd_h='<'unistd.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5 +$as_echo "$gl_cv_next_unistd_h" >&6; } + fi + NEXT_UNISTD_H=$gl_cv_next_unistd_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'unistd.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_unistd_h + fi + NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive + + + + + + if test $ac_cv_header_unistd_h = yes; then + HAVE_UNISTD_H=1 + else + HAVE_UNISTD_H=0 + fi + + + +# Check whether --with-packager was given. +if test "${with_packager+set}" = set; then : + withval=$with_packager; case $withval in + yes|no) ;; + *) +cat >>confdefs.h <<_ACEOF +#define PACKAGE_PACKAGER "$withval" +_ACEOF + ;; + esac + +fi + + + +# Check whether --with-packager-version was given. +if test "${with_packager_version+set}" = set; then : + withval=$with_packager_version; case $withval in + yes|no) ;; + *) +cat >>confdefs.h <<_ACEOF +#define PACKAGE_PACKAGER_VERSION "$withval" +_ACEOF + ;; + esac + +fi + + + +# Check whether --with-packager-bug-reports was given. +if test "${with_packager_bug_reports+set}" = set; then : + withval=$with_packager_bug_reports; case $withval in + yes|no) ;; + *) +cat >>confdefs.h <<_ACEOF +#define PACKAGE_PACKAGER_BUG_REPORTS "$withval" +_ACEOF + ;; + esac + +fi + + + if test "X$with_packager" = "X" && \ + test "X$with_packager_version$with_packager_bug_reports" != "X" + then + as_fn_error $? "The --with-packager-{bug-reports,version} options require --with-packager" "$LINENO" 5 + fi + + + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + gl_source_base='gltests' + abs_aux_dir=`cd "$ac_aux_dir"; pwd` + + + + + + + + + + + REPLACE_ICONV=0; + REPLACE_ICONV_OPEN=0; + REPLACE_ICONV_UTF=0; + ICONV_H=''; + + + + + gl_cv_c_multiarch=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + arch= + prev= + for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do + if test -n "$prev"; then + case $word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$arch" || test "$arch" = "$word"; then + arch="$word" + else + gl_cv_c_multiarch=yes + fi + ;; + esac + prev= + else + if test "x$word" = "x-arch"; then + prev=arch + fi + fi + done + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $gl_cv_c_multiarch = yes; then + +$as_echo "#define AA_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + APPLE_UNIVERSAL_BUILD=1 + else + APPLE_UNIVERSAL_BUILD=0 + fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if test "${ac_cv_header_stdbool_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #if false + "error: false is not 0" + #endif + #ifndef true + "error: true is not defined" + #endif + #if true != 1 + "error: true is not 1" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + bool e = &s; + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + #if defined __xlc__ || defined __GNUC__ + /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 + reported by James Lemley on 2005-10-05; see + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + This test is not quite right, since xlc is allowed to + reject this program, as the initializer for xlcbug is + not one of the forms that C requires support for. + However, doing the test right would require a run-time + test, and that would make cross-compilation harder. + Let us hope that IBM fixes the xlc bug, and also adds + support for this kind of constant expression. In the + meantime, this test will reject xlc, which is OK, since + our stdbool.h substitute should suffice. We also test + this with GCC, where it should work, to detect more + quickly whether someone messes up the test in the + future. */ + char digs[] = "0123456789"; + int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); + #endif + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } + ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + + if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if test "${ac_cv_type_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if test "$cross_compiling" = yes; then : + ac_cv_type_long_long_int=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main () +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_type_long_long_int=yes +else + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + ac_cv_type_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +$as_echo "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_type_unsigned_long_long_int=yes +else + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + + + + GNULIB_BTOWC=0; + GNULIB_WCTOB=0; + GNULIB_MBSINIT=0; + GNULIB_MBRTOWC=0; + GNULIB_MBRLEN=0; + GNULIB_MBSRTOWCS=0; + GNULIB_MBSNRTOWCS=0; + GNULIB_WCRTOMB=0; + GNULIB_WCSRTOMBS=0; + GNULIB_WCSNRTOMBS=0; + GNULIB_WCWIDTH=0; + HAVE_BTOWC=1; + HAVE_MBSINIT=1; + HAVE_MBRTOWC=1; + HAVE_MBRLEN=1; + HAVE_MBSRTOWCS=1; + HAVE_MBSNRTOWCS=1; + HAVE_WCRTOMB=1; + HAVE_WCSRTOMBS=1; + HAVE_WCSNRTOMBS=1; + HAVE_DECL_WCTOB=1; + HAVE_DECL_WCWIDTH=1; + REPLACE_MBSTATE_T=0; + REPLACE_BTOWC=0; + REPLACE_WCTOB=0; + REPLACE_MBSINIT=0; + REPLACE_MBRTOWC=0; + REPLACE_MBRLEN=0; + REPLACE_MBSRTOWCS=0; + REPLACE_MBSNRTOWCS=0; + REPLACE_WCRTOMB=0; + REPLACE_WCSRTOMBS=0; + REPLACE_WCSNRTOMBS=0; + REPLACE_WCWIDTH=0; + WCHAR_H=''; + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if test "${gt_cv_c_wint_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${am_cv_langinfo_codeset+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + + if true; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=true + + + + + + + + + + gl_source_base='lib/gl' + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if test "${am_cv_func_iconv_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if test "${am_cv_proto_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +$as_echo "${ac_t:- + }$am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_iconv_h='<'iconv.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_iconv_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_iconv_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_iconv_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/iconv.h#{ + s#.*"\(.*/iconv.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_iconv_h='<'iconv.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_iconv_h" >&5 +$as_echo "$gl_cv_next_iconv_h" >&6; } + fi + NEXT_ICONV_H=$gl_cv_next_iconv_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'iconv.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_iconv_h + fi + NEXT_AS_FIRST_DIRECTIVE_ICONV_H=$gl_next_as_first_directive + + + + + + + + + if test "$am_cv_func_iconv" = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #if defined _LIBICONV_VERSION || defined __GLIBC__ + gnu_iconv + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "gnu_iconv" >/dev/null 2>&1; then : + gl_func_iconv_gnu=yes +else + gl_func_iconv_gnu=no +fi +rm -f conftest* + + if test $gl_func_iconv_gnu = no; then + iconv_flavor= + case "$host_os" in + aix*) iconv_flavor=ICONV_FLAVOR_AIX ;; + irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;; + hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;; + osf*) iconv_flavor=ICONV_FLAVOR_OSF ;; + esac + if test -n "$iconv_flavor"; then + +cat >>confdefs.h <<_ACEOF +#define ICONV_FLAVOR $iconv_flavor +_ACEOF + + + + + ICONV_H='iconv.h' + + REPLACE_ICONV_OPEN=1 + + + + + + + + + lgl_LIBOBJS="$lgl_LIBOBJS iconv_open.$ac_objext" + + + fi + fi + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc/ld supports -Wl,--output-def" >&5 +$as_echo_n "checking if gcc/ld supports -Wl,--output-def... " >&6; } +if test "${gl_cv_ld_output_def+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$enable_shared" = no; then + gl_cv_ld_output_def="not needed, shared libraries are disabled" + else + gl_ldflags_save=$LDFLAGS + LDFLAGS="-Wl,--output-def,conftest.def" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_ld_output_def=yes +else + gl_cv_ld_output_def=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + rm -f conftest.def + LDFLAGS="$gl_ldflags_save" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_ld_output_def" >&5 +$as_echo "$gl_cv_ld_output_def" >&6; } + if test "x$gl_cv_ld_output_def" = "xyes"; then + HAVE_LD_OUTPUT_DEF_TRUE= + HAVE_LD_OUTPUT_DEF_FALSE='#' +else + HAVE_LD_OUTPUT_DEF_TRUE='#' + HAVE_LD_OUTPUT_DEF_FALSE= +fi + + + + # Check whether --enable-ld-version-script was given. +if test "${enable_ld_version_script+set}" = set; then : + enableval=$enable_ld_version_script; have_ld_version_script=$enableval +fi + + if test -z "$have_ld_version_script"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5 +$as_echo_n "checking if LD -Wl,--version-script works... " >&6; } + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + cat > conftest.map <conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + have_ld_version_script=yes +else + have_ld_version_script=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + rm -f conftest.map + LDFLAGS="$save_LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5 +$as_echo "$have_ld_version_script" >&6; } + fi + if test "$have_ld_version_script" = "yes"; then + HAVE_LD_VERSION_SCRIPT_TRUE= + HAVE_LD_VERSION_SCRIPT_FALSE='#' +else + HAVE_LD_VERSION_SCRIPT_TRUE='#' + HAVE_LD_VERSION_SCRIPT_FALSE= +fi + + + + + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 +$as_echo_n "checking for simple visibility declarations... " >&6; } + if test "${gl_cv_cc_visibility+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_cc_visibility=yes +else + gl_cv_cc_visibility=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 +$as_echo "$gl_cv_cc_visibility" >&6; } + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + + + +cat >>confdefs.h <<_ACEOF +#define HAVE_VISIBILITY $HAVE_VISIBILITY +_ACEOF + + + + + + + # Define two additional variables used in the Makefile substitution. + + if test "$ac_cv_header_stdbool_h" = yes; then + STDBOOL_H='' + else + STDBOOL_H='stdbool.h' + fi + + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + if test $ac_cv_type_long_long_int = yes; then + HAVE_LONG_LONG_INT=1 + else + HAVE_LONG_LONG_INT=0 + fi + + + if test $ac_cv_type_unsigned_long_long_int = yes; then + HAVE_UNSIGNED_LONG_LONG_INT=1 + else + HAVE_UNSIGNED_LONG_LONG_INT=0 + fi + + + if test $ac_cv_header_inttypes_h = yes; then + HAVE_INTTYPES_H=1 + else + HAVE_INTTYPES_H=0 + fi + + + if test $ac_cv_header_sys_types_h = yes; then + HAVE_SYS_TYPES_H=1 + else + HAVE_SYS_TYPES_H=0 + fi + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_stdint_h='<'stdint.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_stdint_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_stdint_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/stdint.h#{ + s#.*"\(.*/stdint.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_stdint_h='<'stdint.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5 +$as_echo "$gl_cv_next_stdint_h" >&6; } + fi + NEXT_STDINT_H=$gl_cv_next_stdint_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'stdint.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_stdint_h + fi + NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive + + + + if test $ac_cv_header_stdint_h = yes; then + HAVE_STDINT_H=1 + else + HAVE_STDINT_H=0 + fi + + + if test $ac_cv_header_stdint_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5 +$as_echo_n "checking whether stdint.h conforms to C99... " >&6; } +if test "${gl_cv_header_working_stdint_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gl_cv_header_working_stdint_h=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */ +#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */ +#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ +#include +/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ +#if !(defined WCHAR_MIN && defined WCHAR_MAX) +#error "WCHAR_MIN, WCHAR_MAX not defined in " +#endif + + + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + + +#ifdef INT8_MAX +int8_t a1 = INT8_MAX; +int8_t a1min = INT8_MIN; +#endif +#ifdef INT16_MAX +int16_t a2 = INT16_MAX; +int16_t a2min = INT16_MIN; +#endif +#ifdef INT32_MAX +int32_t a3 = INT32_MAX; +int32_t a3min = INT32_MIN; +#endif +#ifdef INT64_MAX +int64_t a4 = INT64_MAX; +int64_t a4min = INT64_MIN; +#endif +#ifdef UINT8_MAX +uint8_t b1 = UINT8_MAX; +#else +typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; +#endif +#ifdef UINT16_MAX +uint16_t b2 = UINT16_MAX; +#endif +#ifdef UINT32_MAX +uint32_t b3 = UINT32_MAX; +#endif +#ifdef UINT64_MAX +uint64_t b4 = UINT64_MAX; +#endif +int_least8_t c1 = INT8_C (0x7f); +int_least8_t c1max = INT_LEAST8_MAX; +int_least8_t c1min = INT_LEAST8_MIN; +int_least16_t c2 = INT16_C (0x7fff); +int_least16_t c2max = INT_LEAST16_MAX; +int_least16_t c2min = INT_LEAST16_MIN; +int_least32_t c3 = INT32_C (0x7fffffff); +int_least32_t c3max = INT_LEAST32_MAX; +int_least32_t c3min = INT_LEAST32_MIN; +int_least64_t c4 = INT64_C (0x7fffffffffffffff); +int_least64_t c4max = INT_LEAST64_MAX; +int_least64_t c4min = INT_LEAST64_MIN; +uint_least8_t d1 = UINT8_C (0xff); +uint_least8_t d1max = UINT_LEAST8_MAX; +uint_least16_t d2 = UINT16_C (0xffff); +uint_least16_t d2max = UINT_LEAST16_MAX; +uint_least32_t d3 = UINT32_C (0xffffffff); +uint_least32_t d3max = UINT_LEAST32_MAX; +uint_least64_t d4 = UINT64_C (0xffffffffffffffff); +uint_least64_t d4max = UINT_LEAST64_MAX; +int_fast8_t e1 = INT_FAST8_MAX; +int_fast8_t e1min = INT_FAST8_MIN; +int_fast16_t e2 = INT_FAST16_MAX; +int_fast16_t e2min = INT_FAST16_MIN; +int_fast32_t e3 = INT_FAST32_MAX; +int_fast32_t e3min = INT_FAST32_MIN; +int_fast64_t e4 = INT_FAST64_MAX; +int_fast64_t e4min = INT_FAST64_MIN; +uint_fast8_t f1 = UINT_FAST8_MAX; +uint_fast16_t f2 = UINT_FAST16_MAX; +uint_fast32_t f3 = UINT_FAST32_MAX; +uint_fast64_t f4 = UINT_FAST64_MAX; +#ifdef INTPTR_MAX +intptr_t g = INTPTR_MAX; +intptr_t gmin = INTPTR_MIN; +#endif +#ifdef UINTPTR_MAX +uintptr_t h = UINTPTR_MAX; +#endif +intmax_t i = INTMAX_MAX; +uintmax_t j = UINTMAX_MAX; + +#include /* for CHAR_BIT */ +#define TYPE_MINIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) +#define TYPE_MAXIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) +struct s { + int check_PTRDIFF: + PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) + && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) + ? 1 : -1; + /* Detect bug in FreeBSD 6.0 / ia64. */ + int check_SIG_ATOMIC: + SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) + && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) + ? 1 : -1; + int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; + int check_WCHAR: + WCHAR_MIN == TYPE_MINIMUM (wchar_t) + && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) + ? 1 : -1; + /* Detect bug in mingw. */ + int check_WINT: + WINT_MIN == TYPE_MINIMUM (wint_t) + && WINT_MAX == TYPE_MAXIMUM (wint_t) + ? 1 : -1; + + /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ + int check_UINT8_C: + (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; + int check_UINT16_C: + (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; + + /* Detect bugs in OpenBSD 3.9 stdint.h. */ +#ifdef UINT8_MAX + int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; +#endif +#ifdef UINT16_MAX + int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; +#endif +#ifdef UINT32_MAX + int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; +#endif +#ifdef UINT64_MAX + int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; +#endif + int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; + int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; + int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; + int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; + int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; + int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; + int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; + int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; + int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; + int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; + int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; +}; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if test "$cross_compiling" = yes; then : + gl_cv_header_working_stdint_h=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */ +#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */ +#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ +#include + + + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + + +#include +#include +#define MVAL(macro) MVAL1(macro) +#define MVAL1(expression) #expression +static const char *macro_values[] = + { +#ifdef INT8_MAX + MVAL (INT8_MAX), +#endif +#ifdef INT16_MAX + MVAL (INT16_MAX), +#endif +#ifdef INT32_MAX + MVAL (INT32_MAX), +#endif +#ifdef INT64_MAX + MVAL (INT64_MAX), +#endif +#ifdef UINT8_MAX + MVAL (UINT8_MAX), +#endif +#ifdef UINT16_MAX + MVAL (UINT16_MAX), +#endif +#ifdef UINT32_MAX + MVAL (UINT32_MAX), +#endif +#ifdef UINT64_MAX + MVAL (UINT64_MAX), +#endif + NULL + }; + +int +main () +{ + + const char **mv; + for (mv = macro_values; *mv != NULL; mv++) + { + const char *value = *mv; + /* Test whether it looks like a cast expression. */ + if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 + || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 + || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 + || strncmp (value, "((int)"/*)*/, 6) == 0 + || strncmp (value, "((signed short)"/*)*/, 15) == 0 + || strncmp (value, "((signed char)"/*)*/, 14) == 0) + return 1; + } + return 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_header_working_stdint_h=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5 +$as_echo "$gl_cv_header_working_stdint_h" >&6; } + fi + if test "$gl_cv_header_working_stdint_h" = yes; then + STDINT_H= + else + for ac_header in sys/inttypes.h sys/bitypes.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_sys_inttypes_h = yes; then + HAVE_SYS_INTTYPES_H=1 + else + HAVE_SYS_INTTYPES_H=0 + fi + + if test $ac_cv_header_sys_bitypes_h = yes; then + HAVE_SYS_BITYPES_H=1 + else + HAVE_SYS_BITYPES_H=0 + fi + + + + + + + if test $APPLE_UNIVERSAL_BUILD = 0; then + + + for gltype in ptrdiff_t size_t ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 +$as_echo_n "checking for bit size of $gltype... " >&6; } +if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + +#include "; then : + +else + result=unknown +fi + + eval gl_cv_bitsizeof_${gltype}=\$result + +fi +eval ac_res=\$gl_cv_bitsizeof_${gltype} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval result=\$gl_cv_bitsizeof_${gltype} + if test $result = unknown; then + result=0 + fi + GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + cat >>confdefs.h <<_ACEOF +#define BITSIZEOF_${GLTYPE} $result +_ACEOF + + eval BITSIZEOF_${GLTYPE}=\$result + done + + + fi + + + for gltype in sig_atomic_t wchar_t wint_t ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 +$as_echo_n "checking for bit size of $gltype... " >&6; } +if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + +#include "; then : + +else + result=unknown +fi + + eval gl_cv_bitsizeof_${gltype}=\$result + +fi +eval ac_res=\$gl_cv_bitsizeof_${gltype} + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval result=\$gl_cv_bitsizeof_${gltype} + if test $result = unknown; then + result=0 + fi + GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + cat >>confdefs.h <<_ACEOF +#define BITSIZEOF_${GLTYPE} $result +_ACEOF + + eval BITSIZEOF_${GLTYPE}=\$result + done + + + + + for gltype in sig_atomic_t wchar_t wint_t ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5 +$as_echo_n "checking whether $gltype is signed... " >&6; } +if eval "test \"\${gl_cv_type_${gltype}_signed+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + + int verify[2 * (($gltype) -1 < ($gltype) 0) - 1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + result=yes +else + result=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + eval gl_cv_type_${gltype}_signed=\$result + +fi +eval ac_res=\$gl_cv_type_${gltype}_signed + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval result=\$gl_cv_type_${gltype}_signed + GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + if test "$result" = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_SIGNED_${GLTYPE} 1 +_ACEOF + + eval HAVE_SIGNED_${GLTYPE}=1 + else + eval HAVE_SIGNED_${GLTYPE}=0 + fi + done + + + gl_cv_type_ptrdiff_t_signed=yes + gl_cv_type_size_t_signed=no + if test $APPLE_UNIVERSAL_BUILD = 0; then + + + for gltype in ptrdiff_t size_t ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 +$as_echo_n "checking for $gltype integer literal suffix... " >&6; } +if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval gl_cv_type_${gltype}_suffix=no + eval result=\$gl_cv_type_${gltype}_signed + if test "$result" = yes; then + glsufu= + else + glsufu=u + fi + for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do + case $glsuf in + '') gltype1='int';; + l) gltype1='long int';; + ll) gltype1='long long int';; + i64) gltype1='__int64';; + u) gltype1='unsigned int';; + ul) gltype1='unsigned long int';; + ull) gltype1='unsigned long long int';; + ui64)gltype1='unsigned __int64';; + esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + + extern $gltype foo; + extern $gltype1 foo; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval gl_cv_type_${gltype}_suffix=\$glsuf +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" != no && break + done +fi +eval ac_res=\$gl_cv_type_${gltype}_suffix + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" = no && result= + eval ${GLTYPE}_SUFFIX=\$result + cat >>confdefs.h <<_ACEOF +#define ${GLTYPE}_SUFFIX $result +_ACEOF + + done + + + fi + + + for gltype in sig_atomic_t wchar_t wint_t ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 +$as_echo_n "checking for $gltype integer literal suffix... " >&6; } +if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval gl_cv_type_${gltype}_suffix=no + eval result=\$gl_cv_type_${gltype}_signed + if test "$result" = yes; then + glsufu= + else + glsufu=u + fi + for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do + case $glsuf in + '') gltype1='int';; + l) gltype1='long int';; + ll) gltype1='long long int';; + i64) gltype1='__int64';; + u) gltype1='unsigned int';; + ul) gltype1='unsigned long int';; + ull) gltype1='unsigned long long int';; + ui64)gltype1='unsigned __int64';; + esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* BSD/OS 4.0.1 has a bug: , and must be + included before . */ + #include + #include + #if HAVE_WCHAR_H + # include + # include + # include + #endif + + extern $gltype foo; + extern $gltype1 foo; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval gl_cv_type_${gltype}_suffix=\$glsuf +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" != no && break + done +fi +eval ac_res=\$gl_cv_type_${gltype}_suffix + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" = no && result= + eval ${GLTYPE}_SUFFIX=\$result + cat >>confdefs.h <<_ACEOF +#define ${GLTYPE}_SUFFIX $result +_ACEOF + + done + + + + STDINT_H=stdint.h + fi + + + if test $gl_cond_libtool = false; then + gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV" + gl_libdeps="$gl_libdeps $LIBICONV" + fi + + + + + + + + + + + + + + + + for ac_func in strverscmp +do : + ac_fn_c_check_func "$LINENO" "strverscmp" "ac_cv_func_strverscmp" +if test "x$ac_cv_func_strverscmp" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRVERSCMP 1 +_ACEOF + +else + + lgl_LIBOBJS="$lgl_LIBOBJS $ac_func.$ac_objext" + +fi +done + + + if test $ac_cv_func_strverscmp = no; then + + : + + HAVE_STRVERSCMP=0 + fi + + + + GNULIB_STRVERSCMP=1 + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether is standalone" >&5 +$as_echo_n "checking whether is standalone... " >&6; } +if test "${gl_cv_header_wchar_h_standalone+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +wchar_t w; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_wchar_h_standalone=yes +else + gl_cv_header_wchar_h_standalone=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_standalone" >&5 +$as_echo "$gl_cv_header_wchar_h_standalone" >&6; } + + + if test $gt_cv_c_wint_t = yes; then + HAVE_WINT_T=1 + else + HAVE_WINT_T=0 + fi + + + if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then + WCHAR_H=wchar.h + fi + + + if test $ac_cv_header_wchar_h = yes; then + HAVE_WCHAR_H=1 + else + HAVE_WCHAR_H=0 + fi + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_wchar_h='<'wchar.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if test "${gl_cv_next_wchar_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_wchar_h = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n '\#/wchar.h#{ + s#.*"\(.*/wchar.h\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"' + else + gl_cv_next_wchar_h='<'wchar.h'>' + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5 +$as_echo "$gl_cv_next_wchar_h" >&6; } + fi + NEXT_WCHAR_H=$gl_cv_next_wchar_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'wchar.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_wchar_h + fi + NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive + + + + + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + gl_source_base='lib/gltests' + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5 +$as_echo_n "checking for a traditional french locale... " >&6; } +if test "${gt_cv_locale_fr+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#if HAVE_LANGINFO_CODESET +# include +#endif +#include +#include +struct tm t; +char buf[16]; +int main () { + /* Check whether the given locale name is recognized by the system. */ + if (setlocale (LC_ALL, "") == NULL) return 1; + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". + On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situation, + some unit tests fail. */ +#if HAVE_LANGINFO_CODESET + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } +#endif +#ifdef __CYGWIN__ + /* On Cygwin, avoid locale names without encoding suffix, because the + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; +#endif + /* Check whether in the abbreviation of the second month, the second + character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only + one byte long. This excludes the UTF-8 encoding. */ + t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; + if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; + /* Check whether the decimal separator is a comma. + On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point + are nl_langinfo(RADIXCHAR) are both ".". */ + if (localeconv () ->decimal_point[0] != ',') return 1; + return 0; +} + +_ACEOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.ISO-8859-1 + else + # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name. + if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.ISO8859-1 + else + # Test for the HP-UX locale name. + if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.iso88591 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr + else + # None found. + gt_cv_locale_fr=none + fi + fi + fi + fi + fi + fi + rm -fr conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5 +$as_echo "$gt_cv_locale_fr" >&6; } + LOCALE_FR=$gt_cv_locale_fr + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a turkish Unicode locale" >&5 +$as_echo_n "checking for a turkish Unicode locale... " >&6; } +if test "${gt_cv_locale_tr_utf8+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#if HAVE_LANGINFO_CODESET +# include +#endif +#include +#include +struct tm t; +char buf[16]; +int main () { + /* On BeOS, locales are not implemented in libc. Rather, libintl + imitates locale dependent behaviour by looking at the environment + variables, and all locales use the UTF-8 encoding. But BeOS does not + implement the Turkish upper-/lowercase mappings. Therefore, let this + program return 1 on BeOS. */ + /* Check whether the given locale name is recognized by the system. */ + if (setlocale (LC_ALL, "") == NULL) return 1; + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". + On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET) + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situation, + some unit tests fail. */ +#if HAVE_LANGINFO_CODESET + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } +#endif +#ifdef __CYGWIN__ + /* On Cygwin, avoid locale names without encoding suffix, because the + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; +#endif + /* Check whether in the abbreviation of the eighth month, the second + character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is + two bytes long, with UTF-8 encoding. */ + t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19; + if (strftime (buf, sizeof (buf), "%b", &t) < 4 + || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f) + return 1; + /* Check whether the upper-/lowercase mappings are as expected for + Turkish. */ + if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i' + || towupper(0x0131) != 'I' || towlower ('I') != 0x0131) + return 1; + return 0; +} + +_ACEOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr_TR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr_TR.UTF-8 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr.UTF-8 + else + # None found. + gt_cv_locale_tr_utf8=none + fi + fi + fi + else + gt_cv_locale_tr_utf8=none + fi + rm -fr conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_tr_utf8" >&5 +$as_echo "$gt_cv_locale_tr_utf8" >&6; } + LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8 + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +$as_echo_n "checking for wchar_t... " >&6; } +if test "${gt_cv_c_wchar_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wchar_t=yes +else + gt_cv_c_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +$as_echo "$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if test "${gt_cv_c_wint_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + fi + + + + + + + + + LIBTESTS_LIBDEPS="$gltests_libdeps" + + + +# Check if locale stuff works + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${am_cv_langinfo_codeset+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + +# Make it possible to disable TLD code. +# Check whether --enable-tld was given. +if test "${enable_tld+set}" = set; then : + enableval=$enable_tld; enable_tld=$enableval +else + enable_tld=yes +fi + + if test "$enable_tld" != "no"; then + TLD_TRUE= + TLD_FALSE='#' +else + TLD_TRUE='#' + TLD_FALSE= +fi + +if test "$enable_tld" != "no"; then + +$as_echo "#define WITH_TLD 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if TLD API for specific TLD rules should be built" >&5 +$as_echo_n "checking if TLD API for specific TLD rules should be built... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tld" >&5 +$as_echo "$enable_tld" >&6; } + +# Check for gtk-doc. + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi + +fi + + + # Extract the first word of "gtkdoc-check", so it can be a program name with args. +set dummy gtkdoc-check; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GTKDOC_CHECK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_CHECK in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK +if test -n "$GTKDOC_CHECK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 +$as_echo "$GTKDOC_CHECK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + for ac_prog in gtkdoc-rebase +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GTKDOC_REBASE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_REBASE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE +if test -n "$GTKDOC_REBASE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 +$as_echo "$GTKDOC_REBASE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GTKDOC_REBASE" && break +done +test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" + + # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. +set dummy gtkdoc-mkpdf; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GTKDOC_MKPDF+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_MKPDF in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF +if test -n "$GTKDOC_MKPDF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 +$as_echo "$GTKDOC_MKPDF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + +# Check whether --with-html-dir was given. +if test "${with_html_dir+set}" = set; then : + withval=$with_html_dir; +else + with_html_dir='${datadir}/gtk-doc/html' +fi + + HTML_DIR="$with_html_dir" + + + # Check whether --enable-gtk-doc was given. +if test "${enable_gtk_doc+set}" = set; then : + enableval=$enable_gtk_doc; +else + enable_gtk_doc=no +fi + + + if test x$enable_gtk_doc = xyes; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + : +else + as_fn_error $? "You need to have gtk-doc >= 1.1 installed to build $PACKAGE_NAME" "$LINENO" 5 +fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 +$as_echo_n "checking whether to build gtk-doc documentation... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 +$as_echo "$enable_gtk_doc" >&6; } + + # Check whether --enable-gtk-doc-html was given. +if test "${enable_gtk_doc_html+set}" = set; then : + enableval=$enable_gtk_doc_html; +else + enable_gtk_doc_html=yes +fi + + # Check whether --enable-gtk-doc-pdf was given. +if test "${enable_gtk_doc_pdf+set}" = set; then : + enableval=$enable_gtk_doc_pdf; +else + enable_gtk_doc_pdf=no +fi + + + if test -n "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + + if test x$enable_gtk_doc = xyes; then + ENABLE_GTK_DOC_TRUE= + ENABLE_GTK_DOC_FALSE='#' +else + ENABLE_GTK_DOC_TRUE='#' + ENABLE_GTK_DOC_FALSE= +fi + + if test x$enable_gtk_doc_html = xyes; then + GTK_DOC_BUILD_HTML_TRUE= + GTK_DOC_BUILD_HTML_FALSE='#' +else + GTK_DOC_BUILD_HTML_TRUE='#' + GTK_DOC_BUILD_HTML_FALSE= +fi + + if test x$enable_gtk_doc_pdf = xyes; then + GTK_DOC_BUILD_PDF_TRUE= + GTK_DOC_BUILD_PDF_FALSE='#' +else + GTK_DOC_BUILD_PDF_TRUE='#' + GTK_DOC_BUILD_PDF_FALSE= +fi + + if test -n "$LIBTOOL"; then + GTK_DOC_USE_LIBTOOL_TRUE= + GTK_DOC_USE_LIBTOOL_FALSE='#' +else + GTK_DOC_USE_LIBTOOL_TRUE='#' + GTK_DOC_USE_LIBTOOL_FALSE= +fi + + if test -n "$GTKDOC_REBASE"; then + GTK_DOC_USE_REBASE_TRUE= + GTK_DOC_USE_REBASE_FALSE='#' +else + GTK_DOC_USE_REBASE_TRUE='#' + GTK_DOC_USE_REBASE_FALSE= +fi + + + +# Check for java +# Check whether --enable-java was given. +if test "${enable_java+set}" = set; then : + enableval=$enable_java; +else + enable_java=no +fi + + +if test -n "$ac_tool_prefix"; then + for ac_prog in gcj + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GCJ"; then + ac_cv_prog_GCJ="$GCJ" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_GCJ="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GCJ=$ac_cv_prog_GCJ +if test -n "$GCJ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCJ" >&5 +$as_echo "$GCJ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GCJ" && break + done +fi +if test -z "$GCJ"; then + ac_ct_GCJ=$GCJ + for ac_prog in gcj +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_GCJ"; then + ac_cv_prog_ac_ct_GCJ="$ac_ct_GCJ" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_GCJ="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_GCJ=$ac_cv_prog_ac_ct_GCJ +if test -n "$ac_ct_GCJ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCJ" >&5 +$as_echo "$ac_ct_GCJ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_GCJ" && break +done + + if test "x$ac_ct_GCJ" = x; then + GCJ="gcj" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + GCJ=$ac_ct_GCJ + fi +fi + +test -z "$GCJ" && as_fn_error $? "no acceptable gcj found in \$PATH" "$LINENO" 5 +if test "x${GCJFLAGS-unset}" = xunset; then + GCJFLAGS="-g -O2" +fi + + +depcc="$GCJ" am_compiler_list='gcc3 gcc' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_GCJ_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_GCJ_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_GCJ_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_GCJ_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_GCJ_dependencies_compiler_type" >&5 +$as_echo "$am_cv_GCJ_dependencies_compiler_type" >&6; } +GCJDEPMODE=depmode=$am_cv_GCJ_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_GCJ_dependencies_compiler_type" = gcc3; then + am__fastdepGCJ_TRUE= + am__fastdepGCJ_FALSE='#' +else + am__fastdepGCJ_TRUE='#' + am__fastdepGCJ_FALSE= +fi + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in gcj + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GCJ"; then + ac_cv_prog_GCJ="$GCJ" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_GCJ="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GCJ=$ac_cv_prog_GCJ +if test -n "$GCJ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCJ" >&5 +$as_echo "$GCJ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GCJ" && break + done +fi +if test -z "$GCJ"; then + ac_ct_GCJ=$GCJ + for ac_prog in gcj +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_GCJ"; then + ac_cv_prog_ac_ct_GCJ="$ac_ct_GCJ" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_GCJ="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_GCJ=$ac_cv_prog_ac_ct_GCJ +if test -n "$ac_ct_GCJ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCJ" >&5 +$as_echo "$ac_ct_GCJ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_GCJ" && break +done + + if test "x$ac_ct_GCJ" = x; then + GCJ="gcj" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + GCJ=$ac_ct_GCJ + fi +fi + +test -z "$GCJ" && as_fn_error $? "no acceptable gcj found in \$PATH" "$LINENO" 5 +if test "x${GCJFLAGS-unset}" = xunset; then + GCJFLAGS="-g -O2" +fi + + +depcc="$GCJ" am_compiler_list='gcc3 gcc' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_GCJ_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_GCJ_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_GCJ_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_GCJ_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_GCJ_dependencies_compiler_type" >&5 +$as_echo "$am_cv_GCJ_dependencies_compiler_type" >&6; } +GCJDEPMODE=depmode=$am_cv_GCJ_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_GCJ_dependencies_compiler_type" = gcc3; then + am__fastdepGCJ_TRUE= + am__fastdepGCJ_FALSE='#' +else + am__fastdepGCJ_TRUE='#' + am__fastdepGCJ_FALSE= +fi + + + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +LD_GCJ="$LD" +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:18983: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:18987: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_GCJ='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='--shared' + lt_prog_compiler_static_GCJ='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-qpic' + lt_prog_compiler_static_GCJ='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_GCJ='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:19316: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:19320: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_GCJ=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_GCJ=yes + fi + else + lt_cv_prog_compiler_static_works_GCJ=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:19415: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:19419: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:19467: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:19471: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + always_export_symbols_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + compiler_needs_object_GCJ=no + enable_shared_with_static_runtimes_GCJ=no + export_dynamic_flag_spec_GCJ= + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic_GCJ=no + hardcode_direct_GCJ=no + hardcode_direct_absolute_GCJ=no + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + inherit_rpath_GCJ=no + link_all_deplibs_GCJ=unknown + module_cmds_GCJ= + module_expsym_cmds_GCJ= + old_archive_from_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + thread_safe_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp 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_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # 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. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='' + ;; + m68k) + archive_cmds_GCJ='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix[3-9]*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec_GCJ= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_GCJ=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_GCJ='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec_GCJ='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_GCJ='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_direct_absolute_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + file_list_spec_GCJ='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_GCJ=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_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_GCJ='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='' + ;; + m68k) + archive_cmds_GCJ='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # 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_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + allow_undefined_flag_GCJ="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs_GCJ=no + fi + + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=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_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + hardcode_direct_absolute_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + hardcode_direct_absolute_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc_GCJ='no' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + inherit_rpath_GCJ=yes + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + hardcode_direct_absolute_GCJ=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_GCJ=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc_GCJ='no' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + archive_cmds_need_lc_GCJ='no' + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='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 $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds_GCJ='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-R,$libdir' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec_GCJ='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +with_gnu_ld_GCJ=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_GCJ 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || + test -n "$runpath_var_GCJ" || + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_GCJ" != 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 "$_LT_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink || + test "$inherit_rpath_GCJ" = yes; 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 + + + + + + + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +GCC=$lt_save_GCC +CC="$lt_save_CC" + + +enable_java=no + +if test "$enable_java" != "no"; then + + +if test "x$JAVAPREFIX" = x; then + test "x$JAR" = x && for ac_prog in jar$EXEEXT +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_JAR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$JAR"; then + ac_cv_prog_JAR="$JAR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_JAR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +JAR=$ac_cv_prog_JAR +if test -n "$JAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5 +$as_echo "$JAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$JAR" && break +done + +else + test "x$JAR" = x && for ac_prog in jar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_JAR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$JAR"; then + ac_cv_prog_JAR="$JAR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_JAR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +JAR=$ac_cv_prog_JAR +if test -n "$JAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5 +$as_echo "$JAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$JAR" && break +done +test -n "$JAR" || JAR="$JAVAPREFIX" + +fi +test "x$JAR" = x && as_fn_error $? "no acceptable jar program found in \$PATH" "$LINENO" 5 + + +GJDOC=${GJDOC-"${am_missing_run}gjdoc"} + +fi + if test "$enable_java" != "no"; then + JAVA_TRUE= + JAVA_FALSE='#' +else + JAVA_TRUE='#' + JAVA_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if implementation in Java should be built" >&5 +$as_echo_n "checking if implementation in Java should be built... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_java" >&5 +$as_echo "$enable_java" >&6; } + +# Check for C# + if test -n "$HAVE_CSHARPCOMP"; then + CSHARP_TRUE= + CSHARP_FALSE='#' +else + CSHARP_TRUE='#' + CSHARP_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if implementation in C# should be built" >&5 +$as_echo_n "checking if implementation in C# should be built... " >&6; } +if test -n "$HAVE_CSHARPCOMP"; then + enable_csharp=yes +else + enable_csharp=no +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_csharp" >&5 +$as_echo "$enable_csharp" >&6; } + + + # Run self-tests under valgrind? + if test "$cross_compiling" = no; then + for ac_prog in valgrind +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_VALGRIND+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$VALGRIND"; then + ac_cv_prog_VALGRIND="$VALGRIND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_VALGRIND="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +VALGRIND=$ac_cv_prog_VALGRIND +if test -n "$VALGRIND"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 +$as_echo "$VALGRIND" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$VALGRIND" && break +done + + fi + if test -n "$VALGRIND" && $VALGRIND true > /dev/null 2>&1; then + opt_valgrind_tests=yes + else + opt_valgrind_tests=no + VALGRIND= + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5 +$as_echo_n "checking whether self tests are run under valgrind... " >&6; } + # Check whether --enable-valgrind-tests was given. +if test "${enable_valgrind_tests+set}" = set; then : + enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5 +$as_echo "$opt_valgrind_tests" >&6; } + + + # Update version number in lib/libtasn1.h. + if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $srcdir/lib/stringprep.h > fixhdr.tmp; then + as_fn_error $? "*** Failed to update version number in $srcdir/lib/stringprep.h..." "$LINENO" 5 + fi + if cmp -s $srcdir/lib/stringprep.h fixhdr.tmp 2>/dev/null; then + rm -f fixhdr.tmp + elif ! mv fixhdr.tmp $srcdir/lib/stringprep.h; then + as_fn_error $? "*** Failed to move fixhdr.tmp to $srcdir/lib/stringprep.h..." "$LINENO" 5 + fi + + +# Check whether --enable-gcc-warnings was given. +if test "${enable_gcc_warnings+set}" = set; then : + enableval=$enable_gcc_warnings; case $enableval in + yes|no) ;; + *) as_fn_error $? "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;; + esac + gl_gcc_warnings=$enableval +else + gl_gcc_warnings=no + +fi + + +if test "$gl_gcc_warnings" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Werror" >&5 +$as_echo_n "checking whether compiler handles -Werror... " >&6; } +if test "${gl_cv_warn__Werror+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + gl_cv_warn__Werror=yes +else + gl_cv_warn__Werror=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Werror" >&5 +$as_echo "$gl_cv_warn__Werror" >&6; } +if test "x$gl_cv_warn__Werror" = x""yes; then : + as_fn_append WERROR_CFLAGS " -Werror" +fi + + as_gl_Warn=`$as_echo "gl_cv_warn_-Wframe-larger-than=80" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wframe-larger-than=80" >&5 +$as_echo_n "checking whether compiler handles -Wframe-larger-than=80... " >&6; } +if eval "test \"\${$as_gl_Warn+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} -Wframe-larger-than=80" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + eval "$as_gl_Warn=yes" +else + eval "$as_gl_Warn=no" +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +eval ac_res=\$$as_gl_Warn + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then : + as_fn_append WSTACK_CFLAGS " -Wframe-larger-than=80" +fi + + + nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings + nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers + nw="$nw -Woverlength-strings" # Some of our strings are too large + nw="$nw -Wsign-conversion" # Too many warnings for now + nw="$nw -Wconversion" # Too many warnings for now + nw="$nw -Wtraditional" # Warns on #elif which we use often + nw="$nw -Wtraditional-conversion" # Too many warnings for now + nw="$nw -Wmissing-noreturn" # Too many warnings for now + nw="$nw -Wunreachable-code" # Too many false positives + nw="$nw -Wlogical-op" # Too many false positives + + + gl_manywarn_set= + for gl_manywarn_item in \ + -Wall \ + -W \ + -Wformat-y2k \ + -Wformat-nonliteral \ + -Wformat-security \ + -Winit-self \ + -Wmissing-include-dirs \ + -Wswitch-default \ + -Wswitch-enum \ + -Wunused \ + -Wunknown-pragmas \ + -Wstrict-aliasing \ + -Wstrict-overflow \ + -Wsystem-headers \ + -Wfloat-equal \ + -Wtraditional \ + -Wtraditional-conversion \ + -Wdeclaration-after-statement \ + -Wundef \ + -Wshadow \ + -Wunsafe-loop-optimizations \ + -Wpointer-arith \ + -Wbad-function-cast \ + -Wc++-compat \ + -Wcast-qual \ + -Wcast-align \ + -Wwrite-strings \ + -Wconversion \ + -Wsign-conversion \ + -Wlogical-op \ + -Waggregate-return \ + -Wstrict-prototypes \ + -Wold-style-definition \ + -Wmissing-prototypes \ + -Wmissing-declarations \ + -Wmissing-noreturn \ + -Wmissing-format-attribute \ + -Wpacked \ + -Wpadded \ + -Wredundant-decls \ + -Wnested-externs \ + -Wunreachable-code \ + -Winline \ + -Winvalid-pch \ + -Wlong-long \ + -Wvla \ + -Wvolatile-register-var \ + -Wdisabled-optimization \ + -Wstack-protector \ + -Woverlength-strings \ + -Wbuiltin-macro-redefined \ + -Wmudflap \ + -Wpacked-bitfield-compat \ + -Wsync-nand \ + ; do + gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" + done + # The following are not documented in the manual but are included in + # output from gcc --help=warnings. + for gl_manywarn_item in \ + -Wattributes \ + -Wcoverage-mismatch \ + -Wmultichar \ + -Wunused-macros \ + ; do + gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" + done + ws=$gl_manywarn_set + + + gl_warn_set= + set x $ws; shift + for gl_warn_item + do + case " $nw " in + *" $gl_warn_item "*) + ;; + *) + gl_warn_set="$gl_warn_set $gl_warn_item" + ;; + esac + done + ws=$gl_warn_set + + for w in $ws; do + as_gl_Warn=`$as_echo "gl_cv_warn_$w" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles $w" >&5 +$as_echo_n "checking whether compiler handles $w... " >&6; } +if eval "test \"\${$as_gl_Warn+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} $w" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + eval "$as_gl_Warn=yes" +else + eval "$as_gl_Warn=no" +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +eval ac_res=\$$as_gl_Warn + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then : + as_fn_append WARN_CFLAGS " $w" +fi + + done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-missing-field-initializers" >&5 +$as_echo_n "checking whether compiler handles -Wno-missing-field-initializers... " >&6; } +if test "${gl_cv_warn__Wno_missing_field_initializers+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} -Wno-missing-field-initializers" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + gl_cv_warn__Wno_missing_field_initializers=yes +else + gl_cv_warn__Wno_missing_field_initializers=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_missing_field_initializers" >&5 +$as_echo "$gl_cv_warn__Wno_missing_field_initializers" >&6; } +if test "x$gl_cv_warn__Wno_missing_field_initializers" = x""yes; then : + as_fn_append WARN_CFLAGS " -Wno-missing-field-initializers" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -fdiagnostics-show-option" >&5 +$as_echo_n "checking whether compiler handles -fdiagnostics-show-option... " >&6; } +if test "${gl_cv_warn__fdiagnostics_show_option+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} -fdiagnostics-show-option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + gl_cv_warn__fdiagnostics_show_option=yes +else + gl_cv_warn__fdiagnostics_show_option=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__fdiagnostics_show_option" >&5 +$as_echo "$gl_cv_warn__fdiagnostics_show_option" >&6; } +if test "x$gl_cv_warn__fdiagnostics_show_option" = x""yes; then : + as_fn_append WARN_CFLAGS " -fdiagnostics-show-option" +fi + +fi + +ac_config_files="$ac_config_files Makefile libidn.pc csharp/Makefile contrib/doxygen/Doxyfile doc/Makefile doc/cyclo/Makefile doc/java/Makefile doc/reference/Makefile doc/specifications/Makefile doc/tld/Makefile examples/Makefile gl/Makefile gltests/Makefile java/Makefile java/gnu/Makefile java/gnu/inet/Makefile java/gnu/inet/encoding/Makefile java/misc/Makefile lib/Makefile lib/gl/Makefile lib/gltests/Makefile po/Makefile.in src/Makefile tests/Makefile" + +cat >confcache <<\_ACEOF +# 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, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + + + gltests_libobjs= + gltests_ltlibobjs= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LD_OUTPUT_DEF_TRUE}" && test -z "${HAVE_LD_OUTPUT_DEF_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LD_OUTPUT_DEF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + lgl_libobjs= + lgl_ltlibobjs= + if test -n "$lgl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + lgl_libobjs="$lgl_libobjs $i.$ac_objext" + lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" + done + fi + lgl_LIBOBJS=$lgl_libobjs + + lgl_LTLIBOBJS=$lgl_ltlibobjs + + + + lgltests_libobjs= + lgltests_ltlibobjs= + if test -n "$lgltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" + lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" + done + fi + lgltests_LIBOBJS=$lgltests_libobjs + + lgltests_LTLIBOBJS=$lgltests_ltlibobjs + + +if test -z "${TLD_TRUE}" && test -z "${TLD_FALSE}"; then + as_fn_error $? "conditional \"TLD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepGCJ_TRUE}" && test -z "${am__fastdepGCJ_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepGCJ\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepGCJ_TRUE}" && test -z "${am__fastdepGCJ_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepGCJ\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${JAVA_TRUE}" && test -z "${JAVA_FALSE}"; then + as_fn_error $? "conditional \"JAVA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CSHARP_TRUE}" && test -z "${CSHARP_FALSE}"; then + as_fn_error $? "conditional \"CSHARP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Libidn $as_me 1.15, which was +generated by GNU Autoconf 2.67. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Libidn home page: . +General help using GNU software: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +GNU Libidn config.status 1.15 +configured by $0, generated by GNU Autoconf 2.67, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +LD_GCJ='`$ECHO "X$LD_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds_GCJ='`$ECHO "X$old_archive_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +compiler_GCJ='`$ECHO "X$compiler_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +GCC_GCJ='`$ECHO "X$GCC_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_GCJ='`$ECHO "X$lt_prog_compiler_no_builtin_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl_GCJ='`$ECHO "X$lt_prog_compiler_wl_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic_GCJ='`$ECHO "X$lt_prog_compiler_pic_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static_GCJ='`$ECHO "X$lt_prog_compiler_static_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_GCJ='`$ECHO "X$lt_cv_prog_compiler_c_o_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc_GCJ='`$ECHO "X$archive_cmds_need_lc_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_GCJ='`$ECHO "X$enable_shared_with_static_runtimes_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec_GCJ='`$ECHO "X$export_dynamic_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec_GCJ='`$ECHO "X$whole_archive_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object_GCJ='`$ECHO "X$compiler_needs_object_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds_GCJ='`$ECHO "X$old_archive_from_new_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_GCJ='`$ECHO "X$old_archive_from_expsyms_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_GCJ='`$ECHO "X$archive_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds_GCJ='`$ECHO "X$archive_expsym_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds_GCJ='`$ECHO "X$module_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds_GCJ='`$ECHO "X$module_expsym_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld_GCJ='`$ECHO "X$with_gnu_ld_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag_GCJ='`$ECHO "X$allow_undefined_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag_GCJ='`$ECHO "X$no_undefined_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_GCJ='`$ECHO "X$hardcode_libdir_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_GCJ='`$ECHO "X$hardcode_libdir_flag_spec_ld_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator_GCJ='`$ECHO "X$hardcode_libdir_separator_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_GCJ='`$ECHO "X$hardcode_direct_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute_GCJ='`$ECHO "X$hardcode_direct_absolute_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L_GCJ='`$ECHO "X$hardcode_minus_L_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var_GCJ='`$ECHO "X$hardcode_shlibpath_var_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic_GCJ='`$ECHO "X$hardcode_automatic_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath_GCJ='`$ECHO "X$inherit_rpath_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs_GCJ='`$ECHO "X$link_all_deplibs_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path_GCJ='`$ECHO "X$fix_srcfile_path_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols_GCJ='`$ECHO "X$always_export_symbols_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds_GCJ='`$ECHO "X$export_symbols_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms_GCJ='`$ECHO "X$exclude_expsyms_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms_GCJ='`$ECHO "X$include_expsyms_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds_GCJ='`$ECHO "X$prelink_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec_GCJ='`$ECHO "X$file_list_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action_GCJ='`$ECHO "X$hardcode_action_GCJ" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib \ +LD_GCJ \ +compiler_GCJ \ +lt_prog_compiler_no_builtin_flag_GCJ \ +lt_prog_compiler_wl_GCJ \ +lt_prog_compiler_pic_GCJ \ +lt_prog_compiler_static_GCJ \ +lt_cv_prog_compiler_c_o_GCJ \ +export_dynamic_flag_spec_GCJ \ +whole_archive_flag_spec_GCJ \ +compiler_needs_object_GCJ \ +with_gnu_ld_GCJ \ +allow_undefined_flag_GCJ \ +no_undefined_flag_GCJ \ +hardcode_libdir_flag_spec_GCJ \ +hardcode_libdir_flag_spec_ld_GCJ \ +hardcode_libdir_separator_GCJ \ +fix_srcfile_path_GCJ \ +exclude_expsyms_GCJ \ +include_expsyms_GCJ \ +file_list_spec_GCJ; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +old_archive_cmds_GCJ \ +old_archive_from_new_cmds_GCJ \ +old_archive_from_expsyms_cmds_GCJ \ +archive_cmds_GCJ \ +archive_expsym_cmds_GCJ \ +module_cmds_GCJ \ +module_expsym_cmds_GCJ \ +export_symbols_cmds_GCJ \ +prelink_cmds_GCJ; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + +GNUmakefile=$GNUmakefile + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "csharpcomp.sh") CONFIG_FILES="$CONFIG_FILES csharpcomp.sh:build-aux/csharpcomp.sh.in" ;; + "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "libidn.pc") CONFIG_FILES="$CONFIG_FILES libidn.pc" ;; + "csharp/Makefile") CONFIG_FILES="$CONFIG_FILES csharp/Makefile" ;; + "contrib/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES contrib/doxygen/Doxyfile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/cyclo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cyclo/Makefile" ;; + "doc/java/Makefile") CONFIG_FILES="$CONFIG_FILES doc/java/Makefile" ;; + "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;; + "doc/specifications/Makefile") CONFIG_FILES="$CONFIG_FILES doc/specifications/Makefile" ;; + "doc/tld/Makefile") CONFIG_FILES="$CONFIG_FILES doc/tld/Makefile" ;; + "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "gl/Makefile") CONFIG_FILES="$CONFIG_FILES gl/Makefile" ;; + "gltests/Makefile") CONFIG_FILES="$CONFIG_FILES gltests/Makefile" ;; + "java/Makefile") CONFIG_FILES="$CONFIG_FILES java/Makefile" ;; + "java/gnu/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/Makefile" ;; + "java/gnu/inet/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/inet/Makefile" ;; + "java/gnu/inet/encoding/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/inet/encoding/Makefile" ;; + "java/misc/Makefile") CONFIG_FILES="$CONFIG_FILES java/misc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "lib/gl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gl/Makefile" ;; + "lib/gltests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gltests/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +$as_echo "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="GCJ " + +# ### BEGIN LIBTOOL CONFIG + +# Assembler program. +AS=$AS + +# DLL creation program. +DLLTOOL=$DLLTOOL + +# Object dumper program. +OBJDUMP=$OBJDUMP + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# 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 + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_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=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$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 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# 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 + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_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=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# 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 +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # 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? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: GCJ + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_GCJ + +# A language specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU compiler? +with_gcc=$GCC_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_GCJ + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_GCJ + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_GCJ + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_GCJ + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_GCJ + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_GCJ + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_GCJ + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# ### END LIBTOOL TAG CONFIG: GCJ +_LT_EOF + + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: summary of build options: + + version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE + Host type: ${host} + Install prefix: ${prefix} + Compiler: ${CC} + Warning flags: ${WARN_CFLAGS} + Library types: Shared=${enable_shared}, Static=${enable_static} + Valgrind: ${VALGRIND} + Version script: $have_ld_version_script + TLD code: $enable_tld + Build Java port: $enable_java + Build C# port: $enable_csharp +" >&5 +$as_echo "$as_me: summary of build options: + + version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE + Host type: ${host} + Install prefix: ${prefix} + Compiler: ${CC} + Warning flags: ${WARN_CFLAGS} + Library types: Shared=${enable_shared}, Static=${enable_static} + Valgrind: ${VALGRIND} + Version script: $have_ld_version_script + TLD code: $enable_tld + Build Java port: $enable_java + Build C# port: $enable_csharp +" >&6;} diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..5907ed9 --- /dev/null +++ b/configure.ac @@ -0,0 +1,195 @@ +dnl Process this file with autoconf to produce a configure script. + +dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +dnl +dnl This file is part of GNU Libidn. +dnl +dnl This program is free software: you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation, either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program. If not, see . + +AC_PREREQ(2.61) +AC_INIT([GNU Libidn], [1.15], [bug-libidn@gnu.org]) +AC_COPYRIGHT([Copyright (c) 2002-2008 Simon Josefsson .]) + +# Library code modified: REVISION++ +# Interfaces changed/added/removed: CURRENT++ REVISION=0 +# Interfaces added: AGE++ +# Interfaces removed: AGE=0 +AC_SUBST(LT_CURRENT, 16) +AC_SUBST(LT_REVISION, 44) +AC_SUBST(LT_AGE, 5) + +# For DEF file. +DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}` +AC_SUBST(DLL_VERSION) + +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) +AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-override]) +AC_CONFIG_HEADERS(config.h) + +# Checks for programs. +AC_LIBTOOL_WIN32_DLL +AC_PROG_CC +lgl_EARLY +gl_EARLY +AC_PROG_LIBTOOL +AM_MISSING_PROG(PERL, perl, $missing_dir) +AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir) +AM_GNU_GETTEXT(external) +AM_GNU_GETTEXT_VERSION(0.17) +AM_ICONV +AM_PATH_LISPDIR + +if test "$am_cv_func_iconv" != "yes"; then + AC_MSG_NOTICE([ +*** + +Your system does not have iconv(). The iconv() function is not +strictly required by the source code. However, that may change in +the future, unless you report that this may be a problem for you. + +Please report this to $PACKAGE_BUGREPORT. + +***]) +fi + +# Checks for header files. +AC_HEADER_STDC + +# For gnulib stuff in gl/. +gl_INIT +lgl_INIT + +# Check if locale stuff works +AM_LANGINFO_CODESET + +# Make it possible to disable TLD code. +AC_ARG_ENABLE(tld, AC_HELP_STRING([--disable-tld], [disable TLD code]), + enable_tld=$enableval, enable_tld=yes) +AM_CONDITIONAL(TLD, test "$enable_tld" != "no") +if test "$enable_tld" != "no"; then + AC_DEFINE([WITH_TLD], 1, [Define to 1 if you want TLD code.]) +fi +AC_MSG_CHECKING([if TLD API for specific TLD rules should be built]) +AC_MSG_RESULT($enable_tld) + +# Check for gtk-doc. +GTK_DOC_CHECK(1.1) + +# Check for java +AC_ARG_ENABLE(java, AC_HELP_STRING([--enable-java], [enable Java API]),, + enable_java=no) +AM_PROG_GCJ + +enable_java=no + +if test "$enable_java" != "no"; then + AC_PROG_JAR + AM_MISSING_PROG(GJDOC, gjdoc, $missing_dir) +fi +AM_CONDITIONAL(JAVA, test "$enable_java" != "no") +AC_MSG_CHECKING([if implementation in Java should be built]) +AC_MSG_RESULT($enable_java) + +# Check for C# +AM_CONDITIONAL(CSHARP, test -n "$HAVE_CSHARPCOMP") +AC_MSG_CHECKING([[if implementation in C# should be built]]) +if test -n "$HAVE_CSHARPCOMP"; then + enable_csharp=yes +else + enable_csharp=no +fi +AC_MSG_RESULT($enable_csharp) + +sj_VALGRIND +sj_UPDATE_HEADER_VERSION([$srcdir/lib/stringprep.h]) + +AC_ARG_ENABLE([gcc-warnings], + [AS_HELP_STRING([--enable-gcc-warnings], + [turn on lots of GCC warnings (for developers)])], + [case $enableval in + yes|no) ;; + *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; + esac + gl_gcc_warnings=$enableval], + [gl_gcc_warnings=no] +) + +if test "$gl_gcc_warnings" = yes; then + gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) + gl_WARN_ADD([-Wframe-larger-than=80], [WSTACK_CFLAGS]) + + nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings + nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers + nw="$nw -Woverlength-strings" # Some of our strings are too large + nw="$nw -Wsign-conversion" # Too many warnings for now + nw="$nw -Wconversion" # Too many warnings for now + nw="$nw -Wtraditional" # Warns on #elif which we use often + nw="$nw -Wtraditional-conversion" # Too many warnings for now + nw="$nw -Wmissing-noreturn" # Too many warnings for now + nw="$nw -Wunreachable-code" # Too many false positives + nw="$nw -Wlogical-op" # Too many false positives + + gl_MANYWARN_ALL_GCC([ws]) + gl_MANYWARN_COMPLEMENT(ws, [$ws], [$nw]) + for w in $ws; do + gl_WARN_ADD([$w]) + done + + gl_WARN_ADD([-Wno-missing-field-initializers]) + gl_WARN_ADD([-fdiagnostics-show-option]) +fi + +AC_CONFIG_FILES([ + Makefile + libidn.pc + csharp/Makefile + contrib/doxygen/Doxyfile + doc/Makefile + doc/cyclo/Makefile + doc/java/Makefile + doc/reference/Makefile + doc/specifications/Makefile + doc/tld/Makefile + examples/Makefile + gl/Makefile + gltests/Makefile + java/Makefile + java/gnu/Makefile + java/gnu/inet/Makefile + java/gnu/inet/encoding/Makefile + java/misc/Makefile + lib/Makefile + lib/gl/Makefile + lib/gltests/Makefile + po/Makefile.in + src/Makefile + tests/Makefile +]) +AC_OUTPUT + +AC_MSG_NOTICE([summary of build options: + + version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE + Host type: ${host} + Install prefix: ${prefix} + Compiler: ${CC} + Warning flags: ${WARN_CFLAGS} + Library types: Shared=${enable_shared}, Static=${enable_static} + Valgrind: ${VALGRIND} + Version script: $have_ld_version_script + TLD code: $enable_tld + Build Java port: $enable_java + Build C# port: $enable_csharp +]) diff --git a/contrib/README b/contrib/README new file mode 100644 index 0000000..719e1ce --- /dev/null +++ b/contrib/README @@ -0,0 +1,24 @@ +Libidn contrib/README -- Notes for the contrib/ subdirectory. +Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +The idn-python/ sub-directory contains a Python interface for Libidn, +contributed by Stephane Bortzmeyer . It is +licensed under the same licence as Libidn itself. Note that as of +version 2.3 Python has native IDN support, see +. + +The web/ sub-directory contains a online libidn interface in PHP. + +The java/ sub-directory builds Java *.class files that implement the +Libidn API. Note! It is unfinished and left as a proof of concept. +A developer with knowledge about Java is encouraged to take over it. + +The doxygen/ sub-directory builds Doxygen documentation (HTML, +LaTeX/PDF and MAN). Simply invoke "doxygen" in that directory and it +should build the documentation. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/contrib/doxygen/Doxyfile.in b/contrib/doxygen/Doxyfile.in new file mode 100644 index 0000000..e8c6fe2 --- /dev/null +++ b/contrib/doxygen/Doxyfile.in @@ -0,0 +1,1417 @@ +# Doxyfile 1.5.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = @PACKAGE@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @VERSION@ + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, +# and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../../lib + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = ../../examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = example*.c + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = ./gdoc2doxygen + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hiererachy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is enabled by default, which results in a transparent +# background. Warning: Depending on the platform used, enabling this option +# may lead to badly anti-aliased labels on the edges of a graph (i.e. they +# become hard to read). + +DOT_TRANSPARENT = YES + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/contrib/doxygen/Doxyfile.orig b/contrib/doxygen/Doxyfile.orig new file mode 100644 index 0000000..1eeea5e --- /dev/null +++ b/contrib/doxygen/Doxyfile.orig @@ -0,0 +1,1417 @@ +# Doxyfile 1.5.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, +# and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hiererachy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is enabled by default, which results in a transparent +# background. Warning: Depending on the platform used, enabling this option +# may lead to badly anti-aliased labels on the edges of a graph (i.e. they +# become hard to read). + +DOT_TRANSPARENT = YES + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/contrib/doxygen/gdoc2doxygen b/contrib/doxygen/gdoc2doxygen new file mode 100755 index 0000000..c4c3c2b --- /dev/null +++ b/contrib/doxygen/gdoc2doxygen @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +# Copyright (C) 2003, 2005, 2006, 2007, 2008 Simon Josefsson + +# 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 3 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, see . + +# I consider the output of this program to be unrestricted. Use it as +# you will. + +while (<>) { + s, \* @(.*):, * \\param $1,g; + print $_; +} diff --git a/contrib/idn-python/Makefile b/contrib/idn-python/Makefile new file mode 100644 index 0000000..beeda96 --- /dev/null +++ b/contrib/idn-python/Makefile @@ -0,0 +1,14 @@ +INCLUDE=/usr/include/python2.1 +INSTDIR=/usr/local/lib/python2.1/site-packages +LIBS=-lidn + +all: idn.so + +%.so: %.c + gcc -I${INCLUDE} ${LIBS} -shared -fPIC -o $@ $< + +install: + cp idn.so ${INSTDIR} + +clean: + rm -f *.so diff --git a/contrib/idn-python/README b/contrib/idn-python/README new file mode 100644 index 0000000..615a4c4 --- /dev/null +++ b/contrib/idn-python/README @@ -0,0 +1,23 @@ +*** Note that as of version 2.3 Python has native IDN support, see +*** . + +This is a Python interface over Simon Josefsson's libidn +. + +To install, be sure you have libidn installed, check the Makefile, and +type "make" and "make install". + +Sample use: + +import idn +print idn.idn2ace("Café"); # The string must be in UTF-8 + +With a conversion to UTF-8 first, assuming your locale is Latin-1: + +import idn +name = sys.argv[1] +ustring = unicode(name, "Latin-1") +print idn.idn2ace(ustring.encode("UTF-8")) + +------------------ +Stephane Bortzmeyer diff --git a/contrib/idn-python/idn.c b/contrib/idn-python/idn.c new file mode 100644 index 0000000..0e0905e --- /dev/null +++ b/contrib/idn-python/idn.c @@ -0,0 +1,81 @@ +/* + * This is a Python interface over Simon Josefsson's libidn + * . + * + * Stephane Bortzmeyer + * + */ + +#include +#include +#include + +#define MESSAGE_SIZE 512 + +static PyObject *IDNError; +static PyObject *IDNInvLengthError; + +#define onError(message) { PyErr_SetString(IDNError, message); free(message); return NULL; } + +static PyObject * +idn2ace (PyObject * self, PyObject * args) +{ + char *instr, *result; + int rc; + PyObject *outstr; + if (!PyArg_ParseTuple (args, "s", &instr)) + onError ("Invalid argument"); + rc = idna_to_ascii_8z (instr, &result); + if (rc != IDNA_SUCCESS) + { + switch (rc) + { + case IDNA_INVALID_LENGTH: + result = malloc (MESSAGE_SIZE); + sprintf (result, "%d bytes", strlen (instr)); + PyErr_SetString (IDNInvLengthError, result); + free (result); + return NULL; + break; + default: + result = malloc (MESSAGE_SIZE); + sprintf (result, "IDN error: %d (see idna.h)", rc); + onError (result); + } + } + outstr = Py_BuildValue ("s", result); + return outstr; +} + +static PyObject * +ace2idn (PyObject * self, PyObject * args) +{ + char *instr, *result; + int rc; + PyObject *outstr; + if (!PyArg_ParseTuple (args, "s", &instr)) + onError ("Invalid argument"); + rc = idna_to_unicode_8z8z (instr, &result); + if (rc != IDNA_SUCCESS) + { + result = malloc (MESSAGE_SIZE); + sprintf (result, "IDN error: %d (see idna.h)", rc); + onError (result); + } + outstr = Py_BuildValue ("s", result); + return outstr; +} + +static struct PyMethodDef methods[] = { + {"idn2ace", idn2ace, 1}, + {"ace2idn", ace2idn, 1}, + {NULL, NULL} +}; + +void +initidn () +{ + Py_InitModule ("idn", methods); + IDNError = PyErr_NewException ("idn.error", NULL, NULL); + IDNInvLengthError = PyErr_NewException ("idn.invalidLength", NULL, NULL); +} diff --git a/contrib/idn-python/test.py b/contrib/idn-python/test.py new file mode 100644 index 0000000..086df8b --- /dev/null +++ b/contrib/idn-python/test.py @@ -0,0 +1,15 @@ +#!/usr/bin/python + +locale = "Latin-1" + +import idn +import sys + +if len(sys.argv) <= 1: + print "Usage: %s name" % sys.argv[0] + sys.exit(1) + +name = sys.argv[1] + +ustring = unicode(name, locale) +print idn.idn2ace(ustring.encode("UTF-8")) diff --git a/contrib/java/ExampleIDNA.java b/contrib/java/ExampleIDNA.java new file mode 100644 index 0000000..d5de981 --- /dev/null +++ b/contrib/java/ExampleIDNA.java @@ -0,0 +1,5 @@ +class ExampleIDNA { + public static void main(String[] args) { + System.out.println(new IDNA().toAscii(args[0])); + } +} diff --git a/contrib/java/IDNA.c b/contrib/java/IDNA.c new file mode 100644 index 0000000..71a3912 --- /dev/null +++ b/contrib/java/IDNA.c @@ -0,0 +1,18 @@ +#include +#include "IDNA.h" + +JNIEXPORT jstring JNICALL +Java_IDNA_toAscii(JNIEnv *env, jobject obj, jstring jstr) +{ + const char *in; + const char *out; + int rc; + + in = (*env)->GetStringUTFChars(env, jstr, 0); + + rc = idna_to_ascii_from_utf8 (in, &out, 0, 0); + + (*env)->ReleaseStringUTFChars(env, jstr, in); + + return (*env)->NewStringUTF(env, out); +} diff --git a/contrib/java/IDNA.java b/contrib/java/IDNA.java new file mode 100644 index 0000000..577f9b9 --- /dev/null +++ b/contrib/java/IDNA.java @@ -0,0 +1,7 @@ +class IDNA { + public native String toAscii(String str); + + static { + System.loadLibrary("idn-java"); + } +} diff --git a/contrib/java/Makefile.am b/contrib/java/Makefile.am new file mode 100644 index 0000000..1496336 --- /dev/null +++ b/contrib/java/Makefile.am @@ -0,0 +1,33 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +lib_LTLIBRARIES = libidn-java.la + +libidn_java_la_SOURCES = IDNA.c +libidn_java_la_LIBADD = -lidn + +%.class: %.java + gcj -C $< + +%.h: %.class + gcjh -jni $* + +IDNA.c: IDNA.h + +clean-local: + rm -f IDNA.h IDNA.class ExampleIDNA.class *~ diff --git a/contrib/java/Makefile.in b/contrib/java/Makefile.in new file mode 100644 index 0000000..e69de29 diff --git a/contrib/java/README b/contrib/java/README new file mode 100644 index 0000000..a8d0c2f --- /dev/null +++ b/contrib/java/README @@ -0,0 +1,36 @@ +Libidn README -- Notes for the JAVA API proof of concept. +Copyright (C) 2003, 2004, 2005, 2006, 2007 Simon Josefsson +See the end for copying conditions. + +This directory builds Java *.class files that implement the Libidn +API. Note! It is unfinished and left as a proof of concept. A +developer with knowledge about Java is encouraged to take over it. + +The current Makefile.am require GCJ. It was tested with Sun JDK 1.1 +and IBM JDK 1.1.8 too, after replacing "gcj" with "javac" and "gcjh" +with "javah" in Makefile.am. Some combinations of compilation with +one package and executing using another package (e.g., compile with +GCJ, run with Sun's JRE) also seemed to work. + +$ ./autogen.sh +$ ./configure +$ make +$ su +# make install +# exit +$ make ExampleIDNA +$ gij ExampleIDNA räksmörgås +xn--rksmrgs-5wao1o +$ + +Please let me know if you want to finish and maintain the Java API +glue. It may involve some tedious work initially, but could be useful +for Java developers. + +Eventually I think the Java API Glue functions should be merged into +libidn, instead of having a separate libidn-java library. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/contrib/java/autogen.sh b/contrib/java/autogen.sh new file mode 100755 index 0000000..48e9847 --- /dev/null +++ b/contrib/java/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/sh -x +autoreconf --install --force --verbose diff --git a/contrib/java/configure.ac b/contrib/java/configure.ac new file mode 100644 index 0000000..6e7c4a4 --- /dev/null +++ b/contrib/java/configure.ac @@ -0,0 +1,10 @@ +AC_INIT(libidn-java, 0.0.0, bug-libidn@gnu.org) + +AM_INIT_AUTOMAKE(foreign) +AM_CONFIG_HEADER(config.h) + +AC_PROG_LIBTOOL +AC_PROG_CC + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/contrib/web/idn.php b/contrib/web/idn.php new file mode 100644 index 0000000..a77d8ea --- /dev/null +++ b/contrib/web/idn.php @@ -0,0 +1,376 @@ + + + + + + Try GNU Libidn + + + + +

Try GNU Libidn

+ +

This page allows you to try the string preparation, punycode + encode/decode and ToASCII/ToUnicode operations of GNU Libidn. If you + encounter a problem with this page, write a (detailed!) report to + bug-libidn@gnu.org. + +

If you are interested in commercial support or enhancement of + Libidn, you can contact + me. + + + +

Free shrimp sandwiches are served over + here (or here + if you want the experimental flavour). + +

This page ignores any Accept-Charset headers sent by your + browser. Instead, the Unicode repertoire encoded as UTF-8 is + used. If you are using software that cannot handle this, you must + select another MIME charset below. BIG5, ISO-2022-JP-2, + ISO-8859-1, and KOI-8 are popular choices. I am sorry for the + inconvenience. + + + +


+

Input

+
+ +

The following string must only contain characters that your + browser is able to represent in when + submitting this form. If you wish to use another charset you + must select it below, submit the form and wait for a new page to + load, and then enter your string.
+ +
+ + >Prepare string using profile: + +
+ + >Punycode encode
+ > Punycode decode
+ + >IDNA ToASCII
+ >IDNA ToUnicode
+ + >Allow Unassigned
+ >UseSTD3ASCIIRules
+ >Debug
+ + Change MIME charset of page to:
+ + +
+

+ +
+

Output

+ +
+&1";
+   $h = popen($cmd, "r");
+   while($s = fgets($h, 1024)) { $out .= $s; };
+   pclose($h);
+   print "$ CHARSET=" .  escapeshellarg($charset) . " $cmd\n";
+   print $out;
+   print "$ \n";
+?>
+
+
+

Examples

+ + + + +
+

Error codes

+ +
+
+  enum
+  {
+    PUNYCODE_SUCCESS = 0,
+    PUNYCODE_BAD_INPUT,		/* Input is invalid.                       */
+    PUNYCODE_BIG_OUTPUT,	/* Output would exceed the space provided. */
+    PUNYCODE_OVERFLOW		/* Input needs wider integers to process.  */
+  };
+
+
+  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+
+  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201
+  } Idna_rc;
+
+ +
+ + diff --git a/csharp/AssemblyInfo.cs b/csharp/AssemblyInfo.cs new file mode 100644 index 0000000..177a4f0 --- /dev/null +++ b/csharp/AssemblyInfo.cs @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.*")] + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project output directory which is +// %Project Directory%\obj\. For example, if your KeyFile is +// located in the project directory, you would specify the AssemblyKeyFile +// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] diff --git a/csharp/CombiningClass.cs b/csharp/CombiningClass.cs new file mode 100644 index 0000000..98911b1 --- /dev/null +++ b/csharp/CombiningClass.cs @@ -0,0 +1,457 @@ +// Do not edit !!! +// this file is generated automatically + +public class CombiningClass +{ + public static readonly int[,] c = new int[,] { + { /* Page 3 */ + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, + 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, + 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 4 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 5 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, + 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, + 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, + 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 7 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, + 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 9 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 11 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 12 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 13 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 14 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, + 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 16 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 23 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 24 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 32 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, + 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 48 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 251 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 254 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }; + + public static readonly int[] i = new int[] { + -1, + -1, + -1, + 0, + 1, + 2, + 3, + 4, + -1, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + -1, + -1, + -1, + -1, + -1, + -1, + 13, + 14, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 16, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 17, + -1, + -1, + 18, + -1, + }; +} diff --git a/csharp/Composition.cs b/csharp/Composition.cs new file mode 100644 index 0000000..d28ca3b --- /dev/null +++ b/csharp/Composition.cs @@ -0,0 +1,724 @@ +// Do not edit !!! +// this file is generated automatically + +public class Composition +{ + /* jagged Array */ + public static readonly char[][] multiFirst = new char[][] { + new char[] { '\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u0100', '\u0102', '\u0226', '\u00C4', '\u1EA2', '\u00C5', '\u01CD', '\u0200', '\u0202', '\u1EA0', '\u1E00', '\u0104', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E02', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E04', '\u0000', '\u0000', '\u1E06', }, + new char[] { '\u0000', '\u0106', '\u0108', '\u0000', '\u0000', '\u0000', '\u010A', '\u0000', '\u0000', '\u0000', '\u010C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00C7', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0A', '\u0000', '\u0000', '\u0000', '\u010E', '\u0000', '\u0000', '\u1E0C', '\u0000', '\u0000', '\u1E0E', '\u1E10', '\u1E12', }, + new char[] { '\u00C8', '\u00C9', '\u00CA', '\u1EBC', '\u0112', '\u0114', '\u0116', '\u00CB', '\u1EBA', '\u0000', '\u011A', '\u0204', '\u0206', '\u1EB8', '\u0000', '\u0118', '\u0000', '\u0228', '\u1E18', '\u1E1A', }, + new char[] { '\u0000', '\u01F4', '\u011C', '\u0000', '\u1E20', '\u011E', '\u0120', '\u0000', '\u0000', '\u0000', '\u01E6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0122', }, + new char[] { '\u0000', '\u0000', '\u0124', '\u0000', '\u0000', '\u0000', '\u1E22', '\u1E26', '\u0000', '\u0000', '\u021E', '\u0000', '\u0000', '\u1E24', '\u0000', '\u0000', '\u0000', '\u1E28', '\u0000', '\u0000', '\u1E2A', }, + new char[] { '\u00CC', '\u00CD', '\u00CE', '\u0128', '\u012A', '\u012C', '\u0130', '\u00CF', '\u1EC8', '\u0000', '\u01CF', '\u0208', '\u020A', '\u1ECA', '\u0000', '\u012E', '\u0000', '\u0000', '\u0000', '\u1E2C', }, + new char[] { '\u0000', '\u1E30', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E8', '\u0000', '\u0000', '\u1E32', '\u0000', '\u0000', '\u1E34', '\u0136', }, + new char[] { '\u0000', '\u0139', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013D', '\u0000', '\u0000', '\u1E36', '\u0000', '\u0000', '\u1E3A', '\u013B', '\u1E3C', }, + new char[] { '\u0000', '\u1E3E', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E40', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E42', }, + new char[] { '\u01F8', '\u0143', '\u0000', '\u00D1', '\u0000', '\u0000', '\u1E44', '\u0000', '\u0000', '\u0000', '\u0147', '\u0000', '\u0000', '\u1E46', '\u0000', '\u0000', '\u1E48', '\u0145', '\u1E4A', }, + new char[] { '\u00D2', '\u00D3', '\u00D4', '\u00D5', '\u014C', '\u014E', '\u022E', '\u00D6', '\u1ECE', '\u0000', '\u01D1', '\u020C', '\u020E', '\u1ECC', '\u0000', '\u01EA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0150', '\u01A0', }, + new char[] { '\u0000', '\u1E54', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E56', }, + new char[] { '\u0000', '\u0154', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E58', '\u0000', '\u0000', '\u0000', '\u0158', '\u0210', '\u0212', '\u1E5A', '\u0000', '\u0000', '\u1E5E', '\u0156', }, + new char[] { '\u0000', '\u015A', '\u015C', '\u0000', '\u0000', '\u0000', '\u1E60', '\u0000', '\u0000', '\u0000', '\u0160', '\u0000', '\u0000', '\u1E62', '\u0000', '\u0000', '\u0000', '\u015E', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0218', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6A', '\u0000', '\u0000', '\u0000', '\u0164', '\u0000', '\u0000', '\u1E6C', '\u0000', '\u0000', '\u1E6E', '\u0162', '\u1E70', '\u0000', '\u0000', '\u0000', '\u0000', '\u021A', }, + new char[] { '\u00D9', '\u00DA', '\u00DB', '\u0168', '\u016A', '\u016C', '\u0000', '\u00DC', '\u1EE6', '\u016E', '\u01D3', '\u0214', '\u0216', '\u1EE4', '\u0000', '\u0172', '\u0000', '\u0000', '\u1E76', '\u1E74', '\u0000', '\u0170', '\u01AF', '\u0000', '\u1E72', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u1E7C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7E', }, + new char[] { '\u1E80', '\u1E82', '\u0174', '\u0000', '\u0000', '\u0000', '\u1E86', '\u1E84', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E88', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8A', '\u1E8C', }, + new char[] { '\u1EF2', '\u00DD', '\u0176', '\u1EF8', '\u0232', '\u0000', '\u1E8E', '\u0178', '\u1EF6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF4', }, + new char[] { '\u0000', '\u0179', '\u1E90', '\u0000', '\u0000', '\u0000', '\u017B', '\u0000', '\u0000', '\u0000', '\u017D', '\u0000', '\u0000', '\u1E92', '\u0000', '\u0000', '\u1E94', }, + new char[] { '\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u0101', '\u0103', '\u0227', '\u00E4', '\u1EA3', '\u00E5', '\u01CE', '\u0201', '\u0203', '\u1EA1', '\u1E01', '\u0105', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E03', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E05', '\u0000', '\u0000', '\u1E07', }, + new char[] { '\u0000', '\u0107', '\u0109', '\u0000', '\u0000', '\u0000', '\u010B', '\u0000', '\u0000', '\u0000', '\u010D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00E7', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0B', '\u0000', '\u0000', '\u0000', '\u010F', '\u0000', '\u0000', '\u1E0D', '\u0000', '\u0000', '\u1E0F', '\u1E11', '\u1E13', }, + new char[] { '\u00E8', '\u00E9', '\u00EA', '\u1EBD', '\u0113', '\u0115', '\u0117', '\u00EB', '\u1EBB', '\u0000', '\u011B', '\u0205', '\u0207', '\u1EB9', '\u0000', '\u0119', '\u0000', '\u0229', '\u1E19', '\u1E1B', }, + new char[] { '\u0000', '\u01F5', '\u011D', '\u0000', '\u1E21', '\u011F', '\u0121', '\u0000', '\u0000', '\u0000', '\u01E7', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0123', }, + new char[] { '\u0000', '\u0000', '\u0125', '\u0000', '\u0000', '\u0000', '\u1E23', '\u1E27', '\u0000', '\u0000', '\u021F', '\u0000', '\u0000', '\u1E25', '\u0000', '\u0000', '\u1E96', '\u1E29', '\u0000', '\u0000', '\u1E2B', }, + new char[] { '\u00EC', '\u00ED', '\u00EE', '\u0129', '\u012B', '\u012D', '\u0000', '\u00EF', '\u1EC9', '\u0000', '\u01D0', '\u0209', '\u020B', '\u1ECB', '\u0000', '\u012F', '\u0000', '\u0000', '\u0000', '\u1E2D', }, + new char[] { '\u0000', '\u0000', '\u0135', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01F0', }, + new char[] { '\u0000', '\u1E31', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E9', '\u0000', '\u0000', '\u1E33', '\u0000', '\u0000', '\u1E35', '\u0137', }, + new char[] { '\u0000', '\u013A', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013E', '\u0000', '\u0000', '\u1E37', '\u0000', '\u0000', '\u1E3B', '\u013C', '\u1E3D', }, + new char[] { '\u0000', '\u1E3F', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E41', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E43', }, + new char[] { '\u01F9', '\u0144', '\u0000', '\u00F1', '\u0000', '\u0000', '\u1E45', '\u0000', '\u0000', '\u0000', '\u0148', '\u0000', '\u0000', '\u1E47', '\u0000', '\u0000', '\u1E49', '\u0146', '\u1E4B', }, + new char[] { '\u00F2', '\u00F3', '\u00F4', '\u00F5', '\u014D', '\u014F', '\u022F', '\u00F6', '\u1ECF', '\u0000', '\u01D2', '\u020D', '\u020F', '\u1ECD', '\u0000', '\u01EB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0151', '\u01A1', }, + new char[] { '\u0000', '\u1E55', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E57', }, + new char[] { '\u0000', '\u0155', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E59', '\u0000', '\u0000', '\u0000', '\u0159', '\u0211', '\u0213', '\u1E5B', '\u0000', '\u0000', '\u1E5F', '\u0157', }, + new char[] { '\u0000', '\u015B', '\u015D', '\u0000', '\u0000', '\u0000', '\u1E61', '\u0000', '\u0000', '\u0000', '\u0161', '\u0000', '\u0000', '\u1E63', '\u0000', '\u0000', '\u0000', '\u015F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0219', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6B', '\u1E97', '\u0000', '\u0000', '\u0165', '\u0000', '\u0000', '\u1E6D', '\u0000', '\u0000', '\u1E6F', '\u0163', '\u1E71', '\u0000', '\u0000', '\u0000', '\u0000', '\u021B', }, + new char[] { '\u00F9', '\u00FA', '\u00FB', '\u0169', '\u016B', '\u016D', '\u0000', '\u00FC', '\u1EE7', '\u016F', '\u01D4', '\u0215', '\u0217', '\u1EE5', '\u0000', '\u0173', '\u0000', '\u0000', '\u1E77', '\u1E75', '\u0000', '\u0171', '\u01B0', '\u0000', '\u1E73', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u1E7D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7F', }, + new char[] { '\u1E81', '\u1E83', '\u0175', '\u0000', '\u0000', '\u0000', '\u1E87', '\u1E85', '\u0000', '\u1E98', '\u0000', '\u0000', '\u0000', '\u1E89', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8B', '\u1E8D', }, + new char[] { '\u1EF3', '\u00FD', '\u0177', '\u1EF9', '\u0233', '\u0000', '\u1E8F', '\u00FF', '\u1EF7', '\u1E99', '\u0000', '\u0000', '\u0000', '\u1EF5', }, + new char[] { '\u0000', '\u017A', '\u1E91', '\u0000', '\u0000', '\u0000', '\u017C', '\u0000', '\u0000', '\u0000', '\u017E', '\u0000', '\u0000', '\u1E93', '\u0000', '\u0000', '\u1E95', }, + new char[] { '\u1FED', '\u0385', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC1', }, + new char[] { '\u1EA6', '\u1EA4', '\u0000', '\u1EAA', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA8', }, + new char[] { '\u0000', '\u01FC', '\u0000', '\u0000', '\u01E2', }, + new char[] { '\u1EC0', '\u1EBE', '\u0000', '\u1EC4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC2', }, + new char[] { '\u1ED2', '\u1ED0', '\u0000', '\u1ED6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED4', }, + new char[] { '\u0000', '\u1E4C', '\u0000', '\u0000', '\u022C', '\u0000', '\u0000', '\u1E4E', }, + new char[] { '\u01DB', '\u01D7', '\u0000', '\u0000', '\u01D5', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01D9', }, + new char[] { '\u1EA7', '\u1EA5', '\u0000', '\u1EAB', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA9', }, + new char[] { '\u0000', '\u01FD', '\u0000', '\u0000', '\u01E3', }, + new char[] { '\u1EC1', '\u1EBF', '\u0000', '\u1EC5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC3', }, + new char[] { '\u1ED3', '\u1ED1', '\u0000', '\u1ED7', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED5', }, + new char[] { '\u0000', '\u1E4D', '\u0000', '\u0000', '\u022D', '\u0000', '\u0000', '\u1E4F', }, + new char[] { '\u01DC', '\u01D8', '\u0000', '\u0000', '\u01D6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01DA', }, + new char[] { '\u1EB0', '\u1EAE', '\u0000', '\u1EB4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB2', }, + new char[] { '\u1EB1', '\u1EAF', '\u0000', '\u1EB5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB3', }, + new char[] { '\u1E14', '\u1E16', }, + new char[] { '\u1E15', '\u1E17', }, + new char[] { '\u1E50', '\u1E52', }, + new char[] { '\u1E51', '\u1E53', }, + new char[] { '\u1EDC', '\u1EDA', '\u0000', '\u1EE0', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE2', }, + new char[] { '\u1EDD', '\u1EDB', '\u0000', '\u1EE1', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE3', }, + new char[] { '\u1EEA', '\u1EE8', '\u0000', '\u1EEE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EEC', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF0', }, + new char[] { '\u1EEB', '\u1EE9', '\u0000', '\u1EEF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EED', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF1', }, + new char[] { '\u1FBA', '\u0386', '\u0000', '\u0000', '\u1FB9', '\u1FB8', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F08', '\u1F09', '\u1FBC', }, + new char[] { '\u1FC8', '\u0388', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F18', '\u1F19', }, + new char[] { '\u1FCA', '\u0389', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F28', '\u1F29', '\u1FCC', }, + new char[] { '\u1FDA', '\u038A', '\u0000', '\u0000', '\u1FD9', '\u1FD8', '\u0000', '\u03AA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F38', '\u1F39', }, + new char[] { '\u1FF8', '\u038C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F48', '\u1F49', }, + new char[] { '\u1FEA', '\u038E', '\u0000', '\u0000', '\u1FE9', '\u1FE8', '\u0000', '\u03AB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F59', }, + new char[] { '\u1FFA', '\u038F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F68', '\u1F69', '\u1FFC', }, + new char[] { '\u1F70', '\u03AC', '\u0000', '\u0000', '\u1FB1', '\u1FB0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FB6', '\u1F00', '\u1F01', '\u1FB3', }, + new char[] { '\u1F72', '\u03AD', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F10', '\u1F11', }, + new char[] { '\u1F74', '\u03AE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC6', '\u1F20', '\u1F21', '\u1FC3', }, + new char[] { '\u1F76', '\u03AF', '\u0000', '\u0000', '\u1FD1', '\u1FD0', '\u0000', '\u03CA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD6', '\u1F30', '\u1F31', }, + new char[] { '\u1F78', '\u03CC', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F40', '\u1F41', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE4', '\u1FE5', }, + new char[] { '\u1F7A', '\u03CD', '\u0000', '\u0000', '\u1FE1', '\u1FE0', '\u0000', '\u03CB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE6', '\u1F50', '\u1F51', }, + new char[] { '\u1F7C', '\u03CE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FF6', '\u1F60', '\u1F61', '\u1FF3', }, + new char[] { '\u1FD2', '\u0390', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD7', }, + new char[] { '\u1FE2', '\u03B0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE7', }, + new char[] { '\u0000', '\u03D3', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u03D4', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D0', '\u0000', '\u04D2', }, + new char[] { '\u0400', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D6', '\u0000', '\u0401', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C1', '\u0000', '\u04DC', }, + new char[] { '\u040D', '\u0000', '\u0000', '\u0000', '\u04E2', '\u0419', '\u0000', '\u04E4', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EE', '\u040E', '\u0000', '\u04F0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F2', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D1', '\u0000', '\u04D3', }, + new char[] { '\u0450', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D7', '\u0000', '\u0451', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C2', '\u0000', '\u04DD', }, + new char[] { '\u045D', '\u0000', '\u0000', '\u0000', '\u04E3', '\u0439', '\u0000', '\u04E5', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EF', '\u045E', '\u0000', '\u04F1', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F3', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0623', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0BCA', '\u0BCC', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0CC7', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0D4A', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0DDA', }, + new char[] { '\u0000', '\u0000', '\u1EAC', '\u0000', '\u0000', '\u1EB6', }, + new char[] { '\u0000', '\u0000', '\u1EAD', '\u0000', '\u0000', '\u1EB7', }, + new char[] { '\u1F02', '\u1F04', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F06', '\u0000', '\u0000', '\u1F80', }, + new char[] { '\u1F03', '\u1F05', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F07', '\u0000', '\u0000', '\u1F81', }, + new char[] { '\u1F0A', '\u1F0C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0E', '\u0000', '\u0000', '\u1F88', }, + new char[] { '\u1F0B', '\u1F0D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0F', '\u0000', '\u0000', '\u1F89', }, + new char[] { '\u1F12', '\u1F14', }, + new char[] { '\u1F13', '\u1F15', }, + new char[] { '\u1F1A', '\u1F1C', }, + new char[] { '\u1F1B', '\u1F1D', }, + new char[] { '\u1F22', '\u1F24', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F26', '\u0000', '\u0000', '\u1F90', }, + new char[] { '\u1F23', '\u1F25', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F27', '\u0000', '\u0000', '\u1F91', }, + new char[] { '\u1F2A', '\u1F2C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2E', '\u0000', '\u0000', '\u1F98', }, + new char[] { '\u1F2B', '\u1F2D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2F', '\u0000', '\u0000', '\u1F99', }, + new char[] { '\u1F32', '\u1F34', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F36', }, + new char[] { '\u1F33', '\u1F35', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F37', }, + new char[] { '\u1F3A', '\u1F3C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3E', }, + new char[] { '\u1F3B', '\u1F3D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3F', }, + new char[] { '\u1F42', '\u1F44', }, + new char[] { '\u1F43', '\u1F45', }, + new char[] { '\u1F4A', '\u1F4C', }, + new char[] { '\u1F4B', '\u1F4D', }, + new char[] { '\u1F52', '\u1F54', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F56', }, + new char[] { '\u1F53', '\u1F55', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F57', }, + new char[] { '\u1F5B', '\u1F5D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F5F', }, + new char[] { '\u1F62', '\u1F64', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F66', '\u0000', '\u0000', '\u1FA0', }, + new char[] { '\u1F63', '\u1F65', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F67', '\u0000', '\u0000', '\u1FA1', }, + new char[] { '\u1F6A', '\u1F6C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6E', '\u0000', '\u0000', '\u1FA8', }, + new char[] { '\u1F6B', '\u1F6D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6F', '\u0000', '\u0000', '\u1FA9', }, + new char[] { '\u1FCD', '\u1FCE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FCF', }, + new char[] { '\u1FDD', '\u1FDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FDF', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3070', '\u3071', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3073', '\u3074', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3076', '\u3077', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3079', '\u307A', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u307C', '\u307D', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D0', '\u30D1', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D3', '\u30D4', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D6', '\u30D7', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D9', '\u30DA', }, + new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30DC', '\u30DD', }, + }; + public static readonly char[,] singleFirst = new char[,] { + { '\u0338', '\u226E' }, + { '\u0338', '\u2260' }, + { '\u0338', '\u226F' }, + { '\u0307', '\u1E1E' }, + { '\u0302', '\u0134' }, + { '\u0307', '\u1E1F' }, + { '\u0304', '\u01DE' }, + { '\u0301', '\u01FA' }, + { '\u0301', '\u1E08' }, + { '\u0301', '\u1E2E' }, + { '\u0304', '\u022A' }, + { '\u0301', '\u01FE' }, + { '\u0304', '\u01DF' }, + { '\u0301', '\u01FB' }, + { '\u0301', '\u1E09' }, + { '\u0301', '\u1E2F' }, + { '\u0304', '\u022B' }, + { '\u0301', '\u01FF' }, + { '\u0307', '\u1E64' }, + { '\u0307', '\u1E65' }, + { '\u0307', '\u1E66' }, + { '\u0307', '\u1E67' }, + { '\u0301', '\u1E78' }, + { '\u0301', '\u1E79' }, + { '\u0308', '\u1E7A' }, + { '\u0308', '\u1E7B' }, + { '\u0307', '\u1E9B' }, + { '\u030C', '\u01EE' }, + { '\u0304', '\u01EC' }, + { '\u0304', '\u01ED' }, + { '\u0304', '\u01E0' }, + { '\u0304', '\u01E1' }, + { '\u0306', '\u1E1C' }, + { '\u0306', '\u1E1D' }, + { '\u0304', '\u0230' }, + { '\u0304', '\u0231' }, + { '\u030C', '\u01EF' }, + { '\u0314', '\u1FEC' }, + { '\u0345', '\u1FB4' }, + { '\u0345', '\u1FC4' }, + { '\u0345', '\u1FF4' }, + { '\u0308', '\u0407' }, + { '\u0301', '\u0403' }, + { '\u0308', '\u04DE' }, + { '\u0301', '\u040C' }, + { '\u0308', '\u04E6' }, + { '\u0308', '\u04F4' }, + { '\u0308', '\u04F8' }, + { '\u0308', '\u04EC' }, + { '\u0301', '\u0453' }, + { '\u0308', '\u04DF' }, + { '\u0301', '\u045C' }, + { '\u0308', '\u04E7' }, + { '\u0308', '\u04F5' }, + { '\u0308', '\u04F9' }, + { '\u0308', '\u04ED' }, + { '\u0308', '\u0457' }, + { '\u030F', '\u0476' }, + { '\u030F', '\u0477' }, + { '\u0308', '\u04DA' }, + { '\u0308', '\u04DB' }, + { '\u0308', '\u04EA' }, + { '\u0308', '\u04EB' }, + { '\u0654', '\u0624' }, + { '\u0654', '\u0626' }, + { '\u0654', '\u06C2' }, + { '\u0654', '\u06D3' }, + { '\u0654', '\u06C0' }, + { '\u093C', '\u0929' }, + { '\u093C', '\u0931' }, + { '\u093C', '\u0934' }, + { '\u0BD7', '\u0B94' }, + { '\u0BBE', '\u0BCB' }, + { '\u0C56', '\u0C48' }, + { '\u0CD5', '\u0CC0' }, + { '\u0CD5', '\u0CCB' }, + { '\u0D3E', '\u0D4B' }, + { '\u0DCA', '\u0DDD' }, + { '\u102E', '\u1026' }, + { '\u0304', '\u1E38' }, + { '\u0304', '\u1E39' }, + { '\u0304', '\u1E5C' }, + { '\u0304', '\u1E5D' }, + { '\u0307', '\u1E68' }, + { '\u0307', '\u1E69' }, + { '\u0302', '\u1EC6' }, + { '\u0302', '\u1EC7' }, + { '\u0302', '\u1ED8' }, + { '\u0302', '\u1ED9' }, + { '\u0345', '\u1F82' }, + { '\u0345', '\u1F83' }, + { '\u0345', '\u1F84' }, + { '\u0345', '\u1F85' }, + { '\u0345', '\u1F86' }, + { '\u0345', '\u1F87' }, + { '\u0345', '\u1F8A' }, + { '\u0345', '\u1F8B' }, + { '\u0345', '\u1F8C' }, + { '\u0345', '\u1F8D' }, + { '\u0345', '\u1F8E' }, + { '\u0345', '\u1F8F' }, + { '\u0345', '\u1F92' }, + { '\u0345', '\u1F93' }, + { '\u0345', '\u1F94' }, + { '\u0345', '\u1F95' }, + { '\u0345', '\u1F96' }, + { '\u0345', '\u1F97' }, + { '\u0345', '\u1F9A' }, + { '\u0345', '\u1F9B' }, + { '\u0345', '\u1F9C' }, + { '\u0345', '\u1F9D' }, + { '\u0345', '\u1F9E' }, + { '\u0345', '\u1F9F' }, + { '\u0345', '\u1FA2' }, + { '\u0345', '\u1FA3' }, + { '\u0345', '\u1FA4' }, + { '\u0345', '\u1FA5' }, + { '\u0345', '\u1FA6' }, + { '\u0345', '\u1FA7' }, + { '\u0345', '\u1FAA' }, + { '\u0345', '\u1FAB' }, + { '\u0345', '\u1FAC' }, + { '\u0345', '\u1FAD' }, + { '\u0345', '\u1FAE' }, + { '\u0345', '\u1FAF' }, + { '\u0345', '\u1FB2' }, + { '\u0345', '\u1FC2' }, + { '\u0345', '\u1FF2' }, + { '\u0345', '\u1FB7' }, + { '\u0345', '\u1FC7' }, + { '\u0345', '\u1FF7' }, + { '\u0338', '\u219A' }, + { '\u0338', '\u219B' }, + { '\u0338', '\u21AE' }, + { '\u0338', '\u21CD' }, + { '\u0338', '\u21CF' }, + { '\u0338', '\u21CE' }, + { '\u0338', '\u2204' }, + { '\u0338', '\u2209' }, + { '\u0338', '\u220C' }, + { '\u0338', '\u2224' }, + { '\u0338', '\u2226' }, + { '\u0338', '\u2241' }, + { '\u0338', '\u2244' }, + { '\u0338', '\u2247' }, + { '\u0338', '\u2249' }, + { '\u0338', '\u226D' }, + { '\u0338', '\u2262' }, + { '\u0338', '\u2270' }, + { '\u0338', '\u2271' }, + { '\u0338', '\u2274' }, + { '\u0338', '\u2275' }, + { '\u0338', '\u2278' }, + { '\u0338', '\u2279' }, + { '\u0338', '\u2280' }, + { '\u0338', '\u2281' }, + { '\u0338', '\u22E0' }, + { '\u0338', '\u22E1' }, + { '\u0338', '\u2284' }, + { '\u0338', '\u2285' }, + { '\u0338', '\u2288' }, + { '\u0338', '\u2289' }, + { '\u0338', '\u22E2' }, + { '\u0338', '\u22E3' }, + { '\u0338', '\u22AC' }, + { '\u0338', '\u22AD' }, + { '\u0338', '\u22AE' }, + { '\u0338', '\u22AF' }, + { '\u0338', '\u22EA' }, + { '\u0338', '\u22EB' }, + { '\u0338', '\u22EC' }, + { '\u0338', '\u22ED' }, + { '\u3099', '\u3094' }, + { '\u3099', '\u304C' }, + { '\u3099', '\u304E' }, + { '\u3099', '\u3050' }, + { '\u3099', '\u3052' }, + { '\u3099', '\u3054' }, + { '\u3099', '\u3056' }, + { '\u3099', '\u3058' }, + { '\u3099', '\u305A' }, + { '\u3099', '\u305C' }, + { '\u3099', '\u305E' }, + { '\u3099', '\u3060' }, + { '\u3099', '\u3062' }, + { '\u3099', '\u3065' }, + { '\u3099', '\u3067' }, + { '\u3099', '\u3069' }, + { '\u3099', '\u309E' }, + { '\u3099', '\u30F4' }, + { '\u3099', '\u30AC' }, + { '\u3099', '\u30AE' }, + { '\u3099', '\u30B0' }, + { '\u3099', '\u30B2' }, + { '\u3099', '\u30B4' }, + { '\u3099', '\u30B6' }, + { '\u3099', '\u30B8' }, + { '\u3099', '\u30BA' }, + { '\u3099', '\u30BC' }, + { '\u3099', '\u30BE' }, + { '\u3099', '\u30C0' }, + { '\u3099', '\u30C2' }, + { '\u3099', '\u30C5' }, + { '\u3099', '\u30C7' }, + { '\u3099', '\u30C9' }, + { '\u3099', '\u30F7' }, + { '\u3099', '\u30F8' }, + { '\u3099', '\u30F9' }, + { '\u3099', '\u30FA' }, + { '\u3099', '\u30FE' }, + }; + public static readonly char[,] singleSecond = new char[,] { + { '\u0627', '\u0622' }, + { '\u0627', '\u0625' }, + { '\u09C7', '\u09CB' }, + { '\u09C7', '\u09CC' }, + { '\u0B47', '\u0B4B' }, + { '\u0B47', '\u0B48' }, + { '\u0B47', '\u0B4C' }, + { '\u0CC6', '\u0CCA' }, + { '\u0CC6', '\u0CC8' }, + { '\u0D46', '\u0D4C' }, + { '\u0DD9', '\u0DDC' }, + { '\u0DD9', '\u0DDE' }, + }; + public static readonly int multiSecondStart = 144; + public static readonly int singleFirstStart = 181; + public static readonly int singleSecondStart = 391; + public static readonly int[] composePage = new int[] { + 0, + 1, + 2, + 3, + 4, + -1, + 5, + -1, + -1, + 6, + -1, + 7, + 8, + 9, + -1, + -1, + 10, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 11, + 12, + -1, + 13, + 14, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 15, + -1, + }; + public static readonly int[,] composeData = new int[,] { + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, 182, 183, -1, + -1, 0, 1, 2, 3, 4, 184, 5, 6, 7, 185, 8, 9, 10, 11, 12, + 13, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 186, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 48, -1, 187, 188, 49, 189, -1, -1, 50, -1, -1, -1, -1, 190, + -1, -1, -1, -1, 51, 52, 191, -1, 192, -1, -1, -1, 53, -1, -1, -1, + -1, -1, 54, -1, 193, 194, 55, 195, -1, -1, 56, -1, -1, -1, -1, 196, + -1, -1, -1, -1, 57, 58, 197, -1, 198, -1, -1, -1, 59, -1, -1, -1, + }, + { + -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, 200, -1, -1, -1, -1, + 201, 202, -1, -1, -1, -1, -1, -1, 203, 204, 205, 206, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, + 69, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, -1, -1, -1, -1, 215, 216, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + 144, 145, 146, 147, 148, -1, 149, 150, 151, 152, 153, 165, 154, -1, -1, 155, + -1, 156, -1, 170, 171, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, + -1, -1, -1, 157, 168, 158, 167, 161, 159, -1, -1, -1, -1, 162, 164, -1, + 163, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 169, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 70, -1, -1, -1, 71, -1, 72, -1, 73, -1, -1, -1, -1, -1, 74, + -1, 218, -1, -1, -1, 75, -1, -1, -1, 76, -1, -1, 219, -1, 220, -1, + -1, 77, -1, -1, -1, 78, -1, 79, -1, 80, -1, -1, -1, -1, -1, 81, + -1, 82, -1, -1, -1, 83, -1, -1, -1, 84, 85, 86, -1, -1, 221, -1, + -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, -1, -1, 223, -1, 89, 90, 224, 91, -1, 225, -1, -1, -1, 226, -1, + -1, -1, -1, 92, -1, -1, -1, 227, -1, -1, -1, 228, -1, 229, -1, -1, + 93, -1, -1, 230, -1, 94, 95, 231, 96, -1, 232, -1, -1, -1, 233, -1, + -1, -1, -1, 97, -1, -1, -1, 234, -1, -1, -1, 235, -1, 236, -1, -1, + -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 245, -1, -1, -1, -1, -1, + -1, -1, -1, 391, 173, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 247, -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, + 250, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, + -1, -1, -1, -1, -1, -1, 99, 253, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, 398, -1, -1, -1, 100, -1, -1, -1, 256, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 176, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, + -1, -1, -1, -1, -1, -1, 101, 257, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, 401, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, -1, -1, 258, -1, -1, 402, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, -1, -1, -1, -1, + -1, -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + 105, 106, 270, 271, 272, 273, 274, 275, 107, 108, 276, 277, 278, 279, 280, 281, + 109, 110, -1, -1, -1, -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, + 113, 114, 282, 283, 284, 285, 286, 287, 115, 116, 288, 289, 290, 291, 292, 293, + 117, 118, -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, -1, -1, + 121, 122, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, + 125, 126, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, + 128, 129, 294, 295, 296, 297, 298, 299, 130, 131, 300, 301, 302, 303, 304, 305, + 306, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, 132, + -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, 133, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 312, -1, 313, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 315, -1, 316, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, 318, -1, -1, -1, -1, 319, -1, -1, 320, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 321, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, + -1, -1, -1, 324, -1, 325, -1, -1, 326, -1, -1, -1, -1, 327, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 328, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, 332, -1, -1, 333, 334, -1, -1, 335, 336, 337, 338, -1, -1, + -1, -1, 339, 340, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 345, -1, -1, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, + -1, -1, 349, 350, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, 354, -1, 355, -1, 356, + -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, + -1, 365, -1, -1, 366, -1, 367, -1, 368, -1, -1, -1, -1, -1, -1, 134, + -1, -1, 135, -1, -1, 136, -1, -1, 137, -1, -1, 138, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, -1, 369, -1, -1, + -1, -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, 371, -1, 372, -1, 373, + -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, 380, -1, 381, + -1, 382, -1, -1, 383, -1, 384, -1, 385, -1, -1, -1, -1, -1, -1, 139, + -1, -1, 140, -1, -1, 141, -1, -1, 142, -1, -1, 143, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, + 387, 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, + }, + }; +} diff --git a/csharp/DecompositionKeys.cs b/csharp/DecompositionKeys.cs new file mode 100644 index 0000000..6da06a5 --- /dev/null +++ b/csharp/DecompositionKeys.cs @@ -0,0 +1,3605 @@ +// Do not edit !!! +// this file is generated automatically + +public class DecompositionKeys +{ + public static readonly int[] k = new int[] { + '\u00A0', 0, + '\u00A8', 1, + '\u00AA', 2, + '\u00AF', 3, + '\u00B2', 4, + '\u00B3', 5, + '\u00B4', 6, + '\u00B5', 7, + '\u00B8', 8, + '\u00B9', 9, + '\u00BA', 10, + '\u00BC', 11, + '\u00BD', 12, + '\u00BE', 13, + '\u00C0', 14, + '\u00C1', 15, + '\u00C2', 16, + '\u00C3', 17, + '\u00C4', 18, + '\u00C5', 19, + '\u00C7', 20, + '\u00C8', 21, + '\u00C9', 22, + '\u00CA', 23, + '\u00CB', 24, + '\u00CC', 25, + '\u00CD', 26, + '\u00CE', 27, + '\u00CF', 28, + '\u00D1', 29, + '\u00D2', 30, + '\u00D3', 31, + '\u00D4', 32, + '\u00D5', 33, + '\u00D6', 34, + '\u00D9', 35, + '\u00DA', 36, + '\u00DB', 37, + '\u00DC', 38, + '\u00DD', 39, + '\u00E0', 40, + '\u00E1', 41, + '\u00E2', 42, + '\u00E3', 43, + '\u00E4', 44, + '\u00E5', 45, + '\u00E7', 46, + '\u00E8', 47, + '\u00E9', 48, + '\u00EA', 49, + '\u00EB', 50, + '\u00EC', 51, + '\u00ED', 52, + '\u00EE', 53, + '\u00EF', 54, + '\u00F1', 55, + '\u00F2', 56, + '\u00F3', 57, + '\u00F4', 58, + '\u00F5', 59, + '\u00F6', 60, + '\u00F9', 61, + '\u00FA', 62, + '\u00FB', 63, + '\u00FC', 64, + '\u00FD', 65, + '\u00FF', 66, + '\u0100', 67, + '\u0101', 68, + '\u0102', 69, + '\u0103', 70, + '\u0104', 71, + '\u0105', 72, + '\u0106', 73, + '\u0107', 74, + '\u0108', 75, + '\u0109', 76, + '\u010A', 77, + '\u010B', 78, + '\u010C', 79, + '\u010D', 80, + '\u010E', 81, + '\u010F', 82, + '\u0112', 83, + '\u0113', 84, + '\u0114', 85, + '\u0115', 86, + '\u0116', 87, + '\u0117', 88, + '\u0118', 89, + '\u0119', 90, + '\u011A', 91, + '\u011B', 92, + '\u011C', 93, + '\u011D', 94, + '\u011E', 95, + '\u011F', 96, + '\u0120', 97, + '\u0121', 98, + '\u0122', 99, + '\u0123', 100, + '\u0124', 101, + '\u0125', 102, + '\u0128', 103, + '\u0129', 104, + '\u012A', 105, + '\u012B', 106, + '\u012C', 107, + '\u012D', 108, + '\u012E', 109, + '\u012F', 110, + '\u0130', 111, + '\u0132', 112, + '\u0133', 113, + '\u0134', 114, + '\u0135', 115, + '\u0136', 116, + '\u0137', 117, + '\u0139', 118, + '\u013A', 119, + '\u013B', 120, + '\u013C', 121, + '\u013D', 122, + '\u013E', 123, + '\u013F', 124, + '\u0140', 125, + '\u0143', 126, + '\u0144', 127, + '\u0145', 128, + '\u0146', 129, + '\u0147', 130, + '\u0148', 131, + '\u0149', 132, + '\u014C', 133, + '\u014D', 134, + '\u014E', 135, + '\u014F', 136, + '\u0150', 137, + '\u0151', 138, + '\u0154', 139, + '\u0155', 140, + '\u0156', 141, + '\u0157', 142, + '\u0158', 143, + '\u0159', 144, + '\u015A', 145, + '\u015B', 146, + '\u015C', 147, + '\u015D', 148, + '\u015E', 149, + '\u015F', 150, + '\u0160', 151, + '\u0161', 152, + '\u0162', 153, + '\u0163', 154, + '\u0164', 155, + '\u0165', 156, + '\u0168', 157, + '\u0169', 158, + '\u016A', 159, + '\u016B', 160, + '\u016C', 161, + '\u016D', 162, + '\u016E', 163, + '\u016F', 164, + '\u0170', 165, + '\u0171', 166, + '\u0172', 167, + '\u0173', 168, + '\u0174', 169, + '\u0175', 170, + '\u0176', 171, + '\u0177', 172, + '\u0178', 173, + '\u0179', 174, + '\u017A', 175, + '\u017B', 176, + '\u017C', 177, + '\u017D', 178, + '\u017E', 179, + '\u017F', 180, + '\u01A0', 181, + '\u01A1', 182, + '\u01AF', 183, + '\u01B0', 184, + '\u01C4', 185, + '\u01C5', 186, + '\u01C6', 187, + '\u01C7', 188, + '\u01C8', 189, + '\u01C9', 190, + '\u01CA', 191, + '\u01CB', 192, + '\u01CC', 193, + '\u01CD', 194, + '\u01CE', 195, + '\u01CF', 196, + '\u01D0', 197, + '\u01D1', 198, + '\u01D2', 199, + '\u01D3', 200, + '\u01D4', 201, + '\u01D5', 202, + '\u01D6', 203, + '\u01D7', 204, + '\u01D8', 205, + '\u01D9', 206, + '\u01DA', 207, + '\u01DB', 208, + '\u01DC', 209, + '\u01DE', 210, + '\u01DF', 211, + '\u01E0', 212, + '\u01E1', 213, + '\u01E2', 214, + '\u01E3', 215, + '\u01E6', 216, + '\u01E7', 217, + '\u01E8', 218, + '\u01E9', 219, + '\u01EA', 220, + '\u01EB', 221, + '\u01EC', 222, + '\u01ED', 223, + '\u01EE', 224, + '\u01EF', 225, + '\u01F0', 226, + '\u01F1', 227, + '\u01F2', 228, + '\u01F3', 229, + '\u01F4', 230, + '\u01F5', 231, + '\u01F8', 232, + '\u01F9', 233, + '\u01FA', 234, + '\u01FB', 235, + '\u01FC', 236, + '\u01FD', 237, + '\u01FE', 238, + '\u01FF', 239, + '\u0200', 240, + '\u0201', 241, + '\u0202', 242, + '\u0203', 243, + '\u0204', 244, + '\u0205', 245, + '\u0206', 246, + '\u0207', 247, + '\u0208', 248, + '\u0209', 249, + '\u020A', 250, + '\u020B', 251, + '\u020C', 252, + '\u020D', 253, + '\u020E', 254, + '\u020F', 255, + '\u0210', 256, + '\u0211', 257, + '\u0212', 258, + '\u0213', 259, + '\u0214', 260, + '\u0215', 261, + '\u0216', 262, + '\u0217', 263, + '\u0218', 264, + '\u0219', 265, + '\u021A', 266, + '\u021B', 267, + '\u021E', 268, + '\u021F', 269, + '\u0226', 270, + '\u0227', 271, + '\u0228', 272, + '\u0229', 273, + '\u022A', 274, + '\u022B', 275, + '\u022C', 276, + '\u022D', 277, + '\u022E', 278, + '\u022F', 279, + '\u0230', 280, + '\u0231', 281, + '\u0232', 282, + '\u0233', 283, + '\u02B0', 284, + '\u02B1', 285, + '\u02B2', 286, + '\u02B3', 287, + '\u02B4', 288, + '\u02B5', 289, + '\u02B6', 290, + '\u02B7', 291, + '\u02B8', 292, + '\u02D8', 293, + '\u02D9', 294, + '\u02DA', 295, + '\u02DB', 296, + '\u02DC', 297, + '\u02DD', 298, + '\u02E0', 299, + '\u02E1', 300, + '\u02E2', 180, + '\u02E3', 301, + '\u02E4', 302, + '\u0340', 303, + '\u0341', 304, + '\u0343', 305, + '\u0344', 306, + '\u0374', 307, + '\u037A', 308, + '\u037E', 309, + '\u0384', 6, + '\u0385', 310, + '\u0386', 311, + '\u0387', 312, + '\u0388', 313, + '\u0389', 314, + '\u038A', 315, + '\u038C', 316, + '\u038E', 317, + '\u038F', 318, + '\u0390', 319, + '\u03AA', 320, + '\u03AB', 321, + '\u03AC', 322, + '\u03AD', 323, + '\u03AE', 324, + '\u03AF', 325, + '\u03B0', 326, + '\u03CA', 327, + '\u03CB', 328, + '\u03CC', 329, + '\u03CD', 330, + '\u03CE', 331, + '\u03D0', 332, + '\u03D1', 333, + '\u03D2', 334, + '\u03D3', 317, + '\u03D4', 321, + '\u03D5', 335, + '\u03D6', 336, + '\u03F0', 337, + '\u03F1', 338, + '\u03F2', 339, + '\u03F4', 340, + '\u03F5', 341, + '\u0400', 342, + '\u0401', 343, + '\u0403', 344, + '\u0407', 345, + '\u040C', 346, + '\u040D', 347, + '\u040E', 348, + '\u0419', 349, + '\u0439', 350, + '\u0450', 351, + '\u0451', 352, + '\u0453', 353, + '\u0457', 354, + '\u045C', 355, + '\u045D', 356, + '\u045E', 357, + '\u0476', 358, + '\u0477', 359, + '\u04C1', 360, + '\u04C2', 361, + '\u04D0', 362, + '\u04D1', 363, + '\u04D2', 364, + '\u04D3', 365, + '\u04D6', 366, + '\u04D7', 367, + '\u04DA', 368, + '\u04DB', 369, + '\u04DC', 370, + '\u04DD', 371, + '\u04DE', 372, + '\u04DF', 373, + '\u04E2', 374, + '\u04E3', 375, + '\u04E4', 376, + '\u04E5', 377, + '\u04E6', 378, + '\u04E7', 379, + '\u04EA', 380, + '\u04EB', 381, + '\u04EC', 382, + '\u04ED', 383, + '\u04EE', 384, + '\u04EF', 385, + '\u04F0', 386, + '\u04F1', 387, + '\u04F2', 388, + '\u04F3', 389, + '\u04F4', 390, + '\u04F5', 391, + '\u04F8', 392, + '\u04F9', 393, + '\u0587', 394, + '\u0622', 395, + '\u0623', 396, + '\u0624', 397, + '\u0625', 398, + '\u0626', 399, + '\u0675', 400, + '\u0676', 401, + '\u0677', 402, + '\u0678', 403, + '\u06C0', 404, + '\u06C2', 405, + '\u06D3', 406, + '\u0929', 407, + '\u0931', 408, + '\u0934', 409, + '\u0958', 410, + '\u0959', 411, + '\u095A', 412, + '\u095B', 413, + '\u095C', 414, + '\u095D', 415, + '\u095E', 416, + '\u095F', 417, + '\u09CB', 418, + '\u09CC', 419, + '\u09DC', 420, + '\u09DD', 421, + '\u09DF', 422, + '\u0A33', 423, + '\u0A36', 424, + '\u0A59', 425, + '\u0A5A', 426, + '\u0A5B', 427, + '\u0A5E', 428, + '\u0B48', 429, + '\u0B4B', 430, + '\u0B4C', 431, + '\u0B5C', 432, + '\u0B5D', 433, + '\u0B94', 434, + '\u0BCA', 435, + '\u0BCB', 436, + '\u0BCC', 437, + '\u0C48', 438, + '\u0CC0', 439, + '\u0CC7', 440, + '\u0CC8', 441, + '\u0CCA', 442, + '\u0CCB', 443, + '\u0D4A', 444, + '\u0D4B', 445, + '\u0D4C', 446, + '\u0DDA', 447, + '\u0DDC', 448, + '\u0DDD', 449, + '\u0DDE', 450, + '\u0E33', 451, + '\u0EB3', 452, + '\u0EDC', 453, + '\u0EDD', 454, + '\u0F0C', 455, + '\u0F43', 456, + '\u0F4D', 457, + '\u0F52', 458, + '\u0F57', 459, + '\u0F5C', 460, + '\u0F69', 461, + '\u0F73', 462, + '\u0F75', 463, + '\u0F76', 464, + '\u0F77', 465, + '\u0F78', 466, + '\u0F79', 467, + '\u0F81', 468, + '\u0F93', 469, + '\u0F9D', 470, + '\u0FA2', 471, + '\u0FA7', 472, + '\u0FAC', 473, + '\u0FB9', 474, + '\u1026', 475, + '\u1E00', 476, + '\u1E01', 477, + '\u1E02', 478, + '\u1E03', 479, + '\u1E04', 480, + '\u1E05', 481, + '\u1E06', 482, + '\u1E07', 483, + '\u1E08', 484, + '\u1E09', 485, + '\u1E0A', 486, + '\u1E0B', 487, + '\u1E0C', 488, + '\u1E0D', 489, + '\u1E0E', 490, + '\u1E0F', 491, + '\u1E10', 492, + '\u1E11', 493, + '\u1E12', 494, + '\u1E13', 495, + '\u1E14', 496, + '\u1E15', 497, + '\u1E16', 498, + '\u1E17', 499, + '\u1E18', 500, + '\u1E19', 501, + '\u1E1A', 502, + '\u1E1B', 503, + '\u1E1C', 504, + '\u1E1D', 505, + '\u1E1E', 506, + '\u1E1F', 507, + '\u1E20', 508, + '\u1E21', 509, + '\u1E22', 510, + '\u1E23', 511, + '\u1E24', 512, + '\u1E25', 513, + '\u1E26', 514, + '\u1E27', 515, + '\u1E28', 516, + '\u1E29', 517, + '\u1E2A', 518, + '\u1E2B', 519, + '\u1E2C', 520, + '\u1E2D', 521, + '\u1E2E', 522, + '\u1E2F', 523, + '\u1E30', 524, + '\u1E31', 525, + '\u1E32', 526, + '\u1E33', 527, + '\u1E34', 528, + '\u1E35', 529, + '\u1E36', 530, + '\u1E37', 531, + '\u1E38', 532, + '\u1E39', 533, + '\u1E3A', 534, + '\u1E3B', 535, + '\u1E3C', 536, + '\u1E3D', 537, + '\u1E3E', 538, + '\u1E3F', 539, + '\u1E40', 540, + '\u1E41', 541, + '\u1E42', 542, + '\u1E43', 543, + '\u1E44', 544, + '\u1E45', 545, + '\u1E46', 546, + '\u1E47', 547, + '\u1E48', 548, + '\u1E49', 549, + '\u1E4A', 550, + '\u1E4B', 551, + '\u1E4C', 552, + '\u1E4D', 553, + '\u1E4E', 554, + '\u1E4F', 555, + '\u1E50', 556, + '\u1E51', 557, + '\u1E52', 558, + '\u1E53', 559, + '\u1E54', 560, + '\u1E55', 561, + '\u1E56', 562, + '\u1E57', 563, + '\u1E58', 564, + '\u1E59', 565, + '\u1E5A', 566, + '\u1E5B', 567, + '\u1E5C', 568, + '\u1E5D', 569, + '\u1E5E', 570, + '\u1E5F', 571, + '\u1E60', 572, + '\u1E61', 573, + '\u1E62', 574, + '\u1E63', 575, + '\u1E64', 576, + '\u1E65', 577, + '\u1E66', 578, + '\u1E67', 579, + '\u1E68', 580, + '\u1E69', 581, + '\u1E6A', 582, + '\u1E6B', 583, + '\u1E6C', 584, + '\u1E6D', 585, + '\u1E6E', 586, + '\u1E6F', 587, + '\u1E70', 588, + '\u1E71', 589, + '\u1E72', 590, + '\u1E73', 591, + '\u1E74', 592, + '\u1E75', 593, + '\u1E76', 594, + '\u1E77', 595, + '\u1E78', 596, + '\u1E79', 597, + '\u1E7A', 598, + '\u1E7B', 599, + '\u1E7C', 600, + '\u1E7D', 601, + '\u1E7E', 602, + '\u1E7F', 603, + '\u1E80', 604, + '\u1E81', 605, + '\u1E82', 606, + '\u1E83', 607, + '\u1E84', 608, + '\u1E85', 609, + '\u1E86', 610, + '\u1E87', 611, + '\u1E88', 612, + '\u1E89', 613, + '\u1E8A', 614, + '\u1E8B', 615, + '\u1E8C', 616, + '\u1E8D', 617, + '\u1E8E', 618, + '\u1E8F', 619, + '\u1E90', 620, + '\u1E91', 621, + '\u1E92', 622, + '\u1E93', 623, + '\u1E94', 624, + '\u1E95', 625, + '\u1E96', 626, + '\u1E97', 627, + '\u1E98', 628, + '\u1E99', 629, + '\u1E9A', 630, + '\u1E9B', 573, + '\u1EA0', 631, + '\u1EA1', 632, + '\u1EA2', 633, + '\u1EA3', 634, + '\u1EA4', 635, + '\u1EA5', 636, + '\u1EA6', 637, + '\u1EA7', 638, + '\u1EA8', 639, + '\u1EA9', 640, + '\u1EAA', 641, + '\u1EAB', 642, + '\u1EAC', 643, + '\u1EAD', 644, + '\u1EAE', 645, + '\u1EAF', 646, + '\u1EB0', 647, + '\u1EB1', 648, + '\u1EB2', 649, + '\u1EB3', 650, + '\u1EB4', 651, + '\u1EB5', 652, + '\u1EB6', 653, + '\u1EB7', 654, + '\u1EB8', 655, + '\u1EB9', 656, + '\u1EBA', 657, + '\u1EBB', 658, + '\u1EBC', 659, + '\u1EBD', 660, + '\u1EBE', 661, + '\u1EBF', 662, + '\u1EC0', 663, + '\u1EC1', 664, + '\u1EC2', 665, + '\u1EC3', 666, + '\u1EC4', 667, + '\u1EC5', 668, + '\u1EC6', 669, + '\u1EC7', 670, + '\u1EC8', 671, + '\u1EC9', 672, + '\u1ECA', 673, + '\u1ECB', 674, + '\u1ECC', 675, + '\u1ECD', 676, + '\u1ECE', 677, + '\u1ECF', 678, + '\u1ED0', 679, + '\u1ED1', 680, + '\u1ED2', 681, + '\u1ED3', 682, + '\u1ED4', 683, + '\u1ED5', 684, + '\u1ED6', 685, + '\u1ED7', 686, + '\u1ED8', 687, + '\u1ED9', 688, + '\u1EDA', 689, + '\u1EDB', 690, + '\u1EDC', 691, + '\u1EDD', 692, + '\u1EDE', 693, + '\u1EDF', 694, + '\u1EE0', 695, + '\u1EE1', 696, + '\u1EE2', 697, + '\u1EE3', 698, + '\u1EE4', 699, + '\u1EE5', 700, + '\u1EE6', 701, + '\u1EE7', 702, + '\u1EE8', 703, + '\u1EE9', 704, + '\u1EEA', 705, + '\u1EEB', 706, + '\u1EEC', 707, + '\u1EED', 708, + '\u1EEE', 709, + '\u1EEF', 710, + '\u1EF0', 711, + '\u1EF1', 712, + '\u1EF2', 713, + '\u1EF3', 714, + '\u1EF4', 715, + '\u1EF5', 716, + '\u1EF6', 717, + '\u1EF7', 718, + '\u1EF8', 719, + '\u1EF9', 720, + '\u1F00', 721, + '\u1F01', 722, + '\u1F02', 723, + '\u1F03', 724, + '\u1F04', 725, + '\u1F05', 726, + '\u1F06', 727, + '\u1F07', 728, + '\u1F08', 729, + '\u1F09', 730, + '\u1F0A', 731, + '\u1F0B', 732, + '\u1F0C', 733, + '\u1F0D', 734, + '\u1F0E', 735, + '\u1F0F', 736, + '\u1F10', 737, + '\u1F11', 738, + '\u1F12', 739, + '\u1F13', 740, + '\u1F14', 741, + '\u1F15', 742, + '\u1F18', 743, + '\u1F19', 744, + '\u1F1A', 745, + '\u1F1B', 746, + '\u1F1C', 747, + '\u1F1D', 748, + '\u1F20', 749, + '\u1F21', 750, + '\u1F22', 751, + '\u1F23', 752, + '\u1F24', 753, + '\u1F25', 754, + '\u1F26', 755, + '\u1F27', 756, + '\u1F28', 757, + '\u1F29', 758, + '\u1F2A', 759, + '\u1F2B', 760, + '\u1F2C', 761, + '\u1F2D', 762, + '\u1F2E', 763, + '\u1F2F', 764, + '\u1F30', 765, + '\u1F31', 766, + '\u1F32', 767, + '\u1F33', 768, + '\u1F34', 769, + '\u1F35', 770, + '\u1F36', 771, + '\u1F37', 772, + '\u1F38', 773, + '\u1F39', 774, + '\u1F3A', 775, + '\u1F3B', 776, + '\u1F3C', 777, + '\u1F3D', 778, + '\u1F3E', 779, + '\u1F3F', 780, + '\u1F40', 781, + '\u1F41', 782, + '\u1F42', 783, + '\u1F43', 784, + '\u1F44', 785, + '\u1F45', 786, + '\u1F48', 787, + '\u1F49', 788, + '\u1F4A', 789, + '\u1F4B', 790, + '\u1F4C', 791, + '\u1F4D', 792, + '\u1F50', 793, + '\u1F51', 794, + '\u1F52', 795, + '\u1F53', 796, + '\u1F54', 797, + '\u1F55', 798, + '\u1F56', 799, + '\u1F57', 800, + '\u1F59', 801, + '\u1F5B', 802, + '\u1F5D', 803, + '\u1F5F', 804, + '\u1F60', 805, + '\u1F61', 806, + '\u1F62', 807, + '\u1F63', 808, + '\u1F64', 809, + '\u1F65', 810, + '\u1F66', 811, + '\u1F67', 812, + '\u1F68', 813, + '\u1F69', 814, + '\u1F6A', 815, + '\u1F6B', 816, + '\u1F6C', 817, + '\u1F6D', 818, + '\u1F6E', 819, + '\u1F6F', 820, + '\u1F70', 821, + '\u1F71', 322, + '\u1F72', 822, + '\u1F73', 323, + '\u1F74', 823, + '\u1F75', 324, + '\u1F76', 824, + '\u1F77', 325, + '\u1F78', 825, + '\u1F79', 329, + '\u1F7A', 826, + '\u1F7B', 330, + '\u1F7C', 827, + '\u1F7D', 331, + '\u1F80', 828, + '\u1F81', 829, + '\u1F82', 830, + '\u1F83', 831, + '\u1F84', 832, + '\u1F85', 833, + '\u1F86', 834, + '\u1F87', 835, + '\u1F88', 836, + '\u1F89', 837, + '\u1F8A', 838, + '\u1F8B', 839, + '\u1F8C', 840, + '\u1F8D', 841, + '\u1F8E', 842, + '\u1F8F', 843, + '\u1F90', 844, + '\u1F91', 845, + '\u1F92', 846, + '\u1F93', 847, + '\u1F94', 848, + '\u1F95', 849, + '\u1F96', 850, + '\u1F97', 851, + '\u1F98', 852, + '\u1F99', 853, + '\u1F9A', 854, + '\u1F9B', 855, + '\u1F9C', 856, + '\u1F9D', 857, + '\u1F9E', 858, + '\u1F9F', 859, + '\u1FA0', 860, + '\u1FA1', 861, + '\u1FA2', 862, + '\u1FA3', 863, + '\u1FA4', 864, + '\u1FA5', 865, + '\u1FA6', 866, + '\u1FA7', 867, + '\u1FA8', 868, + '\u1FA9', 869, + '\u1FAA', 870, + '\u1FAB', 871, + '\u1FAC', 872, + '\u1FAD', 873, + '\u1FAE', 874, + '\u1FAF', 875, + '\u1FB0', 876, + '\u1FB1', 877, + '\u1FB2', 878, + '\u1FB3', 879, + '\u1FB4', 880, + '\u1FB6', 881, + '\u1FB7', 882, + '\u1FB8', 883, + '\u1FB9', 884, + '\u1FBA', 885, + '\u1FBB', 311, + '\u1FBC', 886, + '\u1FBD', 887, + '\u1FBE', 888, + '\u1FBF', 887, + '\u1FC0', 889, + '\u1FC1', 890, + '\u1FC2', 891, + '\u1FC3', 892, + '\u1FC4', 893, + '\u1FC6', 894, + '\u1FC7', 895, + '\u1FC8', 896, + '\u1FC9', 313, + '\u1FCA', 897, + '\u1FCB', 314, + '\u1FCC', 898, + '\u1FCD', 899, + '\u1FCE', 900, + '\u1FCF', 901, + '\u1FD0', 902, + '\u1FD1', 903, + '\u1FD2', 904, + '\u1FD3', 319, + '\u1FD6', 905, + '\u1FD7', 906, + '\u1FD8', 907, + '\u1FD9', 908, + '\u1FDA', 909, + '\u1FDB', 315, + '\u1FDD', 910, + '\u1FDE', 911, + '\u1FDF', 912, + '\u1FE0', 913, + '\u1FE1', 914, + '\u1FE2', 915, + '\u1FE3', 326, + '\u1FE4', 916, + '\u1FE5', 917, + '\u1FE6', 918, + '\u1FE7', 919, + '\u1FE8', 920, + '\u1FE9', 921, + '\u1FEA', 922, + '\u1FEB', 317, + '\u1FEC', 923, + '\u1FED', 924, + '\u1FEE', 310, + '\u1FEF', 925, + '\u1FF2', 926, + '\u1FF3', 927, + '\u1FF4', 928, + '\u1FF6', 929, + '\u1FF7', 930, + '\u1FF8', 931, + '\u1FF9', 316, + '\u1FFA', 932, + '\u1FFB', 318, + '\u1FFC', 933, + '\u1FFD', 6, + '\u1FFE', 934, + '\u2000', 0, + '\u2001', 0, + '\u2002', 0, + '\u2003', 0, + '\u2004', 0, + '\u2005', 0, + '\u2006', 0, + '\u2007', 0, + '\u2008', 0, + '\u2009', 0, + '\u200A', 0, + '\u2011', 935, + '\u2017', 936, + '\u2024', 937, + '\u2025', 938, + '\u2026', 939, + '\u202F', 0, + '\u2033', 940, + '\u2034', 941, + '\u2036', 942, + '\u2037', 943, + '\u203C', 944, + '\u203E', 945, + '\u2047', 946, + '\u2048', 947, + '\u2049', 948, + '\u2057', 949, + '\u205F', 0, + '\u2070', 950, + '\u2071', 951, + '\u2074', 952, + '\u2075', 953, + '\u2076', 954, + '\u2077', 955, + '\u2078', 956, + '\u2079', 957, + '\u207A', 958, + '\u207B', 959, + '\u207C', 960, + '\u207D', 961, + '\u207E', 962, + '\u207F', 963, + '\u2080', 950, + '\u2081', 9, + '\u2082', 4, + '\u2083', 5, + '\u2084', 952, + '\u2085', 953, + '\u2086', 954, + '\u2087', 955, + '\u2088', 956, + '\u2089', 957, + '\u208A', 958, + '\u208B', 959, + '\u208C', 960, + '\u208D', 961, + '\u208E', 962, + '\u20A8', 964, + '\u2100', 965, + '\u2101', 966, + '\u2102', 967, + '\u2103', 968, + '\u2105', 969, + '\u2106', 970, + '\u2107', 971, + '\u2109', 972, + '\u210A', 973, + '\u210B', 974, + '\u210C', 974, + '\u210D', 974, + '\u210E', 284, + '\u210F', 975, + '\u2110', 976, + '\u2111', 976, + '\u2112', 977, + '\u2113', 300, + '\u2115', 978, + '\u2116', 979, + '\u2119', 980, + '\u211A', 981, + '\u211B', 982, + '\u211C', 982, + '\u211D', 982, + '\u2120', 983, + '\u2121', 984, + '\u2122', 985, + '\u2124', 986, + '\u2126', 987, + '\u2128', 986, + '\u212A', 988, + '\u212B', 19, + '\u212C', 989, + '\u212D', 967, + '\u212F', 990, + '\u2130', 991, + '\u2131', 992, + '\u2133', 993, + '\u2134', 10, + '\u2135', 994, + '\u2136', 995, + '\u2137', 996, + '\u2138', 997, + '\u2139', 951, + '\u213D', 998, + '\u213E', 999, + '\u213F', 1000, + '\u2140', 1001, + '\u2145', 1002, + '\u2146', 1003, + '\u2147', 990, + '\u2148', 951, + '\u2149', 286, + '\u2153', 1004, + '\u2154', 1005, + '\u2155', 1006, + '\u2156', 1007, + '\u2157', 1008, + '\u2158', 1009, + '\u2159', 1010, + '\u215A', 1011, + '\u215B', 1012, + '\u215C', 1013, + '\u215D', 1014, + '\u215E', 1015, + '\u215F', 1016, + '\u2160', 976, + '\u2161', 1017, + '\u2162', 1018, + '\u2163', 1019, + '\u2164', 1020, + '\u2165', 1021, + '\u2166', 1022, + '\u2167', 1023, + '\u2168', 1024, + '\u2169', 1025, + '\u216A', 1026, + '\u216B', 1027, + '\u216C', 977, + '\u216D', 967, + '\u216E', 1002, + '\u216F', 993, + '\u2170', 951, + '\u2171', 1028, + '\u2172', 1029, + '\u2173', 1030, + '\u2174', 1031, + '\u2175', 1032, + '\u2176', 1033, + '\u2177', 1034, + '\u2178', 1035, + '\u2179', 301, + '\u217A', 1036, + '\u217B', 1037, + '\u217C', 300, + '\u217D', 1038, + '\u217E', 1003, + '\u217F', 1039, + '\u219A', 1040, + '\u219B', 1041, + '\u21AE', 1042, + '\u21CD', 1043, + '\u21CE', 1044, + '\u21CF', 1045, + '\u2204', 1046, + '\u2209', 1047, + '\u220C', 1048, + '\u2224', 1049, + '\u2226', 1050, + '\u222C', 1051, + '\u222D', 1052, + '\u222F', 1053, + '\u2230', 1054, + '\u2241', 1055, + '\u2244', 1056, + '\u2247', 1057, + '\u2249', 1058, + '\u2260', 1059, + '\u2262', 1060, + '\u226D', 1061, + '\u226E', 1062, + '\u226F', 1063, + '\u2270', 1064, + '\u2271', 1065, + '\u2274', 1066, + '\u2275', 1067, + '\u2278', 1068, + '\u2279', 1069, + '\u2280', 1070, + '\u2281', 1071, + '\u2284', 1072, + '\u2285', 1073, + '\u2288', 1074, + '\u2289', 1075, + '\u22AC', 1076, + '\u22AD', 1077, + '\u22AE', 1078, + '\u22AF', 1079, + '\u22E0', 1080, + '\u22E1', 1081, + '\u22E2', 1082, + '\u22E3', 1083, + '\u22EA', 1084, + '\u22EB', 1085, + '\u22EC', 1086, + '\u22ED', 1087, + '\u2329', 1088, + '\u232A', 1089, + '\u2460', 9, + '\u2461', 4, + '\u2462', 5, + '\u2463', 952, + '\u2464', 953, + '\u2465', 954, + '\u2466', 955, + '\u2467', 956, + '\u2468', 957, + '\u2469', 1090, + '\u246A', 1091, + '\u246B', 1092, + '\u246C', 1093, + '\u246D', 1094, + '\u246E', 1095, + '\u246F', 1096, + '\u2470', 1097, + '\u2471', 1098, + '\u2472', 1099, + '\u2473', 1100, + '\u2474', 1101, + '\u2475', 1102, + '\u2476', 1103, + '\u2477', 1104, + '\u2478', 1105, + '\u2479', 1106, + '\u247A', 1107, + '\u247B', 1108, + '\u247C', 1109, + '\u247D', 1110, + '\u247E', 1111, + '\u247F', 1112, + '\u2480', 1113, + '\u2481', 1114, + '\u2482', 1115, + '\u2483', 1116, + '\u2484', 1117, + '\u2485', 1118, + '\u2486', 1119, + '\u2487', 1120, + '\u2488', 1121, + '\u2489', 1122, + '\u248A', 1123, + '\u248B', 1124, + '\u248C', 1125, + '\u248D', 1126, + '\u248E', 1127, + '\u248F', 1128, + '\u2490', 1129, + '\u2491', 1130, + '\u2492', 1131, + '\u2493', 1132, + '\u2494', 1133, + '\u2495', 1134, + '\u2496', 1135, + '\u2497', 1136, + '\u2498', 1137, + '\u2499', 1138, + '\u249A', 1139, + '\u249B', 1140, + '\u249C', 1141, + '\u249D', 1142, + '\u249E', 1143, + '\u249F', 1144, + '\u24A0', 1145, + '\u24A1', 1146, + '\u24A2', 1147, + '\u24A3', 1148, + '\u24A4', 1149, + '\u24A5', 1150, + '\u24A6', 1151, + '\u24A7', 1152, + '\u24A8', 1153, + '\u24A9', 1154, + '\u24AA', 1155, + '\u24AB', 1156, + '\u24AC', 1157, + '\u24AD', 1158, + '\u24AE', 1159, + '\u24AF', 1160, + '\u24B0', 1161, + '\u24B1', 1162, + '\u24B2', 1163, + '\u24B3', 1164, + '\u24B4', 1165, + '\u24B5', 1166, + '\u24B6', 1167, + '\u24B7', 989, + '\u24B8', 967, + '\u24B9', 1002, + '\u24BA', 991, + '\u24BB', 992, + '\u24BC', 1168, + '\u24BD', 974, + '\u24BE', 976, + '\u24BF', 1169, + '\u24C0', 988, + '\u24C1', 977, + '\u24C2', 993, + '\u24C3', 978, + '\u24C4', 1170, + '\u24C5', 980, + '\u24C6', 981, + '\u24C7', 982, + '\u24C8', 1171, + '\u24C9', 1172, + '\u24CA', 1173, + '\u24CB', 1020, + '\u24CC', 1174, + '\u24CD', 1025, + '\u24CE', 1175, + '\u24CF', 986, + '\u24D0', 2, + '\u24D1', 1176, + '\u24D2', 1038, + '\u24D3', 1003, + '\u24D4', 990, + '\u24D5', 1177, + '\u24D6', 973, + '\u24D7', 284, + '\u24D8', 951, + '\u24D9', 286, + '\u24DA', 1178, + '\u24DB', 300, + '\u24DC', 1039, + '\u24DD', 963, + '\u24DE', 10, + '\u24DF', 1179, + '\u24E0', 1180, + '\u24E1', 287, + '\u24E2', 180, + '\u24E3', 1181, + '\u24E4', 1182, + '\u24E5', 1031, + '\u24E6', 291, + '\u24E7', 301, + '\u24E8', 292, + '\u24E9', 1183, + '\u24EA', 950, + '\u2A0C', 1184, + '\u2A74', 1185, + '\u2A75', 1186, + '\u2A76', 1187, + '\u2ADC', 1188, + '\u2E9F', 1189, + '\u2EF3', 1190, + '\u2F00', 1191, + '\u2F01', 1192, + '\u2F02', 1193, + '\u2F03', 1194, + '\u2F04', 1195, + '\u2F05', 1196, + '\u2F06', 1197, + '\u2F07', 1198, + '\u2F08', 1199, + '\u2F09', 1200, + '\u2F0A', 1201, + '\u2F0B', 1202, + '\u2F0C', 1203, + '\u2F0D', 1204, + '\u2F0E', 1205, + '\u2F0F', 1206, + '\u2F10', 1207, + '\u2F11', 1208, + '\u2F12', 1209, + '\u2F13', 1210, + '\u2F14', 1211, + '\u2F15', 1212, + '\u2F16', 1213, + '\u2F17', 1214, + '\u2F18', 1215, + '\u2F19', 1216, + '\u2F1A', 1217, + '\u2F1B', 1218, + '\u2F1C', 1219, + '\u2F1D', 1220, + '\u2F1E', 1221, + '\u2F1F', 1222, + '\u2F20', 1223, + '\u2F21', 1224, + '\u2F22', 1225, + '\u2F23', 1226, + '\u2F24', 1227, + '\u2F25', 1228, + '\u2F26', 1229, + '\u2F27', 1230, + '\u2F28', 1231, + '\u2F29', 1232, + '\u2F2A', 1233, + '\u2F2B', 1234, + '\u2F2C', 1235, + '\u2F2D', 1236, + '\u2F2E', 1237, + '\u2F2F', 1238, + '\u2F30', 1239, + '\u2F31', 1240, + '\u2F32', 1241, + '\u2F33', 1242, + '\u2F34', 1243, + '\u2F35', 1244, + '\u2F36', 1245, + '\u2F37', 1246, + '\u2F38', 1247, + '\u2F39', 1248, + '\u2F3A', 1249, + '\u2F3B', 1250, + '\u2F3C', 1251, + '\u2F3D', 1252, + '\u2F3E', 1253, + '\u2F3F', 1254, + '\u2F40', 1255, + '\u2F41', 1256, + '\u2F42', 1257, + '\u2F43', 1258, + '\u2F44', 1259, + '\u2F45', 1260, + '\u2F46', 1261, + '\u2F47', 1262, + '\u2F48', 1263, + '\u2F49', 1264, + '\u2F4A', 1265, + '\u2F4B', 1266, + '\u2F4C', 1267, + '\u2F4D', 1268, + '\u2F4E', 1269, + '\u2F4F', 1270, + '\u2F50', 1271, + '\u2F51', 1272, + '\u2F52', 1273, + '\u2F53', 1274, + '\u2F54', 1275, + '\u2F55', 1276, + '\u2F56', 1277, + '\u2F57', 1278, + '\u2F58', 1279, + '\u2F59', 1280, + '\u2F5A', 1281, + '\u2F5B', 1282, + '\u2F5C', 1283, + '\u2F5D', 1284, + '\u2F5E', 1285, + '\u2F5F', 1286, + '\u2F60', 1287, + '\u2F61', 1288, + '\u2F62', 1289, + '\u2F63', 1290, + '\u2F64', 1291, + '\u2F65', 1292, + '\u2F66', 1293, + '\u2F67', 1294, + '\u2F68', 1295, + '\u2F69', 1296, + '\u2F6A', 1297, + '\u2F6B', 1298, + '\u2F6C', 1299, + '\u2F6D', 1300, + '\u2F6E', 1301, + '\u2F6F', 1302, + '\u2F70', 1303, + '\u2F71', 1304, + '\u2F72', 1305, + '\u2F73', 1306, + '\u2F74', 1307, + '\u2F75', 1308, + '\u2F76', 1309, + '\u2F77', 1310, + '\u2F78', 1311, + '\u2F79', 1312, + '\u2F7A', 1313, + '\u2F7B', 1314, + '\u2F7C', 1315, + '\u2F7D', 1316, + '\u2F7E', 1317, + '\u2F7F', 1318, + '\u2F80', 1319, + '\u2F81', 1320, + '\u2F82', 1321, + '\u2F83', 1322, + '\u2F84', 1323, + '\u2F85', 1324, + '\u2F86', 1325, + '\u2F87', 1326, + '\u2F88', 1327, + '\u2F89', 1328, + '\u2F8A', 1329, + '\u2F8B', 1330, + '\u2F8C', 1331, + '\u2F8D', 1332, + '\u2F8E', 1333, + '\u2F8F', 1334, + '\u2F90', 1335, + '\u2F91', 1336, + '\u2F92', 1337, + '\u2F93', 1338, + '\u2F94', 1339, + '\u2F95', 1340, + '\u2F96', 1341, + '\u2F97', 1342, + '\u2F98', 1343, + '\u2F99', 1344, + '\u2F9A', 1345, + '\u2F9B', 1346, + '\u2F9C', 1347, + '\u2F9D', 1348, + '\u2F9E', 1349, + '\u2F9F', 1350, + '\u2FA0', 1351, + '\u2FA1', 1352, + '\u2FA2', 1353, + '\u2FA3', 1354, + '\u2FA4', 1355, + '\u2FA5', 1356, + '\u2FA6', 1357, + '\u2FA7', 1358, + '\u2FA8', 1359, + '\u2FA9', 1360, + '\u2FAA', 1361, + '\u2FAB', 1362, + '\u2FAC', 1363, + '\u2FAD', 1364, + '\u2FAE', 1365, + '\u2FAF', 1366, + '\u2FB0', 1367, + '\u2FB1', 1368, + '\u2FB2', 1369, + '\u2FB3', 1370, + '\u2FB4', 1371, + '\u2FB5', 1372, + '\u2FB6', 1373, + '\u2FB7', 1374, + '\u2FB8', 1375, + '\u2FB9', 1376, + '\u2FBA', 1377, + '\u2FBB', 1378, + '\u2FBC', 1379, + '\u2FBD', 1380, + '\u2FBE', 1381, + '\u2FBF', 1382, + '\u2FC0', 1383, + '\u2FC1', 1384, + '\u2FC2', 1385, + '\u2FC3', 1386, + '\u2FC4', 1387, + '\u2FC5', 1388, + '\u2FC6', 1389, + '\u2FC7', 1390, + '\u2FC8', 1391, + '\u2FC9', 1392, + '\u2FCA', 1393, + '\u2FCB', 1394, + '\u2FCC', 1395, + '\u2FCD', 1396, + '\u2FCE', 1397, + '\u2FCF', 1398, + '\u2FD0', 1399, + '\u2FD1', 1400, + '\u2FD2', 1401, + '\u2FD3', 1402, + '\u2FD4', 1403, + '\u2FD5', 1404, + '\u3000', 0, + '\u3036', 1405, + '\u3038', 1214, + '\u3039', 1406, + '\u303A', 1407, + '\u304C', 1408, + '\u304E', 1409, + '\u3050', 1410, + '\u3052', 1411, + '\u3054', 1412, + '\u3056', 1413, + '\u3058', 1414, + '\u305A', 1415, + '\u305C', 1416, + '\u305E', 1417, + '\u3060', 1418, + '\u3062', 1419, + '\u3065', 1420, + '\u3067', 1421, + '\u3069', 1422, + '\u3070', 1423, + '\u3071', 1424, + '\u3073', 1425, + '\u3074', 1426, + '\u3076', 1427, + '\u3077', 1428, + '\u3079', 1429, + '\u307A', 1430, + '\u307C', 1431, + '\u307D', 1432, + '\u3094', 1433, + '\u309B', 1434, + '\u309C', 1435, + '\u309E', 1436, + '\u309F', 1437, + '\u30AC', 1438, + '\u30AE', 1439, + '\u30B0', 1440, + '\u30B2', 1441, + '\u30B4', 1442, + '\u30B6', 1443, + '\u30B8', 1444, + '\u30BA', 1445, + '\u30BC', 1446, + '\u30BE', 1447, + '\u30C0', 1448, + '\u30C2', 1449, + '\u30C5', 1450, + '\u30C7', 1451, + '\u30C9', 1452, + '\u30D0', 1453, + '\u30D1', 1454, + '\u30D3', 1455, + '\u30D4', 1456, + '\u30D6', 1457, + '\u30D7', 1458, + '\u30D9', 1459, + '\u30DA', 1460, + '\u30DC', 1461, + '\u30DD', 1462, + '\u30F4', 1463, + '\u30F7', 1464, + '\u30F8', 1465, + '\u30F9', 1466, + '\u30FA', 1467, + '\u30FE', 1468, + '\u30FF', 1469, + '\u3131', 1470, + '\u3132', 1471, + '\u3133', 1472, + '\u3134', 1473, + '\u3135', 1474, + '\u3136', 1475, + '\u3137', 1476, + '\u3138', 1477, + '\u3139', 1478, + '\u313A', 1479, + '\u313B', 1480, + '\u313C', 1481, + '\u313D', 1482, + '\u313E', 1483, + '\u313F', 1484, + '\u3140', 1485, + '\u3141', 1486, + '\u3142', 1487, + '\u3143', 1488, + '\u3144', 1489, + '\u3145', 1490, + '\u3146', 1491, + '\u3147', 1492, + '\u3148', 1493, + '\u3149', 1494, + '\u314A', 1495, + '\u314B', 1496, + '\u314C', 1497, + '\u314D', 1498, + '\u314E', 1499, + '\u314F', 1500, + '\u3150', 1501, + '\u3151', 1502, + '\u3152', 1503, + '\u3153', 1504, + '\u3154', 1505, + '\u3155', 1506, + '\u3156', 1507, + '\u3157', 1508, + '\u3158', 1509, + '\u3159', 1510, + '\u315A', 1511, + '\u315B', 1512, + '\u315C', 1513, + '\u315D', 1514, + '\u315E', 1515, + '\u315F', 1516, + '\u3160', 1517, + '\u3161', 1518, + '\u3162', 1519, + '\u3163', 1520, + '\u3164', 1521, + '\u3165', 1522, + '\u3166', 1523, + '\u3167', 1524, + '\u3168', 1525, + '\u3169', 1526, + '\u316A', 1527, + '\u316B', 1528, + '\u316C', 1529, + '\u316D', 1530, + '\u316E', 1531, + '\u316F', 1532, + '\u3170', 1533, + '\u3171', 1534, + '\u3172', 1535, + '\u3173', 1536, + '\u3174', 1537, + '\u3175', 1538, + '\u3176', 1539, + '\u3177', 1540, + '\u3178', 1541, + '\u3179', 1542, + '\u317A', 1543, + '\u317B', 1544, + '\u317C', 1545, + '\u317D', 1546, + '\u317E', 1547, + '\u317F', 1548, + '\u3180', 1549, + '\u3181', 1550, + '\u3182', 1551, + '\u3183', 1552, + '\u3184', 1553, + '\u3185', 1554, + '\u3186', 1555, + '\u3187', 1556, + '\u3188', 1557, + '\u3189', 1558, + '\u318A', 1559, + '\u318B', 1560, + '\u318C', 1561, + '\u318D', 1562, + '\u318E', 1563, + '\u3192', 1191, + '\u3193', 1197, + '\u3194', 1564, + '\u3195', 1565, + '\u3196', 1566, + '\u3197', 1567, + '\u3198', 1568, + '\u3199', 1569, + '\u319A', 1195, + '\u319B', 1570, + '\u319C', 1571, + '\u319D', 1572, + '\u319E', 1573, + '\u319F', 1199, + '\u3200', 1574, + '\u3201', 1575, + '\u3202', 1576, + '\u3203', 1577, + '\u3204', 1578, + '\u3205', 1579, + '\u3206', 1580, + '\u3207', 1581, + '\u3208', 1582, + '\u3209', 1583, + '\u320A', 1584, + '\u320B', 1585, + '\u320C', 1586, + '\u320D', 1587, + '\u320E', 1588, + '\u320F', 1589, + '\u3210', 1590, + '\u3211', 1591, + '\u3212', 1592, + '\u3213', 1593, + '\u3214', 1594, + '\u3215', 1595, + '\u3216', 1596, + '\u3217', 1597, + '\u3218', 1598, + '\u3219', 1599, + '\u321A', 1600, + '\u321B', 1601, + '\u321C', 1602, + '\u3220', 1603, + '\u3221', 1604, + '\u3222', 1605, + '\u3223', 1606, + '\u3224', 1607, + '\u3225', 1608, + '\u3226', 1609, + '\u3227', 1610, + '\u3228', 1611, + '\u3229', 1612, + '\u322A', 1613, + '\u322B', 1614, + '\u322C', 1615, + '\u322D', 1616, + '\u322E', 1617, + '\u322F', 1618, + '\u3230', 1619, + '\u3231', 1620, + '\u3232', 1621, + '\u3233', 1622, + '\u3234', 1623, + '\u3235', 1624, + '\u3236', 1625, + '\u3237', 1626, + '\u3238', 1627, + '\u3239', 1628, + '\u323A', 1629, + '\u323B', 1630, + '\u323C', 1631, + '\u323D', 1632, + '\u323E', 1633, + '\u323F', 1634, + '\u3240', 1635, + '\u3241', 1636, + '\u3242', 1637, + '\u3243', 1638, + '\u3251', 1639, + '\u3252', 1640, + '\u3253', 1641, + '\u3254', 1642, + '\u3255', 1643, + '\u3256', 1644, + '\u3257', 1645, + '\u3258', 1646, + '\u3259', 1647, + '\u325A', 1648, + '\u325B', 1649, + '\u325C', 1650, + '\u325D', 1651, + '\u325E', 1652, + '\u325F', 1653, + '\u3260', 1470, + '\u3261', 1473, + '\u3262', 1476, + '\u3263', 1478, + '\u3264', 1486, + '\u3265', 1487, + '\u3266', 1490, + '\u3267', 1492, + '\u3268', 1493, + '\u3269', 1495, + '\u326A', 1496, + '\u326B', 1497, + '\u326C', 1498, + '\u326D', 1499, + '\u326E', 1654, + '\u326F', 1655, + '\u3270', 1656, + '\u3271', 1657, + '\u3272', 1658, + '\u3273', 1659, + '\u3274', 1660, + '\u3275', 1661, + '\u3276', 1662, + '\u3277', 1663, + '\u3278', 1664, + '\u3279', 1665, + '\u327A', 1666, + '\u327B', 1667, + '\u3280', 1191, + '\u3281', 1197, + '\u3282', 1564, + '\u3283', 1565, + '\u3284', 1668, + '\u3285', 1669, + '\u3286', 1670, + '\u3287', 1202, + '\u3288', 1671, + '\u3289', 1214, + '\u328A', 1264, + '\u328B', 1276, + '\u328C', 1275, + '\u328D', 1265, + '\u328E', 1357, + '\u328F', 1222, + '\u3290', 1262, + '\u3291', 1672, + '\u3292', 1673, + '\u3293', 1674, + '\u3294', 1675, + '\u3295', 1676, + '\u3296', 1677, + '\u3297', 1678, + '\u3298', 1679, + '\u3299', 1680, + '\u329A', 1681, + '\u329B', 1228, + '\u329C', 1682, + '\u329D', 1683, + '\u329E', 1684, + '\u329F', 1685, + '\u32A0', 1686, + '\u32A1', 1687, + '\u32A2', 1688, + '\u32A3', 1689, + '\u32A4', 1566, + '\u32A5', 1567, + '\u32A6', 1568, + '\u32A7', 1690, + '\u32A8', 1691, + '\u32A9', 1692, + '\u32AA', 1693, + '\u32AB', 1694, + '\u32AC', 1695, + '\u32AD', 1696, + '\u32AE', 1697, + '\u32AF', 1698, + '\u32B0', 1699, + '\u32B1', 1700, + '\u32B2', 1701, + '\u32B3', 1702, + '\u32B4', 1703, + '\u32B5', 1704, + '\u32B6', 1705, + '\u32B7', 1706, + '\u32B8', 1707, + '\u32B9', 1708, + '\u32BA', 1709, + '\u32BB', 1710, + '\u32BC', 1711, + '\u32BD', 1712, + '\u32BE', 1713, + '\u32BF', 1714, + '\u32C0', 1715, + '\u32C1', 1716, + '\u32C2', 1717, + '\u32C3', 1718, + '\u32C4', 1719, + '\u32C5', 1720, + '\u32C6', 1721, + '\u32C7', 1722, + '\u32C8', 1723, + '\u32C9', 1724, + '\u32CA', 1725, + '\u32CB', 1726, + '\u32D0', 1727, + '\u32D1', 1728, + '\u32D2', 1729, + '\u32D3', 1730, + '\u32D4', 1731, + '\u32D5', 1732, + '\u32D6', 1733, + '\u32D7', 1734, + '\u32D8', 1735, + '\u32D9', 1736, + '\u32DA', 1737, + '\u32DB', 1738, + '\u32DC', 1739, + '\u32DD', 1740, + '\u32DE', 1741, + '\u32DF', 1742, + '\u32E0', 1743, + '\u32E1', 1744, + '\u32E2', 1745, + '\u32E3', 1746, + '\u32E4', 1747, + '\u32E5', 1748, + '\u32E6', 1749, + '\u32E7', 1750, + '\u32E8', 1751, + '\u32E9', 1752, + '\u32EA', 1753, + '\u32EB', 1754, + '\u32EC', 1755, + '\u32ED', 1756, + '\u32EE', 1757, + '\u32EF', 1758, + '\u32F0', 1759, + '\u32F1', 1760, + '\u32F2', 1761, + '\u32F3', 1762, + '\u32F4', 1763, + '\u32F5', 1764, + '\u32F6', 1765, + '\u32F7', 1766, + '\u32F8', 1767, + '\u32F9', 1768, + '\u32FA', 1769, + '\u32FB', 1770, + '\u32FC', 1771, + '\u32FD', 1772, + '\u32FE', 1773, + '\u3300', 1774, + '\u3301', 1775, + '\u3302', 1776, + '\u3303', 1777, + '\u3304', 1778, + '\u3305', 1779, + '\u3306', 1780, + '\u3307', 1781, + '\u3308', 1782, + '\u3309', 1783, + '\u330A', 1784, + '\u330B', 1785, + '\u330C', 1786, + '\u330D', 1787, + '\u330E', 1788, + '\u330F', 1789, + '\u3310', 1790, + '\u3311', 1791, + '\u3312', 1792, + '\u3313', 1793, + '\u3314', 1794, + '\u3315', 1795, + '\u3316', 1796, + '\u3317', 1797, + '\u3318', 1798, + '\u3319', 1799, + '\u331A', 1800, + '\u331B', 1801, + '\u331C', 1802, + '\u331D', 1803, + '\u331E', 1804, + '\u331F', 1805, + '\u3320', 1806, + '\u3321', 1807, + '\u3322', 1808, + '\u3323', 1809, + '\u3324', 1810, + '\u3325', 1811, + '\u3326', 1812, + '\u3327', 1813, + '\u3328', 1814, + '\u3329', 1815, + '\u332A', 1816, + '\u332B', 1817, + '\u332C', 1818, + '\u332D', 1819, + '\u332E', 1820, + '\u332F', 1821, + '\u3330', 1822, + '\u3331', 1823, + '\u3332', 1824, + '\u3333', 1825, + '\u3334', 1826, + '\u3335', 1827, + '\u3336', 1828, + '\u3337', 1829, + '\u3338', 1830, + '\u3339', 1831, + '\u333A', 1832, + '\u333B', 1833, + '\u333C', 1834, + '\u333D', 1835, + '\u333E', 1836, + '\u333F', 1837, + '\u3340', 1838, + '\u3341', 1839, + '\u3342', 1840, + '\u3343', 1841, + '\u3344', 1842, + '\u3345', 1843, + '\u3346', 1844, + '\u3347', 1845, + '\u3348', 1846, + '\u3349', 1847, + '\u334A', 1848, + '\u334B', 1849, + '\u334C', 1850, + '\u334D', 1851, + '\u334E', 1852, + '\u334F', 1853, + '\u3350', 1854, + '\u3351', 1855, + '\u3352', 1856, + '\u3353', 1857, + '\u3354', 1858, + '\u3355', 1859, + '\u3356', 1860, + '\u3357', 1861, + '\u3358', 1862, + '\u3359', 1863, + '\u335A', 1864, + '\u335B', 1865, + '\u335C', 1866, + '\u335D', 1867, + '\u335E', 1868, + '\u335F', 1869, + '\u3360', 1870, + '\u3361', 1871, + '\u3362', 1872, + '\u3363', 1873, + '\u3364', 1874, + '\u3365', 1875, + '\u3366', 1876, + '\u3367', 1877, + '\u3368', 1878, + '\u3369', 1879, + '\u336A', 1880, + '\u336B', 1881, + '\u336C', 1882, + '\u336D', 1883, + '\u336E', 1884, + '\u336F', 1885, + '\u3370', 1886, + '\u3371', 1887, + '\u3372', 1888, + '\u3373', 1889, + '\u3374', 1890, + '\u3375', 1891, + '\u3376', 1892, + '\u337B', 1893, + '\u337C', 1894, + '\u337D', 1895, + '\u337E', 1896, + '\u337F', 1897, + '\u3380', 1898, + '\u3381', 1899, + '\u3382', 1900, + '\u3383', 1901, + '\u3384', 1902, + '\u3385', 1903, + '\u3386', 1904, + '\u3387', 1905, + '\u3388', 1906, + '\u3389', 1907, + '\u338A', 1908, + '\u338B', 1909, + '\u338C', 1910, + '\u338D', 1911, + '\u338E', 1912, + '\u338F', 1913, + '\u3390', 1914, + '\u3391', 1915, + '\u3392', 1916, + '\u3393', 1917, + '\u3394', 1918, + '\u3395', 1919, + '\u3396', 1920, + '\u3397', 1921, + '\u3398', 1922, + '\u3399', 1923, + '\u339A', 1924, + '\u339B', 1925, + '\u339C', 1926, + '\u339D', 1927, + '\u339E', 1928, + '\u339F', 1929, + '\u33A0', 1930, + '\u33A1', 1931, + '\u33A2', 1932, + '\u33A3', 1933, + '\u33A4', 1934, + '\u33A5', 1935, + '\u33A6', 1936, + '\u33A7', 1937, + '\u33A8', 1938, + '\u33A9', 1939, + '\u33AA', 1940, + '\u33AB', 1941, + '\u33AC', 1942, + '\u33AD', 1943, + '\u33AE', 1944, + '\u33AF', 1945, + '\u33B0', 1946, + '\u33B1', 1947, + '\u33B2', 1948, + '\u33B3', 1949, + '\u33B4', 1950, + '\u33B5', 1951, + '\u33B6', 1952, + '\u33B7', 1953, + '\u33B8', 1954, + '\u33B9', 1955, + '\u33BA', 1956, + '\u33BB', 1957, + '\u33BC', 1958, + '\u33BD', 1959, + '\u33BE', 1960, + '\u33BF', 1961, + '\u33C0', 1962, + '\u33C1', 1963, + '\u33C2', 1964, + '\u33C3', 1965, + '\u33C4', 1966, + '\u33C5', 1967, + '\u33C6', 1968, + '\u33C7', 1969, + '\u33C8', 1970, + '\u33C9', 1971, + '\u33CA', 1972, + '\u33CB', 1973, + '\u33CC', 1974, + '\u33CD', 1975, + '\u33CE', 1976, + '\u33CF', 1977, + '\u33D0', 1978, + '\u33D1', 1979, + '\u33D2', 1980, + '\u33D3', 1981, + '\u33D4', 1982, + '\u33D5', 1983, + '\u33D6', 1984, + '\u33D7', 1985, + '\u33D8', 1986, + '\u33D9', 1987, + '\u33DA', 1988, + '\u33DB', 1989, + '\u33DC', 1990, + '\u33DD', 1991, + '\u33E0', 1992, + '\u33E1', 1993, + '\u33E2', 1994, + '\u33E3', 1995, + '\u33E4', 1996, + '\u33E5', 1997, + '\u33E6', 1998, + '\u33E7', 1999, + '\u33E8', 2000, + '\u33E9', 2001, + '\u33EA', 2002, + '\u33EB', 2003, + '\u33EC', 2004, + '\u33ED', 2005, + '\u33EE', 2006, + '\u33EF', 2007, + '\u33F0', 2008, + '\u33F1', 2009, + '\u33F2', 2010, + '\u33F3', 2011, + '\u33F4', 2012, + '\u33F5', 2013, + '\u33F6', 2014, + '\u33F7', 2015, + '\u33F8', 2016, + '\u33F9', 2017, + '\u33FA', 2018, + '\u33FB', 2019, + '\u33FC', 2020, + '\u33FD', 2021, + '\u33FE', 2022, + '\uF900', 2023, + '\uF901', 2024, + '\uF902', 1349, + '\uF903', 2025, + '\uF904', 2026, + '\uF905', 2027, + '\uF906', 2028, + '\uF907', 1403, + '\uF908', 1403, + '\uF909', 2029, + '\uF90A', 1357, + '\uF90B', 2030, + '\uF90C', 2031, + '\uF90D', 2032, + '\uF90E', 2033, + '\uF90F', 2034, + '\uF910', 2035, + '\uF911', 2036, + '\uF912', 2037, + '\uF913', 2038, + '\uF914', 2039, + '\uF915', 2040, + '\uF916', 2041, + '\uF917', 2042, + '\uF918', 2043, + '\uF919', 2044, + '\uF91A', 2045, + '\uF91B', 2046, + '\uF91C', 2047, + '\uF91D', 2048, + '\uF91E', 2049, + '\uF91F', 2050, + '\uF920', 2051, + '\uF921', 2052, + '\uF922', 2053, + '\uF923', 2054, + '\uF924', 2055, + '\uF925', 2056, + '\uF926', 2057, + '\uF927', 2058, + '\uF928', 2059, + '\uF929', 2060, + '\uF92A', 2061, + '\uF92B', 2062, + '\uF92C', 2063, + '\uF92D', 2064, + '\uF92E', 2065, + '\uF92F', 2066, + '\uF930', 2067, + '\uF931', 2068, + '\uF932', 2069, + '\uF933', 2070, + '\uF934', 1315, + '\uF935', 2071, + '\uF936', 2072, + '\uF937', 2073, + '\uF938', 2074, + '\uF939', 2075, + '\uF93A', 2076, + '\uF93B', 2077, + '\uF93C', 2078, + '\uF93D', 2079, + '\uF93E', 2080, + '\uF93F', 2081, + '\uF940', 1388, + '\uF941', 2082, + '\uF942', 2083, + '\uF943', 2084, + '\uF944', 2085, + '\uF945', 2086, + '\uF946', 2087, + '\uF947', 2088, + '\uF948', 2089, + '\uF949', 2090, + '\uF94A', 2091, + '\uF94B', 2092, + '\uF94C', 2093, + '\uF94D', 2094, + '\uF94E', 2095, + '\uF94F', 2096, + '\uF950', 2097, + '\uF951', 2098, + '\uF952', 2099, + '\uF953', 2100, + '\uF954', 2101, + '\uF955', 2102, + '\uF956', 2103, + '\uF957', 2104, + '\uF958', 2105, + '\uF959', 2106, + '\uF95A', 2107, + '\uF95B', 2108, + '\uF95C', 2039, + '\uF95D', 2109, + '\uF95E', 2110, + '\uF95F', 2111, + '\uF960', 2112, + '\uF961', 2113, + '\uF962', 2114, + '\uF963', 2115, + '\uF964', 2116, + '\uF965', 2117, + '\uF966', 2118, + '\uF967', 2119, + '\uF968', 2120, + '\uF969', 2121, + '\uF96A', 2122, + '\uF96B', 2123, + '\uF96C', 2124, + '\uF96D', 2125, + '\uF96E', 2126, + '\uF96F', 2127, + '\uF970', 2128, + '\uF971', 1351, + '\uF972', 2129, + '\uF973', 2130, + '\uF974', 2131, + '\uF975', 2132, + '\uF976', 2133, + '\uF977', 2134, + '\uF978', 2135, + '\uF979', 2136, + '\uF97A', 2137, + '\uF97B', 2138, + '\uF97C', 2139, + '\uF97D', 2140, + '\uF97E', 2141, + '\uF97F', 2142, + '\uF980', 2143, + '\uF981', 1228, + '\uF982', 2144, + '\uF983', 2145, + '\uF984', 2146, + '\uF985', 2147, + '\uF986', 2148, + '\uF987', 2149, + '\uF988', 2150, + '\uF989', 2151, + '\uF98A', 1209, + '\uF98B', 2152, + '\uF98C', 2153, + '\uF98D', 2154, + '\uF98E', 2155, + '\uF98F', 2156, + '\uF990', 2157, + '\uF991', 2158, + '\uF992', 2159, + '\uF993', 2160, + '\uF994', 2161, + '\uF995', 2162, + '\uF996', 2163, + '\uF997', 2164, + '\uF998', 2165, + '\uF999', 2166, + '\uF99A', 2167, + '\uF99B', 2168, + '\uF99C', 2169, + '\uF99D', 2170, + '\uF99E', 2171, + '\uF99F', 2172, + '\uF9A0', 2173, + '\uF9A1', 2127, + '\uF9A2', 2174, + '\uF9A3', 2175, + '\uF9A4', 2176, + '\uF9A5', 2177, + '\uF9A6', 2178, + '\uF9A7', 2179, + '\uF9A8', 2180, + '\uF9A9', 2181, + '\uF9AA', 2111, + '\uF9AB', 2182, + '\uF9AC', 2183, + '\uF9AD', 2184, + '\uF9AE', 2185, + '\uF9AF', 2186, + '\uF9B0', 2187, + '\uF9B1', 2188, + '\uF9B2', 2189, + '\uF9B3', 2190, + '\uF9B4', 2191, + '\uF9B5', 2192, + '\uF9B6', 2193, + '\uF9B7', 2194, + '\uF9B8', 2195, + '\uF9B9', 2196, + '\uF9BA', 2197, + '\uF9BB', 2198, + '\uF9BC', 2199, + '\uF9BD', 2200, + '\uF9BE', 2201, + '\uF9BF', 2039, + '\uF9C0', 2202, + '\uF9C1', 2203, + '\uF9C2', 2204, + '\uF9C3', 2205, + '\uF9C4', 1402, + '\uF9C5', 2206, + '\uF9C6', 2207, + '\uF9C7', 2208, + '\uF9C8', 2209, + '\uF9C9', 2210, + '\uF9CA', 2211, + '\uF9CB', 2212, + '\uF9CC', 2213, + '\uF9CD', 2214, + '\uF9CE', 2215, + '\uF9CF', 2216, + '\uF9D0', 2217, + '\uF9D1', 1669, + '\uF9D2', 2218, + '\uF9D3', 2219, + '\uF9D4', 2220, + '\uF9D5', 2221, + '\uF9D6', 2222, + '\uF9D7', 2223, + '\uF9D8', 2224, + '\uF9D9', 2225, + '\uF9DA', 2226, + '\uF9DB', 2113, + '\uF9DC', 2227, + '\uF9DD', 2228, + '\uF9DE', 2229, + '\uF9DF', 2230, + '\uF9E0', 2231, + '\uF9E1', 2232, + '\uF9E2', 2233, + '\uF9E3', 2234, + '\uF9E4', 2235, + '\uF9E5', 2236, + '\uF9E6', 2237, + '\uF9E7', 2238, + '\uF9E8', 2239, + '\uF9E9', 1356, + '\uF9EA', 2240, + '\uF9EB', 2241, + '\uF9EC', 2242, + '\uF9ED', 2243, + '\uF9EE', 2244, + '\uF9EF', 2245, + '\uF9F0', 2246, + '\uF9F1', 2247, + '\uF9F2', 2248, + '\uF9F3', 2249, + '\uF9F4', 2250, + '\uF9F5', 2251, + '\uF9F6', 2252, + '\uF9F7', 1307, + '\uF9F8', 2253, + '\uF9F9', 2254, + '\uF9FA', 2255, + '\uF9FB', 2256, + '\uF9FC', 2257, + '\uF9FD', 2258, + '\uF9FE', 2259, + '\uF9FF', 2260, + '\uFA00', 2261, + '\uFA01', 2262, + '\uFA02', 2263, + '\uFA03', 2264, + '\uFA04', 2265, + '\uFA05', 2266, + '\uFA06', 2267, + '\uFA07', 2268, + '\uFA08', 1334, + '\uFA09', 2269, + '\uFA0A', 1337, + '\uFA0B', 2270, + '\uFA0C', 2271, + '\uFA0D', 2272, + '\uFA10', 2273, + '\uFA12', 2274, + '\uFA15', 2275, + '\uFA16', 2276, + '\uFA17', 2277, + '\uFA18', 2278, + '\uFA19', 2279, + '\uFA1A', 2280, + '\uFA1B', 2281, + '\uFA1C', 2282, + '\uFA1D', 2283, + '\uFA1E', 1314, + '\uFA20', 2284, + '\uFA22', 2285, + '\uFA25', 2286, + '\uFA26', 2287, + '\uFA2A', 2288, + '\uFA2B', 2289, + '\uFA2C', 2290, + '\uFA2D', 2291, + '\uFA30', 2292, + '\uFA31', 2293, + '\uFA32', 2294, + '\uFA33', 2295, + '\uFA34', 2296, + '\uFA35', 2297, + '\uFA36', 2298, + '\uFA37', 2299, + '\uFA38', 2300, + '\uFA39', 2301, + '\uFA3A', 2302, + '\uFA3B', 2303, + '\uFA3C', 1235, + '\uFA3D', 2304, + '\uFA3E', 2305, + '\uFA3F', 2306, + '\uFA40', 2307, + '\uFA41', 2308, + '\uFA42', 2309, + '\uFA43', 2310, + '\uFA44', 2311, + '\uFA45', 2312, + '\uFA46', 2313, + '\uFA47', 2314, + '\uFA48', 2315, + '\uFA49', 2316, + '\uFA4A', 2317, + '\uFA4B', 2318, + '\uFA4C', 1674, + '\uFA4D', 2319, + '\uFA4E', 2320, + '\uFA4F', 2321, + '\uFA50', 2322, + '\uFA51', 1678, + '\uFA52', 2323, + '\uFA53', 2324, + '\uFA54', 2325, + '\uFA55', 2326, + '\uFA56', 2327, + '\uFA57', 2163, + '\uFA58', 2328, + '\uFA59', 2329, + '\uFA5A', 2330, + '\uFA5B', 2331, + '\uFA5C', 2332, + '\uFA5D', 2333, + '\uFA5E', 2333, + '\uFA5F', 2334, + '\uFA60', 2335, + '\uFA61', 2336, + '\uFA62', 2337, + '\uFA63', 2338, + '\uFA64', 2339, + '\uFA65', 2340, + '\uFA66', 2341, + '\uFA67', 2286, + '\uFA68', 2342, + '\uFA69', 2343, + '\uFA6A', 2344, + '\uFB00', 2345, + '\uFB01', 2346, + '\uFB02', 2347, + '\uFB03', 2348, + '\uFB04', 2349, + '\uFB05', 2350, + '\uFB06', 2350, + '\uFB13', 2351, + '\uFB14', 2352, + '\uFB15', 2353, + '\uFB16', 2354, + '\uFB17', 2355, + '\uFB1D', 2356, + '\uFB1F', 2357, + '\uFB20', 2358, + '\uFB21', 994, + '\uFB22', 997, + '\uFB23', 2359, + '\uFB24', 2360, + '\uFB25', 2361, + '\uFB26', 2362, + '\uFB27', 2363, + '\uFB28', 2364, + '\uFB29', 958, + '\uFB2A', 2365, + '\uFB2B', 2366, + '\uFB2C', 2367, + '\uFB2D', 2368, + '\uFB2E', 2369, + '\uFB2F', 2370, + '\uFB30', 2371, + '\uFB31', 2372, + '\uFB32', 2373, + '\uFB33', 2374, + '\uFB34', 2375, + '\uFB35', 2376, + '\uFB36', 2377, + '\uFB38', 2378, + '\uFB39', 2379, + '\uFB3A', 2380, + '\uFB3B', 2381, + '\uFB3C', 2382, + '\uFB3E', 2383, + '\uFB40', 2384, + '\uFB41', 2385, + '\uFB43', 2386, + '\uFB44', 2387, + '\uFB46', 2388, + '\uFB47', 2389, + '\uFB48', 2390, + '\uFB49', 2391, + '\uFB4A', 2392, + '\uFB4B', 2393, + '\uFB4C', 2394, + '\uFB4D', 2395, + '\uFB4E', 2396, + '\uFB4F', 2397, + '\uFB50', 2398, + '\uFB51', 2398, + '\uFB52', 2399, + '\uFB53', 2399, + '\uFB54', 2399, + '\uFB55', 2399, + '\uFB56', 2400, + '\uFB57', 2400, + '\uFB58', 2400, + '\uFB59', 2400, + '\uFB5A', 2401, + '\uFB5B', 2401, + '\uFB5C', 2401, + '\uFB5D', 2401, + '\uFB5E', 2402, + '\uFB5F', 2402, + '\uFB60', 2402, + '\uFB61', 2402, + '\uFB62', 2403, + '\uFB63', 2403, + '\uFB64', 2403, + '\uFB65', 2403, + '\uFB66', 2404, + '\uFB67', 2404, + '\uFB68', 2404, + '\uFB69', 2404, + '\uFB6A', 2405, + '\uFB6B', 2405, + '\uFB6C', 2405, + '\uFB6D', 2405, + '\uFB6E', 2406, + '\uFB6F', 2406, + '\uFB70', 2406, + '\uFB71', 2406, + '\uFB72', 2407, + '\uFB73', 2407, + '\uFB74', 2407, + '\uFB75', 2407, + '\uFB76', 2408, + '\uFB77', 2408, + '\uFB78', 2408, + '\uFB79', 2408, + '\uFB7A', 2409, + '\uFB7B', 2409, + '\uFB7C', 2409, + '\uFB7D', 2409, + '\uFB7E', 2410, + '\uFB7F', 2410, + '\uFB80', 2410, + '\uFB81', 2410, + '\uFB82', 2411, + '\uFB83', 2411, + '\uFB84', 2412, + '\uFB85', 2412, + '\uFB86', 2413, + '\uFB87', 2413, + '\uFB88', 2414, + '\uFB89', 2414, + '\uFB8A', 2415, + '\uFB8B', 2415, + '\uFB8C', 2416, + '\uFB8D', 2416, + '\uFB8E', 2417, + '\uFB8F', 2417, + '\uFB90', 2417, + '\uFB91', 2417, + '\uFB92', 2418, + '\uFB93', 2418, + '\uFB94', 2418, + '\uFB95', 2418, + '\uFB96', 2419, + '\uFB97', 2419, + '\uFB98', 2419, + '\uFB99', 2419, + '\uFB9A', 2420, + '\uFB9B', 2420, + '\uFB9C', 2420, + '\uFB9D', 2420, + '\uFB9E', 2421, + '\uFB9F', 2421, + '\uFBA0', 2422, + '\uFBA1', 2422, + '\uFBA2', 2422, + '\uFBA3', 2422, + '\uFBA4', 404, + '\uFBA5', 404, + '\uFBA6', 2423, + '\uFBA7', 2423, + '\uFBA8', 2423, + '\uFBA9', 2423, + '\uFBAA', 2424, + '\uFBAB', 2424, + '\uFBAC', 2424, + '\uFBAD', 2424, + '\uFBAE', 2425, + '\uFBAF', 2425, + '\uFBB0', 406, + '\uFBB1', 406, + '\uFBD3', 2426, + '\uFBD4', 2426, + '\uFBD5', 2426, + '\uFBD6', 2426, + '\uFBD7', 2427, + '\uFBD8', 2427, + '\uFBD9', 2428, + '\uFBDA', 2428, + '\uFBDB', 2429, + '\uFBDC', 2429, + '\uFBDD', 402, + '\uFBDE', 2430, + '\uFBDF', 2430, + '\uFBE0', 2431, + '\uFBE1', 2431, + '\uFBE2', 2432, + '\uFBE3', 2432, + '\uFBE4', 2433, + '\uFBE5', 2433, + '\uFBE6', 2433, + '\uFBE7', 2433, + '\uFBE8', 2434, + '\uFBE9', 2434, + '\uFBEA', 2435, + '\uFBEB', 2435, + '\uFBEC', 2436, + '\uFBED', 2436, + '\uFBEE', 2437, + '\uFBEF', 2437, + '\uFBF0', 2438, + '\uFBF1', 2438, + '\uFBF2', 2439, + '\uFBF3', 2439, + '\uFBF4', 2440, + '\uFBF5', 2440, + '\uFBF6', 2441, + '\uFBF7', 2441, + '\uFBF8', 2441, + '\uFBF9', 2442, + '\uFBFA', 2442, + '\uFBFB', 2442, + '\uFBFC', 2443, + '\uFBFD', 2443, + '\uFBFE', 2443, + '\uFBFF', 2443, + '\uFC00', 2444, + '\uFC01', 2445, + '\uFC02', 2446, + '\uFC03', 2442, + '\uFC04', 2447, + '\uFC05', 2448, + '\uFC06', 2449, + '\uFC07', 2450, + '\uFC08', 2451, + '\uFC09', 2452, + '\uFC0A', 2453, + '\uFC0B', 2454, + '\uFC0C', 2455, + '\uFC0D', 2456, + '\uFC0E', 2457, + '\uFC0F', 2458, + '\uFC10', 2459, + '\uFC11', 2460, + '\uFC12', 2461, + '\uFC13', 2462, + '\uFC14', 2463, + '\uFC15', 2464, + '\uFC16', 2465, + '\uFC17', 2466, + '\uFC18', 2467, + '\uFC19', 2468, + '\uFC1A', 2469, + '\uFC1B', 2470, + '\uFC1C', 2471, + '\uFC1D', 2472, + '\uFC1E', 2473, + '\uFC1F', 2474, + '\uFC20', 2475, + '\uFC21', 2476, + '\uFC22', 2477, + '\uFC23', 2478, + '\uFC24', 2479, + '\uFC25', 2480, + '\uFC26', 2481, + '\uFC27', 2482, + '\uFC28', 2483, + '\uFC29', 2484, + '\uFC2A', 2485, + '\uFC2B', 2486, + '\uFC2C', 2487, + '\uFC2D', 2488, + '\uFC2E', 2489, + '\uFC2F', 2490, + '\uFC30', 2491, + '\uFC31', 2492, + '\uFC32', 2493, + '\uFC33', 2494, + '\uFC34', 2495, + '\uFC35', 2496, + '\uFC36', 2497, + '\uFC37', 2498, + '\uFC38', 2499, + '\uFC39', 2500, + '\uFC3A', 2501, + '\uFC3B', 2502, + '\uFC3C', 2503, + '\uFC3D', 2504, + '\uFC3E', 2505, + '\uFC3F', 2506, + '\uFC40', 2507, + '\uFC41', 2508, + '\uFC42', 2509, + '\uFC43', 2510, + '\uFC44', 2511, + '\uFC45', 2512, + '\uFC46', 2513, + '\uFC47', 2514, + '\uFC48', 2515, + '\uFC49', 2516, + '\uFC4A', 2517, + '\uFC4B', 2518, + '\uFC4C', 2519, + '\uFC4D', 2520, + '\uFC4E', 2521, + '\uFC4F', 2522, + '\uFC50', 2523, + '\uFC51', 2524, + '\uFC52', 2525, + '\uFC53', 2526, + '\uFC54', 2527, + '\uFC55', 2528, + '\uFC56', 2529, + '\uFC57', 2530, + '\uFC58', 2531, + '\uFC59', 2532, + '\uFC5A', 2533, + '\uFC5B', 2534, + '\uFC5C', 2535, + '\uFC5D', 2536, + '\uFC5E', 2537, + '\uFC5F', 2538, + '\uFC60', 2539, + '\uFC61', 2540, + '\uFC62', 2541, + '\uFC63', 2542, + '\uFC64', 2543, + '\uFC65', 2544, + '\uFC66', 2446, + '\uFC67', 2545, + '\uFC68', 2442, + '\uFC69', 2447, + '\uFC6A', 2546, + '\uFC6B', 2547, + '\uFC6C', 2451, + '\uFC6D', 2548, + '\uFC6E', 2452, + '\uFC6F', 2453, + '\uFC70', 2549, + '\uFC71', 2550, + '\uFC72', 2457, + '\uFC73', 2551, + '\uFC74', 2458, + '\uFC75', 2459, + '\uFC76', 2552, + '\uFC77', 2553, + '\uFC78', 2461, + '\uFC79', 2554, + '\uFC7A', 2462, + '\uFC7B', 2463, + '\uFC7C', 2492, + '\uFC7D', 2493, + '\uFC7E', 2496, + '\uFC7F', 2497, + '\uFC80', 2498, + '\uFC81', 2502, + '\uFC82', 2503, + '\uFC83', 2504, + '\uFC84', 2505, + '\uFC85', 2509, + '\uFC86', 2510, + '\uFC87', 2511, + '\uFC88', 2555, + '\uFC89', 2515, + '\uFC8A', 2556, + '\uFC8B', 2557, + '\uFC8C', 2521, + '\uFC8D', 2558, + '\uFC8E', 2522, + '\uFC8F', 2523, + '\uFC90', 2536, + '\uFC91', 2559, + '\uFC92', 2560, + '\uFC93', 2531, + '\uFC94', 2561, + '\uFC95', 2532, + '\uFC96', 2533, + '\uFC97', 2444, + '\uFC98', 2445, + '\uFC99', 2562, + '\uFC9A', 2446, + '\uFC9B', 2563, + '\uFC9C', 2448, + '\uFC9D', 2449, + '\uFC9E', 2450, + '\uFC9F', 2451, + '\uFCA0', 2564, + '\uFCA1', 2454, + '\uFCA2', 2455, + '\uFCA3', 2456, + '\uFCA4', 2457, + '\uFCA5', 2565, + '\uFCA6', 2461, + '\uFCA7', 2464, + '\uFCA8', 2465, + '\uFCA9', 2466, + '\uFCAA', 2467, + '\uFCAB', 2468, + '\uFCAC', 2470, + '\uFCAD', 2471, + '\uFCAE', 2472, + '\uFCAF', 2473, + '\uFCB0', 2474, + '\uFCB1', 2475, + '\uFCB2', 2566, + '\uFCB3', 2476, + '\uFCB4', 2477, + '\uFCB5', 2478, + '\uFCB6', 2479, + '\uFCB7', 2480, + '\uFCB8', 2481, + '\uFCB9', 2483, + '\uFCBA', 2484, + '\uFCBB', 2485, + '\uFCBC', 2486, + '\uFCBD', 2487, + '\uFCBE', 2488, + '\uFCBF', 2489, + '\uFCC0', 2490, + '\uFCC1', 2491, + '\uFCC2', 2494, + '\uFCC3', 2495, + '\uFCC4', 2499, + '\uFCC5', 2500, + '\uFCC6', 2501, + '\uFCC7', 2502, + '\uFCC8', 2503, + '\uFCC9', 2506, + '\uFCCA', 2507, + '\uFCCB', 2508, + '\uFCCC', 2509, + '\uFCCD', 2567, + '\uFCCE', 2512, + '\uFCCF', 2513, + '\uFCD0', 2514, + '\uFCD1', 2515, + '\uFCD2', 2518, + '\uFCD3', 2519, + '\uFCD4', 2520, + '\uFCD5', 2521, + '\uFCD6', 2568, + '\uFCD7', 2524, + '\uFCD8', 2525, + '\uFCD9', 2569, + '\uFCDA', 2528, + '\uFCDB', 2529, + '\uFCDC', 2530, + '\uFCDD', 2531, + '\uFCDE', 2570, + '\uFCDF', 2446, + '\uFCE0', 2563, + '\uFCE1', 2451, + '\uFCE2', 2564, + '\uFCE3', 2457, + '\uFCE4', 2565, + '\uFCE5', 2461, + '\uFCE6', 2571, + '\uFCE7', 2474, + '\uFCE8', 2572, + '\uFCE9', 2573, + '\uFCEA', 2574, + '\uFCEB', 2502, + '\uFCEC', 2503, + '\uFCED', 2509, + '\uFCEE', 2521, + '\uFCEF', 2568, + '\uFCF0', 2531, + '\uFCF1', 2570, + '\uFCF2', 2575, + '\uFCF3', 2576, + '\uFCF4', 2577, + '\uFCF5', 2578, + '\uFCF6', 2579, + '\uFCF7', 2580, + '\uFCF8', 2581, + '\uFCF9', 2582, + '\uFCFA', 2583, + '\uFCFB', 2584, + '\uFCFC', 2585, + '\uFCFD', 2586, + '\uFCFE', 2587, + '\uFCFF', 2588, + '\uFD00', 2589, + '\uFD01', 2590, + '\uFD02', 2591, + '\uFD03', 2592, + '\uFD04', 2593, + '\uFD05', 2594, + '\uFD06', 2595, + '\uFD07', 2596, + '\uFD08', 2597, + '\uFD09', 2598, + '\uFD0A', 2599, + '\uFD0B', 2600, + '\uFD0C', 2573, + '\uFD0D', 2601, + '\uFD0E', 2602, + '\uFD0F', 2603, + '\uFD10', 2604, + '\uFD11', 2578, + '\uFD12', 2579, + '\uFD13', 2580, + '\uFD14', 2581, + '\uFD15', 2582, + '\uFD16', 2583, + '\uFD17', 2584, + '\uFD18', 2585, + '\uFD19', 2586, + '\uFD1A', 2587, + '\uFD1B', 2588, + '\uFD1C', 2589, + '\uFD1D', 2590, + '\uFD1E', 2591, + '\uFD1F', 2592, + '\uFD20', 2593, + '\uFD21', 2594, + '\uFD22', 2595, + '\uFD23', 2596, + '\uFD24', 2597, + '\uFD25', 2598, + '\uFD26', 2599, + '\uFD27', 2600, + '\uFD28', 2573, + '\uFD29', 2601, + '\uFD2A', 2602, + '\uFD2B', 2603, + '\uFD2C', 2604, + '\uFD2D', 2598, + '\uFD2E', 2599, + '\uFD2F', 2600, + '\uFD30', 2573, + '\uFD31', 2572, + '\uFD32', 2574, + '\uFD33', 2482, + '\uFD34', 2471, + '\uFD35', 2472, + '\uFD36', 2473, + '\uFD37', 2598, + '\uFD38', 2599, + '\uFD39', 2600, + '\uFD3A', 2482, + '\uFD3B', 2483, + '\uFD3C', 2605, + '\uFD3D', 2605, + '\uFD50', 2606, + '\uFD51', 2607, + '\uFD52', 2607, + '\uFD53', 2608, + '\uFD54', 2609, + '\uFD55', 2610, + '\uFD56', 2611, + '\uFD57', 2612, + '\uFD58', 2613, + '\uFD59', 2613, + '\uFD5A', 2614, + '\uFD5B', 2615, + '\uFD5C', 2616, + '\uFD5D', 2617, + '\uFD5E', 2618, + '\uFD5F', 2619, + '\uFD60', 2619, + '\uFD61', 2620, + '\uFD62', 2621, + '\uFD63', 2621, + '\uFD64', 2622, + '\uFD65', 2622, + '\uFD66', 2623, + '\uFD67', 2624, + '\uFD68', 2624, + '\uFD69', 2625, + '\uFD6A', 2626, + '\uFD6B', 2626, + '\uFD6C', 2627, + '\uFD6D', 2627, + '\uFD6E', 2628, + '\uFD6F', 2629, + '\uFD70', 2629, + '\uFD71', 2630, + '\uFD72', 2630, + '\uFD73', 2631, + '\uFD74', 2632, + '\uFD75', 2633, + '\uFD76', 2634, + '\uFD77', 2634, + '\uFD78', 2635, + '\uFD79', 2636, + '\uFD7A', 2637, + '\uFD7B', 2638, + '\uFD7C', 2639, + '\uFD7D', 2639, + '\uFD7E', 2640, + '\uFD7F', 2641, + '\uFD80', 2642, + '\uFD81', 2643, + '\uFD82', 2644, + '\uFD83', 2645, + '\uFD84', 2645, + '\uFD85', 2646, + '\uFD86', 2646, + '\uFD87', 2647, + '\uFD88', 2647, + '\uFD89', 2648, + '\uFD8A', 2649, + '\uFD8B', 2650, + '\uFD8C', 2651, + '\uFD8D', 2652, + '\uFD8E', 2653, + '\uFD8F', 2654, + '\uFD92', 2655, + '\uFD93', 2656, + '\uFD94', 2657, + '\uFD95', 2658, + '\uFD96', 2659, + '\uFD97', 2660, + '\uFD98', 2660, + '\uFD99', 2661, + '\uFD9A', 2662, + '\uFD9B', 2663, + '\uFD9C', 2664, + '\uFD9D', 2664, + '\uFD9E', 2665, + '\uFD9F', 2666, + '\uFDA0', 2667, + '\uFDA1', 2668, + '\uFDA2', 2669, + '\uFDA3', 2670, + '\uFDA4', 2671, + '\uFDA5', 2672, + '\uFDA6', 2673, + '\uFDA7', 2674, + '\uFDA8', 2675, + '\uFDA9', 2676, + '\uFDAA', 2677, + '\uFDAB', 2678, + '\uFDAC', 2679, + '\uFDAD', 2680, + '\uFDAE', 2681, + '\uFDAF', 2682, + '\uFDB0', 2683, + '\uFDB1', 2684, + '\uFDB2', 2685, + '\uFDB3', 2686, + '\uFDB4', 2640, + '\uFDB5', 2642, + '\uFDB6', 2687, + '\uFDB7', 2688, + '\uFDB8', 2689, + '\uFDB9', 2690, + '\uFDBA', 2691, + '\uFDBB', 2692, + '\uFDBC', 2691, + '\uFDBD', 2689, + '\uFDBE', 2693, + '\uFDBF', 2694, + '\uFDC0', 2695, + '\uFDC1', 2696, + '\uFDC2', 2697, + '\uFDC3', 2692, + '\uFDC4', 2633, + '\uFDC5', 2623, + '\uFDC6', 2698, + '\uFDC7', 2699, + '\uFDF0', 2700, + '\uFDF1', 2701, + '\uFDF2', 2702, + '\uFDF3', 2703, + '\uFDF4', 2704, + '\uFDF5', 2705, + '\uFDF6', 2706, + '\uFDF7', 2707, + '\uFDF8', 2708, + '\uFDF9', 2709, + '\uFDFA', 2710, + '\uFDFB', 2711, + '\uFDFC', 2712, + '\uFE30', 938, + '\uFE31', 2713, + '\uFE32', 2714, + '\uFE33', 2715, + '\uFE34', 2715, + '\uFE35', 961, + '\uFE36', 962, + '\uFE37', 2716, + '\uFE38', 2717, + '\uFE39', 2718, + '\uFE3A', 2719, + '\uFE3B', 2720, + '\uFE3C', 2721, + '\uFE3D', 2722, + '\uFE3E', 2723, + '\uFE3F', 1088, + '\uFE40', 1089, + '\uFE41', 2724, + '\uFE42', 2725, + '\uFE43', 2726, + '\uFE44', 2727, + '\uFE49', 945, + '\uFE4A', 945, + '\uFE4B', 945, + '\uFE4C', 945, + '\uFE4D', 2715, + '\uFE4E', 2715, + '\uFE4F', 2715, + '\uFE50', 2728, + '\uFE51', 2729, + '\uFE52', 937, + '\uFE54', 309, + '\uFE55', 2730, + '\uFE56', 2731, + '\uFE57', 2732, + '\uFE58', 2713, + '\uFE59', 961, + '\uFE5A', 962, + '\uFE5B', 2716, + '\uFE5C', 2717, + '\uFE5D', 2718, + '\uFE5E', 2719, + '\uFE5F', 2733, + '\uFE60', 2734, + '\uFE61', 2735, + '\uFE62', 958, + '\uFE63', 2736, + '\uFE64', 2737, + '\uFE65', 2738, + '\uFE66', 960, + '\uFE68', 2739, + '\uFE69', 2740, + '\uFE6A', 2741, + '\uFE6B', 2742, + '\uFE70', 2743, + '\uFE71', 2744, + '\uFE72', 2745, + '\uFE74', 2746, + '\uFE76', 2747, + '\uFE77', 2748, + '\uFE78', 2749, + '\uFE79', 2750, + '\uFE7A', 2751, + '\uFE7B', 2752, + '\uFE7C', 2753, + '\uFE7D', 2754, + '\uFE7E', 2755, + '\uFE7F', 2756, + '\uFE80', 2757, + '\uFE81', 395, + '\uFE82', 395, + '\uFE83', 396, + '\uFE84', 396, + '\uFE85', 397, + '\uFE86', 397, + '\uFE87', 398, + '\uFE88', 398, + '\uFE89', 399, + '\uFE8A', 399, + '\uFE8B', 399, + '\uFE8C', 399, + '\uFE8D', 2758, + '\uFE8E', 2758, + '\uFE8F', 2759, + '\uFE90', 2759, + '\uFE91', 2759, + '\uFE92', 2759, + '\uFE93', 2760, + '\uFE94', 2760, + '\uFE95', 2761, + '\uFE96', 2761, + '\uFE97', 2761, + '\uFE98', 2761, + '\uFE99', 2762, + '\uFE9A', 2762, + '\uFE9B', 2762, + '\uFE9C', 2762, + '\uFE9D', 2763, + '\uFE9E', 2763, + '\uFE9F', 2763, + '\uFEA0', 2763, + '\uFEA1', 2764, + '\uFEA2', 2764, + '\uFEA3', 2764, + '\uFEA4', 2764, + '\uFEA5', 2765, + '\uFEA6', 2765, + '\uFEA7', 2765, + '\uFEA8', 2765, + '\uFEA9', 2766, + '\uFEAA', 2766, + '\uFEAB', 2767, + '\uFEAC', 2767, + '\uFEAD', 2768, + '\uFEAE', 2768, + '\uFEAF', 2769, + '\uFEB0', 2769, + '\uFEB1', 2770, + '\uFEB2', 2770, + '\uFEB3', 2770, + '\uFEB4', 2770, + '\uFEB5', 2771, + '\uFEB6', 2771, + '\uFEB7', 2771, + '\uFEB8', 2771, + '\uFEB9', 2772, + '\uFEBA', 2772, + '\uFEBB', 2772, + '\uFEBC', 2772, + '\uFEBD', 2773, + '\uFEBE', 2773, + '\uFEBF', 2773, + '\uFEC0', 2773, + '\uFEC1', 2774, + '\uFEC2', 2774, + '\uFEC3', 2774, + '\uFEC4', 2774, + '\uFEC5', 2775, + '\uFEC6', 2775, + '\uFEC7', 2775, + '\uFEC8', 2775, + '\uFEC9', 2776, + '\uFECA', 2776, + '\uFECB', 2776, + '\uFECC', 2776, + '\uFECD', 2777, + '\uFECE', 2777, + '\uFECF', 2777, + '\uFED0', 2777, + '\uFED1', 2778, + '\uFED2', 2778, + '\uFED3', 2778, + '\uFED4', 2778, + '\uFED5', 2779, + '\uFED6', 2779, + '\uFED7', 2779, + '\uFED8', 2779, + '\uFED9', 2780, + '\uFEDA', 2780, + '\uFEDB', 2780, + '\uFEDC', 2780, + '\uFEDD', 2781, + '\uFEDE', 2781, + '\uFEDF', 2781, + '\uFEE0', 2781, + '\uFEE1', 2782, + '\uFEE2', 2782, + '\uFEE3', 2782, + '\uFEE4', 2782, + '\uFEE5', 2783, + '\uFEE6', 2783, + '\uFEE7', 2783, + '\uFEE8', 2783, + '\uFEE9', 2784, + '\uFEEA', 2784, + '\uFEEB', 2784, + '\uFEEC', 2784, + '\uFEED', 2785, + '\uFEEE', 2785, + '\uFEEF', 2434, + '\uFEF0', 2434, + '\uFEF1', 2786, + '\uFEF2', 2786, + '\uFEF3', 2786, + '\uFEF4', 2786, + '\uFEF5', 2787, + '\uFEF6', 2787, + '\uFEF7', 2788, + '\uFEF8', 2788, + '\uFEF9', 2789, + '\uFEFA', 2789, + '\uFEFB', 2790, + '\uFEFC', 2790, + '\uFF01', 2732, + '\uFF02', 2791, + '\uFF03', 2733, + '\uFF04', 2740, + '\uFF05', 2741, + '\uFF06', 2734, + '\uFF07', 2792, + '\uFF08', 961, + '\uFF09', 962, + '\uFF0A', 2735, + '\uFF0B', 958, + '\uFF0C', 2728, + '\uFF0D', 2736, + '\uFF0E', 937, + '\uFF0F', 2793, + '\uFF10', 950, + '\uFF11', 9, + '\uFF12', 4, + '\uFF13', 5, + '\uFF14', 952, + '\uFF15', 953, + '\uFF16', 954, + '\uFF17', 955, + '\uFF18', 956, + '\uFF19', 957, + '\uFF1A', 2730, + '\uFF1B', 309, + '\uFF1C', 2737, + '\uFF1D', 960, + '\uFF1E', 2738, + '\uFF1F', 2731, + '\uFF20', 2742, + '\uFF21', 1167, + '\uFF22', 989, + '\uFF23', 967, + '\uFF24', 1002, + '\uFF25', 991, + '\uFF26', 992, + '\uFF27', 1168, + '\uFF28', 974, + '\uFF29', 976, + '\uFF2A', 1169, + '\uFF2B', 988, + '\uFF2C', 977, + '\uFF2D', 993, + '\uFF2E', 978, + '\uFF2F', 1170, + '\uFF30', 980, + '\uFF31', 981, + '\uFF32', 982, + '\uFF33', 1171, + '\uFF34', 1172, + '\uFF35', 1173, + '\uFF36', 1020, + '\uFF37', 1174, + '\uFF38', 1025, + '\uFF39', 1175, + '\uFF3A', 986, + '\uFF3B', 2794, + '\uFF3C', 2739, + '\uFF3D', 2795, + '\uFF3E', 2796, + '\uFF3F', 2715, + '\uFF40', 925, + '\uFF41', 2, + '\uFF42', 1176, + '\uFF43', 1038, + '\uFF44', 1003, + '\uFF45', 990, + '\uFF46', 1177, + '\uFF47', 973, + '\uFF48', 284, + '\uFF49', 951, + '\uFF4A', 286, + '\uFF4B', 1178, + '\uFF4C', 300, + '\uFF4D', 1039, + '\uFF4E', 963, + '\uFF4F', 10, + '\uFF50', 1179, + '\uFF51', 1180, + '\uFF52', 287, + '\uFF53', 180, + '\uFF54', 1181, + '\uFF55', 1182, + '\uFF56', 1031, + '\uFF57', 291, + '\uFF58', 301, + '\uFF59', 292, + '\uFF5A', 1183, + '\uFF5B', 2716, + '\uFF5C', 2797, + '\uFF5D', 2717, + '\uFF5E', 2798, + '\uFF5F', 2799, + '\uFF60', 2800, + '\uFF61', 2801, + '\uFF62', 2724, + '\uFF63', 2725, + '\uFF64', 2729, + '\uFF65', 2802, + '\uFF66', 1773, + '\uFF67', 2803, + '\uFF68', 2804, + '\uFF69', 2805, + '\uFF6A', 2806, + '\uFF6B', 2807, + '\uFF6C', 2808, + '\uFF6D', 2809, + '\uFF6E', 2810, + '\uFF6F', 2811, + '\uFF70', 2812, + '\uFF71', 1727, + '\uFF72', 1728, + '\uFF73', 1729, + '\uFF74', 1730, + '\uFF75', 1731, + '\uFF76', 1732, + '\uFF77', 1733, + '\uFF78', 1734, + '\uFF79', 1735, + '\uFF7A', 1736, + '\uFF7B', 1737, + '\uFF7C', 1738, + '\uFF7D', 1739, + '\uFF7E', 1740, + '\uFF7F', 1741, + '\uFF80', 1742, + '\uFF81', 1743, + '\uFF82', 1744, + '\uFF83', 1745, + '\uFF84', 1746, + '\uFF85', 1747, + '\uFF86', 1748, + '\uFF87', 1749, + '\uFF88', 1750, + '\uFF89', 1751, + '\uFF8A', 1752, + '\uFF8B', 1753, + '\uFF8C', 1754, + '\uFF8D', 1755, + '\uFF8E', 1756, + '\uFF8F', 1757, + '\uFF90', 1758, + '\uFF91', 1759, + '\uFF92', 1760, + '\uFF93', 1761, + '\uFF94', 1762, + '\uFF95', 1763, + '\uFF96', 1764, + '\uFF97', 1765, + '\uFF98', 1766, + '\uFF99', 1767, + '\uFF9A', 1768, + '\uFF9B', 1769, + '\uFF9C', 1770, + '\uFF9D', 2813, + '\uFF9E', 2814, + '\uFF9F', 2815, + '\uFFA0', 1521, + '\uFFA1', 1470, + '\uFFA2', 1471, + '\uFFA3', 1472, + '\uFFA4', 1473, + '\uFFA5', 1474, + '\uFFA6', 1475, + '\uFFA7', 1476, + '\uFFA8', 1477, + '\uFFA9', 1478, + '\uFFAA', 1479, + '\uFFAB', 1480, + '\uFFAC', 1481, + '\uFFAD', 1482, + '\uFFAE', 1483, + '\uFFAF', 1484, + '\uFFB0', 1485, + '\uFFB1', 1486, + '\uFFB2', 1487, + '\uFFB3', 1488, + '\uFFB4', 1489, + '\uFFB5', 1490, + '\uFFB6', 1491, + '\uFFB7', 1492, + '\uFFB8', 1493, + '\uFFB9', 1494, + '\uFFBA', 1495, + '\uFFBB', 1496, + '\uFFBC', 1497, + '\uFFBD', 1498, + '\uFFBE', 1499, + '\uFFC2', 1500, + '\uFFC3', 1501, + '\uFFC4', 1502, + '\uFFC5', 1503, + '\uFFC6', 1504, + '\uFFC7', 1505, + '\uFFCA', 1506, + '\uFFCB', 1507, + '\uFFCC', 1508, + '\uFFCD', 1509, + '\uFFCE', 1510, + '\uFFCF', 1511, + '\uFFD2', 1512, + '\uFFD3', 1513, + '\uFFD4', 1514, + '\uFFD5', 1515, + '\uFFD6', 1516, + '\uFFD7', 1517, + '\uFFDA', 1518, + '\uFFDB', 1519, + '\uFFDC', 1520, + '\uFFE0', 2816, + '\uFFE1', 2817, + '\uFFE2', 2818, + '\uFFE3', 3, + '\uFFE4', 2819, + '\uFFE5', 2820, + '\uFFE6', 2821, + '\uFFE8', 2822, + '\uFFE9', 2823, + '\uFFEA', 2824, + '\uFFEB', 2825, + '\uFFEC', 2826, + '\uFFED', 2827, + '\uFFEE', 2828, + }; +} diff --git a/csharp/DecompositionMappings.cs b/csharp/DecompositionMappings.cs new file mode 100644 index 0000000..82d362e --- /dev/null +++ b/csharp/DecompositionMappings.cs @@ -0,0 +1,2837 @@ +// Do not edit !!! +// this file is generated automatically + +public class DecompositionMappings +{ + public static readonly string[] m = new string[] { + "\u0020", + "\u0020\u0308", + "\u0061", + "\u0020\u0304", + "\u0032", + "\u0033", + "\u0020\u0301", + "\u03BC", + "\u0020\u0327", + "\u0031", + "\u006F", + "\u0031\u2044\u0034", + "\u0031\u2044\u0032", + "\u0033\u2044\u0034", + "\u0041\u0300", + "\u0041\u0301", + "\u0041\u0302", + "\u0041\u0303", + "\u0041\u0308", + "\u0041\u030A", + "\u0043\u0327", + "\u0045\u0300", + "\u0045\u0301", + "\u0045\u0302", + "\u0045\u0308", + "\u0049\u0300", + "\u0049\u0301", + "\u0049\u0302", + "\u0049\u0308", + "\u004E\u0303", + "\u004F\u0300", + "\u004F\u0301", + "\u004F\u0302", + "\u004F\u0303", + "\u004F\u0308", + "\u0055\u0300", + "\u0055\u0301", + "\u0055\u0302", + "\u0055\u0308", + "\u0059\u0301", + "\u0061\u0300", + "\u0061\u0301", + "\u0061\u0302", + "\u0061\u0303", + "\u0061\u0308", + "\u0061\u030A", + "\u0063\u0327", + "\u0065\u0300", + "\u0065\u0301", + "\u0065\u0302", + "\u0065\u0308", + "\u0069\u0300", + "\u0069\u0301", + "\u0069\u0302", + "\u0069\u0308", + "\u006E\u0303", + "\u006F\u0300", + "\u006F\u0301", + "\u006F\u0302", + "\u006F\u0303", + "\u006F\u0308", + "\u0075\u0300", + "\u0075\u0301", + "\u0075\u0302", + "\u0075\u0308", + "\u0079\u0301", + "\u0079\u0308", + "\u0041\u0304", + "\u0061\u0304", + "\u0041\u0306", + "\u0061\u0306", + "\u0041\u0328", + "\u0061\u0328", + "\u0043\u0301", + "\u0063\u0301", + "\u0043\u0302", + "\u0063\u0302", + "\u0043\u0307", + "\u0063\u0307", + "\u0043\u030C", + "\u0063\u030C", + "\u0044\u030C", + "\u0064\u030C", + "\u0045\u0304", + "\u0065\u0304", + "\u0045\u0306", + "\u0065\u0306", + "\u0045\u0307", + "\u0065\u0307", + "\u0045\u0328", + "\u0065\u0328", + "\u0045\u030C", + "\u0065\u030C", + "\u0047\u0302", + "\u0067\u0302", + "\u0047\u0306", + "\u0067\u0306", + "\u0047\u0307", + "\u0067\u0307", + "\u0047\u0327", + "\u0067\u0327", + "\u0048\u0302", + "\u0068\u0302", + "\u0049\u0303", + "\u0069\u0303", + "\u0049\u0304", + "\u0069\u0304", + "\u0049\u0306", + "\u0069\u0306", + "\u0049\u0328", + "\u0069\u0328", + "\u0049\u0307", + "\u0049\u004A", + "\u0069\u006A", + "\u004A\u0302", + "\u006A\u0302", + "\u004B\u0327", + "\u006B\u0327", + "\u004C\u0301", + "\u006C\u0301", + "\u004C\u0327", + "\u006C\u0327", + "\u004C\u030C", + "\u006C\u030C", + "\u004C\u00B7", + "\u006C\u00B7", + "\u004E\u0301", + "\u006E\u0301", + "\u004E\u0327", + "\u006E\u0327", + "\u004E\u030C", + "\u006E\u030C", + "\u02BC\u006E", + "\u004F\u0304", + "\u006F\u0304", + "\u004F\u0306", + "\u006F\u0306", + "\u004F\u030B", + "\u006F\u030B", + "\u0052\u0301", + "\u0072\u0301", + "\u0052\u0327", + "\u0072\u0327", + "\u0052\u030C", + "\u0072\u030C", + "\u0053\u0301", + "\u0073\u0301", + "\u0053\u0302", + "\u0073\u0302", + "\u0053\u0327", + "\u0073\u0327", + "\u0053\u030C", + "\u0073\u030C", + "\u0054\u0327", + "\u0074\u0327", + "\u0054\u030C", + "\u0074\u030C", + "\u0055\u0303", + "\u0075\u0303", + "\u0055\u0304", + "\u0075\u0304", + "\u0055\u0306", + "\u0075\u0306", + "\u0055\u030A", + "\u0075\u030A", + "\u0055\u030B", + "\u0075\u030B", + "\u0055\u0328", + "\u0075\u0328", + "\u0057\u0302", + "\u0077\u0302", + "\u0059\u0302", + "\u0079\u0302", + "\u0059\u0308", + "\u005A\u0301", + "\u007A\u0301", + "\u005A\u0307", + "\u007A\u0307", + "\u005A\u030C", + "\u007A\u030C", + "\u0073", + "\u004F\u031B", + "\u006F\u031B", + "\u0055\u031B", + "\u0075\u031B", + "\u0044\u005A\u030C", + "\u0044\u007A\u030C", + "\u0064\u007A\u030C", + "\u004C\u004A", + "\u004C\u006A", + "\u006C\u006A", + "\u004E\u004A", + "\u004E\u006A", + "\u006E\u006A", + "\u0041\u030C", + "\u0061\u030C", + "\u0049\u030C", + "\u0069\u030C", + "\u004F\u030C", + "\u006F\u030C", + "\u0055\u030C", + "\u0075\u030C", + "\u0055\u0308\u0304", + "\u0075\u0308\u0304", + "\u0055\u0308\u0301", + "\u0075\u0308\u0301", + "\u0055\u0308\u030C", + "\u0075\u0308\u030C", + "\u0055\u0308\u0300", + "\u0075\u0308\u0300", + "\u0041\u0308\u0304", + "\u0061\u0308\u0304", + "\u0041\u0307\u0304", + "\u0061\u0307\u0304", + "\u00C6\u0304", + "\u00E6\u0304", + "\u0047\u030C", + "\u0067\u030C", + "\u004B\u030C", + "\u006B\u030C", + "\u004F\u0328", + "\u006F\u0328", + "\u004F\u0328\u0304", + "\u006F\u0328\u0304", + "\u01B7\u030C", + "\u0292\u030C", + "\u006A\u030C", + "\u0044\u005A", + "\u0044\u007A", + "\u0064\u007A", + "\u0047\u0301", + "\u0067\u0301", + "\u004E\u0300", + "\u006E\u0300", + "\u0041\u030A\u0301", + "\u0061\u030A\u0301", + "\u00C6\u0301", + "\u00E6\u0301", + "\u00D8\u0301", + "\u00F8\u0301", + "\u0041\u030F", + "\u0061\u030F", + "\u0041\u0311", + "\u0061\u0311", + "\u0045\u030F", + "\u0065\u030F", + "\u0045\u0311", + "\u0065\u0311", + "\u0049\u030F", + "\u0069\u030F", + "\u0049\u0311", + "\u0069\u0311", + "\u004F\u030F", + "\u006F\u030F", + "\u004F\u0311", + "\u006F\u0311", + "\u0052\u030F", + "\u0072\u030F", + "\u0052\u0311", + "\u0072\u0311", + "\u0055\u030F", + "\u0075\u030F", + "\u0055\u0311", + "\u0075\u0311", + "\u0053\u0326", + "\u0073\u0326", + "\u0054\u0326", + "\u0074\u0326", + "\u0048\u030C", + "\u0068\u030C", + "\u0041\u0307", + "\u0061\u0307", + "\u0045\u0327", + "\u0065\u0327", + "\u004F\u0308\u0304", + "\u006F\u0308\u0304", + "\u004F\u0303\u0304", + "\u006F\u0303\u0304", + "\u004F\u0307", + "\u006F\u0307", + "\u004F\u0307\u0304", + "\u006F\u0307\u0304", + "\u0059\u0304", + "\u0079\u0304", + "\u0068", + "\u0266", + "\u006A", + "\u0072", + "\u0279", + "\u027B", + "\u0281", + "\u0077", + "\u0079", + "\u0020\u0306", + "\u0020\u0307", + "\u0020\u030A", + "\u0020\u0328", + "\u0020\u0303", + "\u0020\u030B", + "\u0263", + "\u006C", + "\u0078", + "\u0295", + "\u0300", + "\u0301", + "\u0313", + "\u0308\u0301", + "\u02B9", + "\u0020\u0345", + "\u003B", + "\u0020\u0308\u0301", + "\u0391\u0301", + "\u00B7", + "\u0395\u0301", + "\u0397\u0301", + "\u0399\u0301", + "\u039F\u0301", + "\u03A5\u0301", + "\u03A9\u0301", + "\u03B9\u0308\u0301", + "\u0399\u0308", + "\u03A5\u0308", + "\u03B1\u0301", + "\u03B5\u0301", + "\u03B7\u0301", + "\u03B9\u0301", + "\u03C5\u0308\u0301", + "\u03B9\u0308", + "\u03C5\u0308", + "\u03BF\u0301", + "\u03C5\u0301", + "\u03C9\u0301", + "\u03B2", + "\u03B8", + "\u03A5", + "\u03C6", + "\u03C0", + "\u03BA", + "\u03C1", + "\u03C2", + "\u0398", + "\u03B5", + "\u0415\u0300", + "\u0415\u0308", + "\u0413\u0301", + "\u0406\u0308", + "\u041A\u0301", + "\u0418\u0300", + "\u0423\u0306", + "\u0418\u0306", + "\u0438\u0306", + "\u0435\u0300", + "\u0435\u0308", + "\u0433\u0301", + "\u0456\u0308", + "\u043A\u0301", + "\u0438\u0300", + "\u0443\u0306", + "\u0474\u030F", + "\u0475\u030F", + "\u0416\u0306", + "\u0436\u0306", + "\u0410\u0306", + "\u0430\u0306", + "\u0410\u0308", + "\u0430\u0308", + "\u0415\u0306", + "\u0435\u0306", + "\u04D8\u0308", + "\u04D9\u0308", + "\u0416\u0308", + "\u0436\u0308", + "\u0417\u0308", + "\u0437\u0308", + "\u0418\u0304", + "\u0438\u0304", + "\u0418\u0308", + "\u0438\u0308", + "\u041E\u0308", + "\u043E\u0308", + "\u04E8\u0308", + "\u04E9\u0308", + "\u042D\u0308", + "\u044D\u0308", + "\u0423\u0304", + "\u0443\u0304", + "\u0423\u0308", + "\u0443\u0308", + "\u0423\u030B", + "\u0443\u030B", + "\u0427\u0308", + "\u0447\u0308", + "\u042B\u0308", + "\u044B\u0308", + "\u0565\u0582", + "\u0627\u0653", + "\u0627\u0654", + "\u0648\u0654", + "\u0627\u0655", + "\u064A\u0654", + "\u0627\u0674", + "\u0648\u0674", + "\u06C7\u0674", + "\u064A\u0674", + "\u06D5\u0654", + "\u06C1\u0654", + "\u06D2\u0654", + "\u0928\u093C", + "\u0930\u093C", + "\u0933\u093C", + "\u0915\u093C", + "\u0916\u093C", + "\u0917\u093C", + "\u091C\u093C", + "\u0921\u093C", + "\u0922\u093C", + "\u092B\u093C", + "\u092F\u093C", + "\u09C7\u09BE", + "\u09C7\u09D7", + "\u09A1\u09BC", + "\u09A2\u09BC", + "\u09AF\u09BC", + "\u0A32\u0A3C", + "\u0A38\u0A3C", + "\u0A16\u0A3C", + "\u0A17\u0A3C", + "\u0A1C\u0A3C", + "\u0A2B\u0A3C", + "\u0B47\u0B56", + "\u0B47\u0B3E", + "\u0B47\u0B57", + "\u0B21\u0B3C", + "\u0B22\u0B3C", + "\u0B92\u0BD7", + "\u0BC6\u0BBE", + "\u0BC7\u0BBE", + "\u0BC6\u0BD7", + "\u0C46\u0C56", + "\u0CBF\u0CD5", + "\u0CC6\u0CD5", + "\u0CC6\u0CD6", + "\u0CC6\u0CC2", + "\u0CC6\u0CC2\u0CD5", + "\u0D46\u0D3E", + "\u0D47\u0D3E", + "\u0D46\u0D57", + "\u0DD9\u0DCA", + "\u0DD9\u0DCF", + "\u0DD9\u0DCF\u0DCA", + "\u0DD9\u0DDF", + "\u0E4D\u0E32", + "\u0ECD\u0EB2", + "\u0EAB\u0E99", + "\u0EAB\u0EA1", + "\u0F0B", + "\u0F42\u0FB7", + "\u0F4C\u0FB7", + "\u0F51\u0FB7", + "\u0F56\u0FB7", + "\u0F5B\u0FB7", + "\u0F40\u0FB5", + "\u0F71\u0F72", + "\u0F71\u0F74", + "\u0FB2\u0F80", + "\u0FB2\u0F71\u0F80", + "\u0FB3\u0F80", + "\u0FB3\u0F71\u0F80", + "\u0F71\u0F80", + "\u0F92\u0FB7", + "\u0F9C\u0FB7", + "\u0FA1\u0FB7", + "\u0FA6\u0FB7", + "\u0FAB\u0FB7", + "\u0F90\u0FB5", + "\u1025\u102E", + "\u0041\u0325", + "\u0061\u0325", + "\u0042\u0307", + "\u0062\u0307", + "\u0042\u0323", + "\u0062\u0323", + "\u0042\u0331", + "\u0062\u0331", + "\u0043\u0327\u0301", + "\u0063\u0327\u0301", + "\u0044\u0307", + "\u0064\u0307", + "\u0044\u0323", + "\u0064\u0323", + "\u0044\u0331", + "\u0064\u0331", + "\u0044\u0327", + "\u0064\u0327", + "\u0044\u032D", + "\u0064\u032D", + "\u0045\u0304\u0300", + "\u0065\u0304\u0300", + "\u0045\u0304\u0301", + "\u0065\u0304\u0301", + "\u0045\u032D", + "\u0065\u032D", + "\u0045\u0330", + "\u0065\u0330", + "\u0045\u0327\u0306", + "\u0065\u0327\u0306", + "\u0046\u0307", + "\u0066\u0307", + "\u0047\u0304", + "\u0067\u0304", + "\u0048\u0307", + "\u0068\u0307", + "\u0048\u0323", + "\u0068\u0323", + "\u0048\u0308", + "\u0068\u0308", + "\u0048\u0327", + "\u0068\u0327", + "\u0048\u032E", + "\u0068\u032E", + "\u0049\u0330", + "\u0069\u0330", + "\u0049\u0308\u0301", + "\u0069\u0308\u0301", + "\u004B\u0301", + "\u006B\u0301", + "\u004B\u0323", + "\u006B\u0323", + "\u004B\u0331", + "\u006B\u0331", + "\u004C\u0323", + "\u006C\u0323", + "\u004C\u0323\u0304", + "\u006C\u0323\u0304", + "\u004C\u0331", + "\u006C\u0331", + "\u004C\u032D", + "\u006C\u032D", + "\u004D\u0301", + "\u006D\u0301", + "\u004D\u0307", + "\u006D\u0307", + "\u004D\u0323", + "\u006D\u0323", + "\u004E\u0307", + "\u006E\u0307", + "\u004E\u0323", + "\u006E\u0323", + "\u004E\u0331", + "\u006E\u0331", + "\u004E\u032D", + "\u006E\u032D", + "\u004F\u0303\u0301", + "\u006F\u0303\u0301", + "\u004F\u0303\u0308", + "\u006F\u0303\u0308", + "\u004F\u0304\u0300", + "\u006F\u0304\u0300", + "\u004F\u0304\u0301", + "\u006F\u0304\u0301", + "\u0050\u0301", + "\u0070\u0301", + "\u0050\u0307", + "\u0070\u0307", + "\u0052\u0307", + "\u0072\u0307", + "\u0052\u0323", + "\u0072\u0323", + "\u0052\u0323\u0304", + "\u0072\u0323\u0304", + "\u0052\u0331", + "\u0072\u0331", + "\u0053\u0307", + "\u0073\u0307", + "\u0053\u0323", + "\u0073\u0323", + "\u0053\u0301\u0307", + "\u0073\u0301\u0307", + "\u0053\u030C\u0307", + "\u0073\u030C\u0307", + "\u0053\u0323\u0307", + "\u0073\u0323\u0307", + "\u0054\u0307", + "\u0074\u0307", + "\u0054\u0323", + "\u0074\u0323", + "\u0054\u0331", + "\u0074\u0331", + "\u0054\u032D", + "\u0074\u032D", + "\u0055\u0324", + "\u0075\u0324", + "\u0055\u0330", + "\u0075\u0330", + "\u0055\u032D", + "\u0075\u032D", + "\u0055\u0303\u0301", + "\u0075\u0303\u0301", + "\u0055\u0304\u0308", + "\u0075\u0304\u0308", + "\u0056\u0303", + "\u0076\u0303", + "\u0056\u0323", + "\u0076\u0323", + "\u0057\u0300", + "\u0077\u0300", + "\u0057\u0301", + "\u0077\u0301", + "\u0057\u0308", + "\u0077\u0308", + "\u0057\u0307", + "\u0077\u0307", + "\u0057\u0323", + "\u0077\u0323", + "\u0058\u0307", + "\u0078\u0307", + "\u0058\u0308", + "\u0078\u0308", + "\u0059\u0307", + "\u0079\u0307", + "\u005A\u0302", + "\u007A\u0302", + "\u005A\u0323", + "\u007A\u0323", + "\u005A\u0331", + "\u007A\u0331", + "\u0068\u0331", + "\u0074\u0308", + "\u0077\u030A", + "\u0079\u030A", + "\u0061\u02BE", + "\u0041\u0323", + "\u0061\u0323", + "\u0041\u0309", + "\u0061\u0309", + "\u0041\u0302\u0301", + "\u0061\u0302\u0301", + "\u0041\u0302\u0300", + "\u0061\u0302\u0300", + "\u0041\u0302\u0309", + "\u0061\u0302\u0309", + "\u0041\u0302\u0303", + "\u0061\u0302\u0303", + "\u0041\u0323\u0302", + "\u0061\u0323\u0302", + "\u0041\u0306\u0301", + "\u0061\u0306\u0301", + "\u0041\u0306\u0300", + "\u0061\u0306\u0300", + "\u0041\u0306\u0309", + "\u0061\u0306\u0309", + "\u0041\u0306\u0303", + "\u0061\u0306\u0303", + "\u0041\u0323\u0306", + "\u0061\u0323\u0306", + "\u0045\u0323", + "\u0065\u0323", + "\u0045\u0309", + "\u0065\u0309", + "\u0045\u0303", + "\u0065\u0303", + "\u0045\u0302\u0301", + "\u0065\u0302\u0301", + "\u0045\u0302\u0300", + "\u0065\u0302\u0300", + "\u0045\u0302\u0309", + "\u0065\u0302\u0309", + "\u0045\u0302\u0303", + "\u0065\u0302\u0303", + "\u0045\u0323\u0302", + "\u0065\u0323\u0302", + "\u0049\u0309", + "\u0069\u0309", + "\u0049\u0323", + "\u0069\u0323", + "\u004F\u0323", + "\u006F\u0323", + "\u004F\u0309", + "\u006F\u0309", + "\u004F\u0302\u0301", + "\u006F\u0302\u0301", + "\u004F\u0302\u0300", + "\u006F\u0302\u0300", + "\u004F\u0302\u0309", + "\u006F\u0302\u0309", + "\u004F\u0302\u0303", + "\u006F\u0302\u0303", + "\u004F\u0323\u0302", + "\u006F\u0323\u0302", + "\u004F\u031B\u0301", + "\u006F\u031B\u0301", + "\u004F\u031B\u0300", + "\u006F\u031B\u0300", + "\u004F\u031B\u0309", + "\u006F\u031B\u0309", + "\u004F\u031B\u0303", + "\u006F\u031B\u0303", + "\u004F\u031B\u0323", + "\u006F\u031B\u0323", + "\u0055\u0323", + "\u0075\u0323", + "\u0055\u0309", + "\u0075\u0309", + "\u0055\u031B\u0301", + "\u0075\u031B\u0301", + "\u0055\u031B\u0300", + "\u0075\u031B\u0300", + "\u0055\u031B\u0309", + "\u0075\u031B\u0309", + "\u0055\u031B\u0303", + "\u0075\u031B\u0303", + "\u0055\u031B\u0323", + "\u0075\u031B\u0323", + "\u0059\u0300", + "\u0079\u0300", + "\u0059\u0323", + "\u0079\u0323", + "\u0059\u0309", + "\u0079\u0309", + "\u0059\u0303", + "\u0079\u0303", + "\u03B1\u0313", + "\u03B1\u0314", + "\u03B1\u0313\u0300", + "\u03B1\u0314\u0300", + "\u03B1\u0313\u0301", + "\u03B1\u0314\u0301", + "\u03B1\u0313\u0342", + "\u03B1\u0314\u0342", + "\u0391\u0313", + "\u0391\u0314", + "\u0391\u0313\u0300", + "\u0391\u0314\u0300", + "\u0391\u0313\u0301", + "\u0391\u0314\u0301", + "\u0391\u0313\u0342", + "\u0391\u0314\u0342", + "\u03B5\u0313", + "\u03B5\u0314", + "\u03B5\u0313\u0300", + "\u03B5\u0314\u0300", + "\u03B5\u0313\u0301", + "\u03B5\u0314\u0301", + "\u0395\u0313", + "\u0395\u0314", + "\u0395\u0313\u0300", + "\u0395\u0314\u0300", + "\u0395\u0313\u0301", + "\u0395\u0314\u0301", + "\u03B7\u0313", + "\u03B7\u0314", + "\u03B7\u0313\u0300", + "\u03B7\u0314\u0300", + "\u03B7\u0313\u0301", + "\u03B7\u0314\u0301", + "\u03B7\u0313\u0342", + "\u03B7\u0314\u0342", + "\u0397\u0313", + "\u0397\u0314", + "\u0397\u0313\u0300", + "\u0397\u0314\u0300", + "\u0397\u0313\u0301", + "\u0397\u0314\u0301", + "\u0397\u0313\u0342", + "\u0397\u0314\u0342", + "\u03B9\u0313", + "\u03B9\u0314", + "\u03B9\u0313\u0300", + "\u03B9\u0314\u0300", + "\u03B9\u0313\u0301", + "\u03B9\u0314\u0301", + "\u03B9\u0313\u0342", + "\u03B9\u0314\u0342", + "\u0399\u0313", + "\u0399\u0314", + "\u0399\u0313\u0300", + "\u0399\u0314\u0300", + "\u0399\u0313\u0301", + "\u0399\u0314\u0301", + "\u0399\u0313\u0342", + "\u0399\u0314\u0342", + "\u03BF\u0313", + "\u03BF\u0314", + "\u03BF\u0313\u0300", + "\u03BF\u0314\u0300", + "\u03BF\u0313\u0301", + "\u03BF\u0314\u0301", + "\u039F\u0313", + "\u039F\u0314", + "\u039F\u0313\u0300", + "\u039F\u0314\u0300", + "\u039F\u0313\u0301", + "\u039F\u0314\u0301", + "\u03C5\u0313", + "\u03C5\u0314", + "\u03C5\u0313\u0300", + "\u03C5\u0314\u0300", + "\u03C5\u0313\u0301", + "\u03C5\u0314\u0301", + "\u03C5\u0313\u0342", + "\u03C5\u0314\u0342", + "\u03A5\u0314", + "\u03A5\u0314\u0300", + "\u03A5\u0314\u0301", + "\u03A5\u0314\u0342", + "\u03C9\u0313", + "\u03C9\u0314", + "\u03C9\u0313\u0300", + "\u03C9\u0314\u0300", + "\u03C9\u0313\u0301", + "\u03C9\u0314\u0301", + "\u03C9\u0313\u0342", + "\u03C9\u0314\u0342", + "\u03A9\u0313", + "\u03A9\u0314", + "\u03A9\u0313\u0300", + "\u03A9\u0314\u0300", + "\u03A9\u0313\u0301", + "\u03A9\u0314\u0301", + "\u03A9\u0313\u0342", + "\u03A9\u0314\u0342", + "\u03B1\u0300", + "\u03B5\u0300", + "\u03B7\u0300", + "\u03B9\u0300", + "\u03BF\u0300", + "\u03C5\u0300", + "\u03C9\u0300", + "\u03B1\u0313\u0345", + "\u03B1\u0314\u0345", + "\u03B1\u0313\u0300\u0345", + "\u03B1\u0314\u0300\u0345", + "\u03B1\u0313\u0301\u0345", + "\u03B1\u0314\u0301\u0345", + "\u03B1\u0313\u0342\u0345", + "\u03B1\u0314\u0342\u0345", + "\u0391\u0313\u0345", + "\u0391\u0314\u0345", + "\u0391\u0313\u0300\u0345", + "\u0391\u0314\u0300\u0345", + "\u0391\u0313\u0301\u0345", + "\u0391\u0314\u0301\u0345", + "\u0391\u0313\u0342\u0345", + "\u0391\u0314\u0342\u0345", + "\u03B7\u0313\u0345", + "\u03B7\u0314\u0345", + "\u03B7\u0313\u0300\u0345", + "\u03B7\u0314\u0300\u0345", + "\u03B7\u0313\u0301\u0345", + "\u03B7\u0314\u0301\u0345", + "\u03B7\u0313\u0342\u0345", + "\u03B7\u0314\u0342\u0345", + "\u0397\u0313\u0345", + "\u0397\u0314\u0345", + "\u0397\u0313\u0300\u0345", + "\u0397\u0314\u0300\u0345", + "\u0397\u0313\u0301\u0345", + "\u0397\u0314\u0301\u0345", + "\u0397\u0313\u0342\u0345", + "\u0397\u0314\u0342\u0345", + "\u03C9\u0313\u0345", + "\u03C9\u0314\u0345", + "\u03C9\u0313\u0300\u0345", + "\u03C9\u0314\u0300\u0345", + "\u03C9\u0313\u0301\u0345", + "\u03C9\u0314\u0301\u0345", + "\u03C9\u0313\u0342\u0345", + "\u03C9\u0314\u0342\u0345", + "\u03A9\u0313\u0345", + "\u03A9\u0314\u0345", + "\u03A9\u0313\u0300\u0345", + "\u03A9\u0314\u0300\u0345", + "\u03A9\u0313\u0301\u0345", + "\u03A9\u0314\u0301\u0345", + "\u03A9\u0313\u0342\u0345", + "\u03A9\u0314\u0342\u0345", + "\u03B1\u0306", + "\u03B1\u0304", + "\u03B1\u0300\u0345", + "\u03B1\u0345", + "\u03B1\u0301\u0345", + "\u03B1\u0342", + "\u03B1\u0342\u0345", + "\u0391\u0306", + "\u0391\u0304", + "\u0391\u0300", + "\u0391\u0345", + "\u0020\u0313", + "\u03B9", + "\u0020\u0342", + "\u0020\u0308\u0342", + "\u03B7\u0300\u0345", + "\u03B7\u0345", + "\u03B7\u0301\u0345", + "\u03B7\u0342", + "\u03B7\u0342\u0345", + "\u0395\u0300", + "\u0397\u0300", + "\u0397\u0345", + "\u0020\u0313\u0300", + "\u0020\u0313\u0301", + "\u0020\u0313\u0342", + "\u03B9\u0306", + "\u03B9\u0304", + "\u03B9\u0308\u0300", + "\u03B9\u0342", + "\u03B9\u0308\u0342", + "\u0399\u0306", + "\u0399\u0304", + "\u0399\u0300", + "\u0020\u0314\u0300", + "\u0020\u0314\u0301", + "\u0020\u0314\u0342", + "\u03C5\u0306", + "\u03C5\u0304", + "\u03C5\u0308\u0300", + "\u03C1\u0313", + "\u03C1\u0314", + "\u03C5\u0342", + "\u03C5\u0308\u0342", + "\u03A5\u0306", + "\u03A5\u0304", + "\u03A5\u0300", + "\u03A1\u0314", + "\u0020\u0308\u0300", + "\u0060", + "\u03C9\u0300\u0345", + "\u03C9\u0345", + "\u03C9\u0301\u0345", + "\u03C9\u0342", + "\u03C9\u0342\u0345", + "\u039F\u0300", + "\u03A9\u0300", + "\u03A9\u0345", + "\u0020\u0314", + "\u2010", + "\u0020\u0333", + "\u002E", + "\u002E\u002E", + "\u002E\u002E\u002E", + "\u2032\u2032", + "\u2032\u2032\u2032", + "\u2035\u2035", + "\u2035\u2035\u2035", + "\u0021\u0021", + "\u0020\u0305", + "\u003F\u003F", + "\u003F\u0021", + "\u0021\u003F", + "\u2032\u2032\u2032\u2032", + "\u0030", + "\u0069", + "\u0034", + "\u0035", + "\u0036", + "\u0037", + "\u0038", + "\u0039", + "\u002B", + "\u2212", + "\u003D", + "\u0028", + "\u0029", + "\u006E", + "\u0052\u0073", + "\u0061\u002F\u0063", + "\u0061\u002F\u0073", + "\u0043", + "\u00B0\u0043", + "\u0063\u002F\u006F", + "\u0063\u002F\u0075", + "\u0190", + "\u00B0\u0046", + "\u0067", + "\u0048", + "\u0127", + "\u0049", + "\u004C", + "\u004E", + "\u004E\u006F", + "\u0050", + "\u0051", + "\u0052", + "\u0053\u004D", + "\u0054\u0045\u004C", + "\u0054\u004D", + "\u005A", + "\u03A9", + "\u004B", + "\u0042", + "\u0065", + "\u0045", + "\u0046", + "\u004D", + "\u05D0", + "\u05D1", + "\u05D2", + "\u05D3", + "\u03B3", + "\u0393", + "\u03A0", + "\u2211", + "\u0044", + "\u0064", + "\u0031\u2044\u0033", + "\u0032\u2044\u0033", + "\u0031\u2044\u0035", + "\u0032\u2044\u0035", + "\u0033\u2044\u0035", + "\u0034\u2044\u0035", + "\u0031\u2044\u0036", + "\u0035\u2044\u0036", + "\u0031\u2044\u0038", + "\u0033\u2044\u0038", + "\u0035\u2044\u0038", + "\u0037\u2044\u0038", + "\u0031\u2044", + "\u0049\u0049", + "\u0049\u0049\u0049", + "\u0049\u0056", + "\u0056", + "\u0056\u0049", + "\u0056\u0049\u0049", + "\u0056\u0049\u0049\u0049", + "\u0049\u0058", + "\u0058", + "\u0058\u0049", + "\u0058\u0049\u0049", + "\u0069\u0069", + "\u0069\u0069\u0069", + "\u0069\u0076", + "\u0076", + "\u0076\u0069", + "\u0076\u0069\u0069", + "\u0076\u0069\u0069\u0069", + "\u0069\u0078", + "\u0078\u0069", + "\u0078\u0069\u0069", + "\u0063", + "\u006D", + "\u2190\u0338", + "\u2192\u0338", + "\u2194\u0338", + "\u21D0\u0338", + "\u21D4\u0338", + "\u21D2\u0338", + "\u2203\u0338", + "\u2208\u0338", + "\u220B\u0338", + "\u2223\u0338", + "\u2225\u0338", + "\u222B\u222B", + "\u222B\u222B\u222B", + "\u222E\u222E", + "\u222E\u222E\u222E", + "\u223C\u0338", + "\u2243\u0338", + "\u2245\u0338", + "\u2248\u0338", + "\u003D\u0338", + "\u2261\u0338", + "\u224D\u0338", + "\u003C\u0338", + "\u003E\u0338", + "\u2264\u0338", + "\u2265\u0338", + "\u2272\u0338", + "\u2273\u0338", + "\u2276\u0338", + "\u2277\u0338", + "\u227A\u0338", + "\u227B\u0338", + "\u2282\u0338", + "\u2283\u0338", + "\u2286\u0338", + "\u2287\u0338", + "\u22A2\u0338", + "\u22A8\u0338", + "\u22A9\u0338", + "\u22AB\u0338", + "\u227C\u0338", + "\u227D\u0338", + "\u2291\u0338", + "\u2292\u0338", + "\u22B2\u0338", + "\u22B3\u0338", + "\u22B4\u0338", + "\u22B5\u0338", + "\u3008", + "\u3009", + "\u0031\u0030", + "\u0031\u0031", + "\u0031\u0032", + "\u0031\u0033", + "\u0031\u0034", + "\u0031\u0035", + "\u0031\u0036", + "\u0031\u0037", + "\u0031\u0038", + "\u0031\u0039", + "\u0032\u0030", + "\u0028\u0031\u0029", + "\u0028\u0032\u0029", + "\u0028\u0033\u0029", + "\u0028\u0034\u0029", + "\u0028\u0035\u0029", + "\u0028\u0036\u0029", + "\u0028\u0037\u0029", + "\u0028\u0038\u0029", + "\u0028\u0039\u0029", + "\u0028\u0031\u0030\u0029", + "\u0028\u0031\u0031\u0029", + "\u0028\u0031\u0032\u0029", + "\u0028\u0031\u0033\u0029", + "\u0028\u0031\u0034\u0029", + "\u0028\u0031\u0035\u0029", + "\u0028\u0031\u0036\u0029", + "\u0028\u0031\u0037\u0029", + "\u0028\u0031\u0038\u0029", + "\u0028\u0031\u0039\u0029", + "\u0028\u0032\u0030\u0029", + "\u0031\u002E", + "\u0032\u002E", + "\u0033\u002E", + "\u0034\u002E", + "\u0035\u002E", + "\u0036\u002E", + "\u0037\u002E", + "\u0038\u002E", + "\u0039\u002E", + "\u0031\u0030\u002E", + "\u0031\u0031\u002E", + "\u0031\u0032\u002E", + "\u0031\u0033\u002E", + "\u0031\u0034\u002E", + "\u0031\u0035\u002E", + "\u0031\u0036\u002E", + "\u0031\u0037\u002E", + "\u0031\u0038\u002E", + "\u0031\u0039\u002E", + "\u0032\u0030\u002E", + "\u0028\u0061\u0029", + "\u0028\u0062\u0029", + "\u0028\u0063\u0029", + "\u0028\u0064\u0029", + "\u0028\u0065\u0029", + "\u0028\u0066\u0029", + "\u0028\u0067\u0029", + "\u0028\u0068\u0029", + "\u0028\u0069\u0029", + "\u0028\u006A\u0029", + "\u0028\u006B\u0029", + "\u0028\u006C\u0029", + "\u0028\u006D\u0029", + "\u0028\u006E\u0029", + "\u0028\u006F\u0029", + "\u0028\u0070\u0029", + "\u0028\u0071\u0029", + "\u0028\u0072\u0029", + "\u0028\u0073\u0029", + "\u0028\u0074\u0029", + "\u0028\u0075\u0029", + "\u0028\u0076\u0029", + "\u0028\u0077\u0029", + "\u0028\u0078\u0029", + "\u0028\u0079\u0029", + "\u0028\u007A\u0029", + "\u0041", + "\u0047", + "\u004A", + "\u004F", + "\u0053", + "\u0054", + "\u0055", + "\u0057", + "\u0059", + "\u0062", + "\u0066", + "\u006B", + "\u0070", + "\u0071", + "\u0074", + "\u0075", + "\u007A", + "\u222B\u222B\u222B\u222B", + "\u003A\u003A\u003D", + "\u003D\u003D", + "\u003D\u003D\u003D", + "\u2ADD\u0338", + "\u6BCD", + "\u9F9F", + "\u4E00", + "\u4E28", + "\u4E36", + "\u4E3F", + "\u4E59", + "\u4E85", + "\u4E8C", + "\u4EA0", + "\u4EBA", + "\u513F", + "\u5165", + "\u516B", + "\u5182", + "\u5196", + "\u51AB", + "\u51E0", + "\u51F5", + "\u5200", + "\u529B", + "\u52F9", + "\u5315", + "\u531A", + "\u5338", + "\u5341", + "\u535C", + "\u5369", + "\u5382", + "\u53B6", + "\u53C8", + "\u53E3", + "\u56D7", + "\u571F", + "\u58EB", + "\u5902", + "\u590A", + "\u5915", + "\u5927", + "\u5973", + "\u5B50", + "\u5B80", + "\u5BF8", + "\u5C0F", + "\u5C22", + "\u5C38", + "\u5C6E", + "\u5C71", + "\u5DDB", + "\u5DE5", + "\u5DF1", + "\u5DFE", + "\u5E72", + "\u5E7A", + "\u5E7F", + "\u5EF4", + "\u5EFE", + "\u5F0B", + "\u5F13", + "\u5F50", + "\u5F61", + "\u5F73", + "\u5FC3", + "\u6208", + "\u6236", + "\u624B", + "\u652F", + "\u6534", + "\u6587", + "\u6597", + "\u65A4", + "\u65B9", + "\u65E0", + "\u65E5", + "\u66F0", + "\u6708", + "\u6728", + "\u6B20", + "\u6B62", + "\u6B79", + "\u6BB3", + "\u6BCB", + "\u6BD4", + "\u6BDB", + "\u6C0F", + "\u6C14", + "\u6C34", + "\u706B", + "\u722A", + "\u7236", + "\u723B", + "\u723F", + "\u7247", + "\u7259", + "\u725B", + "\u72AC", + "\u7384", + "\u7389", + "\u74DC", + "\u74E6", + "\u7518", + "\u751F", + "\u7528", + "\u7530", + "\u758B", + "\u7592", + "\u7676", + "\u767D", + "\u76AE", + "\u76BF", + "\u76EE", + "\u77DB", + "\u77E2", + "\u77F3", + "\u793A", + "\u79B8", + "\u79BE", + "\u7A74", + "\u7ACB", + "\u7AF9", + "\u7C73", + "\u7CF8", + "\u7F36", + "\u7F51", + "\u7F8A", + "\u7FBD", + "\u8001", + "\u800C", + "\u8012", + "\u8033", + "\u807F", + "\u8089", + "\u81E3", + "\u81EA", + "\u81F3", + "\u81FC", + "\u820C", + "\u821B", + "\u821F", + "\u826E", + "\u8272", + "\u8278", + "\u864D", + "\u866B", + "\u8840", + "\u884C", + "\u8863", + "\u897E", + "\u898B", + "\u89D2", + "\u8A00", + "\u8C37", + "\u8C46", + "\u8C55", + "\u8C78", + "\u8C9D", + "\u8D64", + "\u8D70", + "\u8DB3", + "\u8EAB", + "\u8ECA", + "\u8F9B", + "\u8FB0", + "\u8FB5", + "\u9091", + "\u9149", + "\u91C6", + "\u91CC", + "\u91D1", + "\u9577", + "\u9580", + "\u961C", + "\u96B6", + "\u96B9", + "\u96E8", + "\u9751", + "\u975E", + "\u9762", + "\u9769", + "\u97CB", + "\u97ED", + "\u97F3", + "\u9801", + "\u98A8", + "\u98DB", + "\u98DF", + "\u9996", + "\u9999", + "\u99AC", + "\u9AA8", + "\u9AD8", + "\u9ADF", + "\u9B25", + "\u9B2F", + "\u9B32", + "\u9B3C", + "\u9B5A", + "\u9CE5", + "\u9E75", + "\u9E7F", + "\u9EA5", + "\u9EBB", + "\u9EC3", + "\u9ECD", + "\u9ED1", + "\u9EF9", + "\u9EFD", + "\u9F0E", + "\u9F13", + "\u9F20", + "\u9F3B", + "\u9F4A", + "\u9F52", + "\u9F8D", + "\u9F9C", + "\u9FA0", + "\u3012", + "\u5344", + "\u5345", + "\u304B\u3099", + "\u304D\u3099", + "\u304F\u3099", + "\u3051\u3099", + "\u3053\u3099", + "\u3055\u3099", + "\u3057\u3099", + "\u3059\u3099", + "\u305B\u3099", + "\u305D\u3099", + "\u305F\u3099", + "\u3061\u3099", + "\u3064\u3099", + "\u3066\u3099", + "\u3068\u3099", + "\u306F\u3099", + "\u306F\u309A", + "\u3072\u3099", + "\u3072\u309A", + "\u3075\u3099", + "\u3075\u309A", + "\u3078\u3099", + "\u3078\u309A", + "\u307B\u3099", + "\u307B\u309A", + "\u3046\u3099", + "\u0020\u3099", + "\u0020\u309A", + "\u309D\u3099", + "\u3088\u308A", + "\u30AB\u3099", + "\u30AD\u3099", + "\u30AF\u3099", + "\u30B1\u3099", + "\u30B3\u3099", + "\u30B5\u3099", + "\u30B7\u3099", + "\u30B9\u3099", + "\u30BB\u3099", + "\u30BD\u3099", + "\u30BF\u3099", + "\u30C1\u3099", + "\u30C4\u3099", + "\u30C6\u3099", + "\u30C8\u3099", + "\u30CF\u3099", + "\u30CF\u309A", + "\u30D2\u3099", + "\u30D2\u309A", + "\u30D5\u3099", + "\u30D5\u309A", + "\u30D8\u3099", + "\u30D8\u309A", + "\u30DB\u3099", + "\u30DB\u309A", + "\u30A6\u3099", + "\u30EF\u3099", + "\u30F0\u3099", + "\u30F1\u3099", + "\u30F2\u3099", + "\u30FD\u3099", + "\u30B3\u30C8", + "\u1100", + "\u1101", + "\u11AA", + "\u1102", + "\u11AC", + "\u11AD", + "\u1103", + "\u1104", + "\u1105", + "\u11B0", + "\u11B1", + "\u11B2", + "\u11B3", + "\u11B4", + "\u11B5", + "\u111A", + "\u1106", + "\u1107", + "\u1108", + "\u1121", + "\u1109", + "\u110A", + "\u110B", + "\u110C", + "\u110D", + "\u110E", + "\u110F", + "\u1110", + "\u1111", + "\u1112", + "\u1161", + "\u1162", + "\u1163", + "\u1164", + "\u1165", + "\u1166", + "\u1167", + "\u1168", + "\u1169", + "\u116A", + "\u116B", + "\u116C", + "\u116D", + "\u116E", + "\u116F", + "\u1170", + "\u1171", + "\u1172", + "\u1173", + "\u1174", + "\u1175", + "\u1160", + "\u1114", + "\u1115", + "\u11C7", + "\u11C8", + "\u11CC", + "\u11CE", + "\u11D3", + "\u11D7", + "\u11D9", + "\u111C", + "\u11DD", + "\u11DF", + "\u111D", + "\u111E", + "\u1120", + "\u1122", + "\u1123", + "\u1127", + "\u1129", + "\u112B", + "\u112C", + "\u112D", + "\u112E", + "\u112F", + "\u1132", + "\u1136", + "\u1140", + "\u1147", + "\u114C", + "\u11F1", + "\u11F2", + "\u1157", + "\u1158", + "\u1159", + "\u1184", + "\u1185", + "\u1188", + "\u1191", + "\u1192", + "\u1194", + "\u119E", + "\u11A1", + "\u4E09", + "\u56DB", + "\u4E0A", + "\u4E2D", + "\u4E0B", + "\u7532", + "\u4E19", + "\u4E01", + "\u5929", + "\u5730", + "\u0028\u1100\u0029", + "\u0028\u1102\u0029", + "\u0028\u1103\u0029", + "\u0028\u1105\u0029", + "\u0028\u1106\u0029", + "\u0028\u1107\u0029", + "\u0028\u1109\u0029", + "\u0028\u110B\u0029", + "\u0028\u110C\u0029", + "\u0028\u110E\u0029", + "\u0028\u110F\u0029", + "\u0028\u1110\u0029", + "\u0028\u1111\u0029", + "\u0028\u1112\u0029", + "\u0028\u1100\u1161\u0029", + "\u0028\u1102\u1161\u0029", + "\u0028\u1103\u1161\u0029", + "\u0028\u1105\u1161\u0029", + "\u0028\u1106\u1161\u0029", + "\u0028\u1107\u1161\u0029", + "\u0028\u1109\u1161\u0029", + "\u0028\u110B\u1161\u0029", + "\u0028\u110C\u1161\u0029", + "\u0028\u110E\u1161\u0029", + "\u0028\u110F\u1161\u0029", + "\u0028\u1110\u1161\u0029", + "\u0028\u1111\u1161\u0029", + "\u0028\u1112\u1161\u0029", + "\u0028\u110C\u116E\u0029", + "\u0028\u4E00\u0029", + "\u0028\u4E8C\u0029", + "\u0028\u4E09\u0029", + "\u0028\u56DB\u0029", + "\u0028\u4E94\u0029", + "\u0028\u516D\u0029", + "\u0028\u4E03\u0029", + "\u0028\u516B\u0029", + "\u0028\u4E5D\u0029", + "\u0028\u5341\u0029", + "\u0028\u6708\u0029", + "\u0028\u706B\u0029", + "\u0028\u6C34\u0029", + "\u0028\u6728\u0029", + "\u0028\u91D1\u0029", + "\u0028\u571F\u0029", + "\u0028\u65E5\u0029", + "\u0028\u682A\u0029", + "\u0028\u6709\u0029", + "\u0028\u793E\u0029", + "\u0028\u540D\u0029", + "\u0028\u7279\u0029", + "\u0028\u8CA1\u0029", + "\u0028\u795D\u0029", + "\u0028\u52B4\u0029", + "\u0028\u4EE3\u0029", + "\u0028\u547C\u0029", + "\u0028\u5B66\u0029", + "\u0028\u76E3\u0029", + "\u0028\u4F01\u0029", + "\u0028\u8CC7\u0029", + "\u0028\u5354\u0029", + "\u0028\u796D\u0029", + "\u0028\u4F11\u0029", + "\u0028\u81EA\u0029", + "\u0028\u81F3\u0029", + "\u0032\u0031", + "\u0032\u0032", + "\u0032\u0033", + "\u0032\u0034", + "\u0032\u0035", + "\u0032\u0036", + "\u0032\u0037", + "\u0032\u0038", + "\u0032\u0039", + "\u0033\u0030", + "\u0033\u0031", + "\u0033\u0032", + "\u0033\u0033", + "\u0033\u0034", + "\u0033\u0035", + "\u1100\u1161", + "\u1102\u1161", + "\u1103\u1161", + "\u1105\u1161", + "\u1106\u1161", + "\u1107\u1161", + "\u1109\u1161", + "\u110B\u1161", + "\u110C\u1161", + "\u110E\u1161", + "\u110F\u1161", + "\u1110\u1161", + "\u1111\u1161", + "\u1112\u1161", + "\u4E94", + "\u516D", + "\u4E03", + "\u4E5D", + "\u682A", + "\u6709", + "\u793E", + "\u540D", + "\u7279", + "\u8CA1", + "\u795D", + "\u52B4", + "\u79D8", + "\u7537", + "\u9069", + "\u512A", + "\u5370", + "\u6CE8", + "\u9805", + "\u4F11", + "\u5199", + "\u6B63", + "\u5DE6", + "\u53F3", + "\u533B", + "\u5B97", + "\u5B66", + "\u76E3", + "\u4F01", + "\u8CC7", + "\u5354", + "\u591C", + "\u0033\u0036", + "\u0033\u0037", + "\u0033\u0038", + "\u0033\u0039", + "\u0034\u0030", + "\u0034\u0031", + "\u0034\u0032", + "\u0034\u0033", + "\u0034\u0034", + "\u0034\u0035", + "\u0034\u0036", + "\u0034\u0037", + "\u0034\u0038", + "\u0034\u0039", + "\u0035\u0030", + "\u0031\u6708", + "\u0032\u6708", + "\u0033\u6708", + "\u0034\u6708", + "\u0035\u6708", + "\u0036\u6708", + "\u0037\u6708", + "\u0038\u6708", + "\u0039\u6708", + "\u0031\u0030\u6708", + "\u0031\u0031\u6708", + "\u0031\u0032\u6708", + "\u30A2", + "\u30A4", + "\u30A6", + "\u30A8", + "\u30AA", + "\u30AB", + "\u30AD", + "\u30AF", + "\u30B1", + "\u30B3", + "\u30B5", + "\u30B7", + "\u30B9", + "\u30BB", + "\u30BD", + "\u30BF", + "\u30C1", + "\u30C4", + "\u30C6", + "\u30C8", + "\u30CA", + "\u30CB", + "\u30CC", + "\u30CD", + "\u30CE", + "\u30CF", + "\u30D2", + "\u30D5", + "\u30D8", + "\u30DB", + "\u30DE", + "\u30DF", + "\u30E0", + "\u30E1", + "\u30E2", + "\u30E4", + "\u30E6", + "\u30E8", + "\u30E9", + "\u30EA", + "\u30EB", + "\u30EC", + "\u30ED", + "\u30EF", + "\u30F0", + "\u30F1", + "\u30F2", + "\u30A2\u30CF\u309A\u30FC\u30C8", + "\u30A2\u30EB\u30D5\u30A1", + "\u30A2\u30F3\u30D8\u309A\u30A2", + "\u30A2\u30FC\u30EB", + "\u30A4\u30CB\u30F3\u30AF\u3099", + "\u30A4\u30F3\u30C1", + "\u30A6\u30A9\u30F3", + "\u30A8\u30B9\u30AF\u30FC\u30C8\u3099", + "\u30A8\u30FC\u30AB\u30FC", + "\u30AA\u30F3\u30B9", + "\u30AA\u30FC\u30E0", + "\u30AB\u30A4\u30EA", + "\u30AB\u30E9\u30C3\u30C8", + "\u30AB\u30ED\u30EA\u30FC", + "\u30AB\u3099\u30ED\u30F3", + "\u30AB\u3099\u30F3\u30DE", + "\u30AD\u3099\u30AB\u3099", + "\u30AD\u3099\u30CB\u30FC", + "\u30AD\u30E5\u30EA\u30FC", + "\u30AD\u3099\u30EB\u30BF\u3099\u30FC", + "\u30AD\u30ED", + "\u30AD\u30ED\u30AF\u3099\u30E9\u30E0", + "\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB", + "\u30AD\u30ED\u30EF\u30C3\u30C8", + "\u30AF\u3099\u30E9\u30E0", + "\u30AF\u3099\u30E9\u30E0\u30C8\u30F3", + "\u30AF\u30EB\u30BB\u3099\u30A4\u30ED", + "\u30AF\u30ED\u30FC\u30CD", + "\u30B1\u30FC\u30B9", + "\u30B3\u30EB\u30CA", + "\u30B3\u30FC\u30DB\u309A", + "\u30B5\u30A4\u30AF\u30EB", + "\u30B5\u30F3\u30C1\u30FC\u30E0", + "\u30B7\u30EA\u30F3\u30AF\u3099", + "\u30BB\u30F3\u30C1", + "\u30BB\u30F3\u30C8", + "\u30BF\u3099\u30FC\u30B9", + "\u30C6\u3099\u30B7", + "\u30C8\u3099\u30EB", + "\u30C8\u30F3", + "\u30CA\u30CE", + "\u30CE\u30C3\u30C8", + "\u30CF\u30A4\u30C4", + "\u30CF\u309A\u30FC\u30BB\u30F3\u30C8", + "\u30CF\u309A\u30FC\u30C4", + "\u30CF\u3099\u30FC\u30EC\u30EB", + "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB", + "\u30D2\u309A\u30AF\u30EB", + "\u30D2\u309A\u30B3", + "\u30D2\u3099\u30EB", + "\u30D5\u30A1\u30E9\u30C3\u30C8\u3099", + "\u30D5\u30A3\u30FC\u30C8", + "\u30D5\u3099\u30C3\u30B7\u30A7\u30EB", + "\u30D5\u30E9\u30F3", + "\u30D8\u30AF\u30BF\u30FC\u30EB", + "\u30D8\u309A\u30BD", + "\u30D8\u309A\u30CB\u30D2", + "\u30D8\u30EB\u30C4", + "\u30D8\u309A\u30F3\u30B9", + "\u30D8\u309A\u30FC\u30B7\u3099", + "\u30D8\u3099\u30FC\u30BF", + "\u30DB\u309A\u30A4\u30F3\u30C8", + "\u30DB\u3099\u30EB\u30C8", + "\u30DB\u30F3", + "\u30DB\u309A\u30F3\u30C8\u3099", + "\u30DB\u30FC\u30EB", + "\u30DB\u30FC\u30F3", + "\u30DE\u30A4\u30AF\u30ED", + "\u30DE\u30A4\u30EB", + "\u30DE\u30C3\u30CF", + "\u30DE\u30EB\u30AF", + "\u30DE\u30F3\u30B7\u30E7\u30F3", + "\u30DF\u30AF\u30ED\u30F3", + "\u30DF\u30EA", + "\u30DF\u30EA\u30CF\u3099\u30FC\u30EB", + "\u30E1\u30AB\u3099", + "\u30E1\u30AB\u3099\u30C8\u30F3", + "\u30E1\u30FC\u30C8\u30EB", + "\u30E4\u30FC\u30C8\u3099", + "\u30E4\u30FC\u30EB", + "\u30E6\u30A2\u30F3", + "\u30EA\u30C3\u30C8\u30EB", + "\u30EA\u30E9", + "\u30EB\u30D2\u309A\u30FC", + "\u30EB\u30FC\u30D5\u3099\u30EB", + "\u30EC\u30E0", + "\u30EC\u30F3\u30C8\u30B1\u3099\u30F3", + "\u30EF\u30C3\u30C8", + "\u0030\u70B9", + "\u0031\u70B9", + "\u0032\u70B9", + "\u0033\u70B9", + "\u0034\u70B9", + "\u0035\u70B9", + "\u0036\u70B9", + "\u0037\u70B9", + "\u0038\u70B9", + "\u0039\u70B9", + "\u0031\u0030\u70B9", + "\u0031\u0031\u70B9", + "\u0031\u0032\u70B9", + "\u0031\u0033\u70B9", + "\u0031\u0034\u70B9", + "\u0031\u0035\u70B9", + "\u0031\u0036\u70B9", + "\u0031\u0037\u70B9", + "\u0031\u0038\u70B9", + "\u0031\u0039\u70B9", + "\u0032\u0030\u70B9", + "\u0032\u0031\u70B9", + "\u0032\u0032\u70B9", + "\u0032\u0033\u70B9", + "\u0032\u0034\u70B9", + "\u0068\u0050\u0061", + "\u0064\u0061", + "\u0041\u0055", + "\u0062\u0061\u0072", + "\u006F\u0056", + "\u0070\u0063", + "\u5E73\u6210", + "\u662D\u548C", + "\u5927\u6B63", + "\u660E\u6CBB", + "\u682A\u5F0F\u4F1A\u793E", + "\u0070\u0041", + "\u006E\u0041", + "\u03BC\u0041", + "\u006D\u0041", + "\u006B\u0041", + "\u004B\u0042", + "\u004D\u0042", + "\u0047\u0042", + "\u0063\u0061\u006C", + "\u006B\u0063\u0061\u006C", + "\u0070\u0046", + "\u006E\u0046", + "\u03BC\u0046", + "\u03BC\u0067", + "\u006D\u0067", + "\u006B\u0067", + "\u0048\u007A", + "\u006B\u0048\u007A", + "\u004D\u0048\u007A", + "\u0047\u0048\u007A", + "\u0054\u0048\u007A", + "\u03BC\u006C", + "\u006D\u006C", + "\u0064\u006C", + "\u006B\u006C", + "\u0066\u006D", + "\u006E\u006D", + "\u03BC\u006D", + "\u006D\u006D", + "\u0063\u006D", + "\u006B\u006D", + "\u006D\u006D\u0032", + "\u0063\u006D\u0032", + "\u006D\u0032", + "\u006B\u006D\u0032", + "\u006D\u006D\u0033", + "\u0063\u006D\u0033", + "\u006D\u0033", + "\u006B\u006D\u0033", + "\u006D\u2215\u0073", + "\u006D\u2215\u0073\u0032", + "\u0050\u0061", + "\u006B\u0050\u0061", + "\u004D\u0050\u0061", + "\u0047\u0050\u0061", + "\u0072\u0061\u0064", + "\u0072\u0061\u0064\u2215\u0073", + "\u0072\u0061\u0064\u2215\u0073\u0032", + "\u0070\u0073", + "\u006E\u0073", + "\u03BC\u0073", + "\u006D\u0073", + "\u0070\u0056", + "\u006E\u0056", + "\u03BC\u0056", + "\u006D\u0056", + "\u006B\u0056", + "\u004D\u0056", + "\u0070\u0057", + "\u006E\u0057", + "\u03BC\u0057", + "\u006D\u0057", + "\u006B\u0057", + "\u004D\u0057", + "\u006B\u03A9", + "\u004D\u03A9", + "\u0061\u002E\u006D\u002E", + "\u0042\u0071", + "\u0063\u0063", + "\u0063\u0064", + "\u0043\u2215\u006B\u0067", + "\u0043\u006F\u002E", + "\u0064\u0042", + "\u0047\u0079", + "\u0068\u0061", + "\u0048\u0050", + "\u0069\u006E", + "\u004B\u004B", + "\u004B\u004D", + "\u006B\u0074", + "\u006C\u006D", + "\u006C\u006E", + "\u006C\u006F\u0067", + "\u006C\u0078", + "\u006D\u0062", + "\u006D\u0069\u006C", + "\u006D\u006F\u006C", + "\u0050\u0048", + "\u0070\u002E\u006D\u002E", + "\u0050\u0050\u004D", + "\u0050\u0052", + "\u0073\u0072", + "\u0053\u0076", + "\u0057\u0062", + "\u0031\u65E5", + "\u0032\u65E5", + "\u0033\u65E5", + "\u0034\u65E5", + "\u0035\u65E5", + "\u0036\u65E5", + "\u0037\u65E5", + "\u0038\u65E5", + "\u0039\u65E5", + "\u0031\u0030\u65E5", + "\u0031\u0031\u65E5", + "\u0031\u0032\u65E5", + "\u0031\u0033\u65E5", + "\u0031\u0034\u65E5", + "\u0031\u0035\u65E5", + "\u0031\u0036\u65E5", + "\u0031\u0037\u65E5", + "\u0031\u0038\u65E5", + "\u0031\u0039\u65E5", + "\u0032\u0030\u65E5", + "\u0032\u0031\u65E5", + "\u0032\u0032\u65E5", + "\u0032\u0033\u65E5", + "\u0032\u0034\u65E5", + "\u0032\u0035\u65E5", + "\u0032\u0036\u65E5", + "\u0032\u0037\u65E5", + "\u0032\u0038\u65E5", + "\u0032\u0039\u65E5", + "\u0033\u0030\u65E5", + "\u0033\u0031\u65E5", + "\u8C48", + "\u66F4", + "\u8CC8", + "\u6ED1", + "\u4E32", + "\u53E5", + "\u5951", + "\u5587", + "\u5948", + "\u61F6", + "\u7669", + "\u7F85", + "\u863F", + "\u87BA", + "\u88F8", + "\u908F", + "\u6A02", + "\u6D1B", + "\u70D9", + "\u73DE", + "\u843D", + "\u916A", + "\u99F1", + "\u4E82", + "\u5375", + "\u6B04", + "\u721B", + "\u862D", + "\u9E1E", + "\u5D50", + "\u6FEB", + "\u85CD", + "\u8964", + "\u62C9", + "\u81D8", + "\u881F", + "\u5ECA", + "\u6717", + "\u6D6A", + "\u72FC", + "\u90CE", + "\u4F86", + "\u51B7", + "\u52DE", + "\u64C4", + "\u6AD3", + "\u7210", + "\u76E7", + "\u8606", + "\u865C", + "\u8DEF", + "\u9732", + "\u9B6F", + "\u9DFA", + "\u788C", + "\u797F", + "\u7DA0", + "\u83C9", + "\u9304", + "\u8AD6", + "\u58DF", + "\u5F04", + "\u7C60", + "\u807E", + "\u7262", + "\u78CA", + "\u8CC2", + "\u96F7", + "\u58D8", + "\u5C62", + "\u6A13", + "\u6DDA", + "\u6F0F", + "\u7D2F", + "\u7E37", + "\u964B", + "\u52D2", + "\u808B", + "\u51DC", + "\u51CC", + "\u7A1C", + "\u7DBE", + "\u83F1", + "\u9675", + "\u8B80", + "\u62CF", + "\u8AFE", + "\u4E39", + "\u5BE7", + "\u6012", + "\u7387", + "\u7570", + "\u5317", + "\u78FB", + "\u4FBF", + "\u5FA9", + "\u4E0D", + "\u6CCC", + "\u6578", + "\u7D22", + "\u53C3", + "\u585E", + "\u7701", + "\u8449", + "\u8AAA", + "\u6BBA", + "\u6C88", + "\u62FE", + "\u82E5", + "\u63A0", + "\u7565", + "\u4EAE", + "\u5169", + "\u51C9", + "\u6881", + "\u7CE7", + "\u826F", + "\u8AD2", + "\u91CF", + "\u52F5", + "\u5442", + "\u5EEC", + "\u65C5", + "\u6FFE", + "\u792A", + "\u95AD", + "\u9A6A", + "\u9E97", + "\u9ECE", + "\u66C6", + "\u6B77", + "\u8F62", + "\u5E74", + "\u6190", + "\u6200", + "\u649A", + "\u6F23", + "\u7149", + "\u7489", + "\u79CA", + "\u7DF4", + "\u806F", + "\u8F26", + "\u84EE", + "\u9023", + "\u934A", + "\u5217", + "\u52A3", + "\u54BD", + "\u70C8", + "\u88C2", + "\u5EC9", + "\u5FF5", + "\u637B", + "\u6BAE", + "\u7C3E", + "\u7375", + "\u4EE4", + "\u56F9", + "\u5DBA", + "\u601C", + "\u73B2", + "\u7469", + "\u7F9A", + "\u8046", + "\u9234", + "\u96F6", + "\u9748", + "\u9818", + "\u4F8B", + "\u79AE", + "\u91B4", + "\u96B8", + "\u60E1", + "\u4E86", + "\u50DA", + "\u5BEE", + "\u5C3F", + "\u6599", + "\u71CE", + "\u7642", + "\u84FC", + "\u907C", + "\u6688", + "\u962E", + "\u5289", + "\u677B", + "\u67F3", + "\u6D41", + "\u6E9C", + "\u7409", + "\u7559", + "\u786B", + "\u7D10", + "\u985E", + "\u622E", + "\u9678", + "\u502B", + "\u5D19", + "\u6DEA", + "\u8F2A", + "\u5F8B", + "\u6144", + "\u6817", + "\u9686", + "\u5229", + "\u540F", + "\u5C65", + "\u6613", + "\u674E", + "\u68A8", + "\u6CE5", + "\u7406", + "\u75E2", + "\u7F79", + "\u88CF", + "\u88E1", + "\u96E2", + "\u533F", + "\u6EBA", + "\u541D", + "\u71D0", + "\u7498", + "\u85FA", + "\u96A3", + "\u9C57", + "\u9E9F", + "\u6797", + "\u6DCB", + "\u81E8", + "\u7B20", + "\u7C92", + "\u72C0", + "\u7099", + "\u8B58", + "\u4EC0", + "\u8336", + "\u523A", + "\u5207", + "\u5EA6", + "\u62D3", + "\u7CD6", + "\u5B85", + "\u6D1E", + "\u66B4", + "\u8F3B", + "\u964D", + "\u5ED3", + "\u5140", + "\u55C0", + "\u585A", + "\u6674", + "\u51DE", + "\u732A", + "\u76CA", + "\u793C", + "\u795E", + "\u7965", + "\u798F", + "\u9756", + "\u7CBE", + "\u8612", + "\u8AF8", + "\u9038", + "\u90FD", + "\u98EF", + "\u98FC", + "\u9928", + "\u9DB4", + "\u4FAE", + "\u50E7", + "\u514D", + "\u52C9", + "\u52E4", + "\u5351", + "\u559D", + "\u5606", + "\u5668", + "\u5840", + "\u58A8", + "\u5C64", + "\u6094", + "\u6168", + "\u618E", + "\u61F2", + "\u654F", + "\u65E2", + "\u6691", + "\u6885", + "\u6D77", + "\u6E1A", + "\u6F22", + "\u716E", + "\u722B", + "\u7422", + "\u7891", + "\u7949", + "\u7948", + "\u7950", + "\u7956", + "\u798D", + "\u798E", + "\u7A40", + "\u7A81", + "\u7BC0", + "\u7E09", + "\u7E41", + "\u7F72", + "\u8005", + "\u81ED", + "\u8279", + "\u8457", + "\u8910", + "\u8996", + "\u8B01", + "\u8B39", + "\u8CD3", + "\u8D08", + "\u8FB6", + "\u96E3", + "\u97FF", + "\u983B", + "\u0066\u0066", + "\u0066\u0069", + "\u0066\u006C", + "\u0066\u0066\u0069", + "\u0066\u0066\u006C", + "\u0073\u0074", + "\u0574\u0576", + "\u0574\u0565", + "\u0574\u056B", + "\u057E\u0576", + "\u0574\u056D", + "\u05D9\u05B4", + "\u05F2\u05B7", + "\u05E2", + "\u05D4", + "\u05DB", + "\u05DC", + "\u05DD", + "\u05E8", + "\u05EA", + "\u05E9\u05C1", + "\u05E9\u05C2", + "\u05E9\u05BC\u05C1", + "\u05E9\u05BC\u05C2", + "\u05D0\u05B7", + "\u05D0\u05B8", + "\u05D0\u05BC", + "\u05D1\u05BC", + "\u05D2\u05BC", + "\u05D3\u05BC", + "\u05D4\u05BC", + "\u05D5\u05BC", + "\u05D6\u05BC", + "\u05D8\u05BC", + "\u05D9\u05BC", + "\u05DA\u05BC", + "\u05DB\u05BC", + "\u05DC\u05BC", + "\u05DE\u05BC", + "\u05E0\u05BC", + "\u05E1\u05BC", + "\u05E3\u05BC", + "\u05E4\u05BC", + "\u05E6\u05BC", + "\u05E7\u05BC", + "\u05E8\u05BC", + "\u05E9\u05BC", + "\u05EA\u05BC", + "\u05D5\u05B9", + "\u05D1\u05BF", + "\u05DB\u05BF", + "\u05E4\u05BF", + "\u05D0\u05DC", + "\u0671", + "\u067B", + "\u067E", + "\u0680", + "\u067A", + "\u067F", + "\u0679", + "\u06A4", + "\u06A6", + "\u0684", + "\u0683", + "\u0686", + "\u0687", + "\u068D", + "\u068C", + "\u068E", + "\u0688", + "\u0698", + "\u0691", + "\u06A9", + "\u06AF", + "\u06B3", + "\u06B1", + "\u06BA", + "\u06BB", + "\u06C1", + "\u06BE", + "\u06D2", + "\u06AD", + "\u06C7", + "\u06C6", + "\u06C8", + "\u06CB", + "\u06C5", + "\u06C9", + "\u06D0", + "\u0649", + "\u064A\u0654\u0627", + "\u064A\u0654\u06D5", + "\u064A\u0654\u0648", + "\u064A\u0654\u06C7", + "\u064A\u0654\u06C6", + "\u064A\u0654\u06C8", + "\u064A\u0654\u06D0", + "\u064A\u0654\u0649", + "\u06CC", + "\u064A\u0654\u062C", + "\u064A\u0654\u062D", + "\u064A\u0654\u0645", + "\u064A\u0654\u064A", + "\u0628\u062C", + "\u0628\u062D", + "\u0628\u062E", + "\u0628\u0645", + "\u0628\u0649", + "\u0628\u064A", + "\u062A\u062C", + "\u062A\u062D", + "\u062A\u062E", + "\u062A\u0645", + "\u062A\u0649", + "\u062A\u064A", + "\u062B\u062C", + "\u062B\u0645", + "\u062B\u0649", + "\u062B\u064A", + "\u062C\u062D", + "\u062C\u0645", + "\u062D\u062C", + "\u062D\u0645", + "\u062E\u062C", + "\u062E\u062D", + "\u062E\u0645", + "\u0633\u062C", + "\u0633\u062D", + "\u0633\u062E", + "\u0633\u0645", + "\u0635\u062D", + "\u0635\u0645", + "\u0636\u062C", + "\u0636\u062D", + "\u0636\u062E", + "\u0636\u0645", + "\u0637\u062D", + "\u0637\u0645", + "\u0638\u0645", + "\u0639\u062C", + "\u0639\u0645", + "\u063A\u062C", + "\u063A\u0645", + "\u0641\u062C", + "\u0641\u062D", + "\u0641\u062E", + "\u0641\u0645", + "\u0641\u0649", + "\u0641\u064A", + "\u0642\u062D", + "\u0642\u0645", + "\u0642\u0649", + "\u0642\u064A", + "\u0643\u0627", + "\u0643\u062C", + "\u0643\u062D", + "\u0643\u062E", + "\u0643\u0644", + "\u0643\u0645", + "\u0643\u0649", + "\u0643\u064A", + "\u0644\u062C", + "\u0644\u062D", + "\u0644\u062E", + "\u0644\u0645", + "\u0644\u0649", + "\u0644\u064A", + "\u0645\u062C", + "\u0645\u062D", + "\u0645\u062E", + "\u0645\u0645", + "\u0645\u0649", + "\u0645\u064A", + "\u0646\u062C", + "\u0646\u062D", + "\u0646\u062E", + "\u0646\u0645", + "\u0646\u0649", + "\u0646\u064A", + "\u0647\u062C", + "\u0647\u0645", + "\u0647\u0649", + "\u0647\u064A", + "\u064A\u062C", + "\u064A\u062D", + "\u064A\u062E", + "\u064A\u0645", + "\u064A\u0649", + "\u064A\u064A", + "\u0630\u0670", + "\u0631\u0670", + "\u0649\u0670", + "\u0020\u064C\u0651", + "\u0020\u064D\u0651", + "\u0020\u064E\u0651", + "\u0020\u064F\u0651", + "\u0020\u0650\u0651", + "\u0020\u0651\u0670", + "\u064A\u0654\u0631", + "\u064A\u0654\u0632", + "\u064A\u0654\u0646", + "\u0628\u0631", + "\u0628\u0632", + "\u0628\u0646", + "\u062A\u0631", + "\u062A\u0632", + "\u062A\u0646", + "\u062B\u0631", + "\u062B\u0632", + "\u062B\u0646", + "\u0645\u0627", + "\u0646\u0631", + "\u0646\u0632", + "\u0646\u0646", + "\u064A\u0631", + "\u064A\u0632", + "\u064A\u0646", + "\u064A\u0654\u062E", + "\u064A\u0654\u0647", + "\u0628\u0647", + "\u062A\u0647", + "\u0635\u062E", + "\u0644\u0647", + "\u0646\u0647", + "\u0647\u0670", + "\u064A\u0647", + "\u062B\u0647", + "\u0633\u0647", + "\u0634\u0645", + "\u0634\u0647", + "\u0640\u064E\u0651", + "\u0640\u064F\u0651", + "\u0640\u0650\u0651", + "\u0637\u0649", + "\u0637\u064A", + "\u0639\u0649", + "\u0639\u064A", + "\u063A\u0649", + "\u063A\u064A", + "\u0633\u0649", + "\u0633\u064A", + "\u0634\u0649", + "\u0634\u064A", + "\u062D\u0649", + "\u062D\u064A", + "\u062C\u0649", + "\u062C\u064A", + "\u062E\u0649", + "\u062E\u064A", + "\u0635\u0649", + "\u0635\u064A", + "\u0636\u0649", + "\u0636\u064A", + "\u0634\u062C", + "\u0634\u062D", + "\u0634\u062E", + "\u0634\u0631", + "\u0633\u0631", + "\u0635\u0631", + "\u0636\u0631", + "\u0627\u064B", + "\u062A\u062C\u0645", + "\u062A\u062D\u062C", + "\u062A\u062D\u0645", + "\u062A\u062E\u0645", + "\u062A\u0645\u062C", + "\u062A\u0645\u062D", + "\u062A\u0645\u062E", + "\u062C\u0645\u062D", + "\u062D\u0645\u064A", + "\u062D\u0645\u0649", + "\u0633\u062D\u062C", + "\u0633\u062C\u062D", + "\u0633\u062C\u0649", + "\u0633\u0645\u062D", + "\u0633\u0645\u062C", + "\u0633\u0645\u0645", + "\u0635\u062D\u062D", + "\u0635\u0645\u0645", + "\u0634\u062D\u0645", + "\u0634\u062C\u064A", + "\u0634\u0645\u062E", + "\u0634\u0645\u0645", + "\u0636\u062D\u0649", + "\u0636\u062E\u0645", + "\u0637\u0645\u062D", + "\u0637\u0645\u0645", + "\u0637\u0645\u064A", + "\u0639\u062C\u0645", + "\u0639\u0645\u0645", + "\u0639\u0645\u0649", + "\u063A\u0645\u0645", + "\u063A\u0645\u064A", + "\u063A\u0645\u0649", + "\u0641\u062E\u0645", + "\u0642\u0645\u062D", + "\u0642\u0645\u0645", + "\u0644\u062D\u0645", + "\u0644\u062D\u064A", + "\u0644\u062D\u0649", + "\u0644\u062C\u062C", + "\u0644\u062E\u0645", + "\u0644\u0645\u062D", + "\u0645\u062D\u062C", + "\u0645\u062D\u0645", + "\u0645\u062D\u064A", + "\u0645\u062C\u062D", + "\u0645\u062C\u0645", + "\u0645\u062E\u062C", + "\u0645\u062E\u0645", + "\u0645\u062C\u062E", + "\u0647\u0645\u062C", + "\u0647\u0645\u0645", + "\u0646\u062D\u0645", + "\u0646\u062D\u0649", + "\u0646\u062C\u0645", + "\u0646\u062C\u0649", + "\u0646\u0645\u064A", + "\u0646\u0645\u0649", + "\u064A\u0645\u0645", + "\u0628\u062E\u064A", + "\u062A\u062C\u064A", + "\u062A\u062C\u0649", + "\u062A\u062E\u064A", + "\u062A\u062E\u0649", + "\u062A\u0645\u064A", + "\u062A\u0645\u0649", + "\u062C\u0645\u064A", + "\u062C\u062D\u0649", + "\u062C\u0645\u0649", + "\u0633\u062E\u0649", + "\u0635\u062D\u064A", + "\u0634\u062D\u064A", + "\u0636\u062D\u064A", + "\u0644\u062C\u064A", + "\u0644\u0645\u064A", + "\u064A\u062D\u064A", + "\u064A\u062C\u064A", + "\u064A\u0645\u064A", + "\u0645\u0645\u064A", + "\u0642\u0645\u064A", + "\u0646\u062D\u064A", + "\u0639\u0645\u064A", + "\u0643\u0645\u064A", + "\u0646\u062C\u062D", + "\u0645\u062E\u064A", + "\u0644\u062C\u0645", + "\u0643\u0645\u0645", + "\u062C\u062D\u064A", + "\u062D\u062C\u064A", + "\u0645\u062C\u064A", + "\u0641\u0645\u064A", + "\u0628\u062D\u064A", + "\u0633\u062E\u064A", + "\u0646\u062C\u064A", + "\u0635\u0644\u06D2", + "\u0642\u0644\u06D2", + "\u0627\u0644\u0644\u0647", + "\u0627\u0643\u0628\u0631", + "\u0645\u062D\u0645\u062F", + "\u0635\u0644\u0639\u0645", + "\u0631\u0633\u0648\u0644", + "\u0639\u0644\u064A\u0647", + "\u0648\u0633\u0644\u0645", + "\u0635\u0644\u0649", + "\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645", + "\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647", + "\u0631\u06CC\u0627\u0644", + "\u2014", + "\u2013", + "\u005F", + "\u007B", + "\u007D", + "\u3014", + "\u3015", + "\u3010", + "\u3011", + "\u300A", + "\u300B", + "\u300C", + "\u300D", + "\u300E", + "\u300F", + "\u002C", + "\u3001", + "\u003A", + "\u003F", + "\u0021", + "\u0023", + "\u0026", + "\u002A", + "\u002D", + "\u003C", + "\u003E", + "\\", + "\u0024", + "\u0025", + "\u0040", + "\u0020\u064B", + "\u0640\u064B", + "\u0020\u064C", + "\u0020\u064D", + "\u0020\u064E", + "\u0640\u064E", + "\u0020\u064F", + "\u0640\u064F", + "\u0020\u0650", + "\u0640\u0650", + "\u0020\u0651", + "\u0640\u0651", + "\u0020\u0652", + "\u0640\u0652", + "\u0621", + "\u0627", + "\u0628", + "\u0629", + "\u062A", + "\u062B", + "\u062C", + "\u062D", + "\u062E", + "\u062F", + "\u0630", + "\u0631", + "\u0632", + "\u0633", + "\u0634", + "\u0635", + "\u0636", + "\u0637", + "\u0638", + "\u0639", + "\u063A", + "\u0641", + "\u0642", + "\u0643", + "\u0644", + "\u0645", + "\u0646", + "\u0647", + "\u0648", + "\u064A", + "\u0644\u0627\u0653", + "\u0644\u0627\u0654", + "\u0644\u0627\u0655", + "\u0644\u0627", + "\"", + "\u0027", + "\u002F", + "\u005B", + "\u005D", + "\u005E", + "\u007C", + "\u007E", + "\u2985", + "\u2986", + "\u3002", + "\u30FB", + "\u30A1", + "\u30A3", + "\u30A5", + "\u30A7", + "\u30A9", + "\u30E3", + "\u30E5", + "\u30E7", + "\u30C3", + "\u30FC", + "\u30F3", + "\u3099", + "\u309A", + "\u00A2", + "\u00A3", + "\u00AC", + "\u00A6", + "\u00A5", + "\u20A9", + "\u2502", + "\u2190", + "\u2191", + "\u2192", + "\u2193", + "\u25A0", + "\u25CB", + }; +} diff --git a/csharp/IDNA.cs b/csharp/IDNA.cs new file mode 100644 index 0000000..b527efb --- /dev/null +++ b/csharp/IDNA.cs @@ -0,0 +1,306 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; +using System.Text; + +namespace Gnu.Inet.Encoding +{ + public class IDNA + { + public const string ACE_PREFIX = "xn--"; + + /// + /// Converts a Unicode string to ASCII using the procedure in RFC3490 + /// section 4.1. Unassigned characters are not allowed and STD3 ASCII + /// rules are enforced. The input string may be a domain name + /// containing dots. + /// + /// Unicode string. + /// Encoded string. + public static string ToASCII(string input) + { + StringBuilder o = new StringBuilder(); + StringBuilder h = new StringBuilder(); + + for (int i = 0; i < input.Length; i++) + { + char c = input[i]; + if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') + { + o.Append(ToASCII(h.ToString(), false, true)); + o.Append('.'); + h = new StringBuilder(); + } + else + { + h.Append(c); + } + } + o.Append(ToASCII(h.ToString(), false, true)); + return o.ToString(); + } + + /// + /// Converts a Unicode string to ASCII using the procedure in RFC3490 + /// section 4.1. Unassigned characters are not allowed and STD3 ASCII + /// rules are enforced. + /// + /// Unicode string. + /// Unassigned characters, allowed or not? + /// STD3 ASCII rules, enforced or not? + /// Encoded string. + public static string ToASCII(string input, bool allowUnassigned, bool useSTD3ASCIIRules) + { + // Step 1: Check if the string contains code points outside + // the ASCII range 0..0x7c. + + bool nonASCII = false; + + for (int i = 0; i < input.Length; i++) + { + int c = input[i]; + if (c > 0x7f) + { + nonASCII = true; + break; + } + } + + // Step 2: Perform the nameprep operation. + + if (nonASCII) + { + try + { + input = Stringprep.NamePrep(input, allowUnassigned); + } + catch (StringprepException e) + { + // TODO + throw new IDNAException(e); + } + } + + // Step 3: - Verify the absence of non-LDH ASCII code points + // (char) 0..0x2c, 0x2e..0x2f, 0x3a..0x40, 0x5b..0x60, + // (char) 0x7b..0x7f + // - Verify the absence of leading and trailing + // hyphen-minus + + if (useSTD3ASCIIRules) + { + for (int i = 0; i < input.Length; i++) + { + int c = input[i]; + if ((c <= 0x2c) || (c >= 0x2e && c <= 0x2f) || (c >= 0x3a && c <= 0x40) || (c >= 0x5b && c <= 0x60) || (c >= 0x7b && c <= 0x7f)) + { + throw new IDNAException(IDNAException.CONTAINS_NON_LDH); + } + } + + if (input.StartsWith("-") || input.EndsWith("-")) + { + throw new IDNAException(IDNAException.CONTAINS_HYPHEN); + } + } + + // Step 4: If all code points are inside 0..0x7f, skip to step 8 + + nonASCII = false; + + for (int i = 0; i < input.Length; i++) + { + int c = input[i]; + if (c > 0x7f) + { + nonASCII = true; + break; + } + } + + string output = input; + + if (nonASCII) + { + + // Step 5: Verify that the sequence does not begin with the ACE prefix. + + if (input.StartsWith(ACE_PREFIX)) + { + throw new IDNAException(IDNAException.CONTAINS_ACE_PREFIX); + } + + // Step 6: Punycode + + try + { + output = Punycode.Encode(input); + } + catch (PunycodeException e) + { + // TODO + throw new IDNAException(e); + } + + // Step 7: Prepend the ACE prefix. + + output = ACE_PREFIX + output; + } + + // Step 8: Check that the length is inside 1..63. + + if (output.Length < 1 || output.Length > 63) + { + throw new IDNAException(IDNAException.TOO_LONG); + } + + return output; + } + + /// + /// Converts an ASCII-encoded string to Unicode. Unassigned + /// characters are not allowed and STD3 hostnames are enforced. Input + /// may be domain name containing dots. + /// + /// ASCII input string. + /// Unicode string. + public static string ToUnicode(string input) + { + input = input.ToLower(); + StringBuilder o = new StringBuilder(); + StringBuilder h = new StringBuilder(); + + for (int i = 0; i < input.Length; i++) + { + char c = input[i]; + if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') + { + o.Append(ToUnicode(h.ToString(), false, true)); + o.Append(c); + h = new StringBuilder(); + } + else + { + h.Append(c); + } + } + o.Append(ToUnicode(h.ToString(), false, true)); + return o.ToString(); + } + + /// + /// Converts an ASCII-encoded string to Unicode. + /// + /// ASCII input string. + /// Allow unassigned Unicode characters. + /// Check that the output conforms to STD3. + /// Unicode string. + public static string ToUnicode(string input, bool allowUnassigned, bool useSTD3ASCIIRules) + { + string original = input; + bool nonASCII = false; + + // Step 1: If all code points are inside 0..0x7f, skip to step 3. + + for (int i = 0; i < input.Length; i++) + { + int c = input[i]; + if (c > 0x7f) + { + nonASCII = true; + break; + } + } + + // Step 2: Perform the Nameprep operation. + + if (nonASCII) + { + try + { + input = Stringprep.NamePrep(input, allowUnassigned); + } + catch (StringprepException e) + { + // ToUnicode never fails! + return original; + } + } + + // Step 3: Verify the sequence starts with the ACE prefix. + + if (!input.StartsWith(ACE_PREFIX)) + { + // ToUnicode never fails! + return original; + } + + string stored = input; + + // Step 4: Remove the ACE prefix. + + input = input.Substring(ACE_PREFIX.Length); + + // Step 5: Decode using punycode + + string output; + + try + { + output = Punycode.Decode(input); + } + catch (PunycodeException e) + { + // ToUnicode never fails! + return original; + } + + // Step 6: Apply toASCII + + string ascii; + + try + { + ascii = ToASCII(output, allowUnassigned, useSTD3ASCIIRules); + } + catch (IDNAException e) + { + // ToUnicode never fails! + return original; + } + + // Step 7: Compare case-insensitively. + + if (!ascii.ToUpper().Equals(stored.ToUpper())) + { + // ToUnicode never fails! + return original; + } + + // Step 8: Return the result. + + return output; + } + } +} \ No newline at end of file diff --git a/csharp/IDNAException.cs b/csharp/IDNAException.cs new file mode 100644 index 0000000..a8d9373 --- /dev/null +++ b/csharp/IDNAException.cs @@ -0,0 +1,49 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; + +namespace Gnu.Inet.Encoding +{ + public class IDNAException : System.Exception + { + public static string CONTAINS_NON_LDH = "Contains non-LDH characters."; + public static string CONTAINS_HYPHEN = "Leading or trailing hyphen not allowed."; + public static string CONTAINS_ACE_PREFIX = "ACE prefix (xn--) not allowed."; + public static string TOO_LONG = "String too long."; + + public IDNAException(string m) : base(m) + { + + } + + // TODO + public IDNAException(StringprepException e) :base( "", e) + { + } + + public IDNAException(PunycodeException e) : base( "", e) + { + } + } +} \ No newline at end of file diff --git a/csharp/Makefile.am b/csharp/Makefile.am new file mode 100644 index 0000000..a54b8f2 --- /dev/null +++ b/csharp/Makefile.am @@ -0,0 +1,91 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +CSHARPCOMP = $(SHELL) $(top_builddir)/csharpcomp.sh +CSHARPCOMPFLAGS = + +SOURCES = AssemblyInfo.cs IDNA.cs RFC3454.cs CombiningClass.cs \ + IDNAException.cs Stringprep.cs Composition.cs NFKC.cs \ + StringprepException.cs DecompositionKeys.cs Punycode.cs \ + DecompositionMappings.cs PunycodeException.cs + +SOURCES_GENERATE = generate/AssemblyInfo.cs \ + generate/GenerateNFKC.cs generate/GenerateRFC3454.cs \ + generate/HashSet.cs generate/Program.cs generate/Tokenizer.cs + +MSVSC = libidn.csproj libidn.csproj.user libidn_PPC.csdproj \ + libidn_PPC.csdproj.user libidn_PPC.sln libidn_PPC.suo \ + libidn.sln libidn.suo + +EXTRA_DIST = $(SOURCES) $(SOURCES_GENERATE) $(MSVSC) + +CLEANFILES = Libidn.dll + +ALL_LOCAL_TARGETS = +INSTALLDIRS_LOCAL_TARGETS = +INSTALL_DATA_LOCAL_TARGETS = +UNINSTALL_LOCAL_TARGETS = + +if CSHARP +ALL_LOCAL_TARGETS += Libidn.dll +INSTALLDIRS_LOCAL_TARGETS += install-dll-dir +INSTALL_DATA_LOCAL_TARGETS += install-dll +UNINSTALL_LOCAL_TARGETS += uninstall-dll + +Libidn.dll: $(SOURCES) + $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \ + `for src in $(SOURCES); do echo $(srcdir)/$$src; done` + +SPEC = $(top_srcdir)/doc/specifications + +GenerateTables.exe: $(SOURCES_GENERATE) + $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \ + `for src in $(SOURCES_GENERATE); do echo $(srcdir)/$$src; done` + if ! test -f rfc3454.txt; then \ + ln -s $(SPEC)/rfc3454.txt . \ + || cp $(SPEC)/rfc3454.txt .; \ + fi + if ! test -f UnicodeData.txt; then \ + ln -s $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt \ + || cp $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt; \ + fi + if ! test -f CompositionExclusions.txt; then \ + ln -s $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt \ + || cp $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt; \ + fi + +RFC3454.cs CombiningClass.cs DecompositionKeys.cs DecompositionMappings.cs Composition.cs: $(GEN_SOURCES) + make GenerateTables.exe + ./GenerateTables.exe + +install-dll-dir: + $(mkinstalldirs) $(DESTDIR)$(libdir) + +install-dll: install-dll-dir + $(INSTALL_DATA) Libidn.dll $(DESTDIR)$(libdir)/Libidn.dll + +uninstall-dll: + rm -f $(DESTDIR)$(libdir)/Libidn.dll +endif + +all-local: $(ALL_LOCAL_TARGETS) +install-data-local: $(INSTALL_DATA_LOCAL_TARGETS) +installdirs-local: $(INSTALLDIRS_LOCAL_TARGETS) +uninstall-local: $(UNINSTALL_LOCAL_TARGETS) diff --git a/csharp/Makefile.in b/csharp/Makefile.in new file mode 100644 index 0000000..a1cb6b4 --- /dev/null +++ b/csharp/Makefile.in @@ -0,0 +1,733 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@CSHARP_TRUE@am__append_1 = Libidn.dll +@CSHARP_TRUE@am__append_2 = install-dll-dir +@CSHARP_TRUE@am__append_3 = install-dll +@CSHARP_TRUE@am__append_4 = uninstall-dll +subdir = csharp +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +CSHARPCOMP = $(SHELL) $(top_builddir)/csharpcomp.sh +SOURCES = AssemblyInfo.cs IDNA.cs RFC3454.cs CombiningClass.cs \ + IDNAException.cs Stringprep.cs Composition.cs NFKC.cs \ + StringprepException.cs DecompositionKeys.cs Punycode.cs \ + DecompositionMappings.cs PunycodeException.cs + +SOURCES_GENERATE = generate/AssemblyInfo.cs \ + generate/GenerateNFKC.cs generate/GenerateRFC3454.cs \ + generate/HashSet.cs generate/Program.cs generate/Tokenizer.cs + +MSVSC = libidn.csproj libidn.csproj.user libidn_PPC.csdproj \ + libidn_PPC.csdproj.user libidn_PPC.sln libidn_PPC.suo \ + libidn.sln libidn.suo + +EXTRA_DIST = $(SOURCES) $(SOURCES_GENERATE) $(MSVSC) +CLEANFILES = Libidn.dll +ALL_LOCAL_TARGETS = $(am__append_1) +INSTALLDIRS_LOCAL_TARGETS = $(am__append_2) +INSTALL_DATA_LOCAL_TARGETS = $(am__append_3) +UNINSTALL_LOCAL_TARGETS = $(am__append_4) +@CSHARP_TRUE@SPEC = $(top_srcdir)/doc/specifications +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu csharp/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu csharp/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile all-local +installdirs: installdirs-local +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-local + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-local maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-local + + +@CSHARP_TRUE@Libidn.dll: $(SOURCES) +@CSHARP_TRUE@ $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \ +@CSHARP_TRUE@ `for src in $(SOURCES); do echo $(srcdir)/$$src; done` + +@CSHARP_TRUE@GenerateTables.exe: $(SOURCES_GENERATE) +@CSHARP_TRUE@ $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \ +@CSHARP_TRUE@ `for src in $(SOURCES_GENERATE); do echo $(srcdir)/$$src; done` +@CSHARP_TRUE@ if ! test -f rfc3454.txt; then \ +@CSHARP_TRUE@ ln -s $(SPEC)/rfc3454.txt . \ +@CSHARP_TRUE@ || cp $(SPEC)/rfc3454.txt .; \ +@CSHARP_TRUE@ fi +@CSHARP_TRUE@ if ! test -f UnicodeData.txt; then \ +@CSHARP_TRUE@ ln -s $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt \ +@CSHARP_TRUE@ || cp $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt; \ +@CSHARP_TRUE@ fi +@CSHARP_TRUE@ if ! test -f CompositionExclusions.txt; then \ +@CSHARP_TRUE@ ln -s $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt \ +@CSHARP_TRUE@ || cp $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt; \ +@CSHARP_TRUE@ fi + +@CSHARP_TRUE@RFC3454.cs CombiningClass.cs DecompositionKeys.cs DecompositionMappings.cs Composition.cs: $(GEN_SOURCES) +@CSHARP_TRUE@ make GenerateTables.exe +@CSHARP_TRUE@ ./GenerateTables.exe + +@CSHARP_TRUE@install-dll-dir: +@CSHARP_TRUE@ $(mkinstalldirs) $(DESTDIR)$(libdir) + +@CSHARP_TRUE@install-dll: install-dll-dir +@CSHARP_TRUE@ $(INSTALL_DATA) Libidn.dll $(DESTDIR)$(libdir)/Libidn.dll + +@CSHARP_TRUE@uninstall-dll: +@CSHARP_TRUE@ rm -f $(DESTDIR)$(libdir)/Libidn.dll + +all-local: $(ALL_LOCAL_TARGETS) +install-data-local: $(INSTALL_DATA_LOCAL_TARGETS) +installdirs-local: $(INSTALLDIRS_LOCAL_TARGETS) +uninstall-local: $(UNINSTALL_LOCAL_TARGETS) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/csharp/NFKC.cs b/csharp/NFKC.cs new file mode 100644 index 0000000..26831b4 --- /dev/null +++ b/csharp/NFKC.cs @@ -0,0 +1,374 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; +using System.Text; + +namespace Gnu.Inet.Encoding +{ + public class NFKC + { + /// + /// Applies NFKC normalization to a string. + /// + /// The string to normalize. + /// An NFKC normalized string. + public static string NormalizeNFKC(string sbIn) + { + StringBuilder sbOut = new StringBuilder(); + + for (int i = 0; i < sbIn.Length; i++) + { + char code = sbIn[i]; + + // In Unicode 3.0, Hangul was defined as the block from U+AC00 + // to U+D7A3, however, since Unicode 3.2 the block extends until + // U+D7AF. The decomposeHangul function only decomposes until + // U+D7A3. Should this be changed? + if (code >= 0xAC00 && code <= 0xD7AF) + { + sbOut.Append(decomposeHangul(code)); + } + else + { + int index = decomposeIndex(code); + if (index == - 1) + { + sbOut.Append(code); + } + else + { + sbOut.Append(DecompositionMappings.m[index]); + } + } + } + + // Bring the stringbuffer into canonical order. + canonicalOrdering(sbOut); + + // Do the canonical composition. + int last_cc = 0; + int last_start = 0; + + for (int i = 0; i < sbOut.Length; i++) + { + int cc = combiningClass(sbOut[i]); + + if (i > 0 && (last_cc == 0 || last_cc != cc)) + { + // Try to combine characters + char a = sbOut[last_start]; + char b = sbOut[i]; + + int c = compose(a, b); + + if (c != - 1) + { + sbOut[last_start] = (char) c; + //sbOut.deleteCharAt(i); + sbOut.Remove(i, 1); + i--; + + if (i == last_start) + { + last_cc = 0; + } + else + { + last_cc = combiningClass(sbOut[i - 1]); + } + continue; + } + } + + if (cc == 0) + { + last_start = i; + } + + last_cc = cc; + } + + return sbOut.ToString(); + } + + + /// + /// Returns the index inside the decomposition table, implemented + /// using a binary search. + /// + /// Character to look up. + /// Index if found, -1 otherwise. + internal static int decomposeIndex(char c) + { + int start = 0; + int end = DecompositionKeys.k.Length / 2; + + while (true) + { + int half = (start + end) / 2; + int code = DecompositionKeys.k[half * 2]; + + if (c == code) + { + return DecompositionKeys.k[half * 2 + 1]; + } + if (half == start) + { + // Character not found + return - 1; + } + else if (c > code) + { + start = half; + } + else + { + end = half; + } + } + } + + /// + /// Returns the combining class of a given character. + /// + /// The character. + /// The combining class. + internal static int combiningClass(char c) + { + int h = c >> 8; + int l = c & 0xff; + + int i = CombiningClass.i[h]; + if (i > - 1) + { + return CombiningClass.c[i, l]; + } + else + { + return 0; + } + } + + /// + /// Rearranges characters in a stringbuffer in order to respect the + /// canonical ordering properties. + /// + /// StringBuffer to rearrange. + internal static void canonicalOrdering(StringBuilder sbIn) + { + bool isOrdered = false; + + while (!isOrdered) + { + isOrdered = true; + + + // 24.10.2005 + int lastCC = 0; + if (sbIn.Length > 0) + lastCC = combiningClass(sbIn[0]); + + for (int i = 0; i < sbIn.Length - 1; i++) + { + int nextCC = combiningClass(sbIn[i + 1]); + if (nextCC != 0 && lastCC > nextCC) + { + for (int j = i + 1; j > 0; j--) + { + if (combiningClass(sbIn[j - 1]) <= nextCC) + { + break; + } + char t = sbIn[j]; + sbIn[j] = sbIn[j - 1]; + sbIn[j - 1] = t; + isOrdered = false; + } + nextCC = lastCC; + } + lastCC = nextCC; + } + } + } + + /// + /// Returns the index inside the composition table. + /// + /// Character to look up. + /// Index if found, -1 otherwise. + internal static int composeIndex(char a) + { + if (a >> 8 >= Composition.composePage.Length) + { + return - 1; + } + int ap = Composition.composePage[a >> 8]; + if (ap == - 1) + { + return - 1; + } + return Composition.composeData[ap, a & 0xff]; + } + + /// + /// Tries to compose two characters canonically. + /// + /// First character. + /// Second character. + /// The composed character or -1 if no composition could be found. + internal static int compose(char a, char b) + { + int h = composeHangul(a, b); + if (h != - 1) + { + return h; + } + + int ai = composeIndex(a); + + if (ai >= Composition.singleFirstStart && ai < Composition.singleSecondStart) + { + if (b == Composition.singleFirst[ai - Composition.singleFirstStart, 0]) + { + return Composition.singleFirst[ai - Composition.singleFirstStart, 1]; + } + else + { + return - 1; + } + } + + + int bi = composeIndex(b); + + if (bi >= Composition.singleSecondStart) + { + if (a == Composition.singleSecond[bi - Composition.singleSecondStart,0]) + { + return Composition.singleSecond[bi - Composition.singleSecondStart,1]; + } + else + { + return - 1; + } + } + + if (ai >= 0 && ai < Composition.multiSecondStart && bi >= Composition.multiSecondStart && bi < Composition.singleFirstStart) + { + char[] f = Composition.multiFirst[ai]; + + if (bi - Composition.multiSecondStart < f.Length) + { + char r = f[bi - Composition.multiSecondStart]; + if (r == 0) + { + return - 1; + } + else + { + return r; + } + } + } + + return - 1; + } + + /// + /// Entire hangul code copied from: + /// http://www.unicode.org/unicode/reports/tr15/ + /// Several hangul specific constants + /// + internal const int SBase = 0xAC00; + internal const int LBase = 0x1100; + internal const int VBase = 0x1161; + internal const int TBase = 0x11A7; + internal const int LCount = 19; + internal const int VCount = 21; + internal const int TCount = 28; + + internal static readonly int NCount = VCount * TCount; + + internal static readonly int SCount = LCount * NCount; + + /// + /// Decomposes a hangul character. + /// + /// A character to decompose. + /// A string containing the hangul decomposition of the input + /// character. If no hangul decomposition can be found, a string + /// containing the character itself is returned. + internal static string decomposeHangul(char s) + { + int SIndex = s - SBase; + if (SIndex < 0 || SIndex >= SCount) + { + return s.ToString(); + } + StringBuilder result = new StringBuilder(); + int L = LBase + SIndex / NCount; + int V = VBase + (SIndex % NCount) / TCount; + int T = TBase + SIndex % TCount; + result.Append((char) L); + result.Append((char) V); + if (T != TBase) + result.Append((char) T); + return result.ToString(); + } + + /// + /// Composes two hangul characters. + /// + /// First character. + /// Second character. + /// Returns the composed character or -1 if the two characters cannot be composed. + internal static int composeHangul(char a, char b) + { + // 1. check to see if two current characters are L and V + int LIndex = a - LBase; + if (0 <= LIndex && LIndex < LCount) + { + int VIndex = b - VBase; + if (0 <= VIndex && VIndex < VCount) + { + // make syllable of form LV + return SBase + (LIndex * VCount + VIndex) * TCount; + } + } + + // 2. check to see if two current characters are LV and T + int SIndex = a - SBase; + if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0) + { + int TIndex = b - TBase; + if (0 <= TIndex && TIndex <= TCount) + { + // make syllable of form LVT + return a + TIndex; + } + } + return - 1; + } + } +} \ No newline at end of file diff --git a/csharp/Punycode.cs b/csharp/Punycode.cs new file mode 100644 index 0000000..4a9463a --- /dev/null +++ b/csharp/Punycode.cs @@ -0,0 +1,299 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; +using System.Text; + +namespace Gnu.Inet.Encoding +{ + + public class Punycode + { + /* Punycode parameters */ + internal const int TMIN = 1; + internal const int TMAX = 26; + internal const int BASE = 36; + internal const int INITIAL_N = 128; + internal const int INITIAL_BIAS = 72; + internal const int DAMP = 700; + internal const int SKEW = 38; + internal const char DELIMITER = '-'; + + /// + /// Punycodes a unicode string. + /// + /// Unicode string. + /// Punycoded string. + public static string Encode(string input) + { + int n = INITIAL_N; + int delta = 0; + int bias = INITIAL_BIAS; + StringBuilder output = new StringBuilder(); + + // Copy all basic code points to the output + int b = 0; + for (int i = 0; i < input.Length; i++) + { + char c = input[i]; + if (IsBasic(c)) + { + output.Append(c); + b++; + } + } + + // Append delimiter + if (b > 0) + { + output.Append(DELIMITER); + } + + int h = b; + while (h < input.Length) + { + int m = System.Int32.MaxValue; + + // Find the minimum code point >= n + for (int i = 0; i < input.Length; i++) + { + int c = input[i]; + if (c >= n && c < m) + { + m = c; + } + } + + if (m - n > (System.Int32.MaxValue - delta) / (h + 1)) + { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + delta = delta + (m - n) * (h + 1); + n = m; + + for (int j = 0; j < input.Length; j++) + { + int c = input[j]; + if (c < n) + { + delta++; + if (0 == delta) + { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + } + if (c == n) + { + int q = delta; + + for (int k = BASE; ; k += BASE) + { + int t; + if (k <= bias) + { + t = TMIN; + } + else if (k >= bias + TMAX) + { + t = TMAX; + } + else + { + t = k - bias; + } + if (q < t) + { + break; + } + output.Append((char) Digit2Codepoint(t + (q - t) % (BASE - t))); + q = (q - t) / (BASE - t); + } + + output.Append((char) Digit2Codepoint(q)); + bias = Adapt(delta, h + 1, h == b); + delta = 0; + h++; + } + } + + delta++; + n++; + } + + return output.ToString(); + } + + /// + /// Decode a punycoded string. + /// + /// Punycode string + /// Unicode string. + public static string Decode(string input) + { + int n = INITIAL_N; + int i = 0; + int bias = INITIAL_BIAS; + StringBuilder output = new StringBuilder(); + + int d = input.LastIndexOf((System.Char) DELIMITER); + if (d > 0) + { + for (int j = 0; j < d; j++) + { + char c = input[j]; + if (!IsBasic(c)) + { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + output.Append(c); + } + d++; + } + else + { + d = 0; + } + + while (d < input.Length) + { + int oldi = i; + int w = 1; + + for (int k = BASE; ; k += BASE) + { + if (d == input.Length) + { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + int c = input[d++]; + int digit = Codepoint2Digit(c); + if (digit > (System.Int32.MaxValue - i) / w) + { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + + i = i + digit * w; + + int t; + if (k <= bias) + { + t = TMIN; + } + else if (k >= bias + TMAX) + { + t = TMAX; + } + else + { + t = k - bias; + } + if (digit < t) + { + break; + } + w = w * (BASE - t); + } + + bias = Adapt(i - oldi, output.Length + 1, oldi == 0); + + if (i / (output.Length + 1) > Int32.MaxValue - n) + { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + + n = n + i / (output.Length + 1); + i = i % (output.Length + 1); + // following overload is not supported on CF + //output.Insert(i,(char) n); + output.Insert(i, new char[1] { (char) n }); + i++; + } + + return output.ToString(); + } + + public static int Adapt(int delta, int numpoints, bool first) + { + if (first) + { + delta = delta / DAMP; + } + else + { + delta = delta / 2; + } + + delta = delta + (delta / numpoints); + + int k = 0; + while (delta > ((BASE - TMIN) * TMAX) / 2) + { + delta = delta / (BASE - TMIN); + k = k + BASE; + } + + return k + ((BASE - TMIN + 1) * delta) / (delta + SKEW); + } + + public static bool IsBasic(char c) + { + return c < 0x80; + } + + public static int Digit2Codepoint(int d) + { + if (d < 26) + { + // 0..25 : 'a'..'z' + return d + 'a'; + } + else if (d < 36) + { + // 26..35 : '0'..'9'; + return d - 26 + '0'; + } + else + { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + } + + public static int Codepoint2Digit(int c) + { + if (c - '0' < 10) + { + // '0'..'9' : 26..35 + return c - '0' + 26; + } + else if (c - 'a' < 26) + { + // 'a'..'z' : 0..25 + return c - 'a'; + } + else + { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + } + } +} \ No newline at end of file diff --git a/csharp/PunycodeException.cs b/csharp/PunycodeException.cs new file mode 100644 index 0000000..d1ec0f6 --- /dev/null +++ b/csharp/PunycodeException.cs @@ -0,0 +1,42 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; + +namespace Gnu.Inet.Encoding +{ + + public class PunycodeException : Exception + { + public static string OVERFLOW = "Overflow."; + public static string BAD_INPUT = "Bad input."; + + /// + /// Creates a new PunycodeException. + /// + /// message + public PunycodeException(string message) : base(message) + { + } + } +} \ No newline at end of file diff --git a/csharp/RFC3454.cs b/csharp/RFC3454.cs new file mode 100644 index 0000000..e07a160 --- /dev/null +++ b/csharp/RFC3454.cs @@ -0,0 +1,4275 @@ +// Do not edit !!! +// this file is generated automatically + +using System; + +namespace Gnu.Inet.Encoding{ + +public class RFC3454 +{ + public static char[][] A1 = new char[][] { + new char[] { '\u0221' }, /* 0221 */ + new char[] { '\u0234', '\u024F' }, /* 0234-024F */ + new char[] { '\u02AE', '\u02AF' }, /* 02AE-02AF */ + new char[] { '\u02EF', '\u02FF' }, /* 02EF-02FF */ + new char[] { '\u0350', '\u035F' }, /* 0350-035F */ + new char[] { '\u0370', '\u0373' }, /* 0370-0373 */ + new char[] { '\u0376', '\u0379' }, /* 0376-0379 */ + new char[] { '\u037B', '\u037D' }, /* 037B-037D */ + new char[] { '\u037F', '\u0383' }, /* 037F-0383 */ + new char[] { '\u038B' }, /* 038B */ + new char[] { '\u038D' }, /* 038D */ + new char[] { '\u03A2' }, /* 03A2 */ + new char[] { '\u03CF' }, /* 03CF */ + new char[] { '\u03F7', '\u03FF' }, /* 03F7-03FF */ + new char[] { '\u0487' }, /* 0487 */ + new char[] { '\u04CF' }, /* 04CF */ + new char[] { '\u04F6', '\u04F7' }, /* 04F6-04F7 */ + new char[] { '\u04FA', '\u04FF' }, /* 04FA-04FF */ + new char[] { '\u0510', '\u0530' }, /* 0510-0530 */ + new char[] { '\u0557', '\u0558' }, /* 0557-0558 */ + new char[] { '\u0560' }, /* 0560 */ + new char[] { '\u0588' }, /* 0588 */ + new char[] { '\u058B', '\u0590' }, /* 058B-0590 */ + new char[] { '\u05A2' }, /* 05A2 */ + new char[] { '\u05BA' }, /* 05BA */ + new char[] { '\u05C5', '\u05CF' }, /* 05C5-05CF */ + new char[] { '\u05EB', '\u05EF' }, /* 05EB-05EF */ + new char[] { '\u05F5', '\u060B' }, /* 05F5-060B */ + new char[] { '\u060D', '\u061A' }, /* 060D-061A */ + new char[] { '\u061C', '\u061E' }, /* 061C-061E */ + new char[] { '\u0620' }, /* 0620 */ + new char[] { '\u063B', '\u063F' }, /* 063B-063F */ + new char[] { '\u0656', '\u065F' }, /* 0656-065F */ + new char[] { '\u06EE', '\u06EF' }, /* 06EE-06EF */ + new char[] { '\u06FF' }, /* 06FF */ + new char[] { '\u070E' }, /* 070E */ + new char[] { '\u072D', '\u072F' }, /* 072D-072F */ + new char[] { '\u074B', '\u077F' }, /* 074B-077F */ + new char[] { '\u07B2', '\u0900' }, /* 07B2-0900 */ + new char[] { '\u0904' }, /* 0904 */ + new char[] { '\u093A', '\u093B' }, /* 093A-093B */ + new char[] { '\u094E', '\u094F' }, /* 094E-094F */ + new char[] { '\u0955', '\u0957' }, /* 0955-0957 */ + new char[] { '\u0971', '\u0980' }, /* 0971-0980 */ + new char[] { '\u0984' }, /* 0984 */ + new char[] { '\u098D', '\u098E' }, /* 098D-098E */ + new char[] { '\u0991', '\u0992' }, /* 0991-0992 */ + new char[] { '\u09A9' }, /* 09A9 */ + new char[] { '\u09B1' }, /* 09B1 */ + new char[] { '\u09B3', '\u09B5' }, /* 09B3-09B5 */ + new char[] { '\u09BA', '\u09BB' }, /* 09BA-09BB */ + new char[] { '\u09BD' }, /* 09BD */ + new char[] { '\u09C5', '\u09C6' }, /* 09C5-09C6 */ + new char[] { '\u09C9', '\u09CA' }, /* 09C9-09CA */ + new char[] { '\u09CE', '\u09D6' }, /* 09CE-09D6 */ + new char[] { '\u09D8', '\u09DB' }, /* 09D8-09DB */ + new char[] { '\u09DE' }, /* 09DE */ + new char[] { '\u09E4', '\u09E5' }, /* 09E4-09E5 */ + new char[] { '\u09FB', '\u0A01' }, /* 09FB-0A01 */ + new char[] { '\u0A03', '\u0A04' }, /* 0A03-0A04 */ + new char[] { '\u0A0B', '\u0A0E' }, /* 0A0B-0A0E */ + new char[] { '\u0A11', '\u0A12' }, /* 0A11-0A12 */ + new char[] { '\u0A29' }, /* 0A29 */ + new char[] { '\u0A31' }, /* 0A31 */ + new char[] { '\u0A34' }, /* 0A34 */ + new char[] { '\u0A37' }, /* 0A37 */ + new char[] { '\u0A3A', '\u0A3B' }, /* 0A3A-0A3B */ + new char[] { '\u0A3D' }, /* 0A3D */ + new char[] { '\u0A43', '\u0A46' }, /* 0A43-0A46 */ + new char[] { '\u0A49', '\u0A4A' }, /* 0A49-0A4A */ + new char[] { '\u0A4E', '\u0A58' }, /* 0A4E-0A58 */ + new char[] { '\u0A5D' }, /* 0A5D */ + new char[] { '\u0A5F', '\u0A65' }, /* 0A5F-0A65 */ + new char[] { '\u0A75', '\u0A80' }, /* 0A75-0A80 */ + new char[] { '\u0A84' }, /* 0A84 */ + new char[] { '\u0A8C' }, /* 0A8C */ + new char[] { '\u0A8E' }, /* 0A8E */ + new char[] { '\u0A92' }, /* 0A92 */ + new char[] { '\u0AA9' }, /* 0AA9 */ + new char[] { '\u0AB1' }, /* 0AB1 */ + new char[] { '\u0AB4' }, /* 0AB4 */ + new char[] { '\u0ABA', '\u0ABB' }, /* 0ABA-0ABB */ + new char[] { '\u0AC6' }, /* 0AC6 */ + new char[] { '\u0ACA' }, /* 0ACA */ + new char[] { '\u0ACE', '\u0ACF' }, /* 0ACE-0ACF */ + new char[] { '\u0AD1', '\u0ADF' }, /* 0AD1-0ADF */ + new char[] { '\u0AE1', '\u0AE5' }, /* 0AE1-0AE5 */ + new char[] { '\u0AF0', '\u0B00' }, /* 0AF0-0B00 */ + new char[] { '\u0B04' }, /* 0B04 */ + new char[] { '\u0B0D', '\u0B0E' }, /* 0B0D-0B0E */ + new char[] { '\u0B11', '\u0B12' }, /* 0B11-0B12 */ + new char[] { '\u0B29' }, /* 0B29 */ + new char[] { '\u0B31' }, /* 0B31 */ + new char[] { '\u0B34', '\u0B35' }, /* 0B34-0B35 */ + new char[] { '\u0B3A', '\u0B3B' }, /* 0B3A-0B3B */ + new char[] { '\u0B44', '\u0B46' }, /* 0B44-0B46 */ + new char[] { '\u0B49', '\u0B4A' }, /* 0B49-0B4A */ + new char[] { '\u0B4E', '\u0B55' }, /* 0B4E-0B55 */ + new char[] { '\u0B58', '\u0B5B' }, /* 0B58-0B5B */ + new char[] { '\u0B5E' }, /* 0B5E */ + new char[] { '\u0B62', '\u0B65' }, /* 0B62-0B65 */ + new char[] { '\u0B71', '\u0B81' }, /* 0B71-0B81 */ + new char[] { '\u0B84' }, /* 0B84 */ + new char[] { '\u0B8B', '\u0B8D' }, /* 0B8B-0B8D */ + new char[] { '\u0B91' }, /* 0B91 */ + new char[] { '\u0B96', '\u0B98' }, /* 0B96-0B98 */ + new char[] { '\u0B9B' }, /* 0B9B */ + new char[] { '\u0B9D' }, /* 0B9D */ + new char[] { '\u0BA0', '\u0BA2' }, /* 0BA0-0BA2 */ + new char[] { '\u0BA5', '\u0BA7' }, /* 0BA5-0BA7 */ + new char[] { '\u0BAB', '\u0BAD' }, /* 0BAB-0BAD */ + new char[] { '\u0BB6' }, /* 0BB6 */ + new char[] { '\u0BBA', '\u0BBD' }, /* 0BBA-0BBD */ + new char[] { '\u0BC3', '\u0BC5' }, /* 0BC3-0BC5 */ + new char[] { '\u0BC9' }, /* 0BC9 */ + new char[] { '\u0BCE', '\u0BD6' }, /* 0BCE-0BD6 */ + new char[] { '\u0BD8', '\u0BE6' }, /* 0BD8-0BE6 */ + new char[] { '\u0BF3', '\u0C00' }, /* 0BF3-0C00 */ + new char[] { '\u0C04' }, /* 0C04 */ + new char[] { '\u0C0D' }, /* 0C0D */ + new char[] { '\u0C11' }, /* 0C11 */ + new char[] { '\u0C29' }, /* 0C29 */ + new char[] { '\u0C34' }, /* 0C34 */ + new char[] { '\u0C3A', '\u0C3D' }, /* 0C3A-0C3D */ + new char[] { '\u0C45' }, /* 0C45 */ + new char[] { '\u0C49' }, /* 0C49 */ + new char[] { '\u0C4E', '\u0C54' }, /* 0C4E-0C54 */ + new char[] { '\u0C57', '\u0C5F' }, /* 0C57-0C5F */ + new char[] { '\u0C62', '\u0C65' }, /* 0C62-0C65 */ + new char[] { '\u0C70', '\u0C81' }, /* 0C70-0C81 */ + new char[] { '\u0C84' }, /* 0C84 */ + new char[] { '\u0C8D' }, /* 0C8D */ + new char[] { '\u0C91' }, /* 0C91 */ + new char[] { '\u0CA9' }, /* 0CA9 */ + new char[] { '\u0CB4' }, /* 0CB4 */ + new char[] { '\u0CBA', '\u0CBD' }, /* 0CBA-0CBD */ + new char[] { '\u0CC5' }, /* 0CC5 */ + new char[] { '\u0CC9' }, /* 0CC9 */ + new char[] { '\u0CCE', '\u0CD4' }, /* 0CCE-0CD4 */ + new char[] { '\u0CD7', '\u0CDD' }, /* 0CD7-0CDD */ + new char[] { '\u0CDF' }, /* 0CDF */ + new char[] { '\u0CE2', '\u0CE5' }, /* 0CE2-0CE5 */ + new char[] { '\u0CF0', '\u0D01' }, /* 0CF0-0D01 */ + new char[] { '\u0D04' }, /* 0D04 */ + new char[] { '\u0D0D' }, /* 0D0D */ + new char[] { '\u0D11' }, /* 0D11 */ + new char[] { '\u0D29' }, /* 0D29 */ + new char[] { '\u0D3A', '\u0D3D' }, /* 0D3A-0D3D */ + new char[] { '\u0D44', '\u0D45' }, /* 0D44-0D45 */ + new char[] { '\u0D49' }, /* 0D49 */ + new char[] { '\u0D4E', '\u0D56' }, /* 0D4E-0D56 */ + new char[] { '\u0D58', '\u0D5F' }, /* 0D58-0D5F */ + new char[] { '\u0D62', '\u0D65' }, /* 0D62-0D65 */ + new char[] { '\u0D70', '\u0D81' }, /* 0D70-0D81 */ + new char[] { '\u0D84' }, /* 0D84 */ + new char[] { '\u0D97', '\u0D99' }, /* 0D97-0D99 */ + new char[] { '\u0DB2' }, /* 0DB2 */ + new char[] { '\u0DBC' }, /* 0DBC */ + new char[] { '\u0DBE', '\u0DBF' }, /* 0DBE-0DBF */ + new char[] { '\u0DC7', '\u0DC9' }, /* 0DC7-0DC9 */ + new char[] { '\u0DCB', '\u0DCE' }, /* 0DCB-0DCE */ + new char[] { '\u0DD5' }, /* 0DD5 */ + new char[] { '\u0DD7' }, /* 0DD7 */ + new char[] { '\u0DE0', '\u0DF1' }, /* 0DE0-0DF1 */ + new char[] { '\u0DF5', '\u0E00' }, /* 0DF5-0E00 */ + new char[] { '\u0E3B', '\u0E3E' }, /* 0E3B-0E3E */ + new char[] { '\u0E5C', '\u0E80' }, /* 0E5C-0E80 */ + new char[] { '\u0E83' }, /* 0E83 */ + new char[] { '\u0E85', '\u0E86' }, /* 0E85-0E86 */ + new char[] { '\u0E89' }, /* 0E89 */ + new char[] { '\u0E8B', '\u0E8C' }, /* 0E8B-0E8C */ + new char[] { '\u0E8E', '\u0E93' }, /* 0E8E-0E93 */ + new char[] { '\u0E98' }, /* 0E98 */ + new char[] { '\u0EA0' }, /* 0EA0 */ + new char[] { '\u0EA4' }, /* 0EA4 */ + new char[] { '\u0EA6' }, /* 0EA6 */ + new char[] { '\u0EA8', '\u0EA9' }, /* 0EA8-0EA9 */ + new char[] { '\u0EAC' }, /* 0EAC */ + new char[] { '\u0EBA' }, /* 0EBA */ + new char[] { '\u0EBE', '\u0EBF' }, /* 0EBE-0EBF */ + new char[] { '\u0EC5' }, /* 0EC5 */ + new char[] { '\u0EC7' }, /* 0EC7 */ + new char[] { '\u0ECE', '\u0ECF' }, /* 0ECE-0ECF */ + new char[] { '\u0EDA', '\u0EDB' }, /* 0EDA-0EDB */ + new char[] { '\u0EDE', '\u0EFF' }, /* 0EDE-0EFF */ + new char[] { '\u0F48' }, /* 0F48 */ + new char[] { '\u0F6B', '\u0F70' }, /* 0F6B-0F70 */ + new char[] { '\u0F8C', '\u0F8F' }, /* 0F8C-0F8F */ + new char[] { '\u0F98' }, /* 0F98 */ + new char[] { '\u0FBD' }, /* 0FBD */ + new char[] { '\u0FCD', '\u0FCE' }, /* 0FCD-0FCE */ + new char[] { '\u0FD0', '\u0FFF' }, /* 0FD0-0FFF */ + new char[] { '\u1022' }, /* 1022 */ + new char[] { '\u1028' }, /* 1028 */ + new char[] { '\u102B' }, /* 102B */ + new char[] { '\u1033', '\u1035' }, /* 1033-1035 */ + new char[] { '\u103A', '\u103F' }, /* 103A-103F */ + new char[] { '\u105A', '\u109F' }, /* 105A-109F */ + new char[] { '\u10C6', '\u10CF' }, /* 10C6-10CF */ + new char[] { '\u10F9', '\u10FA' }, /* 10F9-10FA */ + new char[] { '\u10FC', '\u10FF' }, /* 10FC-10FF */ + new char[] { '\u115A', '\u115E' }, /* 115A-115E */ + new char[] { '\u11A3', '\u11A7' }, /* 11A3-11A7 */ + new char[] { '\u11FA', '\u11FF' }, /* 11FA-11FF */ + new char[] { '\u1207' }, /* 1207 */ + new char[] { '\u1247' }, /* 1247 */ + new char[] { '\u1249' }, /* 1249 */ + new char[] { '\u124E', '\u124F' }, /* 124E-124F */ + new char[] { '\u1257' }, /* 1257 */ + new char[] { '\u1259' }, /* 1259 */ + new char[] { '\u125E', '\u125F' }, /* 125E-125F */ + new char[] { '\u1287' }, /* 1287 */ + new char[] { '\u1289' }, /* 1289 */ + new char[] { '\u128E', '\u128F' }, /* 128E-128F */ + new char[] { '\u12AF' }, /* 12AF */ + new char[] { '\u12B1' }, /* 12B1 */ + new char[] { '\u12B6', '\u12B7' }, /* 12B6-12B7 */ + new char[] { '\u12BF' }, /* 12BF */ + new char[] { '\u12C1' }, /* 12C1 */ + new char[] { '\u12C6', '\u12C7' }, /* 12C6-12C7 */ + new char[] { '\u12CF' }, /* 12CF */ + new char[] { '\u12D7' }, /* 12D7 */ + new char[] { '\u12EF' }, /* 12EF */ + new char[] { '\u130F' }, /* 130F */ + new char[] { '\u1311' }, /* 1311 */ + new char[] { '\u1316', '\u1317' }, /* 1316-1317 */ + new char[] { '\u131F' }, /* 131F */ + new char[] { '\u1347' }, /* 1347 */ + new char[] { '\u135B', '\u1360' }, /* 135B-1360 */ + new char[] { '\u137D', '\u139F' }, /* 137D-139F */ + new char[] { '\u13F5', '\u1400' }, /* 13F5-1400 */ + new char[] { '\u1677', '\u167F' }, /* 1677-167F */ + new char[] { '\u169D', '\u169F' }, /* 169D-169F */ + new char[] { '\u16F1', '\u16FF' }, /* 16F1-16FF */ + new char[] { '\u170D' }, /* 170D */ + new char[] { '\u1715', '\u171F' }, /* 1715-171F */ + new char[] { '\u1737', '\u173F' }, /* 1737-173F */ + new char[] { '\u1754', '\u175F' }, /* 1754-175F */ + new char[] { '\u176D' }, /* 176D */ + new char[] { '\u1771' }, /* 1771 */ + new char[] { '\u1774', '\u177F' }, /* 1774-177F */ + new char[] { '\u17DD', '\u17DF' }, /* 17DD-17DF */ + new char[] { '\u17EA', '\u17FF' }, /* 17EA-17FF */ + new char[] { '\u180F' }, /* 180F */ + new char[] { '\u181A', '\u181F' }, /* 181A-181F */ + new char[] { '\u1878', '\u187F' }, /* 1878-187F */ + new char[] { '\u18AA', '\u1DFF' }, /* 18AA-1DFF */ + new char[] { '\u1E9C', '\u1E9F' }, /* 1E9C-1E9F */ + new char[] { '\u1EFA', '\u1EFF' }, /* 1EFA-1EFF */ + new char[] { '\u1F16', '\u1F17' }, /* 1F16-1F17 */ + new char[] { '\u1F1E', '\u1F1F' }, /* 1F1E-1F1F */ + new char[] { '\u1F46', '\u1F47' }, /* 1F46-1F47 */ + new char[] { '\u1F4E', '\u1F4F' }, /* 1F4E-1F4F */ + new char[] { '\u1F58' }, /* 1F58 */ + new char[] { '\u1F5A' }, /* 1F5A */ + new char[] { '\u1F5C' }, /* 1F5C */ + new char[] { '\u1F5E' }, /* 1F5E */ + new char[] { '\u1F7E', '\u1F7F' }, /* 1F7E-1F7F */ + new char[] { '\u1FB5' }, /* 1FB5 */ + new char[] { '\u1FC5' }, /* 1FC5 */ + new char[] { '\u1FD4', '\u1FD5' }, /* 1FD4-1FD5 */ + new char[] { '\u1FDC' }, /* 1FDC */ + new char[] { '\u1FF0', '\u1FF1' }, /* 1FF0-1FF1 */ + new char[] { '\u1FF5' }, /* 1FF5 */ + new char[] { '\u1FFF' }, /* 1FFF */ + new char[] { '\u2053', '\u2056' }, /* 2053-2056 */ + new char[] { '\u2058', '\u205E' }, /* 2058-205E */ + new char[] { '\u2064', '\u2069' }, /* 2064-2069 */ + new char[] { '\u2072', '\u2073' }, /* 2072-2073 */ + new char[] { '\u208F', '\u209F' }, /* 208F-209F */ + new char[] { '\u20B2', '\u20CF' }, /* 20B2-20CF */ + new char[] { '\u20EB', '\u20FF' }, /* 20EB-20FF */ + new char[] { '\u213B', '\u213C' }, /* 213B-213C */ + new char[] { '\u214C', '\u2152' }, /* 214C-2152 */ + new char[] { '\u2184', '\u218F' }, /* 2184-218F */ + new char[] { '\u23CF', '\u23FF' }, /* 23CF-23FF */ + new char[] { '\u2427', '\u243F' }, /* 2427-243F */ + new char[] { '\u244B', '\u245F' }, /* 244B-245F */ + new char[] { '\u24FF' }, /* 24FF */ + new char[] { '\u2614', '\u2615' }, /* 2614-2615 */ + new char[] { '\u2618' }, /* 2618 */ + new char[] { '\u267E', '\u267F' }, /* 267E-267F */ + new char[] { '\u268A', '\u2700' }, /* 268A-2700 */ + new char[] { '\u2705' }, /* 2705 */ + new char[] { '\u270A', '\u270B' }, /* 270A-270B */ + new char[] { '\u2728' }, /* 2728 */ + new char[] { '\u274C' }, /* 274C */ + new char[] { '\u274E' }, /* 274E */ + new char[] { '\u2753', '\u2755' }, /* 2753-2755 */ + new char[] { '\u2757' }, /* 2757 */ + new char[] { '\u275F', '\u2760' }, /* 275F-2760 */ + new char[] { '\u2795', '\u2797' }, /* 2795-2797 */ + new char[] { '\u27B0' }, /* 27B0 */ + new char[] { '\u27BF', '\u27CF' }, /* 27BF-27CF */ + new char[] { '\u27EC', '\u27EF' }, /* 27EC-27EF */ + new char[] { '\u2B00', '\u2E7F' }, /* 2B00-2E7F */ + new char[] { '\u2E9A' }, /* 2E9A */ + new char[] { '\u2EF4', '\u2EFF' }, /* 2EF4-2EFF */ + new char[] { '\u2FD6', '\u2FEF' }, /* 2FD6-2FEF */ + new char[] { '\u2FFC', '\u2FFF' }, /* 2FFC-2FFF */ + new char[] { '\u3040' }, /* 3040 */ + new char[] { '\u3097', '\u3098' }, /* 3097-3098 */ + new char[] { '\u3100', '\u3104' }, /* 3100-3104 */ + new char[] { '\u312D', '\u3130' }, /* 312D-3130 */ + new char[] { '\u318F' }, /* 318F */ + new char[] { '\u31B8', '\u31EF' }, /* 31B8-31EF */ + new char[] { '\u321D', '\u321F' }, /* 321D-321F */ + new char[] { '\u3244', '\u3250' }, /* 3244-3250 */ + new char[] { '\u327C', '\u327E' }, /* 327C-327E */ + new char[] { '\u32CC', '\u32CF' }, /* 32CC-32CF */ + new char[] { '\u32FF' }, /* 32FF */ + new char[] { '\u3377', '\u337A' }, /* 3377-337A */ + new char[] { '\u33DE', '\u33DF' }, /* 33DE-33DF */ + new char[] { '\u33FF' }, /* 33FF */ + new char[] { '\u4DB6', '\u4DFF' }, /* 4DB6-4DFF */ + new char[] { '\u9FA6', '\u9FFF' }, /* 9FA6-9FFF */ + new char[] { '\uA48D', '\uA48F' }, /* A48D-A48F */ + new char[] { '\uA4C7', '\uABFF' }, /* A4C7-ABFF */ + new char[] { '\uD7A4', '\uD7FF' }, /* D7A4-D7FF */ + new char[] { '\uFA2E', '\uFA2F' }, /* FA2E-FA2F */ + new char[] { '\uFA6B', '\uFAFF' }, /* FA6B-FAFF */ + new char[] { '\uFB07', '\uFB12' }, /* FB07-FB12 */ + new char[] { '\uFB18', '\uFB1C' }, /* FB18-FB1C */ + new char[] { '\uFB37' }, /* FB37 */ + new char[] { '\uFB3D' }, /* FB3D */ + new char[] { '\uFB3F' }, /* FB3F */ + new char[] { '\uFB42' }, /* FB42 */ + new char[] { '\uFB45' }, /* FB45 */ + new char[] { '\uFBB2', '\uFBD2' }, /* FBB2-FBD2 */ + new char[] { '\uFD40', '\uFD4F' }, /* FD40-FD4F */ + new char[] { '\uFD90', '\uFD91' }, /* FD90-FD91 */ + new char[] { '\uFDC8', '\uFDCF' }, /* FDC8-FDCF */ + new char[] { '\uFDFD', '\uFDFF' }, /* FDFD-FDFF */ + new char[] { '\uFE10', '\uFE1F' }, /* FE10-FE1F */ + new char[] { '\uFE24', '\uFE2F' }, /* FE24-FE2F */ + new char[] { '\uFE47', '\uFE48' }, /* FE47-FE48 */ + new char[] { '\uFE53' }, /* FE53 */ + new char[] { '\uFE67' }, /* FE67 */ + new char[] { '\uFE6C', '\uFE6F' }, /* FE6C-FE6F */ + new char[] { '\uFE75' }, /* FE75 */ + new char[] { '\uFEFD', '\uFEFE' }, /* FEFD-FEFE */ + new char[] { '\uFF00' }, /* FF00 */ + new char[] { '\uFFBF', '\uFFC1' }, /* FFBF-FFC1 */ + new char[] { '\uFFC8', '\uFFC9' }, /* FFC8-FFC9 */ + new char[] { '\uFFD0', '\uFFD1' }, /* FFD0-FFD1 */ + new char[] { '\uFFD8', '\uFFD9' }, /* FFD8-FFD9 */ + new char[] { '\uFFDD', '\uFFDF' }, /* FFDD-FFDF */ + new char[] { '\uFFE7' }, /* FFE7 */ + new char[] { '\uFFEF', '\uFFF8' }, /* FFEF-FFF8 */ + /* Skip characters outside the range of .NET unicode 10000-102FF */ + /* Skip characters outside the range of .NET unicode 1031F */ + /* Skip characters outside the range of .NET unicode 10324-1032F */ + /* Skip characters outside the range of .NET unicode 1034B-103FF */ + /* Skip characters outside the range of .NET unicode 10426-10427 */ + /* Skip characters outside the range of .NET unicode 1044E-1CFFF */ + /* Skip characters outside the range of .NET unicode 1D0F6-1D0FF */ + /* Skip characters outside the range of .NET unicode 1D127-1D129 */ + /* Skip characters outside the range of .NET unicode 1D1DE-1D3FF */ + /* Skip characters outside the range of .NET unicode 1D455 */ + /* Skip characters outside the range of .NET unicode 1D49D */ + /* Skip characters outside the range of .NET unicode 1D4A0-1D4A1 */ + /* Skip characters outside the range of .NET unicode 1D4A3-1D4A4 */ + /* Skip characters outside the range of .NET unicode 1D4A7-1D4A8 */ + /* Skip characters outside the range of .NET unicode 1D4AD */ + /* Skip characters outside the range of .NET unicode 1D4BA */ + /* Skip characters outside the range of .NET unicode 1D4BC */ + /* Skip characters outside the range of .NET unicode 1D4C1 */ + /* Skip characters outside the range of .NET unicode 1D4C4 */ + /* Skip characters outside the range of .NET unicode 1D506 */ + /* Skip characters outside the range of .NET unicode 1D50B-1D50C */ + /* Skip characters outside the range of .NET unicode 1D515 */ + /* Skip characters outside the range of .NET unicode 1D51D */ + /* Skip characters outside the range of .NET unicode 1D53A */ + /* Skip characters outside the range of .NET unicode 1D53F */ + /* Skip characters outside the range of .NET unicode 1D545 */ + /* Skip characters outside the range of .NET unicode 1D547-1D549 */ + /* Skip characters outside the range of .NET unicode 1D551 */ + /* Skip characters outside the range of .NET unicode 1D6A4-1D6A7 */ + /* Skip characters outside the range of .NET unicode 1D7CA-1D7CD */ + /* Skip characters outside the range of .NET unicode 1D800-1FFFD */ + /* Skip characters outside the range of .NET unicode 2A6D7-2F7FF */ + /* Skip characters outside the range of .NET unicode 2FA1E-2FFFD */ + /* Skip characters outside the range of .NET unicode 30000-3FFFD */ + /* Skip characters outside the range of .NET unicode 40000-4FFFD */ + /* Skip characters outside the range of .NET unicode 50000-5FFFD */ + /* Skip characters outside the range of .NET unicode 60000-6FFFD */ + /* Skip characters outside the range of .NET unicode 70000-7FFFD */ + /* Skip characters outside the range of .NET unicode 80000-8FFFD */ + /* Skip characters outside the range of .NET unicode 90000-9FFFD */ + /* Skip characters outside the range of .NET unicode A0000-AFFFD */ + /* Skip characters outside the range of .NET unicode B0000-BFFFD */ + /* Skip characters outside the range of .NET unicode C0000-CFFFD */ + /* Skip characters outside the range of .NET unicode D0000-DFFFD */ + /* Skip characters outside the range of .NET unicode E0000 */ + /* Skip characters outside the range of .NET unicode E0002-E001F */ + /* Skip characters outside the range of .NET unicode E0080-EFFFD */ + }; + + public static char[] B1 = new char[] { + '\u00AD', /* 00AD; ; Map to nothing */ + '\u034F', /* 034F; ; Map to nothing */ + '\u1806', /* 1806; ; Map to nothing */ + '\u180B', /* 180B; ; Map to nothing */ + '\u180C', /* 180C; ; Map to nothing */ + '\u180D', /* 180D; ; Map to nothing */ + '\u200B', /* 200B; ; Map to nothing */ + '\u200C', /* 200C; ; Map to nothing */ + '\u200D', /* 200D; ; Map to nothing */ + '\u2060', /* 2060; ; Map to nothing */ + '\uFE00', /* FE00; ; Map to nothing */ + '\uFE01', /* FE01; ; Map to nothing */ + '\uFE02', /* FE02; ; Map to nothing */ + '\uFE03', /* FE03; ; Map to nothing */ + '\uFE04', /* FE04; ; Map to nothing */ + '\uFE05', /* FE05; ; Map to nothing */ + '\uFE06', /* FE06; ; Map to nothing */ + '\uFE07', /* FE07; ; Map to nothing */ + '\uFE08', /* FE08; ; Map to nothing */ + '\uFE09', /* FE09; ; Map to nothing */ + '\uFE0A', /* FE0A; ; Map to nothing */ + '\uFE0B', /* FE0B; ; Map to nothing */ + '\uFE0C', /* FE0C; ; Map to nothing */ + '\uFE0D', /* FE0D; ; Map to nothing */ + '\uFE0E', /* FE0E; ; Map to nothing */ + '\uFE0F', /* FE0F; ; Map to nothing */ + '\uFEFF', /* FEFF; ; Map to nothing */ + }; + + public static char[] B2search = new char[] { + '\u0041', /*0041; 0061; Case map*/ + '\u0042', /*0042; 0062; Case map*/ + '\u0043', /*0043; 0063; Case map*/ + '\u0044', /*0044; 0064; Case map*/ + '\u0045', /*0045; 0065; Case map*/ + '\u0046', /*0046; 0066; Case map*/ + '\u0047', /*0047; 0067; Case map*/ + '\u0048', /*0048; 0068; Case map*/ + '\u0049', /*0049; 0069; Case map*/ + '\u004A', /*004A; 006A; Case map*/ + '\u004B', /*004B; 006B; Case map*/ + '\u004C', /*004C; 006C; Case map*/ + '\u004D', /*004D; 006D; Case map*/ + '\u004E', /*004E; 006E; Case map*/ + '\u004F', /*004F; 006F; Case map*/ + '\u0050', /*0050; 0070; Case map*/ + '\u0051', /*0051; 0071; Case map*/ + '\u0052', /*0052; 0072; Case map*/ + '\u0053', /*0053; 0073; Case map*/ + '\u0054', /*0054; 0074; Case map*/ + '\u0055', /*0055; 0075; Case map*/ + '\u0056', /*0056; 0076; Case map*/ + '\u0057', /*0057; 0077; Case map*/ + '\u0058', /*0058; 0078; Case map*/ + '\u0059', /*0059; 0079; Case map*/ + '\u005A', /*005A; 007A; Case map*/ + '\u00B5', /*00B5; 03BC; Case map*/ + '\u00C0', /*00C0; 00E0; Case map*/ + '\u00C1', /*00C1; 00E1; Case map*/ + '\u00C2', /*00C2; 00E2; Case map*/ + '\u00C3', /*00C3; 00E3; Case map*/ + '\u00C4', /*00C4; 00E4; Case map*/ + '\u00C5', /*00C5; 00E5; Case map*/ + '\u00C6', /*00C6; 00E6; Case map*/ + '\u00C7', /*00C7; 00E7; Case map*/ + '\u00C8', /*00C8; 00E8; Case map*/ + '\u00C9', /*00C9; 00E9; Case map*/ + '\u00CA', /*00CA; 00EA; Case map*/ + '\u00CB', /*00CB; 00EB; Case map*/ + '\u00CC', /*00CC; 00EC; Case map*/ + '\u00CD', /*00CD; 00ED; Case map*/ + '\u00CE', /*00CE; 00EE; Case map*/ + '\u00CF', /*00CF; 00EF; Case map*/ + '\u00D0', /*00D0; 00F0; Case map*/ + '\u00D1', /*00D1; 00F1; Case map*/ + '\u00D2', /*00D2; 00F2; Case map*/ + '\u00D3', /*00D3; 00F3; Case map*/ + '\u00D4', /*00D4; 00F4; Case map*/ + '\u00D5', /*00D5; 00F5; Case map*/ + '\u00D6', /*00D6; 00F6; Case map*/ + '\u00D8', /*00D8; 00F8; Case map*/ + '\u00D9', /*00D9; 00F9; Case map*/ + '\u00DA', /*00DA; 00FA; Case map*/ + '\u00DB', /*00DB; 00FB; Case map*/ + '\u00DC', /*00DC; 00FC; Case map*/ + '\u00DD', /*00DD; 00FD; Case map*/ + '\u00DE', /*00DE; 00FE; Case map*/ + '\u00DF', /*00DF; 0073 0073; Case map*/ + '\u0100', /*0100; 0101; Case map*/ + '\u0102', /*0102; 0103; Case map*/ + '\u0104', /*0104; 0105; Case map*/ + '\u0106', /*0106; 0107; Case map*/ + '\u0108', /*0108; 0109; Case map*/ + '\u010A', /*010A; 010B; Case map*/ + '\u010C', /*010C; 010D; Case map*/ + '\u010E', /*010E; 010F; Case map*/ + '\u0110', /*0110; 0111; Case map*/ + '\u0112', /*0112; 0113; Case map*/ + '\u0114', /*0114; 0115; Case map*/ + '\u0116', /*0116; 0117; Case map*/ + '\u0118', /*0118; 0119; Case map*/ + '\u011A', /*011A; 011B; Case map*/ + '\u011C', /*011C; 011D; Case map*/ + '\u011E', /*011E; 011F; Case map*/ + '\u0120', /*0120; 0121; Case map*/ + '\u0122', /*0122; 0123; Case map*/ + '\u0124', /*0124; 0125; Case map*/ + '\u0126', /*0126; 0127; Case map*/ + '\u0128', /*0128; 0129; Case map*/ + '\u012A', /*012A; 012B; Case map*/ + '\u012C', /*012C; 012D; Case map*/ + '\u012E', /*012E; 012F; Case map*/ + '\u0130', /*0130; 0069 0307; Case map*/ + '\u0132', /*0132; 0133; Case map*/ + '\u0134', /*0134; 0135; Case map*/ + '\u0136', /*0136; 0137; Case map*/ + '\u0139', /*0139; 013A; Case map*/ + '\u013B', /*013B; 013C; Case map*/ + '\u013D', /*013D; 013E; Case map*/ + '\u013F', /*013F; 0140; Case map*/ + '\u0141', /*0141; 0142; Case map*/ + '\u0143', /*0143; 0144; Case map*/ + '\u0145', /*0145; 0146; Case map*/ + '\u0147', /*0147; 0148; Case map*/ + '\u0149', /*0149; 02BC 006E; Case map*/ + '\u014A', /*014A; 014B; Case map*/ + '\u014C', /*014C; 014D; Case map*/ + '\u014E', /*014E; 014F; Case map*/ + '\u0150', /*0150; 0151; Case map*/ + '\u0152', /*0152; 0153; Case map*/ + '\u0154', /*0154; 0155; Case map*/ + '\u0156', /*0156; 0157; Case map*/ + '\u0158', /*0158; 0159; Case map*/ + '\u015A', /*015A; 015B; Case map*/ + '\u015C', /*015C; 015D; Case map*/ + '\u015E', /*015E; 015F; Case map*/ + '\u0160', /*0160; 0161; Case map*/ + '\u0162', /*0162; 0163; Case map*/ + '\u0164', /*0164; 0165; Case map*/ + '\u0166', /*0166; 0167; Case map*/ + '\u0168', /*0168; 0169; Case map*/ + '\u016A', /*016A; 016B; Case map*/ + '\u016C', /*016C; 016D; Case map*/ + '\u016E', /*016E; 016F; Case map*/ + '\u0170', /*0170; 0171; Case map*/ + '\u0172', /*0172; 0173; Case map*/ + '\u0174', /*0174; 0175; Case map*/ + '\u0176', /*0176; 0177; Case map*/ + '\u0178', /*0178; 00FF; Case map*/ + '\u0179', /*0179; 017A; Case map*/ + '\u017B', /*017B; 017C; Case map*/ + '\u017D', /*017D; 017E; Case map*/ + '\u017F', /*017F; 0073; Case map*/ + '\u0181', /*0181; 0253; Case map*/ + '\u0182', /*0182; 0183; Case map*/ + '\u0184', /*0184; 0185; Case map*/ + '\u0186', /*0186; 0254; Case map*/ + '\u0187', /*0187; 0188; Case map*/ + '\u0189', /*0189; 0256; Case map*/ + '\u018A', /*018A; 0257; Case map*/ + '\u018B', /*018B; 018C; Case map*/ + '\u018E', /*018E; 01DD; Case map*/ + '\u018F', /*018F; 0259; Case map*/ + '\u0190', /*0190; 025B; Case map*/ + '\u0191', /*0191; 0192; Case map*/ + '\u0193', /*0193; 0260; Case map*/ + '\u0194', /*0194; 0263; Case map*/ + '\u0196', /*0196; 0269; Case map*/ + '\u0197', /*0197; 0268; Case map*/ + '\u0198', /*0198; 0199; Case map*/ + '\u019C', /*019C; 026F; Case map*/ + '\u019D', /*019D; 0272; Case map*/ + '\u019F', /*019F; 0275; Case map*/ + '\u01A0', /*01A0; 01A1; Case map*/ + '\u01A2', /*01A2; 01A3; Case map*/ + '\u01A4', /*01A4; 01A5; Case map*/ + '\u01A6', /*01A6; 0280; Case map*/ + '\u01A7', /*01A7; 01A8; Case map*/ + '\u01A9', /*01A9; 0283; Case map*/ + '\u01AC', /*01AC; 01AD; Case map*/ + '\u01AE', /*01AE; 0288; Case map*/ + '\u01AF', /*01AF; 01B0; Case map*/ + '\u01B1', /*01B1; 028A; Case map*/ + '\u01B2', /*01B2; 028B; Case map*/ + '\u01B3', /*01B3; 01B4; Case map*/ + '\u01B5', /*01B5; 01B6; Case map*/ + '\u01B7', /*01B7; 0292; Case map*/ + '\u01B8', /*01B8; 01B9; Case map*/ + '\u01BC', /*01BC; 01BD; Case map*/ + '\u01C4', /*01C4; 01C6; Case map*/ + '\u01C5', /*01C5; 01C6; Case map*/ + '\u01C7', /*01C7; 01C9; Case map*/ + '\u01C8', /*01C8; 01C9; Case map*/ + '\u01CA', /*01CA; 01CC; Case map*/ + '\u01CB', /*01CB; 01CC; Case map*/ + '\u01CD', /*01CD; 01CE; Case map*/ + '\u01CF', /*01CF; 01D0; Case map*/ + '\u01D1', /*01D1; 01D2; Case map*/ + '\u01D3', /*01D3; 01D4; Case map*/ + '\u01D5', /*01D5; 01D6; Case map*/ + '\u01D7', /*01D7; 01D8; Case map*/ + '\u01D9', /*01D9; 01DA; Case map*/ + '\u01DB', /*01DB; 01DC; Case map*/ + '\u01DE', /*01DE; 01DF; Case map*/ + '\u01E0', /*01E0; 01E1; Case map*/ + '\u01E2', /*01E2; 01E3; Case map*/ + '\u01E4', /*01E4; 01E5; Case map*/ + '\u01E6', /*01E6; 01E7; Case map*/ + '\u01E8', /*01E8; 01E9; Case map*/ + '\u01EA', /*01EA; 01EB; Case map*/ + '\u01EC', /*01EC; 01ED; Case map*/ + '\u01EE', /*01EE; 01EF; Case map*/ + '\u01F0', /*01F0; 006A 030C; Case map*/ + '\u01F1', /*01F1; 01F3; Case map*/ + '\u01F2', /*01F2; 01F3; Case map*/ + '\u01F4', /*01F4; 01F5; Case map*/ + '\u01F6', /*01F6; 0195; Case map*/ + '\u01F7', /*01F7; 01BF; Case map*/ + '\u01F8', /*01F8; 01F9; Case map*/ + '\u01FA', /*01FA; 01FB; Case map*/ + '\u01FC', /*01FC; 01FD; Case map*/ + '\u01FE', /*01FE; 01FF; Case map*/ + '\u0200', /*0200; 0201; Case map*/ + '\u0202', /*0202; 0203; Case map*/ + '\u0204', /*0204; 0205; Case map*/ + '\u0206', /*0206; 0207; Case map*/ + '\u0208', /*0208; 0209; Case map*/ + '\u020A', /*020A; 020B; Case map*/ + '\u020C', /*020C; 020D; Case map*/ + '\u020E', /*020E; 020F; Case map*/ + '\u0210', /*0210; 0211; Case map*/ + '\u0212', /*0212; 0213; Case map*/ + '\u0214', /*0214; 0215; Case map*/ + '\u0216', /*0216; 0217; Case map*/ + '\u0218', /*0218; 0219; Case map*/ + '\u021A', /*021A; 021B; Case map*/ + '\u021C', /*021C; 021D; Case map*/ + '\u021E', /*021E; 021F; Case map*/ + '\u0220', /*0220; 019E; Case map*/ + '\u0222', /*0222; 0223; Case map*/ + '\u0224', /*0224; 0225; Case map*/ + '\u0226', /*0226; 0227; Case map*/ + '\u0228', /*0228; 0229; Case map*/ + '\u022A', /*022A; 022B; Case map*/ + '\u022C', /*022C; 022D; Case map*/ + '\u022E', /*022E; 022F; Case map*/ + '\u0230', /*0230; 0231; Case map*/ + '\u0232', /*0232; 0233; Case map*/ + '\u0345', /*0345; 03B9; Case map*/ + '\u037A', /*037A; 0020 03B9; Additional folding*/ + '\u0386', /*0386; 03AC; Case map*/ + '\u0388', /*0388; 03AD; Case map*/ + '\u0389', /*0389; 03AE; Case map*/ + '\u038A', /*038A; 03AF; Case map*/ + '\u038C', /*038C; 03CC; Case map*/ + '\u038E', /*038E; 03CD; Case map*/ + '\u038F', /*038F; 03CE; Case map*/ + '\u0390', /*0390; 03B9 0308 0301; Case map*/ + '\u0391', /*0391; 03B1; Case map*/ + '\u0392', /*0392; 03B2; Case map*/ + '\u0393', /*0393; 03B3; Case map*/ + '\u0394', /*0394; 03B4; Case map*/ + '\u0395', /*0395; 03B5; Case map*/ + '\u0396', /*0396; 03B6; Case map*/ + '\u0397', /*0397; 03B7; Case map*/ + '\u0398', /*0398; 03B8; Case map*/ + '\u0399', /*0399; 03B9; Case map*/ + '\u039A', /*039A; 03BA; Case map*/ + '\u039B', /*039B; 03BB; Case map*/ + '\u039C', /*039C; 03BC; Case map*/ + '\u039D', /*039D; 03BD; Case map*/ + '\u039E', /*039E; 03BE; Case map*/ + '\u039F', /*039F; 03BF; Case map*/ + '\u03A0', /*03A0; 03C0; Case map*/ + '\u03A1', /*03A1; 03C1; Case map*/ + '\u03A3', /*03A3; 03C3; Case map*/ + '\u03A4', /*03A4; 03C4; Case map*/ + '\u03A5', /*03A5; 03C5; Case map*/ + '\u03A6', /*03A6; 03C6; Case map*/ + '\u03A7', /*03A7; 03C7; Case map*/ + '\u03A8', /*03A8; 03C8; Case map*/ + '\u03A9', /*03A9; 03C9; Case map*/ + '\u03AA', /*03AA; 03CA; Case map*/ + '\u03AB', /*03AB; 03CB; Case map*/ + '\u03B0', /*03B0; 03C5 0308 0301; Case map*/ + '\u03C2', /*03C2; 03C3; Case map*/ + '\u03D0', /*03D0; 03B2; Case map*/ + '\u03D1', /*03D1; 03B8; Case map*/ + '\u03D2', /*03D2; 03C5; Additional folding*/ + '\u03D3', /*03D3; 03CD; Additional folding*/ + '\u03D4', /*03D4; 03CB; Additional folding*/ + '\u03D5', /*03D5; 03C6; Case map*/ + '\u03D6', /*03D6; 03C0; Case map*/ + '\u03D8', /*03D8; 03D9; Case map*/ + '\u03DA', /*03DA; 03DB; Case map*/ + '\u03DC', /*03DC; 03DD; Case map*/ + '\u03DE', /*03DE; 03DF; Case map*/ + '\u03E0', /*03E0; 03E1; Case map*/ + '\u03E2', /*03E2; 03E3; Case map*/ + '\u03E4', /*03E4; 03E5; Case map*/ + '\u03E6', /*03E6; 03E7; Case map*/ + '\u03E8', /*03E8; 03E9; Case map*/ + '\u03EA', /*03EA; 03EB; Case map*/ + '\u03EC', /*03EC; 03ED; Case map*/ + '\u03EE', /*03EE; 03EF; Case map*/ + '\u03F0', /*03F0; 03BA; Case map*/ + '\u03F1', /*03F1; 03C1; Case map*/ + '\u03F2', /*03F2; 03C3; Case map*/ + '\u03F4', /*03F4; 03B8; Case map*/ + '\u03F5', /*03F5; 03B5; Case map*/ + '\u0400', /*0400; 0450; Case map*/ + '\u0401', /*0401; 0451; Case map*/ + '\u0402', /*0402; 0452; Case map*/ + '\u0403', /*0403; 0453; Case map*/ + '\u0404', /*0404; 0454; Case map*/ + '\u0405', /*0405; 0455; Case map*/ + '\u0406', /*0406; 0456; Case map*/ + '\u0407', /*0407; 0457; Case map*/ + '\u0408', /*0408; 0458; Case map*/ + '\u0409', /*0409; 0459; Case map*/ + '\u040A', /*040A; 045A; Case map*/ + '\u040B', /*040B; 045B; Case map*/ + '\u040C', /*040C; 045C; Case map*/ + '\u040D', /*040D; 045D; Case map*/ + '\u040E', /*040E; 045E; Case map*/ + '\u040F', /*040F; 045F; Case map*/ + '\u0410', /*0410; 0430; Case map*/ + '\u0411', /*0411; 0431; Case map*/ + '\u0412', /*0412; 0432; Case map*/ + '\u0413', /*0413; 0433; Case map*/ + '\u0414', /*0414; 0434; Case map*/ + '\u0415', /*0415; 0435; Case map*/ + '\u0416', /*0416; 0436; Case map*/ + '\u0417', /*0417; 0437; Case map*/ + '\u0418', /*0418; 0438; Case map*/ + '\u0419', /*0419; 0439; Case map*/ + '\u041A', /*041A; 043A; Case map*/ + '\u041B', /*041B; 043B; Case map*/ + '\u041C', /*041C; 043C; Case map*/ + '\u041D', /*041D; 043D; Case map*/ + '\u041E', /*041E; 043E; Case map*/ + '\u041F', /*041F; 043F; Case map*/ + '\u0420', /*0420; 0440; Case map*/ + '\u0421', /*0421; 0441; Case map*/ + '\u0422', /*0422; 0442; Case map*/ + '\u0423', /*0423; 0443; Case map*/ + '\u0424', /*0424; 0444; Case map*/ + '\u0425', /*0425; 0445; Case map*/ + '\u0426', /*0426; 0446; Case map*/ + '\u0427', /*0427; 0447; Case map*/ + '\u0428', /*0428; 0448; Case map*/ + '\u0429', /*0429; 0449; Case map*/ + '\u042A', /*042A; 044A; Case map*/ + '\u042B', /*042B; 044B; Case map*/ + '\u042C', /*042C; 044C; Case map*/ + '\u042D', /*042D; 044D; Case map*/ + '\u042E', /*042E; 044E; Case map*/ + '\u042F', /*042F; 044F; Case map*/ + '\u0460', /*0460; 0461; Case map*/ + '\u0462', /*0462; 0463; Case map*/ + '\u0464', /*0464; 0465; Case map*/ + '\u0466', /*0466; 0467; Case map*/ + '\u0468', /*0468; 0469; Case map*/ + '\u046A', /*046A; 046B; Case map*/ + '\u046C', /*046C; 046D; Case map*/ + '\u046E', /*046E; 046F; Case map*/ + '\u0470', /*0470; 0471; Case map*/ + '\u0472', /*0472; 0473; Case map*/ + '\u0474', /*0474; 0475; Case map*/ + '\u0476', /*0476; 0477; Case map*/ + '\u0478', /*0478; 0479; Case map*/ + '\u047A', /*047A; 047B; Case map*/ + '\u047C', /*047C; 047D; Case map*/ + '\u047E', /*047E; 047F; Case map*/ + '\u0480', /*0480; 0481; Case map*/ + '\u048A', /*048A; 048B; Case map*/ + '\u048C', /*048C; 048D; Case map*/ + '\u048E', /*048E; 048F; Case map*/ + '\u0490', /*0490; 0491; Case map*/ + '\u0492', /*0492; 0493; Case map*/ + '\u0494', /*0494; 0495; Case map*/ + '\u0496', /*0496; 0497; Case map*/ + '\u0498', /*0498; 0499; Case map*/ + '\u049A', /*049A; 049B; Case map*/ + '\u049C', /*049C; 049D; Case map*/ + '\u049E', /*049E; 049F; Case map*/ + '\u04A0', /*04A0; 04A1; Case map*/ + '\u04A2', /*04A2; 04A3; Case map*/ + '\u04A4', /*04A4; 04A5; Case map*/ + '\u04A6', /*04A6; 04A7; Case map*/ + '\u04A8', /*04A8; 04A9; Case map*/ + '\u04AA', /*04AA; 04AB; Case map*/ + '\u04AC', /*04AC; 04AD; Case map*/ + '\u04AE', /*04AE; 04AF; Case map*/ + '\u04B0', /*04B0; 04B1; Case map*/ + '\u04B2', /*04B2; 04B3; Case map*/ + '\u04B4', /*04B4; 04B5; Case map*/ + '\u04B6', /*04B6; 04B7; Case map*/ + '\u04B8', /*04B8; 04B9; Case map*/ + '\u04BA', /*04BA; 04BB; Case map*/ + '\u04BC', /*04BC; 04BD; Case map*/ + '\u04BE', /*04BE; 04BF; Case map*/ + '\u04C1', /*04C1; 04C2; Case map*/ + '\u04C3', /*04C3; 04C4; Case map*/ + '\u04C5', /*04C5; 04C6; Case map*/ + '\u04C7', /*04C7; 04C8; Case map*/ + '\u04C9', /*04C9; 04CA; Case map*/ + '\u04CB', /*04CB; 04CC; Case map*/ + '\u04CD', /*04CD; 04CE; Case map*/ + '\u04D0', /*04D0; 04D1; Case map*/ + '\u04D2', /*04D2; 04D3; Case map*/ + '\u04D4', /*04D4; 04D5; Case map*/ + '\u04D6', /*04D6; 04D7; Case map*/ + '\u04D8', /*04D8; 04D9; Case map*/ + '\u04DA', /*04DA; 04DB; Case map*/ + '\u04DC', /*04DC; 04DD; Case map*/ + '\u04DE', /*04DE; 04DF; Case map*/ + '\u04E0', /*04E0; 04E1; Case map*/ + '\u04E2', /*04E2; 04E3; Case map*/ + '\u04E4', /*04E4; 04E5; Case map*/ + '\u04E6', /*04E6; 04E7; Case map*/ + '\u04E8', /*04E8; 04E9; Case map*/ + '\u04EA', /*04EA; 04EB; Case map*/ + '\u04EC', /*04EC; 04ED; Case map*/ + '\u04EE', /*04EE; 04EF; Case map*/ + '\u04F0', /*04F0; 04F1; Case map*/ + '\u04F2', /*04F2; 04F3; Case map*/ + '\u04F4', /*04F4; 04F5; Case map*/ + '\u04F8', /*04F8; 04F9; Case map*/ + '\u0500', /*0500; 0501; Case map*/ + '\u0502', /*0502; 0503; Case map*/ + '\u0504', /*0504; 0505; Case map*/ + '\u0506', /*0506; 0507; Case map*/ + '\u0508', /*0508; 0509; Case map*/ + '\u050A', /*050A; 050B; Case map*/ + '\u050C', /*050C; 050D; Case map*/ + '\u050E', /*050E; 050F; Case map*/ + '\u0531', /*0531; 0561; Case map*/ + '\u0532', /*0532; 0562; Case map*/ + '\u0533', /*0533; 0563; Case map*/ + '\u0534', /*0534; 0564; Case map*/ + '\u0535', /*0535; 0565; Case map*/ + '\u0536', /*0536; 0566; Case map*/ + '\u0537', /*0537; 0567; Case map*/ + '\u0538', /*0538; 0568; Case map*/ + '\u0539', /*0539; 0569; Case map*/ + '\u053A', /*053A; 056A; Case map*/ + '\u053B', /*053B; 056B; Case map*/ + '\u053C', /*053C; 056C; Case map*/ + '\u053D', /*053D; 056D; Case map*/ + '\u053E', /*053E; 056E; Case map*/ + '\u053F', /*053F; 056F; Case map*/ + '\u0540', /*0540; 0570; Case map*/ + '\u0541', /*0541; 0571; Case map*/ + '\u0542', /*0542; 0572; Case map*/ + '\u0543', /*0543; 0573; Case map*/ + '\u0544', /*0544; 0574; Case map*/ + '\u0545', /*0545; 0575; Case map*/ + '\u0546', /*0546; 0576; Case map*/ + '\u0547', /*0547; 0577; Case map*/ + '\u0548', /*0548; 0578; Case map*/ + '\u0549', /*0549; 0579; Case map*/ + '\u054A', /*054A; 057A; Case map*/ + '\u054B', /*054B; 057B; Case map*/ + '\u054C', /*054C; 057C; Case map*/ + '\u054D', /*054D; 057D; Case map*/ + '\u054E', /*054E; 057E; Case map*/ + '\u054F', /*054F; 057F; Case map*/ + '\u0550', /*0550; 0580; Case map*/ + '\u0551', /*0551; 0581; Case map*/ + '\u0552', /*0552; 0582; Case map*/ + '\u0553', /*0553; 0583; Case map*/ + '\u0554', /*0554; 0584; Case map*/ + '\u0555', /*0555; 0585; Case map*/ + '\u0556', /*0556; 0586; Case map*/ + '\u0587', /*0587; 0565 0582; Case map*/ + '\u1E00', /*1E00; 1E01; Case map*/ + '\u1E02', /*1E02; 1E03; Case map*/ + '\u1E04', /*1E04; 1E05; Case map*/ + '\u1E06', /*1E06; 1E07; Case map*/ + '\u1E08', /*1E08; 1E09; Case map*/ + '\u1E0A', /*1E0A; 1E0B; Case map*/ + '\u1E0C', /*1E0C; 1E0D; Case map*/ + '\u1E0E', /*1E0E; 1E0F; Case map*/ + '\u1E10', /*1E10; 1E11; Case map*/ + '\u1E12', /*1E12; 1E13; Case map*/ + '\u1E14', /*1E14; 1E15; Case map*/ + '\u1E16', /*1E16; 1E17; Case map*/ + '\u1E18', /*1E18; 1E19; Case map*/ + '\u1E1A', /*1E1A; 1E1B; Case map*/ + '\u1E1C', /*1E1C; 1E1D; Case map*/ + '\u1E1E', /*1E1E; 1E1F; Case map*/ + '\u1E20', /*1E20; 1E21; Case map*/ + '\u1E22', /*1E22; 1E23; Case map*/ + '\u1E24', /*1E24; 1E25; Case map*/ + '\u1E26', /*1E26; 1E27; Case map*/ + '\u1E28', /*1E28; 1E29; Case map*/ + '\u1E2A', /*1E2A; 1E2B; Case map*/ + '\u1E2C', /*1E2C; 1E2D; Case map*/ + '\u1E2E', /*1E2E; 1E2F; Case map*/ + '\u1E30', /*1E30; 1E31; Case map*/ + '\u1E32', /*1E32; 1E33; Case map*/ + '\u1E34', /*1E34; 1E35; Case map*/ + '\u1E36', /*1E36; 1E37; Case map*/ + '\u1E38', /*1E38; 1E39; Case map*/ + '\u1E3A', /*1E3A; 1E3B; Case map*/ + '\u1E3C', /*1E3C; 1E3D; Case map*/ + '\u1E3E', /*1E3E; 1E3F; Case map*/ + '\u1E40', /*1E40; 1E41; Case map*/ + '\u1E42', /*1E42; 1E43; Case map*/ + '\u1E44', /*1E44; 1E45; Case map*/ + '\u1E46', /*1E46; 1E47; Case map*/ + '\u1E48', /*1E48; 1E49; Case map*/ + '\u1E4A', /*1E4A; 1E4B; Case map*/ + '\u1E4C', /*1E4C; 1E4D; Case map*/ + '\u1E4E', /*1E4E; 1E4F; Case map*/ + '\u1E50', /*1E50; 1E51; Case map*/ + '\u1E52', /*1E52; 1E53; Case map*/ + '\u1E54', /*1E54; 1E55; Case map*/ + '\u1E56', /*1E56; 1E57; Case map*/ + '\u1E58', /*1E58; 1E59; Case map*/ + '\u1E5A', /*1E5A; 1E5B; Case map*/ + '\u1E5C', /*1E5C; 1E5D; Case map*/ + '\u1E5E', /*1E5E; 1E5F; Case map*/ + '\u1E60', /*1E60; 1E61; Case map*/ + '\u1E62', /*1E62; 1E63; Case map*/ + '\u1E64', /*1E64; 1E65; Case map*/ + '\u1E66', /*1E66; 1E67; Case map*/ + '\u1E68', /*1E68; 1E69; Case map*/ + '\u1E6A', /*1E6A; 1E6B; Case map*/ + '\u1E6C', /*1E6C; 1E6D; Case map*/ + '\u1E6E', /*1E6E; 1E6F; Case map*/ + '\u1E70', /*1E70; 1E71; Case map*/ + '\u1E72', /*1E72; 1E73; Case map*/ + '\u1E74', /*1E74; 1E75; Case map*/ + '\u1E76', /*1E76; 1E77; Case map*/ + '\u1E78', /*1E78; 1E79; Case map*/ + '\u1E7A', /*1E7A; 1E7B; Case map*/ + '\u1E7C', /*1E7C; 1E7D; Case map*/ + '\u1E7E', /*1E7E; 1E7F; Case map*/ + '\u1E80', /*1E80; 1E81; Case map*/ + '\u1E82', /*1E82; 1E83; Case map*/ + '\u1E84', /*1E84; 1E85; Case map*/ + '\u1E86', /*1E86; 1E87; Case map*/ + '\u1E88', /*1E88; 1E89; Case map*/ + '\u1E8A', /*1E8A; 1E8B; Case map*/ + '\u1E8C', /*1E8C; 1E8D; Case map*/ + '\u1E8E', /*1E8E; 1E8F; Case map*/ + '\u1E90', /*1E90; 1E91; Case map*/ + '\u1E92', /*1E92; 1E93; Case map*/ + '\u1E94', /*1E94; 1E95; Case map*/ + '\u1E96', /*1E96; 0068 0331; Case map*/ + '\u1E97', /*1E97; 0074 0308; Case map*/ + '\u1E98', /*1E98; 0077 030A; Case map*/ + '\u1E99', /*1E99; 0079 030A; Case map*/ + '\u1E9A', /*1E9A; 0061 02BE; Case map*/ + '\u1E9B', /*1E9B; 1E61; Case map*/ + '\u1EA0', /*1EA0; 1EA1; Case map*/ + '\u1EA2', /*1EA2; 1EA3; Case map*/ + '\u1EA4', /*1EA4; 1EA5; Case map*/ + '\u1EA6', /*1EA6; 1EA7; Case map*/ + '\u1EA8', /*1EA8; 1EA9; Case map*/ + '\u1EAA', /*1EAA; 1EAB; Case map*/ + '\u1EAC', /*1EAC; 1EAD; Case map*/ + '\u1EAE', /*1EAE; 1EAF; Case map*/ + '\u1EB0', /*1EB0; 1EB1; Case map*/ + '\u1EB2', /*1EB2; 1EB3; Case map*/ + '\u1EB4', /*1EB4; 1EB5; Case map*/ + '\u1EB6', /*1EB6; 1EB7; Case map*/ + '\u1EB8', /*1EB8; 1EB9; Case map*/ + '\u1EBA', /*1EBA; 1EBB; Case map*/ + '\u1EBC', /*1EBC; 1EBD; Case map*/ + '\u1EBE', /*1EBE; 1EBF; Case map*/ + '\u1EC0', /*1EC0; 1EC1; Case map*/ + '\u1EC2', /*1EC2; 1EC3; Case map*/ + '\u1EC4', /*1EC4; 1EC5; Case map*/ + '\u1EC6', /*1EC6; 1EC7; Case map*/ + '\u1EC8', /*1EC8; 1EC9; Case map*/ + '\u1ECA', /*1ECA; 1ECB; Case map*/ + '\u1ECC', /*1ECC; 1ECD; Case map*/ + '\u1ECE', /*1ECE; 1ECF; Case map*/ + '\u1ED0', /*1ED0; 1ED1; Case map*/ + '\u1ED2', /*1ED2; 1ED3; Case map*/ + '\u1ED4', /*1ED4; 1ED5; Case map*/ + '\u1ED6', /*1ED6; 1ED7; Case map*/ + '\u1ED8', /*1ED8; 1ED9; Case map*/ + '\u1EDA', /*1EDA; 1EDB; Case map*/ + '\u1EDC', /*1EDC; 1EDD; Case map*/ + '\u1EDE', /*1EDE; 1EDF; Case map*/ + '\u1EE0', /*1EE0; 1EE1; Case map*/ + '\u1EE2', /*1EE2; 1EE3; Case map*/ + '\u1EE4', /*1EE4; 1EE5; Case map*/ + '\u1EE6', /*1EE6; 1EE7; Case map*/ + '\u1EE8', /*1EE8; 1EE9; Case map*/ + '\u1EEA', /*1EEA; 1EEB; Case map*/ + '\u1EEC', /*1EEC; 1EED; Case map*/ + '\u1EEE', /*1EEE; 1EEF; Case map*/ + '\u1EF0', /*1EF0; 1EF1; Case map*/ + '\u1EF2', /*1EF2; 1EF3; Case map*/ + '\u1EF4', /*1EF4; 1EF5; Case map*/ + '\u1EF6', /*1EF6; 1EF7; Case map*/ + '\u1EF8', /*1EF8; 1EF9; Case map*/ + '\u1F08', /*1F08; 1F00; Case map*/ + '\u1F09', /*1F09; 1F01; Case map*/ + '\u1F0A', /*1F0A; 1F02; Case map*/ + '\u1F0B', /*1F0B; 1F03; Case map*/ + '\u1F0C', /*1F0C; 1F04; Case map*/ + '\u1F0D', /*1F0D; 1F05; Case map*/ + '\u1F0E', /*1F0E; 1F06; Case map*/ + '\u1F0F', /*1F0F; 1F07; Case map*/ + '\u1F18', /*1F18; 1F10; Case map*/ + '\u1F19', /*1F19; 1F11; Case map*/ + '\u1F1A', /*1F1A; 1F12; Case map*/ + '\u1F1B', /*1F1B; 1F13; Case map*/ + '\u1F1C', /*1F1C; 1F14; Case map*/ + '\u1F1D', /*1F1D; 1F15; Case map*/ + '\u1F28', /*1F28; 1F20; Case map*/ + '\u1F29', /*1F29; 1F21; Case map*/ + '\u1F2A', /*1F2A; 1F22; Case map*/ + '\u1F2B', /*1F2B; 1F23; Case map*/ + '\u1F2C', /*1F2C; 1F24; Case map*/ + '\u1F2D', /*1F2D; 1F25; Case map*/ + '\u1F2E', /*1F2E; 1F26; Case map*/ + '\u1F2F', /*1F2F; 1F27; Case map*/ + '\u1F38', /*1F38; 1F30; Case map*/ + '\u1F39', /*1F39; 1F31; Case map*/ + '\u1F3A', /*1F3A; 1F32; Case map*/ + '\u1F3B', /*1F3B; 1F33; Case map*/ + '\u1F3C', /*1F3C; 1F34; Case map*/ + '\u1F3D', /*1F3D; 1F35; Case map*/ + '\u1F3E', /*1F3E; 1F36; Case map*/ + '\u1F3F', /*1F3F; 1F37; Case map*/ + '\u1F48', /*1F48; 1F40; Case map*/ + '\u1F49', /*1F49; 1F41; Case map*/ + '\u1F4A', /*1F4A; 1F42; Case map*/ + '\u1F4B', /*1F4B; 1F43; Case map*/ + '\u1F4C', /*1F4C; 1F44; Case map*/ + '\u1F4D', /*1F4D; 1F45; Case map*/ + '\u1F50', /*1F50; 03C5 0313; Case map*/ + '\u1F52', /*1F52; 03C5 0313 0300; Case map*/ + '\u1F54', /*1F54; 03C5 0313 0301; Case map*/ + '\u1F56', /*1F56; 03C5 0313 0342; Case map*/ + '\u1F59', /*1F59; 1F51; Case map*/ + '\u1F5B', /*1F5B; 1F53; Case map*/ + '\u1F5D', /*1F5D; 1F55; Case map*/ + '\u1F5F', /*1F5F; 1F57; Case map*/ + '\u1F68', /*1F68; 1F60; Case map*/ + '\u1F69', /*1F69; 1F61; Case map*/ + '\u1F6A', /*1F6A; 1F62; Case map*/ + '\u1F6B', /*1F6B; 1F63; Case map*/ + '\u1F6C', /*1F6C; 1F64; Case map*/ + '\u1F6D', /*1F6D; 1F65; Case map*/ + '\u1F6E', /*1F6E; 1F66; Case map*/ + '\u1F6F', /*1F6F; 1F67; Case map*/ + '\u1F80', /*1F80; 1F00 03B9; Case map*/ + '\u1F81', /*1F81; 1F01 03B9; Case map*/ + '\u1F82', /*1F82; 1F02 03B9; Case map*/ + '\u1F83', /*1F83; 1F03 03B9; Case map*/ + '\u1F84', /*1F84; 1F04 03B9; Case map*/ + '\u1F85', /*1F85; 1F05 03B9; Case map*/ + '\u1F86', /*1F86; 1F06 03B9; Case map*/ + '\u1F87', /*1F87; 1F07 03B9; Case map*/ + '\u1F88', /*1F88; 1F00 03B9; Case map*/ + '\u1F89', /*1F89; 1F01 03B9; Case map*/ + '\u1F8A', /*1F8A; 1F02 03B9; Case map*/ + '\u1F8B', /*1F8B; 1F03 03B9; Case map*/ + '\u1F8C', /*1F8C; 1F04 03B9; Case map*/ + '\u1F8D', /*1F8D; 1F05 03B9; Case map*/ + '\u1F8E', /*1F8E; 1F06 03B9; Case map*/ + '\u1F8F', /*1F8F; 1F07 03B9; Case map*/ + '\u1F90', /*1F90; 1F20 03B9; Case map*/ + '\u1F91', /*1F91; 1F21 03B9; Case map*/ + '\u1F92', /*1F92; 1F22 03B9; Case map*/ + '\u1F93', /*1F93; 1F23 03B9; Case map*/ + '\u1F94', /*1F94; 1F24 03B9; Case map*/ + '\u1F95', /*1F95; 1F25 03B9; Case map*/ + '\u1F96', /*1F96; 1F26 03B9; Case map*/ + '\u1F97', /*1F97; 1F27 03B9; Case map*/ + '\u1F98', /*1F98; 1F20 03B9; Case map*/ + '\u1F99', /*1F99; 1F21 03B9; Case map*/ + '\u1F9A', /*1F9A; 1F22 03B9; Case map*/ + '\u1F9B', /*1F9B; 1F23 03B9; Case map*/ + '\u1F9C', /*1F9C; 1F24 03B9; Case map*/ + '\u1F9D', /*1F9D; 1F25 03B9; Case map*/ + '\u1F9E', /*1F9E; 1F26 03B9; Case map*/ + '\u1F9F', /*1F9F; 1F27 03B9; Case map*/ + '\u1FA0', /*1FA0; 1F60 03B9; Case map*/ + '\u1FA1', /*1FA1; 1F61 03B9; Case map*/ + '\u1FA2', /*1FA2; 1F62 03B9; Case map*/ + '\u1FA3', /*1FA3; 1F63 03B9; Case map*/ + '\u1FA4', /*1FA4; 1F64 03B9; Case map*/ + '\u1FA5', /*1FA5; 1F65 03B9; Case map*/ + '\u1FA6', /*1FA6; 1F66 03B9; Case map*/ + '\u1FA7', /*1FA7; 1F67 03B9; Case map*/ + '\u1FA8', /*1FA8; 1F60 03B9; Case map*/ + '\u1FA9', /*1FA9; 1F61 03B9; Case map*/ + '\u1FAA', /*1FAA; 1F62 03B9; Case map*/ + '\u1FAB', /*1FAB; 1F63 03B9; Case map*/ + '\u1FAC', /*1FAC; 1F64 03B9; Case map*/ + '\u1FAD', /*1FAD; 1F65 03B9; Case map*/ + '\u1FAE', /*1FAE; 1F66 03B9; Case map*/ + '\u1FAF', /*1FAF; 1F67 03B9; Case map*/ + '\u1FB2', /*1FB2; 1F70 03B9; Case map*/ + '\u1FB3', /*1FB3; 03B1 03B9; Case map*/ + '\u1FB4', /*1FB4; 03AC 03B9; Case map*/ + '\u1FB6', /*1FB6; 03B1 0342; Case map*/ + '\u1FB7', /*1FB7; 03B1 0342 03B9; Case map*/ + '\u1FB8', /*1FB8; 1FB0; Case map*/ + '\u1FB9', /*1FB9; 1FB1; Case map*/ + '\u1FBA', /*1FBA; 1F70; Case map*/ + '\u1FBB', /*1FBB; 1F71; Case map*/ + '\u1FBC', /*1FBC; 03B1 03B9; Case map*/ + '\u1FBE', /*1FBE; 03B9; Case map*/ + '\u1FC2', /*1FC2; 1F74 03B9; Case map*/ + '\u1FC3', /*1FC3; 03B7 03B9; Case map*/ + '\u1FC4', /*1FC4; 03AE 03B9; Case map*/ + '\u1FC6', /*1FC6; 03B7 0342; Case map*/ + '\u1FC7', /*1FC7; 03B7 0342 03B9; Case map*/ + '\u1FC8', /*1FC8; 1F72; Case map*/ + '\u1FC9', /*1FC9; 1F73; Case map*/ + '\u1FCA', /*1FCA; 1F74; Case map*/ + '\u1FCB', /*1FCB; 1F75; Case map*/ + '\u1FCC', /*1FCC; 03B7 03B9; Case map*/ + '\u1FD2', /*1FD2; 03B9 0308 0300; Case map*/ + '\u1FD3', /*1FD3; 03B9 0308 0301; Case map*/ + '\u1FD6', /*1FD6; 03B9 0342; Case map*/ + '\u1FD7', /*1FD7; 03B9 0308 0342; Case map*/ + '\u1FD8', /*1FD8; 1FD0; Case map*/ + '\u1FD9', /*1FD9; 1FD1; Case map*/ + '\u1FDA', /*1FDA; 1F76; Case map*/ + '\u1FDB', /*1FDB; 1F77; Case map*/ + '\u1FE2', /*1FE2; 03C5 0308 0300; Case map*/ + '\u1FE3', /*1FE3; 03C5 0308 0301; Case map*/ + '\u1FE4', /*1FE4; 03C1 0313; Case map*/ + '\u1FE6', /*1FE6; 03C5 0342; Case map*/ + '\u1FE7', /*1FE7; 03C5 0308 0342; Case map*/ + '\u1FE8', /*1FE8; 1FE0; Case map*/ + '\u1FE9', /*1FE9; 1FE1; Case map*/ + '\u1FEA', /*1FEA; 1F7A; Case map*/ + '\u1FEB', /*1FEB; 1F7B; Case map*/ + '\u1FEC', /*1FEC; 1FE5; Case map*/ + '\u1FF2', /*1FF2; 1F7C 03B9; Case map*/ + '\u1FF3', /*1FF3; 03C9 03B9; Case map*/ + '\u1FF4', /*1FF4; 03CE 03B9; Case map*/ + '\u1FF6', /*1FF6; 03C9 0342; Case map*/ + '\u1FF7', /*1FF7; 03C9 0342 03B9; Case map*/ + '\u1FF8', /*1FF8; 1F78; Case map*/ + '\u1FF9', /*1FF9; 1F79; Case map*/ + '\u1FFA', /*1FFA; 1F7C; Case map*/ + '\u1FFB', /*1FFB; 1F7D; Case map*/ + '\u1FFC', /*1FFC; 03C9 03B9; Case map*/ + '\u20A8', /*20A8; 0072 0073; Additional folding*/ + '\u2102', /*2102; 0063; Additional folding*/ + '\u2103', /*2103; 00B0 0063; Additional folding*/ + '\u2107', /*2107; 025B; Additional folding*/ + '\u2109', /*2109; 00B0 0066; Additional folding*/ + '\u210B', /*210B; 0068; Additional folding*/ + '\u210C', /*210C; 0068; Additional folding*/ + '\u210D', /*210D; 0068; Additional folding*/ + '\u2110', /*2110; 0069; Additional folding*/ + '\u2111', /*2111; 0069; Additional folding*/ + '\u2112', /*2112; 006C; Additional folding*/ + '\u2115', /*2115; 006E; Additional folding*/ + '\u2116', /*2116; 006E 006F; Additional folding*/ + '\u2119', /*2119; 0070; Additional folding*/ + '\u211A', /*211A; 0071; Additional folding*/ + '\u211B', /*211B; 0072; Additional folding*/ + '\u211C', /*211C; 0072; Additional folding*/ + '\u211D', /*211D; 0072; Additional folding*/ + '\u2120', /*2120; 0073 006D; Additional folding*/ + '\u2121', /*2121; 0074 0065 006C; Additional folding*/ + '\u2122', /*2122; 0074 006D; Additional folding*/ + '\u2124', /*2124; 007A; Additional folding*/ + '\u2126', /*2126; 03C9; Case map*/ + '\u2128', /*2128; 007A; Additional folding*/ + '\u212A', /*212A; 006B; Case map*/ + '\u212B', /*212B; 00E5; Case map*/ + '\u212C', /*212C; 0062; Additional folding*/ + '\u212D', /*212D; 0063; Additional folding*/ + '\u2130', /*2130; 0065; Additional folding*/ + '\u2131', /*2131; 0066; Additional folding*/ + '\u2133', /*2133; 006D; Additional folding*/ + '\u213E', /*213E; 03B3; Additional folding*/ + '\u213F', /*213F; 03C0; Additional folding*/ + '\u2145', /*2145; 0064; Additional folding*/ + '\u2160', /*2160; 2170; Case map*/ + '\u2161', /*2161; 2171; Case map*/ + '\u2162', /*2162; 2172; Case map*/ + '\u2163', /*2163; 2173; Case map*/ + '\u2164', /*2164; 2174; Case map*/ + '\u2165', /*2165; 2175; Case map*/ + '\u2166', /*2166; 2176; Case map*/ + '\u2167', /*2167; 2177; Case map*/ + '\u2168', /*2168; 2178; Case map*/ + '\u2169', /*2169; 2179; Case map*/ + '\u216A', /*216A; 217A; Case map*/ + '\u216B', /*216B; 217B; Case map*/ + '\u216C', /*216C; 217C; Case map*/ + '\u216D', /*216D; 217D; Case map*/ + '\u216E', /*216E; 217E; Case map*/ + '\u216F', /*216F; 217F; Case map*/ + '\u24B6', /*24B6; 24D0; Case map*/ + '\u24B7', /*24B7; 24D1; Case map*/ + '\u24B8', /*24B8; 24D2; Case map*/ + '\u24B9', /*24B9; 24D3; Case map*/ + '\u24BA', /*24BA; 24D4; Case map*/ + '\u24BB', /*24BB; 24D5; Case map*/ + '\u24BC', /*24BC; 24D6; Case map*/ + '\u24BD', /*24BD; 24D7; Case map*/ + '\u24BE', /*24BE; 24D8; Case map*/ + '\u24BF', /*24BF; 24D9; Case map*/ + '\u24C0', /*24C0; 24DA; Case map*/ + '\u24C1', /*24C1; 24DB; Case map*/ + '\u24C2', /*24C2; 24DC; Case map*/ + '\u24C3', /*24C3; 24DD; Case map*/ + '\u24C4', /*24C4; 24DE; Case map*/ + '\u24C5', /*24C5; 24DF; Case map*/ + '\u24C6', /*24C6; 24E0; Case map*/ + '\u24C7', /*24C7; 24E1; Case map*/ + '\u24C8', /*24C8; 24E2; Case map*/ + '\u24C9', /*24C9; 24E3; Case map*/ + '\u24CA', /*24CA; 24E4; Case map*/ + '\u24CB', /*24CB; 24E5; Case map*/ + '\u24CC', /*24CC; 24E6; Case map*/ + '\u24CD', /*24CD; 24E7; Case map*/ + '\u24CE', /*24CE; 24E8; Case map*/ + '\u24CF', /*24CF; 24E9; Case map*/ + '\u3371', /*3371; 0068 0070 0061; Additional folding*/ + '\u3373', /*3373; 0061 0075; Additional folding*/ + '\u3375', /*3375; 006F 0076; Additional folding*/ + '\u3380', /*3380; 0070 0061; Additional folding*/ + '\u3381', /*3381; 006E 0061; Additional folding*/ + '\u3382', /*3382; 03BC 0061; Additional folding*/ + '\u3383', /*3383; 006D 0061; Additional folding*/ + '\u3384', /*3384; 006B 0061; Additional folding*/ + '\u3385', /*3385; 006B 0062; Additional folding*/ + '\u3386', /*3386; 006D 0062; Additional folding*/ + '\u3387', /*3387; 0067 0062; Additional folding*/ + '\u338A', /*338A; 0070 0066; Additional folding*/ + '\u338B', /*338B; 006E 0066; Additional folding*/ + '\u338C', /*338C; 03BC 0066; Additional folding*/ + '\u3390', /*3390; 0068 007A; Additional folding*/ + '\u3391', /*3391; 006B 0068 007A; Additional folding*/ + '\u3392', /*3392; 006D 0068 007A; Additional folding*/ + '\u3393', /*3393; 0067 0068 007A; Additional folding*/ + '\u3394', /*3394; 0074 0068 007A; Additional folding*/ + '\u33A9', /*33A9; 0070 0061; Additional folding*/ + '\u33AA', /*33AA; 006B 0070 0061; Additional folding*/ + '\u33AB', /*33AB; 006D 0070 0061; Additional folding*/ + '\u33AC', /*33AC; 0067 0070 0061; Additional folding*/ + '\u33B4', /*33B4; 0070 0076; Additional folding*/ + '\u33B5', /*33B5; 006E 0076; Additional folding*/ + '\u33B6', /*33B6; 03BC 0076; Additional folding*/ + '\u33B7', /*33B7; 006D 0076; Additional folding*/ + '\u33B8', /*33B8; 006B 0076; Additional folding*/ + '\u33B9', /*33B9; 006D 0076; Additional folding*/ + '\u33BA', /*33BA; 0070 0077; Additional folding*/ + '\u33BB', /*33BB; 006E 0077; Additional folding*/ + '\u33BC', /*33BC; 03BC 0077; Additional folding*/ + '\u33BD', /*33BD; 006D 0077; Additional folding*/ + '\u33BE', /*33BE; 006B 0077; Additional folding*/ + '\u33BF', /*33BF; 006D 0077; Additional folding*/ + '\u33C0', /*33C0; 006B 03C9; Additional folding*/ + '\u33C1', /*33C1; 006D 03C9; Additional folding*/ + '\u33C3', /*33C3; 0062 0071; Additional folding*/ + '\u33C6', /*33C6; 0063 2215 006B 0067; Additional folding*/ + '\u33C7', /*33C7; 0063 006F 002E; Additional folding*/ + '\u33C8', /*33C8; 0064 0062; Additional folding*/ + '\u33C9', /*33C9; 0067 0079; Additional folding*/ + '\u33CB', /*33CB; 0068 0070; Additional folding*/ + '\u33CD', /*33CD; 006B 006B; Additional folding*/ + '\u33CE', /*33CE; 006B 006D; Additional folding*/ + '\u33D7', /*33D7; 0070 0068; Additional folding*/ + '\u33D9', /*33D9; 0070 0070 006D; Additional folding*/ + '\u33DA', /*33DA; 0070 0072; Additional folding*/ + '\u33DC', /*33DC; 0073 0076; Additional folding*/ + '\u33DD', /*33DD; 0077 0062; Additional folding*/ + '\uFB00', /*FB00; 0066 0066; Case map*/ + '\uFB01', /*FB01; 0066 0069; Case map*/ + '\uFB02', /*FB02; 0066 006C; Case map*/ + '\uFB03', /*FB03; 0066 0066 0069; Case map*/ + '\uFB04', /*FB04; 0066 0066 006C; Case map*/ + '\uFB05', /*FB05; 0073 0074; Case map*/ + '\uFB06', /*FB06; 0073 0074; Case map*/ + '\uFB13', /*FB13; 0574 0576; Case map*/ + '\uFB14', /*FB14; 0574 0565; Case map*/ + '\uFB15', /*FB15; 0574 056B; Case map*/ + '\uFB16', /*FB16; 057E 0576; Case map*/ + '\uFB17', /*FB17; 0574 056D; Case map*/ + '\uFF21', /*FF21; FF41; Case map*/ + '\uFF22', /*FF22; FF42; Case map*/ + '\uFF23', /*FF23; FF43; Case map*/ + '\uFF24', /*FF24; FF44; Case map*/ + '\uFF25', /*FF25; FF45; Case map*/ + '\uFF26', /*FF26; FF46; Case map*/ + '\uFF27', /*FF27; FF47; Case map*/ + '\uFF28', /*FF28; FF48; Case map*/ + '\uFF29', /*FF29; FF49; Case map*/ + '\uFF2A', /*FF2A; FF4A; Case map*/ + '\uFF2B', /*FF2B; FF4B; Case map*/ + '\uFF2C', /*FF2C; FF4C; Case map*/ + '\uFF2D', /*FF2D; FF4D; Case map*/ + '\uFF2E', /*FF2E; FF4E; Case map*/ + '\uFF2F', /*FF2F; FF4F; Case map*/ + '\uFF30', /*FF30; FF50; Case map*/ + '\uFF31', /*FF31; FF51; Case map*/ + '\uFF32', /*FF32; FF52; Case map*/ + '\uFF33', /*FF33; FF53; Case map*/ + '\uFF34', /*FF34; FF54; Case map*/ + '\uFF35', /*FF35; FF55; Case map*/ + '\uFF36', /*FF36; FF56; Case map*/ + '\uFF37', /*FF37; FF57; Case map*/ + '\uFF38', /*FF38; FF58; Case map*/ + '\uFF39', /*FF39; FF59; Case map*/ + '\uFF3A', /*FF3A; FF5A; Case map*/ + }; + + public static string[] B2replace = new string[] { + "\u0061", /*0041; 0061; Case map*/ + "\u0062", /*0042; 0062; Case map*/ + "\u0063", /*0043; 0063; Case map*/ + "\u0064", /*0044; 0064; Case map*/ + "\u0065", /*0045; 0065; Case map*/ + "\u0066", /*0046; 0066; Case map*/ + "\u0067", /*0047; 0067; Case map*/ + "\u0068", /*0048; 0068; Case map*/ + "\u0069", /*0049; 0069; Case map*/ + "\u006A", /*004A; 006A; Case map*/ + "\u006B", /*004B; 006B; Case map*/ + "\u006C", /*004C; 006C; Case map*/ + "\u006D", /*004D; 006D; Case map*/ + "\u006E", /*004E; 006E; Case map*/ + "\u006F", /*004F; 006F; Case map*/ + "\u0070", /*0050; 0070; Case map*/ + "\u0071", /*0051; 0071; Case map*/ + "\u0072", /*0052; 0072; Case map*/ + "\u0073", /*0053; 0073; Case map*/ + "\u0074", /*0054; 0074; Case map*/ + "\u0075", /*0055; 0075; Case map*/ + "\u0076", /*0056; 0076; Case map*/ + "\u0077", /*0057; 0077; Case map*/ + "\u0078", /*0058; 0078; Case map*/ + "\u0079", /*0059; 0079; Case map*/ + "\u007A", /*005A; 007A; Case map*/ + "\u03BC", /*00B5; 03BC; Case map*/ + "\u00E0", /*00C0; 00E0; Case map*/ + "\u00E1", /*00C1; 00E1; Case map*/ + "\u00E2", /*00C2; 00E2; Case map*/ + "\u00E3", /*00C3; 00E3; Case map*/ + "\u00E4", /*00C4; 00E4; Case map*/ + "\u00E5", /*00C5; 00E5; Case map*/ + "\u00E6", /*00C6; 00E6; Case map*/ + "\u00E7", /*00C7; 00E7; Case map*/ + "\u00E8", /*00C8; 00E8; Case map*/ + "\u00E9", /*00C9; 00E9; Case map*/ + "\u00EA", /*00CA; 00EA; Case map*/ + "\u00EB", /*00CB; 00EB; Case map*/ + "\u00EC", /*00CC; 00EC; Case map*/ + "\u00ED", /*00CD; 00ED; Case map*/ + "\u00EE", /*00CE; 00EE; Case map*/ + "\u00EF", /*00CF; 00EF; Case map*/ + "\u00F0", /*00D0; 00F0; Case map*/ + "\u00F1", /*00D1; 00F1; Case map*/ + "\u00F2", /*00D2; 00F2; Case map*/ + "\u00F3", /*00D3; 00F3; Case map*/ + "\u00F4", /*00D4; 00F4; Case map*/ + "\u00F5", /*00D5; 00F5; Case map*/ + "\u00F6", /*00D6; 00F6; Case map*/ + "\u00F8", /*00D8; 00F8; Case map*/ + "\u00F9", /*00D9; 00F9; Case map*/ + "\u00FA", /*00DA; 00FA; Case map*/ + "\u00FB", /*00DB; 00FB; Case map*/ + "\u00FC", /*00DC; 00FC; Case map*/ + "\u00FD", /*00DD; 00FD; Case map*/ + "\u00FE", /*00DE; 00FE; Case map*/ + "\u0073\u0073", /*00DF; 0073 0073; Case map*/ + "\u0101", /*0100; 0101; Case map*/ + "\u0103", /*0102; 0103; Case map*/ + "\u0105", /*0104; 0105; Case map*/ + "\u0107", /*0106; 0107; Case map*/ + "\u0109", /*0108; 0109; Case map*/ + "\u010B", /*010A; 010B; Case map*/ + "\u010D", /*010C; 010D; Case map*/ + "\u010F", /*010E; 010F; Case map*/ + "\u0111", /*0110; 0111; Case map*/ + "\u0113", /*0112; 0113; Case map*/ + "\u0115", /*0114; 0115; Case map*/ + "\u0117", /*0116; 0117; Case map*/ + "\u0119", /*0118; 0119; Case map*/ + "\u011B", /*011A; 011B; Case map*/ + "\u011D", /*011C; 011D; Case map*/ + "\u011F", /*011E; 011F; Case map*/ + "\u0121", /*0120; 0121; Case map*/ + "\u0123", /*0122; 0123; Case map*/ + "\u0125", /*0124; 0125; Case map*/ + "\u0127", /*0126; 0127; Case map*/ + "\u0129", /*0128; 0129; Case map*/ + "\u012B", /*012A; 012B; Case map*/ + "\u012D", /*012C; 012D; Case map*/ + "\u012F", /*012E; 012F; Case map*/ + "\u0069\u0307", /*0130; 0069 0307; Case map*/ + "\u0133", /*0132; 0133; Case map*/ + "\u0135", /*0134; 0135; Case map*/ + "\u0137", /*0136; 0137; Case map*/ + "\u013A", /*0139; 013A; Case map*/ + "\u013C", /*013B; 013C; Case map*/ + "\u013E", /*013D; 013E; Case map*/ + "\u0140", /*013F; 0140; Case map*/ + "\u0142", /*0141; 0142; Case map*/ + "\u0144", /*0143; 0144; Case map*/ + "\u0146", /*0145; 0146; Case map*/ + "\u0148", /*0147; 0148; Case map*/ + "\u02BC\u006E", /*0149; 02BC 006E; Case map*/ + "\u014B", /*014A; 014B; Case map*/ + "\u014D", /*014C; 014D; Case map*/ + "\u014F", /*014E; 014F; Case map*/ + "\u0151", /*0150; 0151; Case map*/ + "\u0153", /*0152; 0153; Case map*/ + "\u0155", /*0154; 0155; Case map*/ + "\u0157", /*0156; 0157; Case map*/ + "\u0159", /*0158; 0159; Case map*/ + "\u015B", /*015A; 015B; Case map*/ + "\u015D", /*015C; 015D; Case map*/ + "\u015F", /*015E; 015F; Case map*/ + "\u0161", /*0160; 0161; Case map*/ + "\u0163", /*0162; 0163; Case map*/ + "\u0165", /*0164; 0165; Case map*/ + "\u0167", /*0166; 0167; Case map*/ + "\u0169", /*0168; 0169; Case map*/ + "\u016B", /*016A; 016B; Case map*/ + "\u016D", /*016C; 016D; Case map*/ + "\u016F", /*016E; 016F; Case map*/ + "\u0171", /*0170; 0171; Case map*/ + "\u0173", /*0172; 0173; Case map*/ + "\u0175", /*0174; 0175; Case map*/ + "\u0177", /*0176; 0177; Case map*/ + "\u00FF", /*0178; 00FF; Case map*/ + "\u017A", /*0179; 017A; Case map*/ + "\u017C", /*017B; 017C; Case map*/ + "\u017E", /*017D; 017E; Case map*/ + "\u0073", /*017F; 0073; Case map*/ + "\u0253", /*0181; 0253; Case map*/ + "\u0183", /*0182; 0183; Case map*/ + "\u0185", /*0184; 0185; Case map*/ + "\u0254", /*0186; 0254; Case map*/ + "\u0188", /*0187; 0188; Case map*/ + "\u0256", /*0189; 0256; Case map*/ + "\u0257", /*018A; 0257; Case map*/ + "\u018C", /*018B; 018C; Case map*/ + "\u01DD", /*018E; 01DD; Case map*/ + "\u0259", /*018F; 0259; Case map*/ + "\u025B", /*0190; 025B; Case map*/ + "\u0192", /*0191; 0192; Case map*/ + "\u0260", /*0193; 0260; Case map*/ + "\u0263", /*0194; 0263; Case map*/ + "\u0269", /*0196; 0269; Case map*/ + "\u0268", /*0197; 0268; Case map*/ + "\u0199", /*0198; 0199; Case map*/ + "\u026F", /*019C; 026F; Case map*/ + "\u0272", /*019D; 0272; Case map*/ + "\u0275", /*019F; 0275; Case map*/ + "\u01A1", /*01A0; 01A1; Case map*/ + "\u01A3", /*01A2; 01A3; Case map*/ + "\u01A5", /*01A4; 01A5; Case map*/ + "\u0280", /*01A6; 0280; Case map*/ + "\u01A8", /*01A7; 01A8; Case map*/ + "\u0283", /*01A9; 0283; Case map*/ + "\u01AD", /*01AC; 01AD; Case map*/ + "\u0288", /*01AE; 0288; Case map*/ + "\u01B0", /*01AF; 01B0; Case map*/ + "\u028A", /*01B1; 028A; Case map*/ + "\u028B", /*01B2; 028B; Case map*/ + "\u01B4", /*01B3; 01B4; Case map*/ + "\u01B6", /*01B5; 01B6; Case map*/ + "\u0292", /*01B7; 0292; Case map*/ + "\u01B9", /*01B8; 01B9; Case map*/ + "\u01BD", /*01BC; 01BD; Case map*/ + "\u01C6", /*01C4; 01C6; Case map*/ + "\u01C6", /*01C5; 01C6; Case map*/ + "\u01C9", /*01C7; 01C9; Case map*/ + "\u01C9", /*01C8; 01C9; Case map*/ + "\u01CC", /*01CA; 01CC; Case map*/ + "\u01CC", /*01CB; 01CC; Case map*/ + "\u01CE", /*01CD; 01CE; Case map*/ + "\u01D0", /*01CF; 01D0; Case map*/ + "\u01D2", /*01D1; 01D2; Case map*/ + "\u01D4", /*01D3; 01D4; Case map*/ + "\u01D6", /*01D5; 01D6; Case map*/ + "\u01D8", /*01D7; 01D8; Case map*/ + "\u01DA", /*01D9; 01DA; Case map*/ + "\u01DC", /*01DB; 01DC; Case map*/ + "\u01DF", /*01DE; 01DF; Case map*/ + "\u01E1", /*01E0; 01E1; Case map*/ + "\u01E3", /*01E2; 01E3; Case map*/ + "\u01E5", /*01E4; 01E5; Case map*/ + "\u01E7", /*01E6; 01E7; Case map*/ + "\u01E9", /*01E8; 01E9; Case map*/ + "\u01EB", /*01EA; 01EB; Case map*/ + "\u01ED", /*01EC; 01ED; Case map*/ + "\u01EF", /*01EE; 01EF; Case map*/ + "\u006A\u030C", /*01F0; 006A 030C; Case map*/ + "\u01F3", /*01F1; 01F3; Case map*/ + "\u01F3", /*01F2; 01F3; Case map*/ + "\u01F5", /*01F4; 01F5; Case map*/ + "\u0195", /*01F6; 0195; Case map*/ + "\u01BF", /*01F7; 01BF; Case map*/ + "\u01F9", /*01F8; 01F9; Case map*/ + "\u01FB", /*01FA; 01FB; Case map*/ + "\u01FD", /*01FC; 01FD; Case map*/ + "\u01FF", /*01FE; 01FF; Case map*/ + "\u0201", /*0200; 0201; Case map*/ + "\u0203", /*0202; 0203; Case map*/ + "\u0205", /*0204; 0205; Case map*/ + "\u0207", /*0206; 0207; Case map*/ + "\u0209", /*0208; 0209; Case map*/ + "\u020B", /*020A; 020B; Case map*/ + "\u020D", /*020C; 020D; Case map*/ + "\u020F", /*020E; 020F; Case map*/ + "\u0211", /*0210; 0211; Case map*/ + "\u0213", /*0212; 0213; Case map*/ + "\u0215", /*0214; 0215; Case map*/ + "\u0217", /*0216; 0217; Case map*/ + "\u0219", /*0218; 0219; Case map*/ + "\u021B", /*021A; 021B; Case map*/ + "\u021D", /*021C; 021D; Case map*/ + "\u021F", /*021E; 021F; Case map*/ + "\u019E", /*0220; 019E; Case map*/ + "\u0223", /*0222; 0223; Case map*/ + "\u0225", /*0224; 0225; Case map*/ + "\u0227", /*0226; 0227; Case map*/ + "\u0229", /*0228; 0229; Case map*/ + "\u022B", /*022A; 022B; Case map*/ + "\u022D", /*022C; 022D; Case map*/ + "\u022F", /*022E; 022F; Case map*/ + "\u0231", /*0230; 0231; Case map*/ + "\u0233", /*0232; 0233; Case map*/ + "\u03B9", /*0345; 03B9; Case map*/ + "\u0020\u03B9", /*037A; 0020 03B9; Additional folding*/ + "\u03AC", /*0386; 03AC; Case map*/ + "\u03AD", /*0388; 03AD; Case map*/ + "\u03AE", /*0389; 03AE; Case map*/ + "\u03AF", /*038A; 03AF; Case map*/ + "\u03CC", /*038C; 03CC; Case map*/ + "\u03CD", /*038E; 03CD; Case map*/ + "\u03CE", /*038F; 03CE; Case map*/ + "\u03B9\u0308\u0301", /*0390; 03B9 0308 0301; Case map*/ + "\u03B1", /*0391; 03B1; Case map*/ + "\u03B2", /*0392; 03B2; Case map*/ + "\u03B3", /*0393; 03B3; Case map*/ + "\u03B4", /*0394; 03B4; Case map*/ + "\u03B5", /*0395; 03B5; Case map*/ + "\u03B6", /*0396; 03B6; Case map*/ + "\u03B7", /*0397; 03B7; Case map*/ + "\u03B8", /*0398; 03B8; Case map*/ + "\u03B9", /*0399; 03B9; Case map*/ + "\u03BA", /*039A; 03BA; Case map*/ + "\u03BB", /*039B; 03BB; Case map*/ + "\u03BC", /*039C; 03BC; Case map*/ + "\u03BD", /*039D; 03BD; Case map*/ + "\u03BE", /*039E; 03BE; Case map*/ + "\u03BF", /*039F; 03BF; Case map*/ + "\u03C0", /*03A0; 03C0; Case map*/ + "\u03C1", /*03A1; 03C1; Case map*/ + "\u03C3", /*03A3; 03C3; Case map*/ + "\u03C4", /*03A4; 03C4; Case map*/ + "\u03C5", /*03A5; 03C5; Case map*/ + "\u03C6", /*03A6; 03C6; Case map*/ + "\u03C7", /*03A7; 03C7; Case map*/ + "\u03C8", /*03A8; 03C8; Case map*/ + "\u03C9", /*03A9; 03C9; Case map*/ + "\u03CA", /*03AA; 03CA; Case map*/ + "\u03CB", /*03AB; 03CB; Case map*/ + "\u03C5\u0308\u0301", /*03B0; 03C5 0308 0301; Case map*/ + "\u03C3", /*03C2; 03C3; Case map*/ + "\u03B2", /*03D0; 03B2; Case map*/ + "\u03B8", /*03D1; 03B8; Case map*/ + "\u03C5", /*03D2; 03C5; Additional folding*/ + "\u03CD", /*03D3; 03CD; Additional folding*/ + "\u03CB", /*03D4; 03CB; Additional folding*/ + "\u03C6", /*03D5; 03C6; Case map*/ + "\u03C0", /*03D6; 03C0; Case map*/ + "\u03D9", /*03D8; 03D9; Case map*/ + "\u03DB", /*03DA; 03DB; Case map*/ + "\u03DD", /*03DC; 03DD; Case map*/ + "\u03DF", /*03DE; 03DF; Case map*/ + "\u03E1", /*03E0; 03E1; Case map*/ + "\u03E3", /*03E2; 03E3; Case map*/ + "\u03E5", /*03E4; 03E5; Case map*/ + "\u03E7", /*03E6; 03E7; Case map*/ + "\u03E9", /*03E8; 03E9; Case map*/ + "\u03EB", /*03EA; 03EB; Case map*/ + "\u03ED", /*03EC; 03ED; Case map*/ + "\u03EF", /*03EE; 03EF; Case map*/ + "\u03BA", /*03F0; 03BA; Case map*/ + "\u03C1", /*03F1; 03C1; Case map*/ + "\u03C3", /*03F2; 03C3; Case map*/ + "\u03B8", /*03F4; 03B8; Case map*/ + "\u03B5", /*03F5; 03B5; Case map*/ + "\u0450", /*0400; 0450; Case map*/ + "\u0451", /*0401; 0451; Case map*/ + "\u0452", /*0402; 0452; Case map*/ + "\u0453", /*0403; 0453; Case map*/ + "\u0454", /*0404; 0454; Case map*/ + "\u0455", /*0405; 0455; Case map*/ + "\u0456", /*0406; 0456; Case map*/ + "\u0457", /*0407; 0457; Case map*/ + "\u0458", /*0408; 0458; Case map*/ + "\u0459", /*0409; 0459; Case map*/ + "\u045A", /*040A; 045A; Case map*/ + "\u045B", /*040B; 045B; Case map*/ + "\u045C", /*040C; 045C; Case map*/ + "\u045D", /*040D; 045D; Case map*/ + "\u045E", /*040E; 045E; Case map*/ + "\u045F", /*040F; 045F; Case map*/ + "\u0430", /*0410; 0430; Case map*/ + "\u0431", /*0411; 0431; Case map*/ + "\u0432", /*0412; 0432; Case map*/ + "\u0433", /*0413; 0433; Case map*/ + "\u0434", /*0414; 0434; Case map*/ + "\u0435", /*0415; 0435; Case map*/ + "\u0436", /*0416; 0436; Case map*/ + "\u0437", /*0417; 0437; Case map*/ + "\u0438", /*0418; 0438; Case map*/ + "\u0439", /*0419; 0439; Case map*/ + "\u043A", /*041A; 043A; Case map*/ + "\u043B", /*041B; 043B; Case map*/ + "\u043C", /*041C; 043C; Case map*/ + "\u043D", /*041D; 043D; Case map*/ + "\u043E", /*041E; 043E; Case map*/ + "\u043F", /*041F; 043F; Case map*/ + "\u0440", /*0420; 0440; Case map*/ + "\u0441", /*0421; 0441; Case map*/ + "\u0442", /*0422; 0442; Case map*/ + "\u0443", /*0423; 0443; Case map*/ + "\u0444", /*0424; 0444; Case map*/ + "\u0445", /*0425; 0445; Case map*/ + "\u0446", /*0426; 0446; Case map*/ + "\u0447", /*0427; 0447; Case map*/ + "\u0448", /*0428; 0448; Case map*/ + "\u0449", /*0429; 0449; Case map*/ + "\u044A", /*042A; 044A; Case map*/ + "\u044B", /*042B; 044B; Case map*/ + "\u044C", /*042C; 044C; Case map*/ + "\u044D", /*042D; 044D; Case map*/ + "\u044E", /*042E; 044E; Case map*/ + "\u044F", /*042F; 044F; Case map*/ + "\u0461", /*0460; 0461; Case map*/ + "\u0463", /*0462; 0463; Case map*/ + "\u0465", /*0464; 0465; Case map*/ + "\u0467", /*0466; 0467; Case map*/ + "\u0469", /*0468; 0469; Case map*/ + "\u046B", /*046A; 046B; Case map*/ + "\u046D", /*046C; 046D; Case map*/ + "\u046F", /*046E; 046F; Case map*/ + "\u0471", /*0470; 0471; Case map*/ + "\u0473", /*0472; 0473; Case map*/ + "\u0475", /*0474; 0475; Case map*/ + "\u0477", /*0476; 0477; Case map*/ + "\u0479", /*0478; 0479; Case map*/ + "\u047B", /*047A; 047B; Case map*/ + "\u047D", /*047C; 047D; Case map*/ + "\u047F", /*047E; 047F; Case map*/ + "\u0481", /*0480; 0481; Case map*/ + "\u048B", /*048A; 048B; Case map*/ + "\u048D", /*048C; 048D; Case map*/ + "\u048F", /*048E; 048F; Case map*/ + "\u0491", /*0490; 0491; Case map*/ + "\u0493", /*0492; 0493; Case map*/ + "\u0495", /*0494; 0495; Case map*/ + "\u0497", /*0496; 0497; Case map*/ + "\u0499", /*0498; 0499; Case map*/ + "\u049B", /*049A; 049B; Case map*/ + "\u049D", /*049C; 049D; Case map*/ + "\u049F", /*049E; 049F; Case map*/ + "\u04A1", /*04A0; 04A1; Case map*/ + "\u04A3", /*04A2; 04A3; Case map*/ + "\u04A5", /*04A4; 04A5; Case map*/ + "\u04A7", /*04A6; 04A7; Case map*/ + "\u04A9", /*04A8; 04A9; Case map*/ + "\u04AB", /*04AA; 04AB; Case map*/ + "\u04AD", /*04AC; 04AD; Case map*/ + "\u04AF", /*04AE; 04AF; Case map*/ + "\u04B1", /*04B0; 04B1; Case map*/ + "\u04B3", /*04B2; 04B3; Case map*/ + "\u04B5", /*04B4; 04B5; Case map*/ + "\u04B7", /*04B6; 04B7; Case map*/ + "\u04B9", /*04B8; 04B9; Case map*/ + "\u04BB", /*04BA; 04BB; Case map*/ + "\u04BD", /*04BC; 04BD; Case map*/ + "\u04BF", /*04BE; 04BF; Case map*/ + "\u04C2", /*04C1; 04C2; Case map*/ + "\u04C4", /*04C3; 04C4; Case map*/ + "\u04C6", /*04C5; 04C6; Case map*/ + "\u04C8", /*04C7; 04C8; Case map*/ + "\u04CA", /*04C9; 04CA; Case map*/ + "\u04CC", /*04CB; 04CC; Case map*/ + "\u04CE", /*04CD; 04CE; Case map*/ + "\u04D1", /*04D0; 04D1; Case map*/ + "\u04D3", /*04D2; 04D3; Case map*/ + "\u04D5", /*04D4; 04D5; Case map*/ + "\u04D7", /*04D6; 04D7; Case map*/ + "\u04D9", /*04D8; 04D9; Case map*/ + "\u04DB", /*04DA; 04DB; Case map*/ + "\u04DD", /*04DC; 04DD; Case map*/ + "\u04DF", /*04DE; 04DF; Case map*/ + "\u04E1", /*04E0; 04E1; Case map*/ + "\u04E3", /*04E2; 04E3; Case map*/ + "\u04E5", /*04E4; 04E5; Case map*/ + "\u04E7", /*04E6; 04E7; Case map*/ + "\u04E9", /*04E8; 04E9; Case map*/ + "\u04EB", /*04EA; 04EB; Case map*/ + "\u04ED", /*04EC; 04ED; Case map*/ + "\u04EF", /*04EE; 04EF; Case map*/ + "\u04F1", /*04F0; 04F1; Case map*/ + "\u04F3", /*04F2; 04F3; Case map*/ + "\u04F5", /*04F4; 04F5; Case map*/ + "\u04F9", /*04F8; 04F9; Case map*/ + "\u0501", /*0500; 0501; Case map*/ + "\u0503", /*0502; 0503; Case map*/ + "\u0505", /*0504; 0505; Case map*/ + "\u0507", /*0506; 0507; Case map*/ + "\u0509", /*0508; 0509; Case map*/ + "\u050B", /*050A; 050B; Case map*/ + "\u050D", /*050C; 050D; Case map*/ + "\u050F", /*050E; 050F; Case map*/ + "\u0561", /*0531; 0561; Case map*/ + "\u0562", /*0532; 0562; Case map*/ + "\u0563", /*0533; 0563; Case map*/ + "\u0564", /*0534; 0564; Case map*/ + "\u0565", /*0535; 0565; Case map*/ + "\u0566", /*0536; 0566; Case map*/ + "\u0567", /*0537; 0567; Case map*/ + "\u0568", /*0538; 0568; Case map*/ + "\u0569", /*0539; 0569; Case map*/ + "\u056A", /*053A; 056A; Case map*/ + "\u056B", /*053B; 056B; Case map*/ + "\u056C", /*053C; 056C; Case map*/ + "\u056D", /*053D; 056D; Case map*/ + "\u056E", /*053E; 056E; Case map*/ + "\u056F", /*053F; 056F; Case map*/ + "\u0570", /*0540; 0570; Case map*/ + "\u0571", /*0541; 0571; Case map*/ + "\u0572", /*0542; 0572; Case map*/ + "\u0573", /*0543; 0573; Case map*/ + "\u0574", /*0544; 0574; Case map*/ + "\u0575", /*0545; 0575; Case map*/ + "\u0576", /*0546; 0576; Case map*/ + "\u0577", /*0547; 0577; Case map*/ + "\u0578", /*0548; 0578; Case map*/ + "\u0579", /*0549; 0579; Case map*/ + "\u057A", /*054A; 057A; Case map*/ + "\u057B", /*054B; 057B; Case map*/ + "\u057C", /*054C; 057C; Case map*/ + "\u057D", /*054D; 057D; Case map*/ + "\u057E", /*054E; 057E; Case map*/ + "\u057F", /*054F; 057F; Case map*/ + "\u0580", /*0550; 0580; Case map*/ + "\u0581", /*0551; 0581; Case map*/ + "\u0582", /*0552; 0582; Case map*/ + "\u0583", /*0553; 0583; Case map*/ + "\u0584", /*0554; 0584; Case map*/ + "\u0585", /*0555; 0585; Case map*/ + "\u0586", /*0556; 0586; Case map*/ + "\u0565\u0582", /*0587; 0565 0582; Case map*/ + "\u1E01", /*1E00; 1E01; Case map*/ + "\u1E03", /*1E02; 1E03; Case map*/ + "\u1E05", /*1E04; 1E05; Case map*/ + "\u1E07", /*1E06; 1E07; Case map*/ + "\u1E09", /*1E08; 1E09; Case map*/ + "\u1E0B", /*1E0A; 1E0B; Case map*/ + "\u1E0D", /*1E0C; 1E0D; Case map*/ + "\u1E0F", /*1E0E; 1E0F; Case map*/ + "\u1E11", /*1E10; 1E11; Case map*/ + "\u1E13", /*1E12; 1E13; Case map*/ + "\u1E15", /*1E14; 1E15; Case map*/ + "\u1E17", /*1E16; 1E17; Case map*/ + "\u1E19", /*1E18; 1E19; Case map*/ + "\u1E1B", /*1E1A; 1E1B; Case map*/ + "\u1E1D", /*1E1C; 1E1D; Case map*/ + "\u1E1F", /*1E1E; 1E1F; Case map*/ + "\u1E21", /*1E20; 1E21; Case map*/ + "\u1E23", /*1E22; 1E23; Case map*/ + "\u1E25", /*1E24; 1E25; Case map*/ + "\u1E27", /*1E26; 1E27; Case map*/ + "\u1E29", /*1E28; 1E29; Case map*/ + "\u1E2B", /*1E2A; 1E2B; Case map*/ + "\u1E2D", /*1E2C; 1E2D; Case map*/ + "\u1E2F", /*1E2E; 1E2F; Case map*/ + "\u1E31", /*1E30; 1E31; Case map*/ + "\u1E33", /*1E32; 1E33; Case map*/ + "\u1E35", /*1E34; 1E35; Case map*/ + "\u1E37", /*1E36; 1E37; Case map*/ + "\u1E39", /*1E38; 1E39; Case map*/ + "\u1E3B", /*1E3A; 1E3B; Case map*/ + "\u1E3D", /*1E3C; 1E3D; Case map*/ + "\u1E3F", /*1E3E; 1E3F; Case map*/ + "\u1E41", /*1E40; 1E41; Case map*/ + "\u1E43", /*1E42; 1E43; Case map*/ + "\u1E45", /*1E44; 1E45; Case map*/ + "\u1E47", /*1E46; 1E47; Case map*/ + "\u1E49", /*1E48; 1E49; Case map*/ + "\u1E4B", /*1E4A; 1E4B; Case map*/ + "\u1E4D", /*1E4C; 1E4D; Case map*/ + "\u1E4F", /*1E4E; 1E4F; Case map*/ + "\u1E51", /*1E50; 1E51; Case map*/ + "\u1E53", /*1E52; 1E53; Case map*/ + "\u1E55", /*1E54; 1E55; Case map*/ + "\u1E57", /*1E56; 1E57; Case map*/ + "\u1E59", /*1E58; 1E59; Case map*/ + "\u1E5B", /*1E5A; 1E5B; Case map*/ + "\u1E5D", /*1E5C; 1E5D; Case map*/ + "\u1E5F", /*1E5E; 1E5F; Case map*/ + "\u1E61", /*1E60; 1E61; Case map*/ + "\u1E63", /*1E62; 1E63; Case map*/ + "\u1E65", /*1E64; 1E65; Case map*/ + "\u1E67", /*1E66; 1E67; Case map*/ + "\u1E69", /*1E68; 1E69; Case map*/ + "\u1E6B", /*1E6A; 1E6B; Case map*/ + "\u1E6D", /*1E6C; 1E6D; Case map*/ + "\u1E6F", /*1E6E; 1E6F; Case map*/ + "\u1E71", /*1E70; 1E71; Case map*/ + "\u1E73", /*1E72; 1E73; Case map*/ + "\u1E75", /*1E74; 1E75; Case map*/ + "\u1E77", /*1E76; 1E77; Case map*/ + "\u1E79", /*1E78; 1E79; Case map*/ + "\u1E7B", /*1E7A; 1E7B; Case map*/ + "\u1E7D", /*1E7C; 1E7D; Case map*/ + "\u1E7F", /*1E7E; 1E7F; Case map*/ + "\u1E81", /*1E80; 1E81; Case map*/ + "\u1E83", /*1E82; 1E83; Case map*/ + "\u1E85", /*1E84; 1E85; Case map*/ + "\u1E87", /*1E86; 1E87; Case map*/ + "\u1E89", /*1E88; 1E89; Case map*/ + "\u1E8B", /*1E8A; 1E8B; Case map*/ + "\u1E8D", /*1E8C; 1E8D; Case map*/ + "\u1E8F", /*1E8E; 1E8F; Case map*/ + "\u1E91", /*1E90; 1E91; Case map*/ + "\u1E93", /*1E92; 1E93; Case map*/ + "\u1E95", /*1E94; 1E95; Case map*/ + "\u0068\u0331", /*1E96; 0068 0331; Case map*/ + "\u0074\u0308", /*1E97; 0074 0308; Case map*/ + "\u0077\u030A", /*1E98; 0077 030A; Case map*/ + "\u0079\u030A", /*1E99; 0079 030A; Case map*/ + "\u0061\u02BE", /*1E9A; 0061 02BE; Case map*/ + "\u1E61", /*1E9B; 1E61; Case map*/ + "\u1EA1", /*1EA0; 1EA1; Case map*/ + "\u1EA3", /*1EA2; 1EA3; Case map*/ + "\u1EA5", /*1EA4; 1EA5; Case map*/ + "\u1EA7", /*1EA6; 1EA7; Case map*/ + "\u1EA9", /*1EA8; 1EA9; Case map*/ + "\u1EAB", /*1EAA; 1EAB; Case map*/ + "\u1EAD", /*1EAC; 1EAD; Case map*/ + "\u1EAF", /*1EAE; 1EAF; Case map*/ + "\u1EB1", /*1EB0; 1EB1; Case map*/ + "\u1EB3", /*1EB2; 1EB3; Case map*/ + "\u1EB5", /*1EB4; 1EB5; Case map*/ + "\u1EB7", /*1EB6; 1EB7; Case map*/ + "\u1EB9", /*1EB8; 1EB9; Case map*/ + "\u1EBB", /*1EBA; 1EBB; Case map*/ + "\u1EBD", /*1EBC; 1EBD; Case map*/ + "\u1EBF", /*1EBE; 1EBF; Case map*/ + "\u1EC1", /*1EC0; 1EC1; Case map*/ + "\u1EC3", /*1EC2; 1EC3; Case map*/ + "\u1EC5", /*1EC4; 1EC5; Case map*/ + "\u1EC7", /*1EC6; 1EC7; Case map*/ + "\u1EC9", /*1EC8; 1EC9; Case map*/ + "\u1ECB", /*1ECA; 1ECB; Case map*/ + "\u1ECD", /*1ECC; 1ECD; Case map*/ + "\u1ECF", /*1ECE; 1ECF; Case map*/ + "\u1ED1", /*1ED0; 1ED1; Case map*/ + "\u1ED3", /*1ED2; 1ED3; Case map*/ + "\u1ED5", /*1ED4; 1ED5; Case map*/ + "\u1ED7", /*1ED6; 1ED7; Case map*/ + "\u1ED9", /*1ED8; 1ED9; Case map*/ + "\u1EDB", /*1EDA; 1EDB; Case map*/ + "\u1EDD", /*1EDC; 1EDD; Case map*/ + "\u1EDF", /*1EDE; 1EDF; Case map*/ + "\u1EE1", /*1EE0; 1EE1; Case map*/ + "\u1EE3", /*1EE2; 1EE3; Case map*/ + "\u1EE5", /*1EE4; 1EE5; Case map*/ + "\u1EE7", /*1EE6; 1EE7; Case map*/ + "\u1EE9", /*1EE8; 1EE9; Case map*/ + "\u1EEB", /*1EEA; 1EEB; Case map*/ + "\u1EED", /*1EEC; 1EED; Case map*/ + "\u1EEF", /*1EEE; 1EEF; Case map*/ + "\u1EF1", /*1EF0; 1EF1; Case map*/ + "\u1EF3", /*1EF2; 1EF3; Case map*/ + "\u1EF5", /*1EF4; 1EF5; Case map*/ + "\u1EF7", /*1EF6; 1EF7; Case map*/ + "\u1EF9", /*1EF8; 1EF9; Case map*/ + "\u1F00", /*1F08; 1F00; Case map*/ + "\u1F01", /*1F09; 1F01; Case map*/ + "\u1F02", /*1F0A; 1F02; Case map*/ + "\u1F03", /*1F0B; 1F03; Case map*/ + "\u1F04", /*1F0C; 1F04; Case map*/ + "\u1F05", /*1F0D; 1F05; Case map*/ + "\u1F06", /*1F0E; 1F06; Case map*/ + "\u1F07", /*1F0F; 1F07; Case map*/ + "\u1F10", /*1F18; 1F10; Case map*/ + "\u1F11", /*1F19; 1F11; Case map*/ + "\u1F12", /*1F1A; 1F12; Case map*/ + "\u1F13", /*1F1B; 1F13; Case map*/ + "\u1F14", /*1F1C; 1F14; Case map*/ + "\u1F15", /*1F1D; 1F15; Case map*/ + "\u1F20", /*1F28; 1F20; Case map*/ + "\u1F21", /*1F29; 1F21; Case map*/ + "\u1F22", /*1F2A; 1F22; Case map*/ + "\u1F23", /*1F2B; 1F23; Case map*/ + "\u1F24", /*1F2C; 1F24; Case map*/ + "\u1F25", /*1F2D; 1F25; Case map*/ + "\u1F26", /*1F2E; 1F26; Case map*/ + "\u1F27", /*1F2F; 1F27; Case map*/ + "\u1F30", /*1F38; 1F30; Case map*/ + "\u1F31", /*1F39; 1F31; Case map*/ + "\u1F32", /*1F3A; 1F32; Case map*/ + "\u1F33", /*1F3B; 1F33; Case map*/ + "\u1F34", /*1F3C; 1F34; Case map*/ + "\u1F35", /*1F3D; 1F35; Case map*/ + "\u1F36", /*1F3E; 1F36; Case map*/ + "\u1F37", /*1F3F; 1F37; Case map*/ + "\u1F40", /*1F48; 1F40; Case map*/ + "\u1F41", /*1F49; 1F41; Case map*/ + "\u1F42", /*1F4A; 1F42; Case map*/ + "\u1F43", /*1F4B; 1F43; Case map*/ + "\u1F44", /*1F4C; 1F44; Case map*/ + "\u1F45", /*1F4D; 1F45; Case map*/ + "\u03C5\u0313", /*1F50; 03C5 0313; Case map*/ + "\u03C5\u0313\u0300", /*1F52; 03C5 0313 0300; Case map*/ + "\u03C5\u0313\u0301", /*1F54; 03C5 0313 0301; Case map*/ + "\u03C5\u0313\u0342", /*1F56; 03C5 0313 0342; Case map*/ + "\u1F51", /*1F59; 1F51; Case map*/ + "\u1F53", /*1F5B; 1F53; Case map*/ + "\u1F55", /*1F5D; 1F55; Case map*/ + "\u1F57", /*1F5F; 1F57; Case map*/ + "\u1F60", /*1F68; 1F60; Case map*/ + "\u1F61", /*1F69; 1F61; Case map*/ + "\u1F62", /*1F6A; 1F62; Case map*/ + "\u1F63", /*1F6B; 1F63; Case map*/ + "\u1F64", /*1F6C; 1F64; Case map*/ + "\u1F65", /*1F6D; 1F65; Case map*/ + "\u1F66", /*1F6E; 1F66; Case map*/ + "\u1F67", /*1F6F; 1F67; Case map*/ + "\u1F00\u03B9", /*1F80; 1F00 03B9; Case map*/ + "\u1F01\u03B9", /*1F81; 1F01 03B9; Case map*/ + "\u1F02\u03B9", /*1F82; 1F02 03B9; Case map*/ + "\u1F03\u03B9", /*1F83; 1F03 03B9; Case map*/ + "\u1F04\u03B9", /*1F84; 1F04 03B9; Case map*/ + "\u1F05\u03B9", /*1F85; 1F05 03B9; Case map*/ + "\u1F06\u03B9", /*1F86; 1F06 03B9; Case map*/ + "\u1F07\u03B9", /*1F87; 1F07 03B9; Case map*/ + "\u1F00\u03B9", /*1F88; 1F00 03B9; Case map*/ + "\u1F01\u03B9", /*1F89; 1F01 03B9; Case map*/ + "\u1F02\u03B9", /*1F8A; 1F02 03B9; Case map*/ + "\u1F03\u03B9", /*1F8B; 1F03 03B9; Case map*/ + "\u1F04\u03B9", /*1F8C; 1F04 03B9; Case map*/ + "\u1F05\u03B9", /*1F8D; 1F05 03B9; Case map*/ + "\u1F06\u03B9", /*1F8E; 1F06 03B9; Case map*/ + "\u1F07\u03B9", /*1F8F; 1F07 03B9; Case map*/ + "\u1F20\u03B9", /*1F90; 1F20 03B9; Case map*/ + "\u1F21\u03B9", /*1F91; 1F21 03B9; Case map*/ + "\u1F22\u03B9", /*1F92; 1F22 03B9; Case map*/ + "\u1F23\u03B9", /*1F93; 1F23 03B9; Case map*/ + "\u1F24\u03B9", /*1F94; 1F24 03B9; Case map*/ + "\u1F25\u03B9", /*1F95; 1F25 03B9; Case map*/ + "\u1F26\u03B9", /*1F96; 1F26 03B9; Case map*/ + "\u1F27\u03B9", /*1F97; 1F27 03B9; Case map*/ + "\u1F20\u03B9", /*1F98; 1F20 03B9; Case map*/ + "\u1F21\u03B9", /*1F99; 1F21 03B9; Case map*/ + "\u1F22\u03B9", /*1F9A; 1F22 03B9; Case map*/ + "\u1F23\u03B9", /*1F9B; 1F23 03B9; Case map*/ + "\u1F24\u03B9", /*1F9C; 1F24 03B9; Case map*/ + "\u1F25\u03B9", /*1F9D; 1F25 03B9; Case map*/ + "\u1F26\u03B9", /*1F9E; 1F26 03B9; Case map*/ + "\u1F27\u03B9", /*1F9F; 1F27 03B9; Case map*/ + "\u1F60\u03B9", /*1FA0; 1F60 03B9; Case map*/ + "\u1F61\u03B9", /*1FA1; 1F61 03B9; Case map*/ + "\u1F62\u03B9", /*1FA2; 1F62 03B9; Case map*/ + "\u1F63\u03B9", /*1FA3; 1F63 03B9; Case map*/ + "\u1F64\u03B9", /*1FA4; 1F64 03B9; Case map*/ + "\u1F65\u03B9", /*1FA5; 1F65 03B9; Case map*/ + "\u1F66\u03B9", /*1FA6; 1F66 03B9; Case map*/ + "\u1F67\u03B9", /*1FA7; 1F67 03B9; Case map*/ + "\u1F60\u03B9", /*1FA8; 1F60 03B9; Case map*/ + "\u1F61\u03B9", /*1FA9; 1F61 03B9; Case map*/ + "\u1F62\u03B9", /*1FAA; 1F62 03B9; Case map*/ + "\u1F63\u03B9", /*1FAB; 1F63 03B9; Case map*/ + "\u1F64\u03B9", /*1FAC; 1F64 03B9; Case map*/ + "\u1F65\u03B9", /*1FAD; 1F65 03B9; Case map*/ + "\u1F66\u03B9", /*1FAE; 1F66 03B9; Case map*/ + "\u1F67\u03B9", /*1FAF; 1F67 03B9; Case map*/ + "\u1F70\u03B9", /*1FB2; 1F70 03B9; Case map*/ + "\u03B1\u03B9", /*1FB3; 03B1 03B9; Case map*/ + "\u03AC\u03B9", /*1FB4; 03AC 03B9; Case map*/ + "\u03B1\u0342", /*1FB6; 03B1 0342; Case map*/ + "\u03B1\u0342\u03B9", /*1FB7; 03B1 0342 03B9; Case map*/ + "\u1FB0", /*1FB8; 1FB0; Case map*/ + "\u1FB1", /*1FB9; 1FB1; Case map*/ + "\u1F70", /*1FBA; 1F70; Case map*/ + "\u1F71", /*1FBB; 1F71; Case map*/ + "\u03B1\u03B9", /*1FBC; 03B1 03B9; Case map*/ + "\u03B9", /*1FBE; 03B9; Case map*/ + "\u1F74\u03B9", /*1FC2; 1F74 03B9; Case map*/ + "\u03B7\u03B9", /*1FC3; 03B7 03B9; Case map*/ + "\u03AE\u03B9", /*1FC4; 03AE 03B9; Case map*/ + "\u03B7\u0342", /*1FC6; 03B7 0342; Case map*/ + "\u03B7\u0342\u03B9", /*1FC7; 03B7 0342 03B9; Case map*/ + "\u1F72", /*1FC8; 1F72; Case map*/ + "\u1F73", /*1FC9; 1F73; Case map*/ + "\u1F74", /*1FCA; 1F74; Case map*/ + "\u1F75", /*1FCB; 1F75; Case map*/ + "\u03B7\u03B9", /*1FCC; 03B7 03B9; Case map*/ + "\u03B9\u0308\u0300", /*1FD2; 03B9 0308 0300; Case map*/ + "\u03B9\u0308\u0301", /*1FD3; 03B9 0308 0301; Case map*/ + "\u03B9\u0342", /*1FD6; 03B9 0342; Case map*/ + "\u03B9\u0308\u0342", /*1FD7; 03B9 0308 0342; Case map*/ + "\u1FD0", /*1FD8; 1FD0; Case map*/ + "\u1FD1", /*1FD9; 1FD1; Case map*/ + "\u1F76", /*1FDA; 1F76; Case map*/ + "\u1F77", /*1FDB; 1F77; Case map*/ + "\u03C5\u0308\u0300", /*1FE2; 03C5 0308 0300; Case map*/ + "\u03C5\u0308\u0301", /*1FE3; 03C5 0308 0301; Case map*/ + "\u03C1\u0313", /*1FE4; 03C1 0313; Case map*/ + "\u03C5\u0342", /*1FE6; 03C5 0342; Case map*/ + "\u03C5\u0308\u0342", /*1FE7; 03C5 0308 0342; Case map*/ + "\u1FE0", /*1FE8; 1FE0; Case map*/ + "\u1FE1", /*1FE9; 1FE1; Case map*/ + "\u1F7A", /*1FEA; 1F7A; Case map*/ + "\u1F7B", /*1FEB; 1F7B; Case map*/ + "\u1FE5", /*1FEC; 1FE5; Case map*/ + "\u1F7C\u03B9", /*1FF2; 1F7C 03B9; Case map*/ + "\u03C9\u03B9", /*1FF3; 03C9 03B9; Case map*/ + "\u03CE\u03B9", /*1FF4; 03CE 03B9; Case map*/ + "\u03C9\u0342", /*1FF6; 03C9 0342; Case map*/ + "\u03C9\u0342\u03B9", /*1FF7; 03C9 0342 03B9; Case map*/ + "\u1F78", /*1FF8; 1F78; Case map*/ + "\u1F79", /*1FF9; 1F79; Case map*/ + "\u1F7C", /*1FFA; 1F7C; Case map*/ + "\u1F7D", /*1FFB; 1F7D; Case map*/ + "\u03C9\u03B9", /*1FFC; 03C9 03B9; Case map*/ + "\u0072\u0073", /*20A8; 0072 0073; Additional folding*/ + "\u0063", /*2102; 0063; Additional folding*/ + "\u00B0\u0063", /*2103; 00B0 0063; Additional folding*/ + "\u025B", /*2107; 025B; Additional folding*/ + "\u00B0\u0066", /*2109; 00B0 0066; Additional folding*/ + "\u0068", /*210B; 0068; Additional folding*/ + "\u0068", /*210C; 0068; Additional folding*/ + "\u0068", /*210D; 0068; Additional folding*/ + "\u0069", /*2110; 0069; Additional folding*/ + "\u0069", /*2111; 0069; Additional folding*/ + "\u006C", /*2112; 006C; Additional folding*/ + "\u006E", /*2115; 006E; Additional folding*/ + "\u006E\u006F", /*2116; 006E 006F; Additional folding*/ + "\u0070", /*2119; 0070; Additional folding*/ + "\u0071", /*211A; 0071; Additional folding*/ + "\u0072", /*211B; 0072; Additional folding*/ + "\u0072", /*211C; 0072; Additional folding*/ + "\u0072", /*211D; 0072; Additional folding*/ + "\u0073\u006D", /*2120; 0073 006D; Additional folding*/ + "\u0074\u0065\u006C", /*2121; 0074 0065 006C; Additional folding*/ + "\u0074\u006D", /*2122; 0074 006D; Additional folding*/ + "\u007A", /*2124; 007A; Additional folding*/ + "\u03C9", /*2126; 03C9; Case map*/ + "\u007A", /*2128; 007A; Additional folding*/ + "\u006B", /*212A; 006B; Case map*/ + "\u00E5", /*212B; 00E5; Case map*/ + "\u0062", /*212C; 0062; Additional folding*/ + "\u0063", /*212D; 0063; Additional folding*/ + "\u0065", /*2130; 0065; Additional folding*/ + "\u0066", /*2131; 0066; Additional folding*/ + "\u006D", /*2133; 006D; Additional folding*/ + "\u03B3", /*213E; 03B3; Additional folding*/ + "\u03C0", /*213F; 03C0; Additional folding*/ + "\u0064", /*2145; 0064; Additional folding*/ + "\u2170", /*2160; 2170; Case map*/ + "\u2171", /*2161; 2171; Case map*/ + "\u2172", /*2162; 2172; Case map*/ + "\u2173", /*2163; 2173; Case map*/ + "\u2174", /*2164; 2174; Case map*/ + "\u2175", /*2165; 2175; Case map*/ + "\u2176", /*2166; 2176; Case map*/ + "\u2177", /*2167; 2177; Case map*/ + "\u2178", /*2168; 2178; Case map*/ + "\u2179", /*2169; 2179; Case map*/ + "\u217A", /*216A; 217A; Case map*/ + "\u217B", /*216B; 217B; Case map*/ + "\u217C", /*216C; 217C; Case map*/ + "\u217D", /*216D; 217D; Case map*/ + "\u217E", /*216E; 217E; Case map*/ + "\u217F", /*216F; 217F; Case map*/ + "\u24D0", /*24B6; 24D0; Case map*/ + "\u24D1", /*24B7; 24D1; Case map*/ + "\u24D2", /*24B8; 24D2; Case map*/ + "\u24D3", /*24B9; 24D3; Case map*/ + "\u24D4", /*24BA; 24D4; Case map*/ + "\u24D5", /*24BB; 24D5; Case map*/ + "\u24D6", /*24BC; 24D6; Case map*/ + "\u24D7", /*24BD; 24D7; Case map*/ + "\u24D8", /*24BE; 24D8; Case map*/ + "\u24D9", /*24BF; 24D9; Case map*/ + "\u24DA", /*24C0; 24DA; Case map*/ + "\u24DB", /*24C1; 24DB; Case map*/ + "\u24DC", /*24C2; 24DC; Case map*/ + "\u24DD", /*24C3; 24DD; Case map*/ + "\u24DE", /*24C4; 24DE; Case map*/ + "\u24DF", /*24C5; 24DF; Case map*/ + "\u24E0", /*24C6; 24E0; Case map*/ + "\u24E1", /*24C7; 24E1; Case map*/ + "\u24E2", /*24C8; 24E2; Case map*/ + "\u24E3", /*24C9; 24E3; Case map*/ + "\u24E4", /*24CA; 24E4; Case map*/ + "\u24E5", /*24CB; 24E5; Case map*/ + "\u24E6", /*24CC; 24E6; Case map*/ + "\u24E7", /*24CD; 24E7; Case map*/ + "\u24E8", /*24CE; 24E8; Case map*/ + "\u24E9", /*24CF; 24E9; Case map*/ + "\u0068\u0070\u0061", /*3371; 0068 0070 0061; Additional folding*/ + "\u0061\u0075", /*3373; 0061 0075; Additional folding*/ + "\u006F\u0076", /*3375; 006F 0076; Additional folding*/ + "\u0070\u0061", /*3380; 0070 0061; Additional folding*/ + "\u006E\u0061", /*3381; 006E 0061; Additional folding*/ + "\u03BC\u0061", /*3382; 03BC 0061; Additional folding*/ + "\u006D\u0061", /*3383; 006D 0061; Additional folding*/ + "\u006B\u0061", /*3384; 006B 0061; Additional folding*/ + "\u006B\u0062", /*3385; 006B 0062; Additional folding*/ + "\u006D\u0062", /*3386; 006D 0062; Additional folding*/ + "\u0067\u0062", /*3387; 0067 0062; Additional folding*/ + "\u0070\u0066", /*338A; 0070 0066; Additional folding*/ + "\u006E\u0066", /*338B; 006E 0066; Additional folding*/ + "\u03BC\u0066", /*338C; 03BC 0066; Additional folding*/ + "\u0068\u007A", /*3390; 0068 007A; Additional folding*/ + "\u006B\u0068\u007A", /*3391; 006B 0068 007A; Additional folding*/ + "\u006D\u0068\u007A", /*3392; 006D 0068 007A; Additional folding*/ + "\u0067\u0068\u007A", /*3393; 0067 0068 007A; Additional folding*/ + "\u0074\u0068\u007A", /*3394; 0074 0068 007A; Additional folding*/ + "\u0070\u0061", /*33A9; 0070 0061; Additional folding*/ + "\u006B\u0070\u0061", /*33AA; 006B 0070 0061; Additional folding*/ + "\u006D\u0070\u0061", /*33AB; 006D 0070 0061; Additional folding*/ + "\u0067\u0070\u0061", /*33AC; 0067 0070 0061; Additional folding*/ + "\u0070\u0076", /*33B4; 0070 0076; Additional folding*/ + "\u006E\u0076", /*33B5; 006E 0076; Additional folding*/ + "\u03BC\u0076", /*33B6; 03BC 0076; Additional folding*/ + "\u006D\u0076", /*33B7; 006D 0076; Additional folding*/ + "\u006B\u0076", /*33B8; 006B 0076; Additional folding*/ + "\u006D\u0076", /*33B9; 006D 0076; Additional folding*/ + "\u0070\u0077", /*33BA; 0070 0077; Additional folding*/ + "\u006E\u0077", /*33BB; 006E 0077; Additional folding*/ + "\u03BC\u0077", /*33BC; 03BC 0077; Additional folding*/ + "\u006D\u0077", /*33BD; 006D 0077; Additional folding*/ + "\u006B\u0077", /*33BE; 006B 0077; Additional folding*/ + "\u006D\u0077", /*33BF; 006D 0077; Additional folding*/ + "\u006B\u03C9", /*33C0; 006B 03C9; Additional folding*/ + "\u006D\u03C9", /*33C1; 006D 03C9; Additional folding*/ + "\u0062\u0071", /*33C3; 0062 0071; Additional folding*/ + "\u0063\u2215\u006B\u0067", /*33C6; 0063 2215 006B 0067; Additional folding*/ + "\u0063\u006F\u002E", /*33C7; 0063 006F 002E; Additional folding*/ + "\u0064\u0062", /*33C8; 0064 0062; Additional folding*/ + "\u0067\u0079", /*33C9; 0067 0079; Additional folding*/ + "\u0068\u0070", /*33CB; 0068 0070; Additional folding*/ + "\u006B\u006B", /*33CD; 006B 006B; Additional folding*/ + "\u006B\u006D", /*33CE; 006B 006D; Additional folding*/ + "\u0070\u0068", /*33D7; 0070 0068; Additional folding*/ + "\u0070\u0070\u006D", /*33D9; 0070 0070 006D; Additional folding*/ + "\u0070\u0072", /*33DA; 0070 0072; Additional folding*/ + "\u0073\u0076", /*33DC; 0073 0076; Additional folding*/ + "\u0077\u0062", /*33DD; 0077 0062; Additional folding*/ + "\u0066\u0066", /*FB00; 0066 0066; Case map*/ + "\u0066\u0069", /*FB01; 0066 0069; Case map*/ + "\u0066\u006C", /*FB02; 0066 006C; Case map*/ + "\u0066\u0066\u0069", /*FB03; 0066 0066 0069; Case map*/ + "\u0066\u0066\u006C", /*FB04; 0066 0066 006C; Case map*/ + "\u0073\u0074", /*FB05; 0073 0074; Case map*/ + "\u0073\u0074", /*FB06; 0073 0074; Case map*/ + "\u0574\u0576", /*FB13; 0574 0576; Case map*/ + "\u0574\u0565", /*FB14; 0574 0565; Case map*/ + "\u0574\u056B", /*FB15; 0574 056B; Case map*/ + "\u057E\u0576", /*FB16; 057E 0576; Case map*/ + "\u0574\u056D", /*FB17; 0574 056D; Case map*/ + "\uFF41", /*FF21; FF41; Case map*/ + "\uFF42", /*FF22; FF42; Case map*/ + "\uFF43", /*FF23; FF43; Case map*/ + "\uFF44", /*FF24; FF44; Case map*/ + "\uFF45", /*FF25; FF45; Case map*/ + "\uFF46", /*FF26; FF46; Case map*/ + "\uFF47", /*FF27; FF47; Case map*/ + "\uFF48", /*FF28; FF48; Case map*/ + "\uFF49", /*FF29; FF49; Case map*/ + "\uFF4A", /*FF2A; FF4A; Case map*/ + "\uFF4B", /*FF2B; FF4B; Case map*/ + "\uFF4C", /*FF2C; FF4C; Case map*/ + "\uFF4D", /*FF2D; FF4D; Case map*/ + "\uFF4E", /*FF2E; FF4E; Case map*/ + "\uFF4F", /*FF2F; FF4F; Case map*/ + "\uFF50", /*FF30; FF50; Case map*/ + "\uFF51", /*FF31; FF51; Case map*/ + "\uFF52", /*FF32; FF52; Case map*/ + "\uFF53", /*FF33; FF53; Case map*/ + "\uFF54", /*FF34; FF54; Case map*/ + "\uFF55", /*FF35; FF55; Case map*/ + "\uFF56", /*FF36; FF56; Case map*/ + "\uFF57", /*FF37; FF57; Case map*/ + "\uFF58", /*FF38; FF58; Case map*/ + "\uFF59", /*FF39; FF59; Case map*/ + "\uFF5A", /*FF3A; FF5A; Case map*/ + }; + + public static char[] B3search = new char[] { + '\u0041', /*0041; 0061; Case map*/ + '\u0042', /*0042; 0062; Case map*/ + '\u0043', /*0043; 0063; Case map*/ + '\u0044', /*0044; 0064; Case map*/ + '\u0045', /*0045; 0065; Case map*/ + '\u0046', /*0046; 0066; Case map*/ + '\u0047', /*0047; 0067; Case map*/ + '\u0048', /*0048; 0068; Case map*/ + '\u0049', /*0049; 0069; Case map*/ + '\u004A', /*004A; 006A; Case map*/ + '\u004B', /*004B; 006B; Case map*/ + '\u004C', /*004C; 006C; Case map*/ + '\u004D', /*004D; 006D; Case map*/ + '\u004E', /*004E; 006E; Case map*/ + '\u004F', /*004F; 006F; Case map*/ + '\u0050', /*0050; 0070; Case map*/ + '\u0051', /*0051; 0071; Case map*/ + '\u0052', /*0052; 0072; Case map*/ + '\u0053', /*0053; 0073; Case map*/ + '\u0054', /*0054; 0074; Case map*/ + '\u0055', /*0055; 0075; Case map*/ + '\u0056', /*0056; 0076; Case map*/ + '\u0057', /*0057; 0077; Case map*/ + '\u0058', /*0058; 0078; Case map*/ + '\u0059', /*0059; 0079; Case map*/ + '\u005A', /*005A; 007A; Case map*/ + '\u00B5', /*00B5; 03BC; Case map*/ + '\u00C0', /*00C0; 00E0; Case map*/ + '\u00C1', /*00C1; 00E1; Case map*/ + '\u00C2', /*00C2; 00E2; Case map*/ + '\u00C3', /*00C3; 00E3; Case map*/ + '\u00C4', /*00C4; 00E4; Case map*/ + '\u00C5', /*00C5; 00E5; Case map*/ + '\u00C6', /*00C6; 00E6; Case map*/ + '\u00C7', /*00C7; 00E7; Case map*/ + '\u00C8', /*00C8; 00E8; Case map*/ + '\u00C9', /*00C9; 00E9; Case map*/ + '\u00CA', /*00CA; 00EA; Case map*/ + '\u00CB', /*00CB; 00EB; Case map*/ + '\u00CC', /*00CC; 00EC; Case map*/ + '\u00CD', /*00CD; 00ED; Case map*/ + '\u00CE', /*00CE; 00EE; Case map*/ + '\u00CF', /*00CF; 00EF; Case map*/ + '\u00D0', /*00D0; 00F0; Case map*/ + '\u00D1', /*00D1; 00F1; Case map*/ + '\u00D2', /*00D2; 00F2; Case map*/ + '\u00D3', /*00D3; 00F3; Case map*/ + '\u00D4', /*00D4; 00F4; Case map*/ + '\u00D5', /*00D5; 00F5; Case map*/ + '\u00D6', /*00D6; 00F6; Case map*/ + '\u00D8', /*00D8; 00F8; Case map*/ + '\u00D9', /*00D9; 00F9; Case map*/ + '\u00DA', /*00DA; 00FA; Case map*/ + '\u00DB', /*00DB; 00FB; Case map*/ + '\u00DC', /*00DC; 00FC; Case map*/ + '\u00DD', /*00DD; 00FD; Case map*/ + '\u00DE', /*00DE; 00FE; Case map*/ + '\u00DF', /*00DF; 0073 0073; Case map*/ + '\u0100', /*0100; 0101; Case map*/ + '\u0102', /*0102; 0103; Case map*/ + '\u0104', /*0104; 0105; Case map*/ + '\u0106', /*0106; 0107; Case map*/ + '\u0108', /*0108; 0109; Case map*/ + '\u010A', /*010A; 010B; Case map*/ + '\u010C', /*010C; 010D; Case map*/ + '\u010E', /*010E; 010F; Case map*/ + '\u0110', /*0110; 0111; Case map*/ + '\u0112', /*0112; 0113; Case map*/ + '\u0114', /*0114; 0115; Case map*/ + '\u0116', /*0116; 0117; Case map*/ + '\u0118', /*0118; 0119; Case map*/ + '\u011A', /*011A; 011B; Case map*/ + '\u011C', /*011C; 011D; Case map*/ + '\u011E', /*011E; 011F; Case map*/ + '\u0120', /*0120; 0121; Case map*/ + '\u0122', /*0122; 0123; Case map*/ + '\u0124', /*0124; 0125; Case map*/ + '\u0126', /*0126; 0127; Case map*/ + '\u0128', /*0128; 0129; Case map*/ + '\u012A', /*012A; 012B; Case map*/ + '\u012C', /*012C; 012D; Case map*/ + '\u012E', /*012E; 012F; Case map*/ + '\u0130', /*0130; 0069 0307; Case map*/ + '\u0132', /*0132; 0133; Case map*/ + '\u0134', /*0134; 0135; Case map*/ + '\u0136', /*0136; 0137; Case map*/ + '\u0139', /*0139; 013A; Case map*/ + '\u013B', /*013B; 013C; Case map*/ + '\u013D', /*013D; 013E; Case map*/ + '\u013F', /*013F; 0140; Case map*/ + '\u0141', /*0141; 0142; Case map*/ + '\u0143', /*0143; 0144; Case map*/ + '\u0145', /*0145; 0146; Case map*/ + '\u0147', /*0147; 0148; Case map*/ + '\u0149', /*0149; 02BC 006E; Case map*/ + '\u014A', /*014A; 014B; Case map*/ + '\u014C', /*014C; 014D; Case map*/ + '\u014E', /*014E; 014F; Case map*/ + '\u0150', /*0150; 0151; Case map*/ + '\u0152', /*0152; 0153; Case map*/ + '\u0154', /*0154; 0155; Case map*/ + '\u0156', /*0156; 0157; Case map*/ + '\u0158', /*0158; 0159; Case map*/ + '\u015A', /*015A; 015B; Case map*/ + '\u015C', /*015C; 015D; Case map*/ + '\u015E', /*015E; 015F; Case map*/ + '\u0160', /*0160; 0161; Case map*/ + '\u0162', /*0162; 0163; Case map*/ + '\u0164', /*0164; 0165; Case map*/ + '\u0166', /*0166; 0167; Case map*/ + '\u0168', /*0168; 0169; Case map*/ + '\u016A', /*016A; 016B; Case map*/ + '\u016C', /*016C; 016D; Case map*/ + '\u016E', /*016E; 016F; Case map*/ + '\u0170', /*0170; 0171; Case map*/ + '\u0172', /*0172; 0173; Case map*/ + '\u0174', /*0174; 0175; Case map*/ + '\u0176', /*0176; 0177; Case map*/ + '\u0178', /*0178; 00FF; Case map*/ + '\u0179', /*0179; 017A; Case map*/ + '\u017B', /*017B; 017C; Case map*/ + '\u017D', /*017D; 017E; Case map*/ + '\u017F', /*017F; 0073; Case map*/ + '\u0181', /*0181; 0253; Case map*/ + '\u0182', /*0182; 0183; Case map*/ + '\u0184', /*0184; 0185; Case map*/ + '\u0186', /*0186; 0254; Case map*/ + '\u0187', /*0187; 0188; Case map*/ + '\u0189', /*0189; 0256; Case map*/ + '\u018A', /*018A; 0257; Case map*/ + '\u018B', /*018B; 018C; Case map*/ + '\u018E', /*018E; 01DD; Case map*/ + '\u018F', /*018F; 0259; Case map*/ + '\u0190', /*0190; 025B; Case map*/ + '\u0191', /*0191; 0192; Case map*/ + '\u0193', /*0193; 0260; Case map*/ + '\u0194', /*0194; 0263; Case map*/ + '\u0196', /*0196; 0269; Case map*/ + '\u0197', /*0197; 0268; Case map*/ + '\u0198', /*0198; 0199; Case map*/ + '\u019C', /*019C; 026F; Case map*/ + '\u019D', /*019D; 0272; Case map*/ + '\u019F', /*019F; 0275; Case map*/ + '\u01A0', /*01A0; 01A1; Case map*/ + '\u01A2', /*01A2; 01A3; Case map*/ + '\u01A4', /*01A4; 01A5; Case map*/ + '\u01A6', /*01A6; 0280; Case map*/ + '\u01A7', /*01A7; 01A8; Case map*/ + '\u01A9', /*01A9; 0283; Case map*/ + '\u01AC', /*01AC; 01AD; Case map*/ + '\u01AE', /*01AE; 0288; Case map*/ + '\u01AF', /*01AF; 01B0; Case map*/ + '\u01B1', /*01B1; 028A; Case map*/ + '\u01B2', /*01B2; 028B; Case map*/ + '\u01B3', /*01B3; 01B4; Case map*/ + '\u01B5', /*01B5; 01B6; Case map*/ + '\u01B7', /*01B7; 0292; Case map*/ + '\u01B8', /*01B8; 01B9; Case map*/ + '\u01BC', /*01BC; 01BD; Case map*/ + '\u01C4', /*01C4; 01C6; Case map*/ + '\u01C5', /*01C5; 01C6; Case map*/ + '\u01C7', /*01C7; 01C9; Case map*/ + '\u01C8', /*01C8; 01C9; Case map*/ + '\u01CA', /*01CA; 01CC; Case map*/ + '\u01CB', /*01CB; 01CC; Case map*/ + '\u01CD', /*01CD; 01CE; Case map*/ + '\u01CF', /*01CF; 01D0; Case map*/ + '\u01D1', /*01D1; 01D2; Case map*/ + '\u01D3', /*01D3; 01D4; Case map*/ + '\u01D5', /*01D5; 01D6; Case map*/ + '\u01D7', /*01D7; 01D8; Case map*/ + '\u01D9', /*01D9; 01DA; Case map*/ + '\u01DB', /*01DB; 01DC; Case map*/ + '\u01DE', /*01DE; 01DF; Case map*/ + '\u01E0', /*01E0; 01E1; Case map*/ + '\u01E2', /*01E2; 01E3; Case map*/ + '\u01E4', /*01E4; 01E5; Case map*/ + '\u01E6', /*01E6; 01E7; Case map*/ + '\u01E8', /*01E8; 01E9; Case map*/ + '\u01EA', /*01EA; 01EB; Case map*/ + '\u01EC', /*01EC; 01ED; Case map*/ + '\u01EE', /*01EE; 01EF; Case map*/ + '\u01F0', /*01F0; 006A 030C; Case map*/ + '\u01F1', /*01F1; 01F3; Case map*/ + '\u01F2', /*01F2; 01F3; Case map*/ + '\u01F4', /*01F4; 01F5; Case map*/ + '\u01F6', /*01F6; 0195; Case map*/ + '\u01F7', /*01F7; 01BF; Case map*/ + '\u01F8', /*01F8; 01F9; Case map*/ + '\u01FA', /*01FA; 01FB; Case map*/ + '\u01FC', /*01FC; 01FD; Case map*/ + '\u01FE', /*01FE; 01FF; Case map*/ + '\u0200', /*0200; 0201; Case map*/ + '\u0202', /*0202; 0203; Case map*/ + '\u0204', /*0204; 0205; Case map*/ + '\u0206', /*0206; 0207; Case map*/ + '\u0208', /*0208; 0209; Case map*/ + '\u020A', /*020A; 020B; Case map*/ + '\u020C', /*020C; 020D; Case map*/ + '\u020E', /*020E; 020F; Case map*/ + '\u0210', /*0210; 0211; Case map*/ + '\u0212', /*0212; 0213; Case map*/ + '\u0214', /*0214; 0215; Case map*/ + '\u0216', /*0216; 0217; Case map*/ + '\u0218', /*0218; 0219; Case map*/ + '\u021A', /*021A; 021B; Case map*/ + '\u021C', /*021C; 021D; Case map*/ + '\u021E', /*021E; 021F; Case map*/ + '\u0220', /*0220; 019E; Case map*/ + '\u0222', /*0222; 0223; Case map*/ + '\u0224', /*0224; 0225; Case map*/ + '\u0226', /*0226; 0227; Case map*/ + '\u0228', /*0228; 0229; Case map*/ + '\u022A', /*022A; 022B; Case map*/ + '\u022C', /*022C; 022D; Case map*/ + '\u022E', /*022E; 022F; Case map*/ + '\u0230', /*0230; 0231; Case map*/ + '\u0232', /*0232; 0233; Case map*/ + '\u0345', /*0345; 03B9; Case map*/ + '\u0386', /*0386; 03AC; Case map*/ + '\u0388', /*0388; 03AD; Case map*/ + '\u0389', /*0389; 03AE; Case map*/ + '\u038A', /*038A; 03AF; Case map*/ + '\u038C', /*038C; 03CC; Case map*/ + '\u038E', /*038E; 03CD; Case map*/ + '\u038F', /*038F; 03CE; Case map*/ + '\u0390', /*0390; 03B9 0308 0301; Case map*/ + '\u0391', /*0391; 03B1; Case map*/ + '\u0392', /*0392; 03B2; Case map*/ + '\u0393', /*0393; 03B3; Case map*/ + '\u0394', /*0394; 03B4; Case map*/ + '\u0395', /*0395; 03B5; Case map*/ + '\u0396', /*0396; 03B6; Case map*/ + '\u0397', /*0397; 03B7; Case map*/ + '\u0398', /*0398; 03B8; Case map*/ + '\u0399', /*0399; 03B9; Case map*/ + '\u039A', /*039A; 03BA; Case map*/ + '\u039B', /*039B; 03BB; Case map*/ + '\u039C', /*039C; 03BC; Case map*/ + '\u039D', /*039D; 03BD; Case map*/ + '\u039E', /*039E; 03BE; Case map*/ + '\u039F', /*039F; 03BF; Case map*/ + '\u03A0', /*03A0; 03C0; Case map*/ + '\u03A1', /*03A1; 03C1; Case map*/ + '\u03A3', /*03A3; 03C3; Case map*/ + '\u03A4', /*03A4; 03C4; Case map*/ + '\u03A5', /*03A5; 03C5; Case map*/ + '\u03A6', /*03A6; 03C6; Case map*/ + '\u03A7', /*03A7; 03C7; Case map*/ + '\u03A8', /*03A8; 03C8; Case map*/ + '\u03A9', /*03A9; 03C9; Case map*/ + '\u03AA', /*03AA; 03CA; Case map*/ + '\u03AB', /*03AB; 03CB; Case map*/ + '\u03B0', /*03B0; 03C5 0308 0301; Case map*/ + '\u03C2', /*03C2; 03C3; Case map*/ + '\u03D0', /*03D0; 03B2; Case map*/ + '\u03D1', /*03D1; 03B8; Case map*/ + '\u03D5', /*03D5; 03C6; Case map*/ + '\u03D6', /*03D6; 03C0; Case map*/ + '\u03D8', /*03D8; 03D9; Case map*/ + '\u03DA', /*03DA; 03DB; Case map*/ + '\u03DC', /*03DC; 03DD; Case map*/ + '\u03DE', /*03DE; 03DF; Case map*/ + '\u03E0', /*03E0; 03E1; Case map*/ + '\u03E2', /*03E2; 03E3; Case map*/ + '\u03E4', /*03E4; 03E5; Case map*/ + '\u03E6', /*03E6; 03E7; Case map*/ + '\u03E8', /*03E8; 03E9; Case map*/ + '\u03EA', /*03EA; 03EB; Case map*/ + '\u03EC', /*03EC; 03ED; Case map*/ + '\u03EE', /*03EE; 03EF; Case map*/ + '\u03F0', /*03F0; 03BA; Case map*/ + '\u03F1', /*03F1; 03C1; Case map*/ + '\u03F2', /*03F2; 03C3; Case map*/ + '\u03F4', /*03F4; 03B8; Case map*/ + '\u03F5', /*03F5; 03B5; Case map*/ + '\u0400', /*0400; 0450; Case map*/ + '\u0401', /*0401; 0451; Case map*/ + '\u0402', /*0402; 0452; Case map*/ + '\u0403', /*0403; 0453; Case map*/ + '\u0404', /*0404; 0454; Case map*/ + '\u0405', /*0405; 0455; Case map*/ + '\u0406', /*0406; 0456; Case map*/ + '\u0407', /*0407; 0457; Case map*/ + '\u0408', /*0408; 0458; Case map*/ + '\u0409', /*0409; 0459; Case map*/ + '\u040A', /*040A; 045A; Case map*/ + '\u040B', /*040B; 045B; Case map*/ + '\u040C', /*040C; 045C; Case map*/ + '\u040D', /*040D; 045D; Case map*/ + '\u040E', /*040E; 045E; Case map*/ + '\u040F', /*040F; 045F; Case map*/ + '\u0410', /*0410; 0430; Case map*/ + '\u0411', /*0411; 0431; Case map*/ + '\u0412', /*0412; 0432; Case map*/ + '\u0413', /*0413; 0433; Case map*/ + '\u0414', /*0414; 0434; Case map*/ + '\u0415', /*0415; 0435; Case map*/ + '\u0416', /*0416; 0436; Case map*/ + '\u0417', /*0417; 0437; Case map*/ + '\u0418', /*0418; 0438; Case map*/ + '\u0419', /*0419; 0439; Case map*/ + '\u041A', /*041A; 043A; Case map*/ + '\u041B', /*041B; 043B; Case map*/ + '\u041C', /*041C; 043C; Case map*/ + '\u041D', /*041D; 043D; Case map*/ + '\u041E', /*041E; 043E; Case map*/ + '\u041F', /*041F; 043F; Case map*/ + '\u0420', /*0420; 0440; Case map*/ + '\u0421', /*0421; 0441; Case map*/ + '\u0422', /*0422; 0442; Case map*/ + '\u0423', /*0423; 0443; Case map*/ + '\u0424', /*0424; 0444; Case map*/ + '\u0425', /*0425; 0445; Case map*/ + '\u0426', /*0426; 0446; Case map*/ + '\u0427', /*0427; 0447; Case map*/ + '\u0428', /*0428; 0448; Case map*/ + '\u0429', /*0429; 0449; Case map*/ + '\u042A', /*042A; 044A; Case map*/ + '\u042B', /*042B; 044B; Case map*/ + '\u042C', /*042C; 044C; Case map*/ + '\u042D', /*042D; 044D; Case map*/ + '\u042E', /*042E; 044E; Case map*/ + '\u042F', /*042F; 044F; Case map*/ + '\u0460', /*0460; 0461; Case map*/ + '\u0462', /*0462; 0463; Case map*/ + '\u0464', /*0464; 0465; Case map*/ + '\u0466', /*0466; 0467; Case map*/ + '\u0468', /*0468; 0469; Case map*/ + '\u046A', /*046A; 046B; Case map*/ + '\u046C', /*046C; 046D; Case map*/ + '\u046E', /*046E; 046F; Case map*/ + '\u0470', /*0470; 0471; Case map*/ + '\u0472', /*0472; 0473; Case map*/ + '\u0474', /*0474; 0475; Case map*/ + '\u0476', /*0476; 0477; Case map*/ + '\u0478', /*0478; 0479; Case map*/ + '\u047A', /*047A; 047B; Case map*/ + '\u047C', /*047C; 047D; Case map*/ + '\u047E', /*047E; 047F; Case map*/ + '\u0480', /*0480; 0481; Case map*/ + '\u048A', /*048A; 048B; Case map*/ + '\u048C', /*048C; 048D; Case map*/ + '\u048E', /*048E; 048F; Case map*/ + '\u0490', /*0490; 0491; Case map*/ + '\u0492', /*0492; 0493; Case map*/ + '\u0494', /*0494; 0495; Case map*/ + '\u0496', /*0496; 0497; Case map*/ + '\u0498', /*0498; 0499; Case map*/ + '\u049A', /*049A; 049B; Case map*/ + '\u049C', /*049C; 049D; Case map*/ + '\u049E', /*049E; 049F; Case map*/ + '\u04A0', /*04A0; 04A1; Case map*/ + '\u04A2', /*04A2; 04A3; Case map*/ + '\u04A4', /*04A4; 04A5; Case map*/ + '\u04A6', /*04A6; 04A7; Case map*/ + '\u04A8', /*04A8; 04A9; Case map*/ + '\u04AA', /*04AA; 04AB; Case map*/ + '\u04AC', /*04AC; 04AD; Case map*/ + '\u04AE', /*04AE; 04AF; Case map*/ + '\u04B0', /*04B0; 04B1; Case map*/ + '\u04B2', /*04B2; 04B3; Case map*/ + '\u04B4', /*04B4; 04B5; Case map*/ + '\u04B6', /*04B6; 04B7; Case map*/ + '\u04B8', /*04B8; 04B9; Case map*/ + '\u04BA', /*04BA; 04BB; Case map*/ + '\u04BC', /*04BC; 04BD; Case map*/ + '\u04BE', /*04BE; 04BF; Case map*/ + '\u04C1', /*04C1; 04C2; Case map*/ + '\u04C3', /*04C3; 04C4; Case map*/ + '\u04C5', /*04C5; 04C6; Case map*/ + '\u04C7', /*04C7; 04C8; Case map*/ + '\u04C9', /*04C9; 04CA; Case map*/ + '\u04CB', /*04CB; 04CC; Case map*/ + '\u04CD', /*04CD; 04CE; Case map*/ + '\u04D0', /*04D0; 04D1; Case map*/ + '\u04D2', /*04D2; 04D3; Case map*/ + '\u04D4', /*04D4; 04D5; Case map*/ + '\u04D6', /*04D6; 04D7; Case map*/ + '\u04D8', /*04D8; 04D9; Case map*/ + '\u04DA', /*04DA; 04DB; Case map*/ + '\u04DC', /*04DC; 04DD; Case map*/ + '\u04DE', /*04DE; 04DF; Case map*/ + '\u04E0', /*04E0; 04E1; Case map*/ + '\u04E2', /*04E2; 04E3; Case map*/ + '\u04E4', /*04E4; 04E5; Case map*/ + '\u04E6', /*04E6; 04E7; Case map*/ + '\u04E8', /*04E8; 04E9; Case map*/ + '\u04EA', /*04EA; 04EB; Case map*/ + '\u04EC', /*04EC; 04ED; Case map*/ + '\u04EE', /*04EE; 04EF; Case map*/ + '\u04F0', /*04F0; 04F1; Case map*/ + '\u04F2', /*04F2; 04F3; Case map*/ + '\u04F4', /*04F4; 04F5; Case map*/ + '\u04F8', /*04F8; 04F9; Case map*/ + '\u0500', /*0500; 0501; Case map*/ + '\u0502', /*0502; 0503; Case map*/ + '\u0504', /*0504; 0505; Case map*/ + '\u0506', /*0506; 0507; Case map*/ + '\u0508', /*0508; 0509; Case map*/ + '\u050A', /*050A; 050B; Case map*/ + '\u050C', /*050C; 050D; Case map*/ + '\u050E', /*050E; 050F; Case map*/ + '\u0531', /*0531; 0561; Case map*/ + '\u0532', /*0532; 0562; Case map*/ + '\u0533', /*0533; 0563; Case map*/ + '\u0534', /*0534; 0564; Case map*/ + '\u0535', /*0535; 0565; Case map*/ + '\u0536', /*0536; 0566; Case map*/ + '\u0537', /*0537; 0567; Case map*/ + '\u0538', /*0538; 0568; Case map*/ + '\u0539', /*0539; 0569; Case map*/ + '\u053A', /*053A; 056A; Case map*/ + '\u053B', /*053B; 056B; Case map*/ + '\u053C', /*053C; 056C; Case map*/ + '\u053D', /*053D; 056D; Case map*/ + '\u053E', /*053E; 056E; Case map*/ + '\u053F', /*053F; 056F; Case map*/ + '\u0540', /*0540; 0570; Case map*/ + '\u0541', /*0541; 0571; Case map*/ + '\u0542', /*0542; 0572; Case map*/ + '\u0543', /*0543; 0573; Case map*/ + '\u0544', /*0544; 0574; Case map*/ + '\u0545', /*0545; 0575; Case map*/ + '\u0546', /*0546; 0576; Case map*/ + '\u0547', /*0547; 0577; Case map*/ + '\u0548', /*0548; 0578; Case map*/ + '\u0549', /*0549; 0579; Case map*/ + '\u054A', /*054A; 057A; Case map*/ + '\u054B', /*054B; 057B; Case map*/ + '\u054C', /*054C; 057C; Case map*/ + '\u054D', /*054D; 057D; Case map*/ + '\u054E', /*054E; 057E; Case map*/ + '\u054F', /*054F; 057F; Case map*/ + '\u0550', /*0550; 0580; Case map*/ + '\u0551', /*0551; 0581; Case map*/ + '\u0552', /*0552; 0582; Case map*/ + '\u0553', /*0553; 0583; Case map*/ + '\u0554', /*0554; 0584; Case map*/ + '\u0555', /*0555; 0585; Case map*/ + '\u0556', /*0556; 0586; Case map*/ + '\u0587', /*0587; 0565 0582; Case map*/ + '\u1E00', /*1E00; 1E01; Case map*/ + '\u1E02', /*1E02; 1E03; Case map*/ + '\u1E04', /*1E04; 1E05; Case map*/ + '\u1E06', /*1E06; 1E07; Case map*/ + '\u1E08', /*1E08; 1E09; Case map*/ + '\u1E0A', /*1E0A; 1E0B; Case map*/ + '\u1E0C', /*1E0C; 1E0D; Case map*/ + '\u1E0E', /*1E0E; 1E0F; Case map*/ + '\u1E10', /*1E10; 1E11; Case map*/ + '\u1E12', /*1E12; 1E13; Case map*/ + '\u1E14', /*1E14; 1E15; Case map*/ + '\u1E16', /*1E16; 1E17; Case map*/ + '\u1E18', /*1E18; 1E19; Case map*/ + '\u1E1A', /*1E1A; 1E1B; Case map*/ + '\u1E1C', /*1E1C; 1E1D; Case map*/ + '\u1E1E', /*1E1E; 1E1F; Case map*/ + '\u1E20', /*1E20; 1E21; Case map*/ + '\u1E22', /*1E22; 1E23; Case map*/ + '\u1E24', /*1E24; 1E25; Case map*/ + '\u1E26', /*1E26; 1E27; Case map*/ + '\u1E28', /*1E28; 1E29; Case map*/ + '\u1E2A', /*1E2A; 1E2B; Case map*/ + '\u1E2C', /*1E2C; 1E2D; Case map*/ + '\u1E2E', /*1E2E; 1E2F; Case map*/ + '\u1E30', /*1E30; 1E31; Case map*/ + '\u1E32', /*1E32; 1E33; Case map*/ + '\u1E34', /*1E34; 1E35; Case map*/ + '\u1E36', /*1E36; 1E37; Case map*/ + '\u1E38', /*1E38; 1E39; Case map*/ + '\u1E3A', /*1E3A; 1E3B; Case map*/ + '\u1E3C', /*1E3C; 1E3D; Case map*/ + '\u1E3E', /*1E3E; 1E3F; Case map*/ + '\u1E40', /*1E40; 1E41; Case map*/ + '\u1E42', /*1E42; 1E43; Case map*/ + '\u1E44', /*1E44; 1E45; Case map*/ + '\u1E46', /*1E46; 1E47; Case map*/ + '\u1E48', /*1E48; 1E49; Case map*/ + '\u1E4A', /*1E4A; 1E4B; Case map*/ + '\u1E4C', /*1E4C; 1E4D; Case map*/ + '\u1E4E', /*1E4E; 1E4F; Case map*/ + '\u1E50', /*1E50; 1E51; Case map*/ + '\u1E52', /*1E52; 1E53; Case map*/ + '\u1E54', /*1E54; 1E55; Case map*/ + '\u1E56', /*1E56; 1E57; Case map*/ + '\u1E58', /*1E58; 1E59; Case map*/ + '\u1E5A', /*1E5A; 1E5B; Case map*/ + '\u1E5C', /*1E5C; 1E5D; Case map*/ + '\u1E5E', /*1E5E; 1E5F; Case map*/ + '\u1E60', /*1E60; 1E61; Case map*/ + '\u1E62', /*1E62; 1E63; Case map*/ + '\u1E64', /*1E64; 1E65; Case map*/ + '\u1E66', /*1E66; 1E67; Case map*/ + '\u1E68', /*1E68; 1E69; Case map*/ + '\u1E6A', /*1E6A; 1E6B; Case map*/ + '\u1E6C', /*1E6C; 1E6D; Case map*/ + '\u1E6E', /*1E6E; 1E6F; Case map*/ + '\u1E70', /*1E70; 1E71; Case map*/ + '\u1E72', /*1E72; 1E73; Case map*/ + '\u1E74', /*1E74; 1E75; Case map*/ + '\u1E76', /*1E76; 1E77; Case map*/ + '\u1E78', /*1E78; 1E79; Case map*/ + '\u1E7A', /*1E7A; 1E7B; Case map*/ + '\u1E7C', /*1E7C; 1E7D; Case map*/ + '\u1E7E', /*1E7E; 1E7F; Case map*/ + '\u1E80', /*1E80; 1E81; Case map*/ + '\u1E82', /*1E82; 1E83; Case map*/ + '\u1E84', /*1E84; 1E85; Case map*/ + '\u1E86', /*1E86; 1E87; Case map*/ + '\u1E88', /*1E88; 1E89; Case map*/ + '\u1E8A', /*1E8A; 1E8B; Case map*/ + '\u1E8C', /*1E8C; 1E8D; Case map*/ + '\u1E8E', /*1E8E; 1E8F; Case map*/ + '\u1E90', /*1E90; 1E91; Case map*/ + '\u1E92', /*1E92; 1E93; Case map*/ + '\u1E94', /*1E94; 1E95; Case map*/ + '\u1E96', /*1E96; 0068 0331; Case map*/ + '\u1E97', /*1E97; 0074 0308; Case map*/ + '\u1E98', /*1E98; 0077 030A; Case map*/ + '\u1E99', /*1E99; 0079 030A; Case map*/ + '\u1E9A', /*1E9A; 0061 02BE; Case map*/ + '\u1E9B', /*1E9B; 1E61; Case map*/ + '\u1EA0', /*1EA0; 1EA1; Case map*/ + '\u1EA2', /*1EA2; 1EA3; Case map*/ + '\u1EA4', /*1EA4; 1EA5; Case map*/ + '\u1EA6', /*1EA6; 1EA7; Case map*/ + '\u1EA8', /*1EA8; 1EA9; Case map*/ + '\u1EAA', /*1EAA; 1EAB; Case map*/ + '\u1EAC', /*1EAC; 1EAD; Case map*/ + '\u1EAE', /*1EAE; 1EAF; Case map*/ + '\u1EB0', /*1EB0; 1EB1; Case map*/ + '\u1EB2', /*1EB2; 1EB3; Case map*/ + '\u1EB4', /*1EB4; 1EB5; Case map*/ + '\u1EB6', /*1EB6; 1EB7; Case map*/ + '\u1EB8', /*1EB8; 1EB9; Case map*/ + '\u1EBA', /*1EBA; 1EBB; Case map*/ + '\u1EBC', /*1EBC; 1EBD; Case map*/ + '\u1EBE', /*1EBE; 1EBF; Case map*/ + '\u1EC0', /*1EC0; 1EC1; Case map*/ + '\u1EC2', /*1EC2; 1EC3; Case map*/ + '\u1EC4', /*1EC4; 1EC5; Case map*/ + '\u1EC6', /*1EC6; 1EC7; Case map*/ + '\u1EC8', /*1EC8; 1EC9; Case map*/ + '\u1ECA', /*1ECA; 1ECB; Case map*/ + '\u1ECC', /*1ECC; 1ECD; Case map*/ + '\u1ECE', /*1ECE; 1ECF; Case map*/ + '\u1ED0', /*1ED0; 1ED1; Case map*/ + '\u1ED2', /*1ED2; 1ED3; Case map*/ + '\u1ED4', /*1ED4; 1ED5; Case map*/ + '\u1ED6', /*1ED6; 1ED7; Case map*/ + '\u1ED8', /*1ED8; 1ED9; Case map*/ + '\u1EDA', /*1EDA; 1EDB; Case map*/ + '\u1EDC', /*1EDC; 1EDD; Case map*/ + '\u1EDE', /*1EDE; 1EDF; Case map*/ + '\u1EE0', /*1EE0; 1EE1; Case map*/ + '\u1EE2', /*1EE2; 1EE3; Case map*/ + '\u1EE4', /*1EE4; 1EE5; Case map*/ + '\u1EE6', /*1EE6; 1EE7; Case map*/ + '\u1EE8', /*1EE8; 1EE9; Case map*/ + '\u1EEA', /*1EEA; 1EEB; Case map*/ + '\u1EEC', /*1EEC; 1EED; Case map*/ + '\u1EEE', /*1EEE; 1EEF; Case map*/ + '\u1EF0', /*1EF0; 1EF1; Case map*/ + '\u1EF2', /*1EF2; 1EF3; Case map*/ + '\u1EF4', /*1EF4; 1EF5; Case map*/ + '\u1EF6', /*1EF6; 1EF7; Case map*/ + '\u1EF8', /*1EF8; 1EF9; Case map*/ + '\u1F08', /*1F08; 1F00; Case map*/ + '\u1F09', /*1F09; 1F01; Case map*/ + '\u1F0A', /*1F0A; 1F02; Case map*/ + '\u1F0B', /*1F0B; 1F03; Case map*/ + '\u1F0C', /*1F0C; 1F04; Case map*/ + '\u1F0D', /*1F0D; 1F05; Case map*/ + '\u1F0E', /*1F0E; 1F06; Case map*/ + '\u1F0F', /*1F0F; 1F07; Case map*/ + '\u1F18', /*1F18; 1F10; Case map*/ + '\u1F19', /*1F19; 1F11; Case map*/ + '\u1F1A', /*1F1A; 1F12; Case map*/ + '\u1F1B', /*1F1B; 1F13; Case map*/ + '\u1F1C', /*1F1C; 1F14; Case map*/ + '\u1F1D', /*1F1D; 1F15; Case map*/ + '\u1F28', /*1F28; 1F20; Case map*/ + '\u1F29', /*1F29; 1F21; Case map*/ + '\u1F2A', /*1F2A; 1F22; Case map*/ + '\u1F2B', /*1F2B; 1F23; Case map*/ + '\u1F2C', /*1F2C; 1F24; Case map*/ + '\u1F2D', /*1F2D; 1F25; Case map*/ + '\u1F2E', /*1F2E; 1F26; Case map*/ + '\u1F2F', /*1F2F; 1F27; Case map*/ + '\u1F38', /*1F38; 1F30; Case map*/ + '\u1F39', /*1F39; 1F31; Case map*/ + '\u1F3A', /*1F3A; 1F32; Case map*/ + '\u1F3B', /*1F3B; 1F33; Case map*/ + '\u1F3C', /*1F3C; 1F34; Case map*/ + '\u1F3D', /*1F3D; 1F35; Case map*/ + '\u1F3E', /*1F3E; 1F36; Case map*/ + '\u1F3F', /*1F3F; 1F37; Case map*/ + '\u1F48', /*1F48; 1F40; Case map*/ + '\u1F49', /*1F49; 1F41; Case map*/ + '\u1F4A', /*1F4A; 1F42; Case map*/ + '\u1F4B', /*1F4B; 1F43; Case map*/ + '\u1F4C', /*1F4C; 1F44; Case map*/ + '\u1F4D', /*1F4D; 1F45; Case map*/ + '\u1F50', /*1F50; 03C5 0313; Case map*/ + '\u1F52', /*1F52; 03C5 0313 0300; Case map*/ + '\u1F54', /*1F54; 03C5 0313 0301; Case map*/ + '\u1F56', /*1F56; 03C5 0313 0342; Case map*/ + '\u1F59', /*1F59; 1F51; Case map*/ + '\u1F5B', /*1F5B; 1F53; Case map*/ + '\u1F5D', /*1F5D; 1F55; Case map*/ + '\u1F5F', /*1F5F; 1F57; Case map*/ + '\u1F68', /*1F68; 1F60; Case map*/ + '\u1F69', /*1F69; 1F61; Case map*/ + '\u1F6A', /*1F6A; 1F62; Case map*/ + '\u1F6B', /*1F6B; 1F63; Case map*/ + '\u1F6C', /*1F6C; 1F64; Case map*/ + '\u1F6D', /*1F6D; 1F65; Case map*/ + '\u1F6E', /*1F6E; 1F66; Case map*/ + '\u1F6F', /*1F6F; 1F67; Case map*/ + '\u1F80', /*1F80; 1F00 03B9; Case map*/ + '\u1F81', /*1F81; 1F01 03B9; Case map*/ + '\u1F82', /*1F82; 1F02 03B9; Case map*/ + '\u1F83', /*1F83; 1F03 03B9; Case map*/ + '\u1F84', /*1F84; 1F04 03B9; Case map*/ + '\u1F85', /*1F85; 1F05 03B9; Case map*/ + '\u1F86', /*1F86; 1F06 03B9; Case map*/ + '\u1F87', /*1F87; 1F07 03B9; Case map*/ + '\u1F88', /*1F88; 1F00 03B9; Case map*/ + '\u1F89', /*1F89; 1F01 03B9; Case map*/ + '\u1F8A', /*1F8A; 1F02 03B9; Case map*/ + '\u1F8B', /*1F8B; 1F03 03B9; Case map*/ + '\u1F8C', /*1F8C; 1F04 03B9; Case map*/ + '\u1F8D', /*1F8D; 1F05 03B9; Case map*/ + '\u1F8E', /*1F8E; 1F06 03B9; Case map*/ + '\u1F8F', /*1F8F; 1F07 03B9; Case map*/ + '\u1F90', /*1F90; 1F20 03B9; Case map*/ + '\u1F91', /*1F91; 1F21 03B9; Case map*/ + '\u1F92', /*1F92; 1F22 03B9; Case map*/ + '\u1F93', /*1F93; 1F23 03B9; Case map*/ + '\u1F94', /*1F94; 1F24 03B9; Case map*/ + '\u1F95', /*1F95; 1F25 03B9; Case map*/ + '\u1F96', /*1F96; 1F26 03B9; Case map*/ + '\u1F97', /*1F97; 1F27 03B9; Case map*/ + '\u1F98', /*1F98; 1F20 03B9; Case map*/ + '\u1F99', /*1F99; 1F21 03B9; Case map*/ + '\u1F9A', /*1F9A; 1F22 03B9; Case map*/ + '\u1F9B', /*1F9B; 1F23 03B9; Case map*/ + '\u1F9C', /*1F9C; 1F24 03B9; Case map*/ + '\u1F9D', /*1F9D; 1F25 03B9; Case map*/ + '\u1F9E', /*1F9E; 1F26 03B9; Case map*/ + '\u1F9F', /*1F9F; 1F27 03B9; Case map*/ + '\u1FA0', /*1FA0; 1F60 03B9; Case map*/ + '\u1FA1', /*1FA1; 1F61 03B9; Case map*/ + '\u1FA2', /*1FA2; 1F62 03B9; Case map*/ + '\u1FA3', /*1FA3; 1F63 03B9; Case map*/ + '\u1FA4', /*1FA4; 1F64 03B9; Case map*/ + '\u1FA5', /*1FA5; 1F65 03B9; Case map*/ + '\u1FA6', /*1FA6; 1F66 03B9; Case map*/ + '\u1FA7', /*1FA7; 1F67 03B9; Case map*/ + '\u1FA8', /*1FA8; 1F60 03B9; Case map*/ + '\u1FA9', /*1FA9; 1F61 03B9; Case map*/ + '\u1FAA', /*1FAA; 1F62 03B9; Case map*/ + '\u1FAB', /*1FAB; 1F63 03B9; Case map*/ + '\u1FAC', /*1FAC; 1F64 03B9; Case map*/ + '\u1FAD', /*1FAD; 1F65 03B9; Case map*/ + '\u1FAE', /*1FAE; 1F66 03B9; Case map*/ + '\u1FAF', /*1FAF; 1F67 03B9; Case map*/ + '\u1FB2', /*1FB2; 1F70 03B9; Case map*/ + '\u1FB3', /*1FB3; 03B1 03B9; Case map*/ + '\u1FB4', /*1FB4; 03AC 03B9; Case map*/ + '\u1FB6', /*1FB6; 03B1 0342; Case map*/ + '\u1FB7', /*1FB7; 03B1 0342 03B9; Case map*/ + '\u1FB8', /*1FB8; 1FB0; Case map*/ + '\u1FB9', /*1FB9; 1FB1; Case map*/ + '\u1FBA', /*1FBA; 1F70; Case map*/ + '\u1FBB', /*1FBB; 1F71; Case map*/ + '\u1FBC', /*1FBC; 03B1 03B9; Case map*/ + '\u1FBE', /*1FBE; 03B9; Case map*/ + '\u1FC2', /*1FC2; 1F74 03B9; Case map*/ + '\u1FC3', /*1FC3; 03B7 03B9; Case map*/ + '\u1FC4', /*1FC4; 03AE 03B9; Case map*/ + '\u1FC6', /*1FC6; 03B7 0342; Case map*/ + '\u1FC7', /*1FC7; 03B7 0342 03B9; Case map*/ + '\u1FC8', /*1FC8; 1F72; Case map*/ + '\u1FC9', /*1FC9; 1F73; Case map*/ + '\u1FCA', /*1FCA; 1F74; Case map*/ + '\u1FCB', /*1FCB; 1F75; Case map*/ + '\u1FCC', /*1FCC; 03B7 03B9; Case map*/ + '\u1FD2', /*1FD2; 03B9 0308 0300; Case map*/ + '\u1FD3', /*1FD3; 03B9 0308 0301; Case map*/ + '\u1FD6', /*1FD6; 03B9 0342; Case map*/ + '\u1FD7', /*1FD7; 03B9 0308 0342; Case map*/ + '\u1FD8', /*1FD8; 1FD0; Case map*/ + '\u1FD9', /*1FD9; 1FD1; Case map*/ + '\u1FDA', /*1FDA; 1F76; Case map*/ + '\u1FDB', /*1FDB; 1F77; Case map*/ + '\u1FE2', /*1FE2; 03C5 0308 0300; Case map*/ + '\u1FE3', /*1FE3; 03C5 0308 0301; Case map*/ + '\u1FE4', /*1FE4; 03C1 0313; Case map*/ + '\u1FE6', /*1FE6; 03C5 0342; Case map*/ + '\u1FE7', /*1FE7; 03C5 0308 0342; Case map*/ + '\u1FE8', /*1FE8; 1FE0; Case map*/ + '\u1FE9', /*1FE9; 1FE1; Case map*/ + '\u1FEA', /*1FEA; 1F7A; Case map*/ + '\u1FEB', /*1FEB; 1F7B; Case map*/ + '\u1FEC', /*1FEC; 1FE5; Case map*/ + '\u1FF2', /*1FF2; 1F7C 03B9; Case map*/ + '\u1FF3', /*1FF3; 03C9 03B9; Case map*/ + '\u1FF4', /*1FF4; 03CE 03B9; Case map*/ + '\u1FF6', /*1FF6; 03C9 0342; Case map*/ + '\u1FF7', /*1FF7; 03C9 0342 03B9; Case map*/ + '\u1FF8', /*1FF8; 1F78; Case map*/ + '\u1FF9', /*1FF9; 1F79; Case map*/ + '\u1FFA', /*1FFA; 1F7C; Case map*/ + '\u1FFB', /*1FFB; 1F7D; Case map*/ + '\u1FFC', /*1FFC; 03C9 03B9; Case map*/ + '\u2126', /*2126; 03C9; Case map*/ + '\u212A', /*212A; 006B; Case map*/ + '\u212B', /*212B; 00E5; Case map*/ + '\u2160', /*2160; 2170; Case map*/ + '\u2161', /*2161; 2171; Case map*/ + '\u2162', /*2162; 2172; Case map*/ + '\u2163', /*2163; 2173; Case map*/ + '\u2164', /*2164; 2174; Case map*/ + '\u2165', /*2165; 2175; Case map*/ + '\u2166', /*2166; 2176; Case map*/ + '\u2167', /*2167; 2177; Case map*/ + '\u2168', /*2168; 2178; Case map*/ + '\u2169', /*2169; 2179; Case map*/ + '\u216A', /*216A; 217A; Case map*/ + '\u216B', /*216B; 217B; Case map*/ + '\u216C', /*216C; 217C; Case map*/ + '\u216D', /*216D; 217D; Case map*/ + '\u216E', /*216E; 217E; Case map*/ + '\u216F', /*216F; 217F; Case map*/ + '\u24B6', /*24B6; 24D0; Case map*/ + '\u24B7', /*24B7; 24D1; Case map*/ + '\u24B8', /*24B8; 24D2; Case map*/ + '\u24B9', /*24B9; 24D3; Case map*/ + '\u24BA', /*24BA; 24D4; Case map*/ + '\u24BB', /*24BB; 24D5; Case map*/ + '\u24BC', /*24BC; 24D6; Case map*/ + '\u24BD', /*24BD; 24D7; Case map*/ + '\u24BE', /*24BE; 24D8; Case map*/ + '\u24BF', /*24BF; 24D9; Case map*/ + '\u24C0', /*24C0; 24DA; Case map*/ + '\u24C1', /*24C1; 24DB; Case map*/ + '\u24C2', /*24C2; 24DC; Case map*/ + '\u24C3', /*24C3; 24DD; Case map*/ + '\u24C4', /*24C4; 24DE; Case map*/ + '\u24C5', /*24C5; 24DF; Case map*/ + '\u24C6', /*24C6; 24E0; Case map*/ + '\u24C7', /*24C7; 24E1; Case map*/ + '\u24C8', /*24C8; 24E2; Case map*/ + '\u24C9', /*24C9; 24E3; Case map*/ + '\u24CA', /*24CA; 24E4; Case map*/ + '\u24CB', /*24CB; 24E5; Case map*/ + '\u24CC', /*24CC; 24E6; Case map*/ + '\u24CD', /*24CD; 24E7; Case map*/ + '\u24CE', /*24CE; 24E8; Case map*/ + '\u24CF', /*24CF; 24E9; Case map*/ + '\uFB00', /*FB00; 0066 0066; Case map*/ + '\uFB01', /*FB01; 0066 0069; Case map*/ + '\uFB02', /*FB02; 0066 006C; Case map*/ + '\uFB03', /*FB03; 0066 0066 0069; Case map*/ + '\uFB04', /*FB04; 0066 0066 006C; Case map*/ + '\uFB05', /*FB05; 0073 0074; Case map*/ + '\uFB06', /*FB06; 0073 0074; Case map*/ + '\uFB13', /*FB13; 0574 0576; Case map*/ + '\uFB14', /*FB14; 0574 0565; Case map*/ + '\uFB15', /*FB15; 0574 056B; Case map*/ + '\uFB16', /*FB16; 057E 0576; Case map*/ + '\uFB17', /*FB17; 0574 056D; Case map*/ + '\uFF21', /*FF21; FF41; Case map*/ + '\uFF22', /*FF22; FF42; Case map*/ + '\uFF23', /*FF23; FF43; Case map*/ + '\uFF24', /*FF24; FF44; Case map*/ + '\uFF25', /*FF25; FF45; Case map*/ + '\uFF26', /*FF26; FF46; Case map*/ + '\uFF27', /*FF27; FF47; Case map*/ + '\uFF28', /*FF28; FF48; Case map*/ + '\uFF29', /*FF29; FF49; Case map*/ + '\uFF2A', /*FF2A; FF4A; Case map*/ + '\uFF2B', /*FF2B; FF4B; Case map*/ + '\uFF2C', /*FF2C; FF4C; Case map*/ + '\uFF2D', /*FF2D; FF4D; Case map*/ + '\uFF2E', /*FF2E; FF4E; Case map*/ + '\uFF2F', /*FF2F; FF4F; Case map*/ + '\uFF30', /*FF30; FF50; Case map*/ + '\uFF31', /*FF31; FF51; Case map*/ + '\uFF32', /*FF32; FF52; Case map*/ + '\uFF33', /*FF33; FF53; Case map*/ + '\uFF34', /*FF34; FF54; Case map*/ + '\uFF35', /*FF35; FF55; Case map*/ + '\uFF36', /*FF36; FF56; Case map*/ + '\uFF37', /*FF37; FF57; Case map*/ + '\uFF38', /*FF38; FF58; Case map*/ + '\uFF39', /*FF39; FF59; Case map*/ + '\uFF3A', /*FF3A; FF5A; Case map*/ + }; + + public static string[] B3replace = new string[] { + "\u0061", /*0041; 0061; Case map*/ + "\u0062", /*0042; 0062; Case map*/ + "\u0063", /*0043; 0063; Case map*/ + "\u0064", /*0044; 0064; Case map*/ + "\u0065", /*0045; 0065; Case map*/ + "\u0066", /*0046; 0066; Case map*/ + "\u0067", /*0047; 0067; Case map*/ + "\u0068", /*0048; 0068; Case map*/ + "\u0069", /*0049; 0069; Case map*/ + "\u006A", /*004A; 006A; Case map*/ + "\u006B", /*004B; 006B; Case map*/ + "\u006C", /*004C; 006C; Case map*/ + "\u006D", /*004D; 006D; Case map*/ + "\u006E", /*004E; 006E; Case map*/ + "\u006F", /*004F; 006F; Case map*/ + "\u0070", /*0050; 0070; Case map*/ + "\u0071", /*0051; 0071; Case map*/ + "\u0072", /*0052; 0072; Case map*/ + "\u0073", /*0053; 0073; Case map*/ + "\u0074", /*0054; 0074; Case map*/ + "\u0075", /*0055; 0075; Case map*/ + "\u0076", /*0056; 0076; Case map*/ + "\u0077", /*0057; 0077; Case map*/ + "\u0078", /*0058; 0078; Case map*/ + "\u0079", /*0059; 0079; Case map*/ + "\u007A", /*005A; 007A; Case map*/ + "\u03BC", /*00B5; 03BC; Case map*/ + "\u00E0", /*00C0; 00E0; Case map*/ + "\u00E1", /*00C1; 00E1; Case map*/ + "\u00E2", /*00C2; 00E2; Case map*/ + "\u00E3", /*00C3; 00E3; Case map*/ + "\u00E4", /*00C4; 00E4; Case map*/ + "\u00E5", /*00C5; 00E5; Case map*/ + "\u00E6", /*00C6; 00E6; Case map*/ + "\u00E7", /*00C7; 00E7; Case map*/ + "\u00E8", /*00C8; 00E8; Case map*/ + "\u00E9", /*00C9; 00E9; Case map*/ + "\u00EA", /*00CA; 00EA; Case map*/ + "\u00EB", /*00CB; 00EB; Case map*/ + "\u00EC", /*00CC; 00EC; Case map*/ + "\u00ED", /*00CD; 00ED; Case map*/ + "\u00EE", /*00CE; 00EE; Case map*/ + "\u00EF", /*00CF; 00EF; Case map*/ + "\u00F0", /*00D0; 00F0; Case map*/ + "\u00F1", /*00D1; 00F1; Case map*/ + "\u00F2", /*00D2; 00F2; Case map*/ + "\u00F3", /*00D3; 00F3; Case map*/ + "\u00F4", /*00D4; 00F4; Case map*/ + "\u00F5", /*00D5; 00F5; Case map*/ + "\u00F6", /*00D6; 00F6; Case map*/ + "\u00F8", /*00D8; 00F8; Case map*/ + "\u00F9", /*00D9; 00F9; Case map*/ + "\u00FA", /*00DA; 00FA; Case map*/ + "\u00FB", /*00DB; 00FB; Case map*/ + "\u00FC", /*00DC; 00FC; Case map*/ + "\u00FD", /*00DD; 00FD; Case map*/ + "\u00FE", /*00DE; 00FE; Case map*/ + "\u0073\u0073", /*00DF; 0073 0073; Case map*/ + "\u0101", /*0100; 0101; Case map*/ + "\u0103", /*0102; 0103; Case map*/ + "\u0105", /*0104; 0105; Case map*/ + "\u0107", /*0106; 0107; Case map*/ + "\u0109", /*0108; 0109; Case map*/ + "\u010B", /*010A; 010B; Case map*/ + "\u010D", /*010C; 010D; Case map*/ + "\u010F", /*010E; 010F; Case map*/ + "\u0111", /*0110; 0111; Case map*/ + "\u0113", /*0112; 0113; Case map*/ + "\u0115", /*0114; 0115; Case map*/ + "\u0117", /*0116; 0117; Case map*/ + "\u0119", /*0118; 0119; Case map*/ + "\u011B", /*011A; 011B; Case map*/ + "\u011D", /*011C; 011D; Case map*/ + "\u011F", /*011E; 011F; Case map*/ + "\u0121", /*0120; 0121; Case map*/ + "\u0123", /*0122; 0123; Case map*/ + "\u0125", /*0124; 0125; Case map*/ + "\u0127", /*0126; 0127; Case map*/ + "\u0129", /*0128; 0129; Case map*/ + "\u012B", /*012A; 012B; Case map*/ + "\u012D", /*012C; 012D; Case map*/ + "\u012F", /*012E; 012F; Case map*/ + "\u0069\u0307", /*0130; 0069 0307; Case map*/ + "\u0133", /*0132; 0133; Case map*/ + "\u0135", /*0134; 0135; Case map*/ + "\u0137", /*0136; 0137; Case map*/ + "\u013A", /*0139; 013A; Case map*/ + "\u013C", /*013B; 013C; Case map*/ + "\u013E", /*013D; 013E; Case map*/ + "\u0140", /*013F; 0140; Case map*/ + "\u0142", /*0141; 0142; Case map*/ + "\u0144", /*0143; 0144; Case map*/ + "\u0146", /*0145; 0146; Case map*/ + "\u0148", /*0147; 0148; Case map*/ + "\u02BC\u006E", /*0149; 02BC 006E; Case map*/ + "\u014B", /*014A; 014B; Case map*/ + "\u014D", /*014C; 014D; Case map*/ + "\u014F", /*014E; 014F; Case map*/ + "\u0151", /*0150; 0151; Case map*/ + "\u0153", /*0152; 0153; Case map*/ + "\u0155", /*0154; 0155; Case map*/ + "\u0157", /*0156; 0157; Case map*/ + "\u0159", /*0158; 0159; Case map*/ + "\u015B", /*015A; 015B; Case map*/ + "\u015D", /*015C; 015D; Case map*/ + "\u015F", /*015E; 015F; Case map*/ + "\u0161", /*0160; 0161; Case map*/ + "\u0163", /*0162; 0163; Case map*/ + "\u0165", /*0164; 0165; Case map*/ + "\u0167", /*0166; 0167; Case map*/ + "\u0169", /*0168; 0169; Case map*/ + "\u016B", /*016A; 016B; Case map*/ + "\u016D", /*016C; 016D; Case map*/ + "\u016F", /*016E; 016F; Case map*/ + "\u0171", /*0170; 0171; Case map*/ + "\u0173", /*0172; 0173; Case map*/ + "\u0175", /*0174; 0175; Case map*/ + "\u0177", /*0176; 0177; Case map*/ + "\u00FF", /*0178; 00FF; Case map*/ + "\u017A", /*0179; 017A; Case map*/ + "\u017C", /*017B; 017C; Case map*/ + "\u017E", /*017D; 017E; Case map*/ + "\u0073", /*017F; 0073; Case map*/ + "\u0253", /*0181; 0253; Case map*/ + "\u0183", /*0182; 0183; Case map*/ + "\u0185", /*0184; 0185; Case map*/ + "\u0254", /*0186; 0254; Case map*/ + "\u0188", /*0187; 0188; Case map*/ + "\u0256", /*0189; 0256; Case map*/ + "\u0257", /*018A; 0257; Case map*/ + "\u018C", /*018B; 018C; Case map*/ + "\u01DD", /*018E; 01DD; Case map*/ + "\u0259", /*018F; 0259; Case map*/ + "\u025B", /*0190; 025B; Case map*/ + "\u0192", /*0191; 0192; Case map*/ + "\u0260", /*0193; 0260; Case map*/ + "\u0263", /*0194; 0263; Case map*/ + "\u0269", /*0196; 0269; Case map*/ + "\u0268", /*0197; 0268; Case map*/ + "\u0199", /*0198; 0199; Case map*/ + "\u026F", /*019C; 026F; Case map*/ + "\u0272", /*019D; 0272; Case map*/ + "\u0275", /*019F; 0275; Case map*/ + "\u01A1", /*01A0; 01A1; Case map*/ + "\u01A3", /*01A2; 01A3; Case map*/ + "\u01A5", /*01A4; 01A5; Case map*/ + "\u0280", /*01A6; 0280; Case map*/ + "\u01A8", /*01A7; 01A8; Case map*/ + "\u0283", /*01A9; 0283; Case map*/ + "\u01AD", /*01AC; 01AD; Case map*/ + "\u0288", /*01AE; 0288; Case map*/ + "\u01B0", /*01AF; 01B0; Case map*/ + "\u028A", /*01B1; 028A; Case map*/ + "\u028B", /*01B2; 028B; Case map*/ + "\u01B4", /*01B3; 01B4; Case map*/ + "\u01B6", /*01B5; 01B6; Case map*/ + "\u0292", /*01B7; 0292; Case map*/ + "\u01B9", /*01B8; 01B9; Case map*/ + "\u01BD", /*01BC; 01BD; Case map*/ + "\u01C6", /*01C4; 01C6; Case map*/ + "\u01C6", /*01C5; 01C6; Case map*/ + "\u01C9", /*01C7; 01C9; Case map*/ + "\u01C9", /*01C8; 01C9; Case map*/ + "\u01CC", /*01CA; 01CC; Case map*/ + "\u01CC", /*01CB; 01CC; Case map*/ + "\u01CE", /*01CD; 01CE; Case map*/ + "\u01D0", /*01CF; 01D0; Case map*/ + "\u01D2", /*01D1; 01D2; Case map*/ + "\u01D4", /*01D3; 01D4; Case map*/ + "\u01D6", /*01D5; 01D6; Case map*/ + "\u01D8", /*01D7; 01D8; Case map*/ + "\u01DA", /*01D9; 01DA; Case map*/ + "\u01DC", /*01DB; 01DC; Case map*/ + "\u01DF", /*01DE; 01DF; Case map*/ + "\u01E1", /*01E0; 01E1; Case map*/ + "\u01E3", /*01E2; 01E3; Case map*/ + "\u01E5", /*01E4; 01E5; Case map*/ + "\u01E7", /*01E6; 01E7; Case map*/ + "\u01E9", /*01E8; 01E9; Case map*/ + "\u01EB", /*01EA; 01EB; Case map*/ + "\u01ED", /*01EC; 01ED; Case map*/ + "\u01EF", /*01EE; 01EF; Case map*/ + "\u006A\u030C", /*01F0; 006A 030C; Case map*/ + "\u01F3", /*01F1; 01F3; Case map*/ + "\u01F3", /*01F2; 01F3; Case map*/ + "\u01F5", /*01F4; 01F5; Case map*/ + "\u0195", /*01F6; 0195; Case map*/ + "\u01BF", /*01F7; 01BF; Case map*/ + "\u01F9", /*01F8; 01F9; Case map*/ + "\u01FB", /*01FA; 01FB; Case map*/ + "\u01FD", /*01FC; 01FD; Case map*/ + "\u01FF", /*01FE; 01FF; Case map*/ + "\u0201", /*0200; 0201; Case map*/ + "\u0203", /*0202; 0203; Case map*/ + "\u0205", /*0204; 0205; Case map*/ + "\u0207", /*0206; 0207; Case map*/ + "\u0209", /*0208; 0209; Case map*/ + "\u020B", /*020A; 020B; Case map*/ + "\u020D", /*020C; 020D; Case map*/ + "\u020F", /*020E; 020F; Case map*/ + "\u0211", /*0210; 0211; Case map*/ + "\u0213", /*0212; 0213; Case map*/ + "\u0215", /*0214; 0215; Case map*/ + "\u0217", /*0216; 0217; Case map*/ + "\u0219", /*0218; 0219; Case map*/ + "\u021B", /*021A; 021B; Case map*/ + "\u021D", /*021C; 021D; Case map*/ + "\u021F", /*021E; 021F; Case map*/ + "\u019E", /*0220; 019E; Case map*/ + "\u0223", /*0222; 0223; Case map*/ + "\u0225", /*0224; 0225; Case map*/ + "\u0227", /*0226; 0227; Case map*/ + "\u0229", /*0228; 0229; Case map*/ + "\u022B", /*022A; 022B; Case map*/ + "\u022D", /*022C; 022D; Case map*/ + "\u022F", /*022E; 022F; Case map*/ + "\u0231", /*0230; 0231; Case map*/ + "\u0233", /*0232; 0233; Case map*/ + "\u03B9", /*0345; 03B9; Case map*/ + "\u03AC", /*0386; 03AC; Case map*/ + "\u03AD", /*0388; 03AD; Case map*/ + "\u03AE", /*0389; 03AE; Case map*/ + "\u03AF", /*038A; 03AF; Case map*/ + "\u03CC", /*038C; 03CC; Case map*/ + "\u03CD", /*038E; 03CD; Case map*/ + "\u03CE", /*038F; 03CE; Case map*/ + "\u03B9\u0308\u0301", /*0390; 03B9 0308 0301; Case map*/ + "\u03B1", /*0391; 03B1; Case map*/ + "\u03B2", /*0392; 03B2; Case map*/ + "\u03B3", /*0393; 03B3; Case map*/ + "\u03B4", /*0394; 03B4; Case map*/ + "\u03B5", /*0395; 03B5; Case map*/ + "\u03B6", /*0396; 03B6; Case map*/ + "\u03B7", /*0397; 03B7; Case map*/ + "\u03B8", /*0398; 03B8; Case map*/ + "\u03B9", /*0399; 03B9; Case map*/ + "\u03BA", /*039A; 03BA; Case map*/ + "\u03BB", /*039B; 03BB; Case map*/ + "\u03BC", /*039C; 03BC; Case map*/ + "\u03BD", /*039D; 03BD; Case map*/ + "\u03BE", /*039E; 03BE; Case map*/ + "\u03BF", /*039F; 03BF; Case map*/ + "\u03C0", /*03A0; 03C0; Case map*/ + "\u03C1", /*03A1; 03C1; Case map*/ + "\u03C3", /*03A3; 03C3; Case map*/ + "\u03C4", /*03A4; 03C4; Case map*/ + "\u03C5", /*03A5; 03C5; Case map*/ + "\u03C6", /*03A6; 03C6; Case map*/ + "\u03C7", /*03A7; 03C7; Case map*/ + "\u03C8", /*03A8; 03C8; Case map*/ + "\u03C9", /*03A9; 03C9; Case map*/ + "\u03CA", /*03AA; 03CA; Case map*/ + "\u03CB", /*03AB; 03CB; Case map*/ + "\u03C5\u0308\u0301", /*03B0; 03C5 0308 0301; Case map*/ + "\u03C3", /*03C2; 03C3; Case map*/ + "\u03B2", /*03D0; 03B2; Case map*/ + "\u03B8", /*03D1; 03B8; Case map*/ + "\u03C6", /*03D5; 03C6; Case map*/ + "\u03C0", /*03D6; 03C0; Case map*/ + "\u03D9", /*03D8; 03D9; Case map*/ + "\u03DB", /*03DA; 03DB; Case map*/ + "\u03DD", /*03DC; 03DD; Case map*/ + "\u03DF", /*03DE; 03DF; Case map*/ + "\u03E1", /*03E0; 03E1; Case map*/ + "\u03E3", /*03E2; 03E3; Case map*/ + "\u03E5", /*03E4; 03E5; Case map*/ + "\u03E7", /*03E6; 03E7; Case map*/ + "\u03E9", /*03E8; 03E9; Case map*/ + "\u03EB", /*03EA; 03EB; Case map*/ + "\u03ED", /*03EC; 03ED; Case map*/ + "\u03EF", /*03EE; 03EF; Case map*/ + "\u03BA", /*03F0; 03BA; Case map*/ + "\u03C1", /*03F1; 03C1; Case map*/ + "\u03C3", /*03F2; 03C3; Case map*/ + "\u03B8", /*03F4; 03B8; Case map*/ + "\u03B5", /*03F5; 03B5; Case map*/ + "\u0450", /*0400; 0450; Case map*/ + "\u0451", /*0401; 0451; Case map*/ + "\u0452", /*0402; 0452; Case map*/ + "\u0453", /*0403; 0453; Case map*/ + "\u0454", /*0404; 0454; Case map*/ + "\u0455", /*0405; 0455; Case map*/ + "\u0456", /*0406; 0456; Case map*/ + "\u0457", /*0407; 0457; Case map*/ + "\u0458", /*0408; 0458; Case map*/ + "\u0459", /*0409; 0459; Case map*/ + "\u045A", /*040A; 045A; Case map*/ + "\u045B", /*040B; 045B; Case map*/ + "\u045C", /*040C; 045C; Case map*/ + "\u045D", /*040D; 045D; Case map*/ + "\u045E", /*040E; 045E; Case map*/ + "\u045F", /*040F; 045F; Case map*/ + "\u0430", /*0410; 0430; Case map*/ + "\u0431", /*0411; 0431; Case map*/ + "\u0432", /*0412; 0432; Case map*/ + "\u0433", /*0413; 0433; Case map*/ + "\u0434", /*0414; 0434; Case map*/ + "\u0435", /*0415; 0435; Case map*/ + "\u0436", /*0416; 0436; Case map*/ + "\u0437", /*0417; 0437; Case map*/ + "\u0438", /*0418; 0438; Case map*/ + "\u0439", /*0419; 0439; Case map*/ + "\u043A", /*041A; 043A; Case map*/ + "\u043B", /*041B; 043B; Case map*/ + "\u043C", /*041C; 043C; Case map*/ + "\u043D", /*041D; 043D; Case map*/ + "\u043E", /*041E; 043E; Case map*/ + "\u043F", /*041F; 043F; Case map*/ + "\u0440", /*0420; 0440; Case map*/ + "\u0441", /*0421; 0441; Case map*/ + "\u0442", /*0422; 0442; Case map*/ + "\u0443", /*0423; 0443; Case map*/ + "\u0444", /*0424; 0444; Case map*/ + "\u0445", /*0425; 0445; Case map*/ + "\u0446", /*0426; 0446; Case map*/ + "\u0447", /*0427; 0447; Case map*/ + "\u0448", /*0428; 0448; Case map*/ + "\u0449", /*0429; 0449; Case map*/ + "\u044A", /*042A; 044A; Case map*/ + "\u044B", /*042B; 044B; Case map*/ + "\u044C", /*042C; 044C; Case map*/ + "\u044D", /*042D; 044D; Case map*/ + "\u044E", /*042E; 044E; Case map*/ + "\u044F", /*042F; 044F; Case map*/ + "\u0461", /*0460; 0461; Case map*/ + "\u0463", /*0462; 0463; Case map*/ + "\u0465", /*0464; 0465; Case map*/ + "\u0467", /*0466; 0467; Case map*/ + "\u0469", /*0468; 0469; Case map*/ + "\u046B", /*046A; 046B; Case map*/ + "\u046D", /*046C; 046D; Case map*/ + "\u046F", /*046E; 046F; Case map*/ + "\u0471", /*0470; 0471; Case map*/ + "\u0473", /*0472; 0473; Case map*/ + "\u0475", /*0474; 0475; Case map*/ + "\u0477", /*0476; 0477; Case map*/ + "\u0479", /*0478; 0479; Case map*/ + "\u047B", /*047A; 047B; Case map*/ + "\u047D", /*047C; 047D; Case map*/ + "\u047F", /*047E; 047F; Case map*/ + "\u0481", /*0480; 0481; Case map*/ + "\u048B", /*048A; 048B; Case map*/ + "\u048D", /*048C; 048D; Case map*/ + "\u048F", /*048E; 048F; Case map*/ + "\u0491", /*0490; 0491; Case map*/ + "\u0493", /*0492; 0493; Case map*/ + "\u0495", /*0494; 0495; Case map*/ + "\u0497", /*0496; 0497; Case map*/ + "\u0499", /*0498; 0499; Case map*/ + "\u049B", /*049A; 049B; Case map*/ + "\u049D", /*049C; 049D; Case map*/ + "\u049F", /*049E; 049F; Case map*/ + "\u04A1", /*04A0; 04A1; Case map*/ + "\u04A3", /*04A2; 04A3; Case map*/ + "\u04A5", /*04A4; 04A5; Case map*/ + "\u04A7", /*04A6; 04A7; Case map*/ + "\u04A9", /*04A8; 04A9; Case map*/ + "\u04AB", /*04AA; 04AB; Case map*/ + "\u04AD", /*04AC; 04AD; Case map*/ + "\u04AF", /*04AE; 04AF; Case map*/ + "\u04B1", /*04B0; 04B1; Case map*/ + "\u04B3", /*04B2; 04B3; Case map*/ + "\u04B5", /*04B4; 04B5; Case map*/ + "\u04B7", /*04B6; 04B7; Case map*/ + "\u04B9", /*04B8; 04B9; Case map*/ + "\u04BB", /*04BA; 04BB; Case map*/ + "\u04BD", /*04BC; 04BD; Case map*/ + "\u04BF", /*04BE; 04BF; Case map*/ + "\u04C2", /*04C1; 04C2; Case map*/ + "\u04C4", /*04C3; 04C4; Case map*/ + "\u04C6", /*04C5; 04C6; Case map*/ + "\u04C8", /*04C7; 04C8; Case map*/ + "\u04CA", /*04C9; 04CA; Case map*/ + "\u04CC", /*04CB; 04CC; Case map*/ + "\u04CE", /*04CD; 04CE; Case map*/ + "\u04D1", /*04D0; 04D1; Case map*/ + "\u04D3", /*04D2; 04D3; Case map*/ + "\u04D5", /*04D4; 04D5; Case map*/ + "\u04D7", /*04D6; 04D7; Case map*/ + "\u04D9", /*04D8; 04D9; Case map*/ + "\u04DB", /*04DA; 04DB; Case map*/ + "\u04DD", /*04DC; 04DD; Case map*/ + "\u04DF", /*04DE; 04DF; Case map*/ + "\u04E1", /*04E0; 04E1; Case map*/ + "\u04E3", /*04E2; 04E3; Case map*/ + "\u04E5", /*04E4; 04E5; Case map*/ + "\u04E7", /*04E6; 04E7; Case map*/ + "\u04E9", /*04E8; 04E9; Case map*/ + "\u04EB", /*04EA; 04EB; Case map*/ + "\u04ED", /*04EC; 04ED; Case map*/ + "\u04EF", /*04EE; 04EF; Case map*/ + "\u04F1", /*04F0; 04F1; Case map*/ + "\u04F3", /*04F2; 04F3; Case map*/ + "\u04F5", /*04F4; 04F5; Case map*/ + "\u04F9", /*04F8; 04F9; Case map*/ + "\u0501", /*0500; 0501; Case map*/ + "\u0503", /*0502; 0503; Case map*/ + "\u0505", /*0504; 0505; Case map*/ + "\u0507", /*0506; 0507; Case map*/ + "\u0509", /*0508; 0509; Case map*/ + "\u050B", /*050A; 050B; Case map*/ + "\u050D", /*050C; 050D; Case map*/ + "\u050F", /*050E; 050F; Case map*/ + "\u0561", /*0531; 0561; Case map*/ + "\u0562", /*0532; 0562; Case map*/ + "\u0563", /*0533; 0563; Case map*/ + "\u0564", /*0534; 0564; Case map*/ + "\u0565", /*0535; 0565; Case map*/ + "\u0566", /*0536; 0566; Case map*/ + "\u0567", /*0537; 0567; Case map*/ + "\u0568", /*0538; 0568; Case map*/ + "\u0569", /*0539; 0569; Case map*/ + "\u056A", /*053A; 056A; Case map*/ + "\u056B", /*053B; 056B; Case map*/ + "\u056C", /*053C; 056C; Case map*/ + "\u056D", /*053D; 056D; Case map*/ + "\u056E", /*053E; 056E; Case map*/ + "\u056F", /*053F; 056F; Case map*/ + "\u0570", /*0540; 0570; Case map*/ + "\u0571", /*0541; 0571; Case map*/ + "\u0572", /*0542; 0572; Case map*/ + "\u0573", /*0543; 0573; Case map*/ + "\u0574", /*0544; 0574; Case map*/ + "\u0575", /*0545; 0575; Case map*/ + "\u0576", /*0546; 0576; Case map*/ + "\u0577", /*0547; 0577; Case map*/ + "\u0578", /*0548; 0578; Case map*/ + "\u0579", /*0549; 0579; Case map*/ + "\u057A", /*054A; 057A; Case map*/ + "\u057B", /*054B; 057B; Case map*/ + "\u057C", /*054C; 057C; Case map*/ + "\u057D", /*054D; 057D; Case map*/ + "\u057E", /*054E; 057E; Case map*/ + "\u057F", /*054F; 057F; Case map*/ + "\u0580", /*0550; 0580; Case map*/ + "\u0581", /*0551; 0581; Case map*/ + "\u0582", /*0552; 0582; Case map*/ + "\u0583", /*0553; 0583; Case map*/ + "\u0584", /*0554; 0584; Case map*/ + "\u0585", /*0555; 0585; Case map*/ + "\u0586", /*0556; 0586; Case map*/ + "\u0565\u0582", /*0587; 0565 0582; Case map*/ + "\u1E01", /*1E00; 1E01; Case map*/ + "\u1E03", /*1E02; 1E03; Case map*/ + "\u1E05", /*1E04; 1E05; Case map*/ + "\u1E07", /*1E06; 1E07; Case map*/ + "\u1E09", /*1E08; 1E09; Case map*/ + "\u1E0B", /*1E0A; 1E0B; Case map*/ + "\u1E0D", /*1E0C; 1E0D; Case map*/ + "\u1E0F", /*1E0E; 1E0F; Case map*/ + "\u1E11", /*1E10; 1E11; Case map*/ + "\u1E13", /*1E12; 1E13; Case map*/ + "\u1E15", /*1E14; 1E15; Case map*/ + "\u1E17", /*1E16; 1E17; Case map*/ + "\u1E19", /*1E18; 1E19; Case map*/ + "\u1E1B", /*1E1A; 1E1B; Case map*/ + "\u1E1D", /*1E1C; 1E1D; Case map*/ + "\u1E1F", /*1E1E; 1E1F; Case map*/ + "\u1E21", /*1E20; 1E21; Case map*/ + "\u1E23", /*1E22; 1E23; Case map*/ + "\u1E25", /*1E24; 1E25; Case map*/ + "\u1E27", /*1E26; 1E27; Case map*/ + "\u1E29", /*1E28; 1E29; Case map*/ + "\u1E2B", /*1E2A; 1E2B; Case map*/ + "\u1E2D", /*1E2C; 1E2D; Case map*/ + "\u1E2F", /*1E2E; 1E2F; Case map*/ + "\u1E31", /*1E30; 1E31; Case map*/ + "\u1E33", /*1E32; 1E33; Case map*/ + "\u1E35", /*1E34; 1E35; Case map*/ + "\u1E37", /*1E36; 1E37; Case map*/ + "\u1E39", /*1E38; 1E39; Case map*/ + "\u1E3B", /*1E3A; 1E3B; Case map*/ + "\u1E3D", /*1E3C; 1E3D; Case map*/ + "\u1E3F", /*1E3E; 1E3F; Case map*/ + "\u1E41", /*1E40; 1E41; Case map*/ + "\u1E43", /*1E42; 1E43; Case map*/ + "\u1E45", /*1E44; 1E45; Case map*/ + "\u1E47", /*1E46; 1E47; Case map*/ + "\u1E49", /*1E48; 1E49; Case map*/ + "\u1E4B", /*1E4A; 1E4B; Case map*/ + "\u1E4D", /*1E4C; 1E4D; Case map*/ + "\u1E4F", /*1E4E; 1E4F; Case map*/ + "\u1E51", /*1E50; 1E51; Case map*/ + "\u1E53", /*1E52; 1E53; Case map*/ + "\u1E55", /*1E54; 1E55; Case map*/ + "\u1E57", /*1E56; 1E57; Case map*/ + "\u1E59", /*1E58; 1E59; Case map*/ + "\u1E5B", /*1E5A; 1E5B; Case map*/ + "\u1E5D", /*1E5C; 1E5D; Case map*/ + "\u1E5F", /*1E5E; 1E5F; Case map*/ + "\u1E61", /*1E60; 1E61; Case map*/ + "\u1E63", /*1E62; 1E63; Case map*/ + "\u1E65", /*1E64; 1E65; Case map*/ + "\u1E67", /*1E66; 1E67; Case map*/ + "\u1E69", /*1E68; 1E69; Case map*/ + "\u1E6B", /*1E6A; 1E6B; Case map*/ + "\u1E6D", /*1E6C; 1E6D; Case map*/ + "\u1E6F", /*1E6E; 1E6F; Case map*/ + "\u1E71", /*1E70; 1E71; Case map*/ + "\u1E73", /*1E72; 1E73; Case map*/ + "\u1E75", /*1E74; 1E75; Case map*/ + "\u1E77", /*1E76; 1E77; Case map*/ + "\u1E79", /*1E78; 1E79; Case map*/ + "\u1E7B", /*1E7A; 1E7B; Case map*/ + "\u1E7D", /*1E7C; 1E7D; Case map*/ + "\u1E7F", /*1E7E; 1E7F; Case map*/ + "\u1E81", /*1E80; 1E81; Case map*/ + "\u1E83", /*1E82; 1E83; Case map*/ + "\u1E85", /*1E84; 1E85; Case map*/ + "\u1E87", /*1E86; 1E87; Case map*/ + "\u1E89", /*1E88; 1E89; Case map*/ + "\u1E8B", /*1E8A; 1E8B; Case map*/ + "\u1E8D", /*1E8C; 1E8D; Case map*/ + "\u1E8F", /*1E8E; 1E8F; Case map*/ + "\u1E91", /*1E90; 1E91; Case map*/ + "\u1E93", /*1E92; 1E93; Case map*/ + "\u1E95", /*1E94; 1E95; Case map*/ + "\u0068\u0331", /*1E96; 0068 0331; Case map*/ + "\u0074\u0308", /*1E97; 0074 0308; Case map*/ + "\u0077\u030A", /*1E98; 0077 030A; Case map*/ + "\u0079\u030A", /*1E99; 0079 030A; Case map*/ + "\u0061\u02BE", /*1E9A; 0061 02BE; Case map*/ + "\u1E61", /*1E9B; 1E61; Case map*/ + "\u1EA1", /*1EA0; 1EA1; Case map*/ + "\u1EA3", /*1EA2; 1EA3; Case map*/ + "\u1EA5", /*1EA4; 1EA5; Case map*/ + "\u1EA7", /*1EA6; 1EA7; Case map*/ + "\u1EA9", /*1EA8; 1EA9; Case map*/ + "\u1EAB", /*1EAA; 1EAB; Case map*/ + "\u1EAD", /*1EAC; 1EAD; Case map*/ + "\u1EAF", /*1EAE; 1EAF; Case map*/ + "\u1EB1", /*1EB0; 1EB1; Case map*/ + "\u1EB3", /*1EB2; 1EB3; Case map*/ + "\u1EB5", /*1EB4; 1EB5; Case map*/ + "\u1EB7", /*1EB6; 1EB7; Case map*/ + "\u1EB9", /*1EB8; 1EB9; Case map*/ + "\u1EBB", /*1EBA; 1EBB; Case map*/ + "\u1EBD", /*1EBC; 1EBD; Case map*/ + "\u1EBF", /*1EBE; 1EBF; Case map*/ + "\u1EC1", /*1EC0; 1EC1; Case map*/ + "\u1EC3", /*1EC2; 1EC3; Case map*/ + "\u1EC5", /*1EC4; 1EC5; Case map*/ + "\u1EC7", /*1EC6; 1EC7; Case map*/ + "\u1EC9", /*1EC8; 1EC9; Case map*/ + "\u1ECB", /*1ECA; 1ECB; Case map*/ + "\u1ECD", /*1ECC; 1ECD; Case map*/ + "\u1ECF", /*1ECE; 1ECF; Case map*/ + "\u1ED1", /*1ED0; 1ED1; Case map*/ + "\u1ED3", /*1ED2; 1ED3; Case map*/ + "\u1ED5", /*1ED4; 1ED5; Case map*/ + "\u1ED7", /*1ED6; 1ED7; Case map*/ + "\u1ED9", /*1ED8; 1ED9; Case map*/ + "\u1EDB", /*1EDA; 1EDB; Case map*/ + "\u1EDD", /*1EDC; 1EDD; Case map*/ + "\u1EDF", /*1EDE; 1EDF; Case map*/ + "\u1EE1", /*1EE0; 1EE1; Case map*/ + "\u1EE3", /*1EE2; 1EE3; Case map*/ + "\u1EE5", /*1EE4; 1EE5; Case map*/ + "\u1EE7", /*1EE6; 1EE7; Case map*/ + "\u1EE9", /*1EE8; 1EE9; Case map*/ + "\u1EEB", /*1EEA; 1EEB; Case map*/ + "\u1EED", /*1EEC; 1EED; Case map*/ + "\u1EEF", /*1EEE; 1EEF; Case map*/ + "\u1EF1", /*1EF0; 1EF1; Case map*/ + "\u1EF3", /*1EF2; 1EF3; Case map*/ + "\u1EF5", /*1EF4; 1EF5; Case map*/ + "\u1EF7", /*1EF6; 1EF7; Case map*/ + "\u1EF9", /*1EF8; 1EF9; Case map*/ + "\u1F00", /*1F08; 1F00; Case map*/ + "\u1F01", /*1F09; 1F01; Case map*/ + "\u1F02", /*1F0A; 1F02; Case map*/ + "\u1F03", /*1F0B; 1F03; Case map*/ + "\u1F04", /*1F0C; 1F04; Case map*/ + "\u1F05", /*1F0D; 1F05; Case map*/ + "\u1F06", /*1F0E; 1F06; Case map*/ + "\u1F07", /*1F0F; 1F07; Case map*/ + "\u1F10", /*1F18; 1F10; Case map*/ + "\u1F11", /*1F19; 1F11; Case map*/ + "\u1F12", /*1F1A; 1F12; Case map*/ + "\u1F13", /*1F1B; 1F13; Case map*/ + "\u1F14", /*1F1C; 1F14; Case map*/ + "\u1F15", /*1F1D; 1F15; Case map*/ + "\u1F20", /*1F28; 1F20; Case map*/ + "\u1F21", /*1F29; 1F21; Case map*/ + "\u1F22", /*1F2A; 1F22; Case map*/ + "\u1F23", /*1F2B; 1F23; Case map*/ + "\u1F24", /*1F2C; 1F24; Case map*/ + "\u1F25", /*1F2D; 1F25; Case map*/ + "\u1F26", /*1F2E; 1F26; Case map*/ + "\u1F27", /*1F2F; 1F27; Case map*/ + "\u1F30", /*1F38; 1F30; Case map*/ + "\u1F31", /*1F39; 1F31; Case map*/ + "\u1F32", /*1F3A; 1F32; Case map*/ + "\u1F33", /*1F3B; 1F33; Case map*/ + "\u1F34", /*1F3C; 1F34; Case map*/ + "\u1F35", /*1F3D; 1F35; Case map*/ + "\u1F36", /*1F3E; 1F36; Case map*/ + "\u1F37", /*1F3F; 1F37; Case map*/ + "\u1F40", /*1F48; 1F40; Case map*/ + "\u1F41", /*1F49; 1F41; Case map*/ + "\u1F42", /*1F4A; 1F42; Case map*/ + "\u1F43", /*1F4B; 1F43; Case map*/ + "\u1F44", /*1F4C; 1F44; Case map*/ + "\u1F45", /*1F4D; 1F45; Case map*/ + "\u03C5\u0313", /*1F50; 03C5 0313; Case map*/ + "\u03C5\u0313\u0300", /*1F52; 03C5 0313 0300; Case map*/ + "\u03C5\u0313\u0301", /*1F54; 03C5 0313 0301; Case map*/ + "\u03C5\u0313\u0342", /*1F56; 03C5 0313 0342; Case map*/ + "\u1F51", /*1F59; 1F51; Case map*/ + "\u1F53", /*1F5B; 1F53; Case map*/ + "\u1F55", /*1F5D; 1F55; Case map*/ + "\u1F57", /*1F5F; 1F57; Case map*/ + "\u1F60", /*1F68; 1F60; Case map*/ + "\u1F61", /*1F69; 1F61; Case map*/ + "\u1F62", /*1F6A; 1F62; Case map*/ + "\u1F63", /*1F6B; 1F63; Case map*/ + "\u1F64", /*1F6C; 1F64; Case map*/ + "\u1F65", /*1F6D; 1F65; Case map*/ + "\u1F66", /*1F6E; 1F66; Case map*/ + "\u1F67", /*1F6F; 1F67; Case map*/ + "\u1F00\u03B9", /*1F80; 1F00 03B9; Case map*/ + "\u1F01\u03B9", /*1F81; 1F01 03B9; Case map*/ + "\u1F02\u03B9", /*1F82; 1F02 03B9; Case map*/ + "\u1F03\u03B9", /*1F83; 1F03 03B9; Case map*/ + "\u1F04\u03B9", /*1F84; 1F04 03B9; Case map*/ + "\u1F05\u03B9", /*1F85; 1F05 03B9; Case map*/ + "\u1F06\u03B9", /*1F86; 1F06 03B9; Case map*/ + "\u1F07\u03B9", /*1F87; 1F07 03B9; Case map*/ + "\u1F00\u03B9", /*1F88; 1F00 03B9; Case map*/ + "\u1F01\u03B9", /*1F89; 1F01 03B9; Case map*/ + "\u1F02\u03B9", /*1F8A; 1F02 03B9; Case map*/ + "\u1F03\u03B9", /*1F8B; 1F03 03B9; Case map*/ + "\u1F04\u03B9", /*1F8C; 1F04 03B9; Case map*/ + "\u1F05\u03B9", /*1F8D; 1F05 03B9; Case map*/ + "\u1F06\u03B9", /*1F8E; 1F06 03B9; Case map*/ + "\u1F07\u03B9", /*1F8F; 1F07 03B9; Case map*/ + "\u1F20\u03B9", /*1F90; 1F20 03B9; Case map*/ + "\u1F21\u03B9", /*1F91; 1F21 03B9; Case map*/ + "\u1F22\u03B9", /*1F92; 1F22 03B9; Case map*/ + "\u1F23\u03B9", /*1F93; 1F23 03B9; Case map*/ + "\u1F24\u03B9", /*1F94; 1F24 03B9; Case map*/ + "\u1F25\u03B9", /*1F95; 1F25 03B9; Case map*/ + "\u1F26\u03B9", /*1F96; 1F26 03B9; Case map*/ + "\u1F27\u03B9", /*1F97; 1F27 03B9; Case map*/ + "\u1F20\u03B9", /*1F98; 1F20 03B9; Case map*/ + "\u1F21\u03B9", /*1F99; 1F21 03B9; Case map*/ + "\u1F22\u03B9", /*1F9A; 1F22 03B9; Case map*/ + "\u1F23\u03B9", /*1F9B; 1F23 03B9; Case map*/ + "\u1F24\u03B9", /*1F9C; 1F24 03B9; Case map*/ + "\u1F25\u03B9", /*1F9D; 1F25 03B9; Case map*/ + "\u1F26\u03B9", /*1F9E; 1F26 03B9; Case map*/ + "\u1F27\u03B9", /*1F9F; 1F27 03B9; Case map*/ + "\u1F60\u03B9", /*1FA0; 1F60 03B9; Case map*/ + "\u1F61\u03B9", /*1FA1; 1F61 03B9; Case map*/ + "\u1F62\u03B9", /*1FA2; 1F62 03B9; Case map*/ + "\u1F63\u03B9", /*1FA3; 1F63 03B9; Case map*/ + "\u1F64\u03B9", /*1FA4; 1F64 03B9; Case map*/ + "\u1F65\u03B9", /*1FA5; 1F65 03B9; Case map*/ + "\u1F66\u03B9", /*1FA6; 1F66 03B9; Case map*/ + "\u1F67\u03B9", /*1FA7; 1F67 03B9; Case map*/ + "\u1F60\u03B9", /*1FA8; 1F60 03B9; Case map*/ + "\u1F61\u03B9", /*1FA9; 1F61 03B9; Case map*/ + "\u1F62\u03B9", /*1FAA; 1F62 03B9; Case map*/ + "\u1F63\u03B9", /*1FAB; 1F63 03B9; Case map*/ + "\u1F64\u03B9", /*1FAC; 1F64 03B9; Case map*/ + "\u1F65\u03B9", /*1FAD; 1F65 03B9; Case map*/ + "\u1F66\u03B9", /*1FAE; 1F66 03B9; Case map*/ + "\u1F67\u03B9", /*1FAF; 1F67 03B9; Case map*/ + "\u1F70\u03B9", /*1FB2; 1F70 03B9; Case map*/ + "\u03B1\u03B9", /*1FB3; 03B1 03B9; Case map*/ + "\u03AC\u03B9", /*1FB4; 03AC 03B9; Case map*/ + "\u03B1\u0342", /*1FB6; 03B1 0342; Case map*/ + "\u03B1\u0342\u03B9", /*1FB7; 03B1 0342 03B9; Case map*/ + "\u1FB0", /*1FB8; 1FB0; Case map*/ + "\u1FB1", /*1FB9; 1FB1; Case map*/ + "\u1F70", /*1FBA; 1F70; Case map*/ + "\u1F71", /*1FBB; 1F71; Case map*/ + "\u03B1\u03B9", /*1FBC; 03B1 03B9; Case map*/ + "\u03B9", /*1FBE; 03B9; Case map*/ + "\u1F74\u03B9", /*1FC2; 1F74 03B9; Case map*/ + "\u03B7\u03B9", /*1FC3; 03B7 03B9; Case map*/ + "\u03AE\u03B9", /*1FC4; 03AE 03B9; Case map*/ + "\u03B7\u0342", /*1FC6; 03B7 0342; Case map*/ + "\u03B7\u0342\u03B9", /*1FC7; 03B7 0342 03B9; Case map*/ + "\u1F72", /*1FC8; 1F72; Case map*/ + "\u1F73", /*1FC9; 1F73; Case map*/ + "\u1F74", /*1FCA; 1F74; Case map*/ + "\u1F75", /*1FCB; 1F75; Case map*/ + "\u03B7\u03B9", /*1FCC; 03B7 03B9; Case map*/ + "\u03B9\u0308\u0300", /*1FD2; 03B9 0308 0300; Case map*/ + "\u03B9\u0308\u0301", /*1FD3; 03B9 0308 0301; Case map*/ + "\u03B9\u0342", /*1FD6; 03B9 0342; Case map*/ + "\u03B9\u0308\u0342", /*1FD7; 03B9 0308 0342; Case map*/ + "\u1FD0", /*1FD8; 1FD0; Case map*/ + "\u1FD1", /*1FD9; 1FD1; Case map*/ + "\u1F76", /*1FDA; 1F76; Case map*/ + "\u1F77", /*1FDB; 1F77; Case map*/ + "\u03C5\u0308\u0300", /*1FE2; 03C5 0308 0300; Case map*/ + "\u03C5\u0308\u0301", /*1FE3; 03C5 0308 0301; Case map*/ + "\u03C1\u0313", /*1FE4; 03C1 0313; Case map*/ + "\u03C5\u0342", /*1FE6; 03C5 0342; Case map*/ + "\u03C5\u0308\u0342", /*1FE7; 03C5 0308 0342; Case map*/ + "\u1FE0", /*1FE8; 1FE0; Case map*/ + "\u1FE1", /*1FE9; 1FE1; Case map*/ + "\u1F7A", /*1FEA; 1F7A; Case map*/ + "\u1F7B", /*1FEB; 1F7B; Case map*/ + "\u1FE5", /*1FEC; 1FE5; Case map*/ + "\u1F7C\u03B9", /*1FF2; 1F7C 03B9; Case map*/ + "\u03C9\u03B9", /*1FF3; 03C9 03B9; Case map*/ + "\u03CE\u03B9", /*1FF4; 03CE 03B9; Case map*/ + "\u03C9\u0342", /*1FF6; 03C9 0342; Case map*/ + "\u03C9\u0342\u03B9", /*1FF7; 03C9 0342 03B9; Case map*/ + "\u1F78", /*1FF8; 1F78; Case map*/ + "\u1F79", /*1FF9; 1F79; Case map*/ + "\u1F7C", /*1FFA; 1F7C; Case map*/ + "\u1F7D", /*1FFB; 1F7D; Case map*/ + "\u03C9\u03B9", /*1FFC; 03C9 03B9; Case map*/ + "\u03C9", /*2126; 03C9; Case map*/ + "\u006B", /*212A; 006B; Case map*/ + "\u00E5", /*212B; 00E5; Case map*/ + "\u2170", /*2160; 2170; Case map*/ + "\u2171", /*2161; 2171; Case map*/ + "\u2172", /*2162; 2172; Case map*/ + "\u2173", /*2163; 2173; Case map*/ + "\u2174", /*2164; 2174; Case map*/ + "\u2175", /*2165; 2175; Case map*/ + "\u2176", /*2166; 2176; Case map*/ + "\u2177", /*2167; 2177; Case map*/ + "\u2178", /*2168; 2178; Case map*/ + "\u2179", /*2169; 2179; Case map*/ + "\u217A", /*216A; 217A; Case map*/ + "\u217B", /*216B; 217B; Case map*/ + "\u217C", /*216C; 217C; Case map*/ + "\u217D", /*216D; 217D; Case map*/ + "\u217E", /*216E; 217E; Case map*/ + "\u217F", /*216F; 217F; Case map*/ + "\u24D0", /*24B6; 24D0; Case map*/ + "\u24D1", /*24B7; 24D1; Case map*/ + "\u24D2", /*24B8; 24D2; Case map*/ + "\u24D3", /*24B9; 24D3; Case map*/ + "\u24D4", /*24BA; 24D4; Case map*/ + "\u24D5", /*24BB; 24D5; Case map*/ + "\u24D6", /*24BC; 24D6; Case map*/ + "\u24D7", /*24BD; 24D7; Case map*/ + "\u24D8", /*24BE; 24D8; Case map*/ + "\u24D9", /*24BF; 24D9; Case map*/ + "\u24DA", /*24C0; 24DA; Case map*/ + "\u24DB", /*24C1; 24DB; Case map*/ + "\u24DC", /*24C2; 24DC; Case map*/ + "\u24DD", /*24C3; 24DD; Case map*/ + "\u24DE", /*24C4; 24DE; Case map*/ + "\u24DF", /*24C5; 24DF; Case map*/ + "\u24E0", /*24C6; 24E0; Case map*/ + "\u24E1", /*24C7; 24E1; Case map*/ + "\u24E2", /*24C8; 24E2; Case map*/ + "\u24E3", /*24C9; 24E3; Case map*/ + "\u24E4", /*24CA; 24E4; Case map*/ + "\u24E5", /*24CB; 24E5; Case map*/ + "\u24E6", /*24CC; 24E6; Case map*/ + "\u24E7", /*24CD; 24E7; Case map*/ + "\u24E8", /*24CE; 24E8; Case map*/ + "\u24E9", /*24CF; 24E9; Case map*/ + "\u0066\u0066", /*FB00; 0066 0066; Case map*/ + "\u0066\u0069", /*FB01; 0066 0069; Case map*/ + "\u0066\u006C", /*FB02; 0066 006C; Case map*/ + "\u0066\u0066\u0069", /*FB03; 0066 0066 0069; Case map*/ + "\u0066\u0066\u006C", /*FB04; 0066 0066 006C; Case map*/ + "\u0073\u0074", /*FB05; 0073 0074; Case map*/ + "\u0073\u0074", /*FB06; 0073 0074; Case map*/ + "\u0574\u0576", /*FB13; 0574 0576; Case map*/ + "\u0574\u0565", /*FB14; 0574 0565; Case map*/ + "\u0574\u056B", /*FB15; 0574 056B; Case map*/ + "\u057E\u0576", /*FB16; 057E 0576; Case map*/ + "\u0574\u056D", /*FB17; 0574 056D; Case map*/ + "\uFF41", /*FF21; FF41; Case map*/ + "\uFF42", /*FF22; FF42; Case map*/ + "\uFF43", /*FF23; FF43; Case map*/ + "\uFF44", /*FF24; FF44; Case map*/ + "\uFF45", /*FF25; FF45; Case map*/ + "\uFF46", /*FF26; FF46; Case map*/ + "\uFF47", /*FF27; FF47; Case map*/ + "\uFF48", /*FF28; FF48; Case map*/ + "\uFF49", /*FF29; FF49; Case map*/ + "\uFF4A", /*FF2A; FF4A; Case map*/ + "\uFF4B", /*FF2B; FF4B; Case map*/ + "\uFF4C", /*FF2C; FF4C; Case map*/ + "\uFF4D", /*FF2D; FF4D; Case map*/ + "\uFF4E", /*FF2E; FF4E; Case map*/ + "\uFF4F", /*FF2F; FF4F; Case map*/ + "\uFF50", /*FF30; FF50; Case map*/ + "\uFF51", /*FF31; FF51; Case map*/ + "\uFF52", /*FF32; FF52; Case map*/ + "\uFF53", /*FF33; FF53; Case map*/ + "\uFF54", /*FF34; FF54; Case map*/ + "\uFF55", /*FF35; FF55; Case map*/ + "\uFF56", /*FF36; FF56; Case map*/ + "\uFF57", /*FF37; FF57; Case map*/ + "\uFF58", /*FF38; FF58; Case map*/ + "\uFF59", /*FF39; FF59; Case map*/ + "\uFF5A", /*FF3A; FF5A; Case map*/ + }; + + public static char[] C11 = new char[] { + '\u0020', /* 0020; SPACE */ + }; + + public static char[] C12 = new char[] { + '\u00A0', /* 00A0; NO-BREAK SPACE */ + '\u1680', /* 1680; OGHAM SPACE MARK */ + '\u2000', /* 2000; EN QUAD */ + '\u2001', /* 2001; EM QUAD */ + '\u2002', /* 2002; EN SPACE */ + '\u2003', /* 2003; EM SPACE */ + '\u2004', /* 2004; THREE-PER-EM SPACE */ + '\u2005', /* 2005; FOUR-PER-EM SPACE */ + '\u2006', /* 2006; SIX-PER-EM SPACE */ + '\u2007', /* 2007; FIGURE SPACE */ + '\u2008', /* 2008; PUNCTUATION SPACE */ + '\u2009', /* 2009; THIN SPACE */ + '\u200A', /* 200A; HAIR SPACE */ + '\u200B', /* 200B; ZERO WIDTH SPACE */ + '\u202F', /* 202F; NARROW NO-BREAK SPACE */ + '\u205F', /* 205F; MEDIUM MATHEMATICAL SPACE */ + '\u3000', /* 3000; IDEOGRAPHIC SPACE */ + }; + + public static char[][] C21 = new char[][] { + new char[] { '\u0000', '\u001F' }, /* 0000-001F; [CONTROL CHARACTERS] */ + new char[] { '\u007F' }, /* 007F; DELETE */ + }; + + public static char[][] C22 = new char[][] { + new char[] { '\u0080', '\u009F' }, /* 0080-009F; [CONTROL CHARACTERS] */ + new char[] { '\u06DD' }, /* 06DD; ARABIC END OF AYAH */ + new char[] { '\u070F' }, /* 070F; SYRIAC ABBREVIATION MARK */ + new char[] { '\u180E' }, /* 180E; MONGOLIAN VOWEL SEPARATOR */ + new char[] { '\u200C' }, /* 200C; ZERO WIDTH NON-JOINER */ + new char[] { '\u200D' }, /* 200D; ZERO WIDTH JOINER */ + new char[] { '\u2028' }, /* 2028; LINE SEPARATOR */ + new char[] { '\u2029' }, /* 2029; PARAGRAPH SEPARATOR */ + new char[] { '\u2060' }, /* 2060; WORD JOINER */ + new char[] { '\u2061' }, /* 2061; FUNCTION APPLICATION */ + new char[] { '\u2062' }, /* 2062; INVISIBLE TIMES */ + new char[] { '\u2063' }, /* 2063; INVISIBLE SEPARATOR */ + new char[] { '\u206A', '\u206F' }, /* 206A-206F; [CONTROL CHARACTERS] */ + new char[] { '\uFEFF' }, /* FEFF; ZERO WIDTH NO-BREAK SPACE */ + new char[] { '\uFFF9', '\uFFFC' }, /* FFF9-FFFC; [CONTROL CHARACTERS] */ + }; + + public static char[][] C3 = new char[][] { + new char[] { '\uE000', '\uF8FF' }, /* E000-F8FF; [PRIVATE USE, PLANE 0] */ + }; + + public static char[][] C4 = new char[][] { + new char[] { '\uFDD0', '\uFDEF' }, /* FDD0-FDEF; [NONCHARACTER CODE POINTS] */ + new char[] { '\uFFFE', '\uFFFF' }, /* FFFE-FFFF; [NONCHARACTER CODE POINTS] */ + }; + + public static char[][] C5 = new char[][] { + new char[] { '\uD800', '\uDFFF' }, /* D800-DFFF; [SURROGATE CODES] */ + }; + + public static char[][] C6 = new char[][] { + new char[] { '\uFFF9' }, /* FFF9; INTERLINEAR ANNOTATION ANCHOR */ + new char[] { '\uFFFA' }, /* FFFA; INTERLINEAR ANNOTATION SEPARATOR */ + new char[] { '\uFFFB' }, /* FFFB; INTERLINEAR ANNOTATION TERMINATOR */ + new char[] { '\uFFFC' }, /* FFFC; OBJECT REPLACEMENT CHARACTER */ + new char[] { '\uFFFD' }, /* FFFD; REPLACEMENT CHARACTER */ + }; + + public static char[][] C7 = new char[][] { + new char[] { '\u2FF0', '\u2FFB' }, /* 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] */ + }; + + public static char[][] C8 = new char[][] { + new char[] { '\u0340' }, /* 0340; COMBINING GRAVE TONE MARK */ + new char[] { '\u0341' }, /* 0341; COMBINING ACUTE TONE MARK */ + new char[] { '\u200E' }, /* 200E; LEFT-TO-RIGHT MARK */ + new char[] { '\u200F' }, /* 200F; RIGHT-TO-LEFT MARK */ + new char[] { '\u202A' }, /* 202A; LEFT-TO-RIGHT EMBEDDING */ + new char[] { '\u202B' }, /* 202B; RIGHT-TO-LEFT EMBEDDING */ + new char[] { '\u202C' }, /* 202C; POP DIRECTIONAL FORMATTING */ + new char[] { '\u202D' }, /* 202D; LEFT-TO-RIGHT OVERRIDE */ + new char[] { '\u202E' }, /* 202E; RIGHT-TO-LEFT OVERRIDE */ + new char[] { '\u206A' }, /* 206A; INHIBIT SYMMETRIC SWAPPING */ + new char[] { '\u206B' }, /* 206B; ACTIVATE SYMMETRIC SWAPPING */ + new char[] { '\u206C' }, /* 206C; INHIBIT ARABIC FORM SHAPING */ + new char[] { '\u206D' }, /* 206D; ACTIVATE ARABIC FORM SHAPING */ + new char[] { '\u206E' }, /* 206E; NATIONAL DIGIT SHAPES */ + new char[] { '\u206F' }, /* 206F; NOMINAL DIGIT SHAPES */ + }; + + public static char[][] D1 = new char[][] { + new char[] { '\u05BE' }, /* 05BE */ + new char[] { '\u05C0' }, /* 05C0 */ + new char[] { '\u05C3' }, /* 05C3 */ + new char[] { '\u05D0', '\u05EA' }, /* 05D0-05EA */ + new char[] { '\u05F0', '\u05F4' }, /* 05F0-05F4 */ + new char[] { '\u061B' }, /* 061B */ + new char[] { '\u061F' }, /* 061F */ + new char[] { '\u0621', '\u063A' }, /* 0621-063A */ + new char[] { '\u0640', '\u064A' }, /* 0640-064A */ + new char[] { '\u066D', '\u066F' }, /* 066D-066F */ + new char[] { '\u0671', '\u06D5' }, /* 0671-06D5 */ + new char[] { '\u06DD' }, /* 06DD */ + new char[] { '\u06E5', '\u06E6' }, /* 06E5-06E6 */ + new char[] { '\u06FA', '\u06FE' }, /* 06FA-06FE */ + new char[] { '\u0700', '\u070D' }, /* 0700-070D */ + new char[] { '\u0710' }, /* 0710 */ + new char[] { '\u0712', '\u072C' }, /* 0712-072C */ + new char[] { '\u0780', '\u07A5' }, /* 0780-07A5 */ + new char[] { '\u07B1' }, /* 07B1 */ + new char[] { '\u200F' }, /* 200F */ + new char[] { '\uFB1D' }, /* FB1D */ + new char[] { '\uFB1F', '\uFB28' }, /* FB1F-FB28 */ + new char[] { '\uFB2A', '\uFB36' }, /* FB2A-FB36 */ + new char[] { '\uFB38', '\uFB3C' }, /* FB38-FB3C */ + new char[] { '\uFB3E' }, /* FB3E */ + new char[] { '\uFB40', '\uFB41' }, /* FB40-FB41 */ + new char[] { '\uFB43', '\uFB44' }, /* FB43-FB44 */ + new char[] { '\uFB46', '\uFBB1' }, /* FB46-FBB1 */ + new char[] { '\uFBD3', '\uFD3D' }, /* FBD3-FD3D */ + new char[] { '\uFD50', '\uFD8F' }, /* FD50-FD8F */ + new char[] { '\uFD92', '\uFDC7' }, /* FD92-FDC7 */ + new char[] { '\uFDF0', '\uFDFC' }, /* FDF0-FDFC */ + new char[] { '\uFE70', '\uFE74' }, /* FE70-FE74 */ + new char[] { '\uFE76', '\uFEFC' }, /* FE76-FEFC */ + }; + + public static char[][] D2 = new char[][] { + new char[] { '\u0041', '\u005A' }, /* 0041-005A */ + new char[] { '\u0061', '\u007A' }, /* 0061-007A */ + new char[] { '\u00AA' }, /* 00AA */ + new char[] { '\u00B5' }, /* 00B5 */ + new char[] { '\u00BA' }, /* 00BA */ + new char[] { '\u00C0', '\u00D6' }, /* 00C0-00D6 */ + new char[] { '\u00D8', '\u00F6' }, /* 00D8-00F6 */ + new char[] { '\u00F8', '\u0220' }, /* 00F8-0220 */ + new char[] { '\u0222', '\u0233' }, /* 0222-0233 */ + new char[] { '\u0250', '\u02AD' }, /* 0250-02AD */ + new char[] { '\u02B0', '\u02B8' }, /* 02B0-02B8 */ + new char[] { '\u02BB', '\u02C1' }, /* 02BB-02C1 */ + new char[] { '\u02D0', '\u02D1' }, /* 02D0-02D1 */ + new char[] { '\u02E0', '\u02E4' }, /* 02E0-02E4 */ + new char[] { '\u02EE' }, /* 02EE */ + new char[] { '\u037A' }, /* 037A */ + new char[] { '\u0386' }, /* 0386 */ + new char[] { '\u0388', '\u038A' }, /* 0388-038A */ + new char[] { '\u038C' }, /* 038C */ + new char[] { '\u038E', '\u03A1' }, /* 038E-03A1 */ + new char[] { '\u03A3', '\u03CE' }, /* 03A3-03CE */ + new char[] { '\u03D0', '\u03F5' }, /* 03D0-03F5 */ + new char[] { '\u0400', '\u0482' }, /* 0400-0482 */ + new char[] { '\u048A', '\u04CE' }, /* 048A-04CE */ + new char[] { '\u04D0', '\u04F5' }, /* 04D0-04F5 */ + new char[] { '\u04F8', '\u04F9' }, /* 04F8-04F9 */ + new char[] { '\u0500', '\u050F' }, /* 0500-050F */ + new char[] { '\u0531', '\u0556' }, /* 0531-0556 */ + new char[] { '\u0559', '\u055F' }, /* 0559-055F */ + new char[] { '\u0561', '\u0587' }, /* 0561-0587 */ + new char[] { '\u0589' }, /* 0589 */ + new char[] { '\u0903' }, /* 0903 */ + new char[] { '\u0905', '\u0939' }, /* 0905-0939 */ + new char[] { '\u093D', '\u0940' }, /* 093D-0940 */ + new char[] { '\u0949', '\u094C' }, /* 0949-094C */ + new char[] { '\u0950' }, /* 0950 */ + new char[] { '\u0958', '\u0961' }, /* 0958-0961 */ + new char[] { '\u0964', '\u0970' }, /* 0964-0970 */ + new char[] { '\u0982', '\u0983' }, /* 0982-0983 */ + new char[] { '\u0985', '\u098C' }, /* 0985-098C */ + new char[] { '\u098F', '\u0990' }, /* 098F-0990 */ + new char[] { '\u0993', '\u09A8' }, /* 0993-09A8 */ + new char[] { '\u09AA', '\u09B0' }, /* 09AA-09B0 */ + new char[] { '\u09B2' }, /* 09B2 */ + new char[] { '\u09B6', '\u09B9' }, /* 09B6-09B9 */ + new char[] { '\u09BE', '\u09C0' }, /* 09BE-09C0 */ + new char[] { '\u09C7', '\u09C8' }, /* 09C7-09C8 */ + new char[] { '\u09CB', '\u09CC' }, /* 09CB-09CC */ + new char[] { '\u09D7' }, /* 09D7 */ + new char[] { '\u09DC', '\u09DD' }, /* 09DC-09DD */ + new char[] { '\u09DF', '\u09E1' }, /* 09DF-09E1 */ + new char[] { '\u09E6', '\u09F1' }, /* 09E6-09F1 */ + new char[] { '\u09F4', '\u09FA' }, /* 09F4-09FA */ + new char[] { '\u0A05', '\u0A0A' }, /* 0A05-0A0A */ + new char[] { '\u0A0F', '\u0A10' }, /* 0A0F-0A10 */ + new char[] { '\u0A13', '\u0A28' }, /* 0A13-0A28 */ + new char[] { '\u0A2A', '\u0A30' }, /* 0A2A-0A30 */ + new char[] { '\u0A32', '\u0A33' }, /* 0A32-0A33 */ + new char[] { '\u0A35', '\u0A36' }, /* 0A35-0A36 */ + new char[] { '\u0A38', '\u0A39' }, /* 0A38-0A39 */ + new char[] { '\u0A3E', '\u0A40' }, /* 0A3E-0A40 */ + new char[] { '\u0A59', '\u0A5C' }, /* 0A59-0A5C */ + new char[] { '\u0A5E' }, /* 0A5E */ + new char[] { '\u0A66', '\u0A6F' }, /* 0A66-0A6F */ + new char[] { '\u0A72', '\u0A74' }, /* 0A72-0A74 */ + new char[] { '\u0A83' }, /* 0A83 */ + new char[] { '\u0A85', '\u0A8B' }, /* 0A85-0A8B */ + new char[] { '\u0A8D' }, /* 0A8D */ + new char[] { '\u0A8F', '\u0A91' }, /* 0A8F-0A91 */ + new char[] { '\u0A93', '\u0AA8' }, /* 0A93-0AA8 */ + new char[] { '\u0AAA', '\u0AB0' }, /* 0AAA-0AB0 */ + new char[] { '\u0AB2', '\u0AB3' }, /* 0AB2-0AB3 */ + new char[] { '\u0AB5', '\u0AB9' }, /* 0AB5-0AB9 */ + new char[] { '\u0ABD', '\u0AC0' }, /* 0ABD-0AC0 */ + new char[] { '\u0AC9' }, /* 0AC9 */ + new char[] { '\u0ACB', '\u0ACC' }, /* 0ACB-0ACC */ + new char[] { '\u0AD0' }, /* 0AD0 */ + new char[] { '\u0AE0' }, /* 0AE0 */ + new char[] { '\u0AE6', '\u0AEF' }, /* 0AE6-0AEF */ + new char[] { '\u0B02', '\u0B03' }, /* 0B02-0B03 */ + new char[] { '\u0B05', '\u0B0C' }, /* 0B05-0B0C */ + new char[] { '\u0B0F', '\u0B10' }, /* 0B0F-0B10 */ + new char[] { '\u0B13', '\u0B28' }, /* 0B13-0B28 */ + new char[] { '\u0B2A', '\u0B30' }, /* 0B2A-0B30 */ + new char[] { '\u0B32', '\u0B33' }, /* 0B32-0B33 */ + new char[] { '\u0B36', '\u0B39' }, /* 0B36-0B39 */ + new char[] { '\u0B3D', '\u0B3E' }, /* 0B3D-0B3E */ + new char[] { '\u0B40' }, /* 0B40 */ + new char[] { '\u0B47', '\u0B48' }, /* 0B47-0B48 */ + new char[] { '\u0B4B', '\u0B4C' }, /* 0B4B-0B4C */ + new char[] { '\u0B57' }, /* 0B57 */ + new char[] { '\u0B5C', '\u0B5D' }, /* 0B5C-0B5D */ + new char[] { '\u0B5F', '\u0B61' }, /* 0B5F-0B61 */ + new char[] { '\u0B66', '\u0B70' }, /* 0B66-0B70 */ + new char[] { '\u0B83' }, /* 0B83 */ + new char[] { '\u0B85', '\u0B8A' }, /* 0B85-0B8A */ + new char[] { '\u0B8E', '\u0B90' }, /* 0B8E-0B90 */ + new char[] { '\u0B92', '\u0B95' }, /* 0B92-0B95 */ + new char[] { '\u0B99', '\u0B9A' }, /* 0B99-0B9A */ + new char[] { '\u0B9C' }, /* 0B9C */ + new char[] { '\u0B9E', '\u0B9F' }, /* 0B9E-0B9F */ + new char[] { '\u0BA3', '\u0BA4' }, /* 0BA3-0BA4 */ + new char[] { '\u0BA8', '\u0BAA' }, /* 0BA8-0BAA */ + new char[] { '\u0BAE', '\u0BB5' }, /* 0BAE-0BB5 */ + new char[] { '\u0BB7', '\u0BB9' }, /* 0BB7-0BB9 */ + new char[] { '\u0BBE', '\u0BBF' }, /* 0BBE-0BBF */ + new char[] { '\u0BC1', '\u0BC2' }, /* 0BC1-0BC2 */ + new char[] { '\u0BC6', '\u0BC8' }, /* 0BC6-0BC8 */ + new char[] { '\u0BCA', '\u0BCC' }, /* 0BCA-0BCC */ + new char[] { '\u0BD7' }, /* 0BD7 */ + new char[] { '\u0BE7', '\u0BF2' }, /* 0BE7-0BF2 */ + new char[] { '\u0C01', '\u0C03' }, /* 0C01-0C03 */ + new char[] { '\u0C05', '\u0C0C' }, /* 0C05-0C0C */ + new char[] { '\u0C0E', '\u0C10' }, /* 0C0E-0C10 */ + new char[] { '\u0C12', '\u0C28' }, /* 0C12-0C28 */ + new char[] { '\u0C2A', '\u0C33' }, /* 0C2A-0C33 */ + new char[] { '\u0C35', '\u0C39' }, /* 0C35-0C39 */ + new char[] { '\u0C41', '\u0C44' }, /* 0C41-0C44 */ + new char[] { '\u0C60', '\u0C61' }, /* 0C60-0C61 */ + new char[] { '\u0C66', '\u0C6F' }, /* 0C66-0C6F */ + new char[] { '\u0C82', '\u0C83' }, /* 0C82-0C83 */ + new char[] { '\u0C85', '\u0C8C' }, /* 0C85-0C8C */ + new char[] { '\u0C8E', '\u0C90' }, /* 0C8E-0C90 */ + new char[] { '\u0C92', '\u0CA8' }, /* 0C92-0CA8 */ + new char[] { '\u0CAA', '\u0CB3' }, /* 0CAA-0CB3 */ + new char[] { '\u0CB5', '\u0CB9' }, /* 0CB5-0CB9 */ + new char[] { '\u0CBE' }, /* 0CBE */ + new char[] { '\u0CC0', '\u0CC4' }, /* 0CC0-0CC4 */ + new char[] { '\u0CC7', '\u0CC8' }, /* 0CC7-0CC8 */ + new char[] { '\u0CCA', '\u0CCB' }, /* 0CCA-0CCB */ + new char[] { '\u0CD5', '\u0CD6' }, /* 0CD5-0CD6 */ + new char[] { '\u0CDE' }, /* 0CDE */ + new char[] { '\u0CE0', '\u0CE1' }, /* 0CE0-0CE1 */ + new char[] { '\u0CE6', '\u0CEF' }, /* 0CE6-0CEF */ + new char[] { '\u0D02', '\u0D03' }, /* 0D02-0D03 */ + new char[] { '\u0D05', '\u0D0C' }, /* 0D05-0D0C */ + new char[] { '\u0D0E', '\u0D10' }, /* 0D0E-0D10 */ + new char[] { '\u0D12', '\u0D28' }, /* 0D12-0D28 */ + new char[] { '\u0D2A', '\u0D39' }, /* 0D2A-0D39 */ + new char[] { '\u0D3E', '\u0D40' }, /* 0D3E-0D40 */ + new char[] { '\u0D46', '\u0D48' }, /* 0D46-0D48 */ + new char[] { '\u0D4A', '\u0D4C' }, /* 0D4A-0D4C */ + new char[] { '\u0D57' }, /* 0D57 */ + new char[] { '\u0D60', '\u0D61' }, /* 0D60-0D61 */ + new char[] { '\u0D66', '\u0D6F' }, /* 0D66-0D6F */ + new char[] { '\u0D82', '\u0D83' }, /* 0D82-0D83 */ + new char[] { '\u0D85', '\u0D96' }, /* 0D85-0D96 */ + new char[] { '\u0D9A', '\u0DB1' }, /* 0D9A-0DB1 */ + new char[] { '\u0DB3', '\u0DBB' }, /* 0DB3-0DBB */ + new char[] { '\u0DBD' }, /* 0DBD */ + new char[] { '\u0DC0', '\u0DC6' }, /* 0DC0-0DC6 */ + new char[] { '\u0DCF', '\u0DD1' }, /* 0DCF-0DD1 */ + new char[] { '\u0DD8', '\u0DDF' }, /* 0DD8-0DDF */ + new char[] { '\u0DF2', '\u0DF4' }, /* 0DF2-0DF4 */ + new char[] { '\u0E01', '\u0E30' }, /* 0E01-0E30 */ + new char[] { '\u0E32', '\u0E33' }, /* 0E32-0E33 */ + new char[] { '\u0E40', '\u0E46' }, /* 0E40-0E46 */ + new char[] { '\u0E4F', '\u0E5B' }, /* 0E4F-0E5B */ + new char[] { '\u0E81', '\u0E82' }, /* 0E81-0E82 */ + new char[] { '\u0E84' }, /* 0E84 */ + new char[] { '\u0E87', '\u0E88' }, /* 0E87-0E88 */ + new char[] { '\u0E8A' }, /* 0E8A */ + new char[] { '\u0E8D' }, /* 0E8D */ + new char[] { '\u0E94', '\u0E97' }, /* 0E94-0E97 */ + new char[] { '\u0E99', '\u0E9F' }, /* 0E99-0E9F */ + new char[] { '\u0EA1', '\u0EA3' }, /* 0EA1-0EA3 */ + new char[] { '\u0EA5' }, /* 0EA5 */ + new char[] { '\u0EA7' }, /* 0EA7 */ + new char[] { '\u0EAA', '\u0EAB' }, /* 0EAA-0EAB */ + new char[] { '\u0EAD', '\u0EB0' }, /* 0EAD-0EB0 */ + new char[] { '\u0EB2', '\u0EB3' }, /* 0EB2-0EB3 */ + new char[] { '\u0EBD' }, /* 0EBD */ + new char[] { '\u0EC0', '\u0EC4' }, /* 0EC0-0EC4 */ + new char[] { '\u0EC6' }, /* 0EC6 */ + new char[] { '\u0ED0', '\u0ED9' }, /* 0ED0-0ED9 */ + new char[] { '\u0EDC', '\u0EDD' }, /* 0EDC-0EDD */ + new char[] { '\u0F00', '\u0F17' }, /* 0F00-0F17 */ + new char[] { '\u0F1A', '\u0F34' }, /* 0F1A-0F34 */ + new char[] { '\u0F36' }, /* 0F36 */ + new char[] { '\u0F38' }, /* 0F38 */ + new char[] { '\u0F3E', '\u0F47' }, /* 0F3E-0F47 */ + new char[] { '\u0F49', '\u0F6A' }, /* 0F49-0F6A */ + new char[] { '\u0F7F' }, /* 0F7F */ + new char[] { '\u0F85' }, /* 0F85 */ + new char[] { '\u0F88', '\u0F8B' }, /* 0F88-0F8B */ + new char[] { '\u0FBE', '\u0FC5' }, /* 0FBE-0FC5 */ + new char[] { '\u0FC7', '\u0FCC' }, /* 0FC7-0FCC */ + new char[] { '\u0FCF' }, /* 0FCF */ + new char[] { '\u1000', '\u1021' }, /* 1000-1021 */ + new char[] { '\u1023', '\u1027' }, /* 1023-1027 */ + new char[] { '\u1029', '\u102A' }, /* 1029-102A */ + new char[] { '\u102C' }, /* 102C */ + new char[] { '\u1031' }, /* 1031 */ + new char[] { '\u1038' }, /* 1038 */ + new char[] { '\u1040', '\u1057' }, /* 1040-1057 */ + new char[] { '\u10A0', '\u10C5' }, /* 10A0-10C5 */ + new char[] { '\u10D0', '\u10F8' }, /* 10D0-10F8 */ + new char[] { '\u10FB' }, /* 10FB */ + new char[] { '\u1100', '\u1159' }, /* 1100-1159 */ + new char[] { '\u115F', '\u11A2' }, /* 115F-11A2 */ + new char[] { '\u11A8', '\u11F9' }, /* 11A8-11F9 */ + new char[] { '\u1200', '\u1206' }, /* 1200-1206 */ + new char[] { '\u1208', '\u1246' }, /* 1208-1246 */ + new char[] { '\u1248' }, /* 1248 */ + new char[] { '\u124A', '\u124D' }, /* 124A-124D */ + new char[] { '\u1250', '\u1256' }, /* 1250-1256 */ + new char[] { '\u1258' }, /* 1258 */ + new char[] { '\u125A', '\u125D' }, /* 125A-125D */ + new char[] { '\u1260', '\u1286' }, /* 1260-1286 */ + new char[] { '\u1288' }, /* 1288 */ + new char[] { '\u128A', '\u128D' }, /* 128A-128D */ + new char[] { '\u1290', '\u12AE' }, /* 1290-12AE */ + new char[] { '\u12B0' }, /* 12B0 */ + new char[] { '\u12B2', '\u12B5' }, /* 12B2-12B5 */ + new char[] { '\u12B8', '\u12BE' }, /* 12B8-12BE */ + new char[] { '\u12C0' }, /* 12C0 */ + new char[] { '\u12C2', '\u12C5' }, /* 12C2-12C5 */ + new char[] { '\u12C8', '\u12CE' }, /* 12C8-12CE */ + new char[] { '\u12D0', '\u12D6' }, /* 12D0-12D6 */ + new char[] { '\u12D8', '\u12EE' }, /* 12D8-12EE */ + new char[] { '\u12F0', '\u130E' }, /* 12F0-130E */ + new char[] { '\u1310' }, /* 1310 */ + new char[] { '\u1312', '\u1315' }, /* 1312-1315 */ + new char[] { '\u1318', '\u131E' }, /* 1318-131E */ + new char[] { '\u1320', '\u1346' }, /* 1320-1346 */ + new char[] { '\u1348', '\u135A' }, /* 1348-135A */ + new char[] { '\u1361', '\u137C' }, /* 1361-137C */ + new char[] { '\u13A0', '\u13F4' }, /* 13A0-13F4 */ + new char[] { '\u1401', '\u1676' }, /* 1401-1676 */ + new char[] { '\u1681', '\u169A' }, /* 1681-169A */ + new char[] { '\u16A0', '\u16F0' }, /* 16A0-16F0 */ + new char[] { '\u1700', '\u170C' }, /* 1700-170C */ + new char[] { '\u170E', '\u1711' }, /* 170E-1711 */ + new char[] { '\u1720', '\u1731' }, /* 1720-1731 */ + new char[] { '\u1735', '\u1736' }, /* 1735-1736 */ + new char[] { '\u1740', '\u1751' }, /* 1740-1751 */ + new char[] { '\u1760', '\u176C' }, /* 1760-176C */ + new char[] { '\u176E', '\u1770' }, /* 176E-1770 */ + new char[] { '\u1780', '\u17B6' }, /* 1780-17B6 */ + new char[] { '\u17BE', '\u17C5' }, /* 17BE-17C5 */ + new char[] { '\u17C7', '\u17C8' }, /* 17C7-17C8 */ + new char[] { '\u17D4', '\u17DA' }, /* 17D4-17DA */ + new char[] { '\u17DC' }, /* 17DC */ + new char[] { '\u17E0', '\u17E9' }, /* 17E0-17E9 */ + new char[] { '\u1810', '\u1819' }, /* 1810-1819 */ + new char[] { '\u1820', '\u1877' }, /* 1820-1877 */ + new char[] { '\u1880', '\u18A8' }, /* 1880-18A8 */ + new char[] { '\u1E00', '\u1E9B' }, /* 1E00-1E9B */ + new char[] { '\u1EA0', '\u1EF9' }, /* 1EA0-1EF9 */ + new char[] { '\u1F00', '\u1F15' }, /* 1F00-1F15 */ + new char[] { '\u1F18', '\u1F1D' }, /* 1F18-1F1D */ + new char[] { '\u1F20', '\u1F45' }, /* 1F20-1F45 */ + new char[] { '\u1F48', '\u1F4D' }, /* 1F48-1F4D */ + new char[] { '\u1F50', '\u1F57' }, /* 1F50-1F57 */ + new char[] { '\u1F59' }, /* 1F59 */ + new char[] { '\u1F5B' }, /* 1F5B */ + new char[] { '\u1F5D' }, /* 1F5D */ + new char[] { '\u1F5F', '\u1F7D' }, /* 1F5F-1F7D */ + new char[] { '\u1F80', '\u1FB4' }, /* 1F80-1FB4 */ + new char[] { '\u1FB6', '\u1FBC' }, /* 1FB6-1FBC */ + new char[] { '\u1FBE' }, /* 1FBE */ + new char[] { '\u1FC2', '\u1FC4' }, /* 1FC2-1FC4 */ + new char[] { '\u1FC6', '\u1FCC' }, /* 1FC6-1FCC */ + new char[] { '\u1FD0', '\u1FD3' }, /* 1FD0-1FD3 */ + new char[] { '\u1FD6', '\u1FDB' }, /* 1FD6-1FDB */ + new char[] { '\u1FE0', '\u1FEC' }, /* 1FE0-1FEC */ + new char[] { '\u1FF2', '\u1FF4' }, /* 1FF2-1FF4 */ + new char[] { '\u1FF6', '\u1FFC' }, /* 1FF6-1FFC */ + new char[] { '\u200E' }, /* 200E */ + new char[] { '\u2071' }, /* 2071 */ + new char[] { '\u207F' }, /* 207F */ + new char[] { '\u2102' }, /* 2102 */ + new char[] { '\u2107' }, /* 2107 */ + new char[] { '\u210A', '\u2113' }, /* 210A-2113 */ + new char[] { '\u2115' }, /* 2115 */ + new char[] { '\u2119', '\u211D' }, /* 2119-211D */ + new char[] { '\u2124' }, /* 2124 */ + new char[] { '\u2126' }, /* 2126 */ + new char[] { '\u2128' }, /* 2128 */ + new char[] { '\u212A', '\u212D' }, /* 212A-212D */ + new char[] { '\u212F', '\u2131' }, /* 212F-2131 */ + new char[] { '\u2133', '\u2139' }, /* 2133-2139 */ + new char[] { '\u213D', '\u213F' }, /* 213D-213F */ + new char[] { '\u2145', '\u2149' }, /* 2145-2149 */ + new char[] { '\u2160', '\u2183' }, /* 2160-2183 */ + new char[] { '\u2336', '\u237A' }, /* 2336-237A */ + new char[] { '\u2395' }, /* 2395 */ + new char[] { '\u249C', '\u24E9' }, /* 249C-24E9 */ + new char[] { '\u3005', '\u3007' }, /* 3005-3007 */ + new char[] { '\u3021', '\u3029' }, /* 3021-3029 */ + new char[] { '\u3031', '\u3035' }, /* 3031-3035 */ + new char[] { '\u3038', '\u303C' }, /* 3038-303C */ + new char[] { '\u3041', '\u3096' }, /* 3041-3096 */ + new char[] { '\u309D', '\u309F' }, /* 309D-309F */ + new char[] { '\u30A1', '\u30FA' }, /* 30A1-30FA */ + new char[] { '\u30FC', '\u30FF' }, /* 30FC-30FF */ + new char[] { '\u3105', '\u312C' }, /* 3105-312C */ + new char[] { '\u3131', '\u318E' }, /* 3131-318E */ + new char[] { '\u3190', '\u31B7' }, /* 3190-31B7 */ + new char[] { '\u31F0', '\u321C' }, /* 31F0-321C */ + new char[] { '\u3220', '\u3243' }, /* 3220-3243 */ + new char[] { '\u3260', '\u327B' }, /* 3260-327B */ + new char[] { '\u327F', '\u32B0' }, /* 327F-32B0 */ + new char[] { '\u32C0', '\u32CB' }, /* 32C0-32CB */ + new char[] { '\u32D0', '\u32FE' }, /* 32D0-32FE */ + new char[] { '\u3300', '\u3376' }, /* 3300-3376 */ + new char[] { '\u337B', '\u33DD' }, /* 337B-33DD */ + new char[] { '\u33E0', '\u33FE' }, /* 33E0-33FE */ + new char[] { '\u3400', '\u4DB5' }, /* 3400-4DB5 */ + new char[] { '\u4E00', '\u9FA5' }, /* 4E00-9FA5 */ + new char[] { '\uA000', '\uA48C' }, /* A000-A48C */ + new char[] { '\uAC00', '\uD7A3' }, /* AC00-D7A3 */ + new char[] { '\uD800', '\uFA2D' }, /* D800-FA2D */ + new char[] { '\uFA30', '\uFA6A' }, /* FA30-FA6A */ + new char[] { '\uFB00', '\uFB06' }, /* FB00-FB06 */ + new char[] { '\uFB13', '\uFB17' }, /* FB13-FB17 */ + new char[] { '\uFF21', '\uFF3A' }, /* FF21-FF3A */ + new char[] { '\uFF41', '\uFF5A' }, /* FF41-FF5A */ + new char[] { '\uFF66', '\uFFBE' }, /* FF66-FFBE */ + new char[] { '\uFFC2', '\uFFC7' }, /* FFC2-FFC7 */ + new char[] { '\uFFCA', '\uFFCF' }, /* FFCA-FFCF */ + new char[] { '\uFFD2', '\uFFD7' }, /* FFD2-FFD7 */ + new char[] { '\uFFDA', '\uFFDC' }, /* FFDA-FFDC */ + }; + +} +} diff --git a/csharp/Stringprep.cs b/csharp/Stringprep.cs new file mode 100644 index 0000000..db79545 --- /dev/null +++ b/csharp/Stringprep.cs @@ -0,0 +1,464 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; +using System.Text; + +namespace Gnu.Inet.Encoding +{ + /// This class offers static methods for preparing internationalized + /// strings. It supports the following stringprep profiles: + ///
    + ///
  • RFC3491 nameprep + ///
  • RFC3920 XMPP nodeprep and resourceprep + ///
+ /// Note that this implementation only supports 16-bit Unicode code + /// points. + ///
+ public class Stringprep + { + /// Preps a name according to the Stringprep profile defined in + /// RFC3491. Unassigned code points are not allowed. + /// * + /// + /// the name to prep. + /// + /// the prepped name. + /// @throws StringprepException If the name cannot be prepped with + /// this profile. + /// @throws NullPointerException If the name is null. + /// + /// + public static string NamePrep(string input) + { + return NamePrep(input, false); + } + + /// Preps a name according to the Stringprep profile defined in + /// RFC3491. + /// * + /// + /// the name to prep. + /// + /// true if the name may contain unassigned + /// code points. + /// + /// the prepped name. + /// @throws StringprepException If the name cannot be prepped with + /// this profile. + /// @throws NullPointerException If the name is null. + /// + /// + public static string NamePrep(string input, bool allowUnassigned) + { + if (input == null) + { + throw new System.NullReferenceException(); + } + + StringBuilder s = new StringBuilder(input); + + if (!allowUnassigned && Contains(s, RFC3454.A1)) + { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + Filter(s, RFC3454.B1); + Map(s, RFC3454.B2search, RFC3454.B2replace); + + s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString())); + // B.3 is only needed if NFKC is not used, right? + // map(s, RFC3454.B3search, RFC3454.B3replace); + + if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8)) + { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + bool r = Contains(s, RFC3454.D1); + bool l = Contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) + { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) + { + if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1)) + { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.ToString(); + } + + /** + * Characters prohibited by RFC3920 nodeprep that aren't defined as + * part of the RFC3454 tables. + */ + private static char [] RFC3920_NODEPREP_PROHIBIT = new char [] { + '\u0022', '\u0026', '\'', '\u002F', + '\u003A', '\u003C', '\u003E', '\u0040' + }; + + /// Preps a node name according to the Stringprep profile defined in + /// RFC3920. Unassigned code points are not allowed. + /// * + /// + /// the node name to prep. + /// + /// the prepped node name. + /// @throws StringprepException If the node name cannot be prepped + /// with this profile. + /// @throws NullPointerException If the node name is null. + /// + /// + public static string NodePrep(string input) + { + return NodePrep(input, false); + } + + /// + /// Preps a node name according to the Stringprep profile defined in RFC3920. + /// + /// the node name to prep. + /// + /// true if the node name may contain + /// unassigned code points. + /// + /// the prepped node name. + /// @throws StringprepException If the node name cannot be prepped + /// with this profile. + /// @throws NullPointerException If the node name is null. + /// + /// + public static string NodePrep(string input, bool allowUnassigned) + { + if (input == null) + { + throw new System.NullReferenceException(); + } + + StringBuilder s = new StringBuilder(input); + + if (!allowUnassigned && Contains(s, RFC3454.A1)) + { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + Filter(s, RFC3454.B1); + Map(s, RFC3454.B2search, RFC3454.B2replace); + + s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString())); + + if (Contains(s, RFC3454.C11) || Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8) || Contains(s, RFC3920_NODEPREP_PROHIBIT)) + { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + bool r = Contains(s, RFC3454.D1); + bool l = Contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) + { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) + { + if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1)) + { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.ToString(); + } + + /// + /// Preps a resource name according to the Stringprep profile defined + /// in RFC3920. Unassigned code points are not allowed. + /// + /// the resource name to prep. + /// + /// the prepped node name. + /// @throws StringprepException If the resource name cannot be prepped + /// with this profile. + /// @throws NullPointerException If the resource name is null. + /// + /// + public static string ResourcePrep(string input) + { + return ResourcePrep(input, false); + } + + /// + /// Preps a resource name according to the Stringprep profile defined + /// in RFC3920. + /// + /// the resource name to prep. + /// + /// true if the resource name may contain + /// unassigned code points. + /// + /// + /// the prepped node name. + /// @throws StringprepException If the resource name cannot be prepped + /// with this profile. + /// @throws NullPointerException If the resource name is null. + /// + /// + public static string ResourcePrep(string input, bool allowUnassigned) + { + if (input == null) + { + throw new System.NullReferenceException(); + } + + StringBuilder s = new StringBuilder(input); + + if (!allowUnassigned && Contains(s, RFC3454.A1)) + { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + Filter(s, RFC3454.B1); + + s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString())); + + if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8)) + { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + bool r = Contains(s, RFC3454.D1); + bool l = Contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) + { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) + { + if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1)) + { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.ToString(); + } + + internal static bool Contains(StringBuilder s, char[] p) + { + for (int i = 0; i < p.Length; i++) + { + char c = p[i]; + for (int j = 0; j < s.Length; j++) + { + if (c == s[j]) + { + return true; + } + } + } + return false; + } + + internal static bool Contains(StringBuilder s, char[][] p) + { + for (int i = 0; i < p.Length; i++) + { + char[] r = p[i]; + if (1 == r.Length) + { + char c = r[0]; + for (int j = 0; j < s.Length; j++) + { + if (c == s[j]) + { + return true; + } + } + } + else if (2 == r.Length) + { + char f = r[0]; + char t = r[1]; + for (int j = 0; j < s.Length; j++) + { + if (f <= s[j] && t >= s[j]) + { + return true; + } + } + } + } + return false; + } + + internal static bool Contains(char c, char[][] p) + { + for (int i = 0; i < p.Length; i++) + { + char[] r = p[i]; + if (1 == r.Length) + { + if (c == r[0]) + { + return true; + } + } + else if (2 == r.Length) + { + char f = r[0]; + char t = r[1]; + if (f <= c && t >= c) + { + return true; + } + } + } + return false; + } + + internal static void Filter(StringBuilder s, char[] f) + { + for (int i = 0; i < f.Length; i++) + { + char c = f[i]; + + int j = 0; + while (j < s.Length) + { + if (c == s[j]) + { + //s.deleteCharAt(j); + s.Remove(j, 1); + } + else + { + j++; + } + } + } + } + + internal static void Filter(StringBuilder s, char[][] f) + { + for (int i = 0; i < f.Length; i++) + { + char[] r = f[i]; + + if (1 == r.Length) + { + char c = r[0]; + + int j = 0; + while (j < s.Length) + { + if (c == s[j]) + { + //s.deleteCharAt(j); + s.Remove(j, 1); + } + else + { + j++; + } + } + } + else if (2 == r.Length) + { + char from = r[0]; + char to = r[1]; + + int j = 0; + while (j < s.Length) + { + if (from <= s[j] && to >= s[j]) + { + //s.deleteCharAt(j); + s.Remove(j, 1); + } + else + { + j++; + } + } + } + } + } + + internal static void Map(StringBuilder s, char[] search, string[] replace) + { + for (int i = 0; i < search.Length; i++) + { + char c = search[i]; + + int j = 0; + while (j < s.Length) + { + if (c == s[j]) + { + //s.deleteCharAt(j); + s.Remove(j, 1); + if (null != replace[i]) + { + s.Insert(j, replace[i]); + j += replace[i].Length - 1; + } + } + else + { + j++; + } + } + } + } + } +} \ No newline at end of file diff --git a/csharp/StringprepException.cs b/csharp/StringprepException.cs new file mode 100644 index 0000000..cd9dcb6 --- /dev/null +++ b/csharp/StringprepException.cs @@ -0,0 +1,39 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// + +using System; + +namespace Gnu.Inet.Encoding +{ + public class StringprepException : Exception + { + public static string CONTAINS_UNASSIGNED = "Contains unassigned code points."; + public static string CONTAINS_PROHIBITED = "Contains prohibited code points."; + public static string BIDI_BOTHRAL = "Contains both R and AL code points."; + public static string BIDI_LTRAL = "Leading and trailing code points not both R or AL."; + + public StringprepException(string message) : base(message) + { + } + } +} \ No newline at end of file diff --git a/csharp/generate/AssemblyInfo.cs b/csharp/generate/AssemblyInfo.cs new file mode 100644 index 0000000..128672b --- /dev/null +++ b/csharp/generate/AssemblyInfo.cs @@ -0,0 +1,55 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6D72484E-39BA-4312-9B64-74FD5CB81001")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/csharp/generate/GenerateNFKC.cs b/csharp/generate/GenerateNFKC.cs new file mode 100644 index 0000000..16744c4 --- /dev/null +++ b/csharp/generate/GenerateNFKC.cs @@ -0,0 +1,685 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System; +using System.IO; +using System.Collections; +using System.Text; + +namespace gnu.inet.encoding.misc +{ + public class GenerateNFKC + { + internal static string stripComment(string sIn) + { + int c = sIn.IndexOf('#'); + if (c == -1) + { + return sIn; + } + else + { + return sIn.Substring(0, (c) - (0)); + } + } + + internal static string[] split(string sIn, char sep) + { + StringBuilder sb = new StringBuilder(sIn); + int c = 0; + for (int i = 0; i < sb.Length; i++) + { + if (sb[i] == sep) + { + c++; + } + } + + string[] sOut = new string[c + 1]; + c = 0; + int l = 0; + for (int i = 0; i < sb.Length; i++) + { + if (sb[i] == sep) + { + if (l >= i) + { + sOut[c] = ""; + } + else + { + // TODO, check this + sOut[c] = sb.ToString(l, i-l); + } + l = i + 1; + c++; + } + } + if (l < sb.Length) + { + sOut[c] = sb.ToString(l, sb.Length - l); + } + return sOut; + } + + internal static bool isCompatibilityMapping(string sIn) + { + return sIn.Length > 0 && sIn[0] == '<'; + } + + internal static string stripCompatibilityTag(string sIn) + { + return sIn.Substring(sIn.IndexOf('>') + 2); + } + + internal static string toString(string sIn) + { + StringBuilder sOut = new StringBuilder(); + string[] chars = split(sIn, ' '); + for (int i = 0; i < chars.Length; i++) + { + if (chars[i].Equals("005C")) + { + sOut.Append("\\\\"); + } + else if (chars[i].Equals("0022")) + { + sOut.Append("\\\""); + } + else + { + sOut.Append("\\u"); + sOut.Append(chars[i]); + } + } + return sOut.ToString(); + } + + internal static string decompose(string sIn, SortedList mappings) + { + StringBuilder sOut = new StringBuilder(); + string[] c = split(sIn, ' '); + + for (int i = 0; i < c.Length; i++) + { + if (mappings.ContainsKey(c[i])) + { + if (sOut.Length > 0) + { + sOut.Append(" "); + } + sOut.Append(decompose((string)mappings[c[i]], mappings)); + } + else + { + if (sOut.Length > 0) + { + sOut.Append(" "); + } + sOut.Append(c[i]); + } + } + + return sOut.ToString(); + } + + public static void Generate() + { + // Check if the unicode files exist + { + FileInfo f1 = new FileInfo("CompositionExclusions.txt"); + FileInfo f2 = new FileInfo("UnicodeData.txt"); + bool tmpBool; + if (File.Exists(f1.FullName)) + tmpBool = true; + else + tmpBool = Directory.Exists(f1.FullName); + bool tmpBool2; + if (File.Exists(f2.FullName)) + tmpBool2 = true; + else + tmpBool2 = Directory.Exists(f2.FullName); + if (!tmpBool || !tmpBool2) + { + Console.WriteLine("Unable to find UnicodeData.txt or CompositionExclusions.txt."); + Console.WriteLine("Please download the latest version of these file from:"); + Console.WriteLine("http://www.unicode.org/Public/UNIDATA/"); + System.Environment.Exit(1); + } + } + + ArrayList exclusions = new ArrayList(); + { + StreamReader r = new StreamReader("CompositionExclusions.txt", System.Text.Encoding.Default); + string line; + while (null != (line = r.ReadLine())) + { + line = stripComment(line); + line = line.Trim(); + if (line.Length == 0) + { + // Empty line + } + else if (line.Length == 4) + { + exclusions.Add(line); + } + else + { + // Skip code points > 0xffff + } + } + r.Close(); + } + + // Read UnicodeData + + SortedList canonical = new SortedList(); + SortedList compatibility = new SortedList(); + SortedList combiningClasses = new SortedList(); + { + StreamReader r = new StreamReader("UnicodeData.txt", Encoding.Default); + string line; + while (null != (line = r.ReadLine())) + { + line = stripComment(line); + line = line.Trim(); + + if (line.Length == 0) + { + // Empty line + } + else + { + string[] f = split(line, ';'); + + if (f[0].Length == 4) + { + if (!f[5].Equals("")) + { + if (isCompatibilityMapping(f[5])) + { + compatibility[f[0]] = stripCompatibilityTag(f[5]); + } + else + { + compatibility[f[0]] = f[5]; + if (!exclusions.Contains(f[0])) + { + canonical[f[0]] = f[5]; + } + } + } + if (!f[3].Equals("0")) + { + //UPGRADE_TODO: Method 'java.lang.Integer.parseInt' was converted to 'System.Convert.ToInt32' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073'" + combiningClasses[(int)System.Convert.ToInt32(f[0], 16)] = f[3]; + } + } + else + { + // Skip code points > 0xffff + } + } + } + r.Close(); + } + + // Recursively apply compatibility mappings + while (true) + { + bool replaced = false; + + IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + string v = (string)compatibility[k]; + + string d = decompose(v, compatibility); + if (!d.Equals(v)) + { + replaced = true; + compatibility[k] = d; + } + } + + if (!replaced) + { + break; + } + } + + // Eliminate duplicate mappings + SortedList compatibilityKeys = new SortedList(); + ArrayList compatibilityMappings = new ArrayList(); + { + IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + string v = (string)compatibility[k]; + + int index = compatibilityMappings.IndexOf(v); + if (index == -1) + { + index = compatibilityMappings.Count; + compatibilityMappings.Add(v); + } + compatibilityKeys[k] = (int)index; + } + } + + // Create composition tables + SortedList firstMap = new SortedList(); + SortedList secondMap = new SortedList(); + { + IEnumerator i = new HashSet(canonical.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + string v = (string)canonical[k]; + + string[] s = split(v, ' '); + + if (s.Length == 2) + { + // If both characters have the same combining class, they + // won't be combined (in the sequence AB, B is blocked from + // A if both have the same combining class) + string cc1 = (string)combiningClasses[(int)System.Convert.ToInt32(s[0], 16)]; + string cc2 = (string)combiningClasses[(int)System.Convert.ToInt32(s[1], 16)]; + if (cc1 != null || (cc1 != null && cc1.Equals(cc2))) + { + // Ignore this composition + // TODO check this + //i.remove(); + canonical.Remove(k); + continue; + } + + if (firstMap.ContainsKey(s[0])) + { + int c = (int)firstMap[s[0]]; + firstMap[s[0]] = (int)(c + 1); + } + else + { + firstMap[s[0]] = 1; + } + + if (secondMap.ContainsKey(s[1])) + { + int c = (int)secondMap[s[1]]; + secondMap[s[1]] = (int)(c + 1); + } + else + { + secondMap[s[1]] = 1; + } + } + else if (s.Length > 2) + { + Console.WriteLine("? wrong canonical mapping for " + k); + System.Environment.Exit(1); + } + } + } + + SortedList singleFirstComposition = new SortedList(); + SortedList singleSecondComposition = new SortedList(); + SortedList complexComposition = new SortedList(); + + int composeLookupMax = 0; + { + IEnumerator i = new HashSet(canonical.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string) i.Current; + string v = (string) canonical[k]; + + string[] s = split(v, ' '); + + if (s.Length == 2) + { + // TODO, check this + int first = 0; + if(firstMap.Contains(s[0])) + first = (int) firstMap[s[0]]; + + int second = 0; + if (secondMap.Contains(s[1])) + second = (int) secondMap[s[1]]; + // TODO, check this + + if (first == 1) + { + singleFirstComposition[s[0]] = new string[] { s[1], k }; + composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16)); + } + else if (second == 1) + { + singleSecondComposition[s[1]] = new string[] { s[0], k }; + composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16)); + } + else + { + if (complexComposition.ContainsKey(s[0])) + { + SortedList m = (SortedList)complexComposition[s[0]]; + if (m.ContainsKey(s[1])) + { + Console.WriteLine("? ambiguous canonical mapping for " + s[0]); + System.Environment.Exit(1); + } + m[s[1]] = k; + } + else + { + SortedList m = new SortedList(); + m[s[1]] = k; + complexComposition[s[0]] = m; + } + composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16)); + composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16)); + } + } + } + } + + Console.WriteLine("Generating CombiningClass.cs file..."); + + // Dump combining classes + { + StreamWriter w = new StreamWriter("CombiningClass.cs", false, Encoding.Default); + w.WriteLine("// Do not edit !!!"); + w.WriteLine("// this file is generated automatically"); + w.WriteLine(); + w.WriteLine("public class CombiningClass"); + w.WriteLine("{"); + w.WriteLine("\tpublic static readonly int[,] c = new int[,] {"); + System.Text.StringBuilder index = new System.Text.StringBuilder(); + + int count = 0; + + for (int i = 0; i < 256; i++) + { + bool empty = true; + + StringBuilder page = new StringBuilder(); + page.Append(" { /* Page " + i + " */"); + + for (int j = 0; j < 256; j++) + { + int c = (int)((i << 8) + j); + string cc = (string)combiningClasses[c]; + + if (0 == (j & 31)) + { + page.Append("\r\n "); + } + if (cc == null) + { + page.Append("0, "); + } + else + { + page.Append(cc + ", "); + empty = false; + } + } + page.Append("\r\n },"); + + index.Append(" "); + + if (!empty) + { + w.WriteLine(page.ToString()); + index.Append(count++); + index.Append(",\r\n"); + } + else + { + index.Append("-1,\r\n"); + } + } + w.WriteLine(" };\r\n"); + + w.WriteLine("\tpublic static readonly int[] i = new int[] {"); + w.Write(index.ToString()); + w.WriteLine(" };"); + w.WriteLine("}"); + w.Close(); + } + + //Console.WriteLine(" Ok."); + Console.WriteLine("Generating DecompositionKeys.cs file..."); + + // Dump compatibility decomposition + { + StreamWriter w = new StreamWriter("DecompositionKeys.cs", false, Encoding.Default); + w.WriteLine("// Do not edit !!!"); + w.WriteLine("// this file is generated automatically"); + w.WriteLine(); + w.WriteLine("public class DecompositionKeys"); + w.WriteLine("{"); + + w.WriteLine("\tpublic static readonly int[] k = new int[] {"); + IEnumerator i = new HashSet(compatibilityKeys.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + int index = ((int)compatibilityKeys[k]); + w.WriteLine(" '\\u" + k + "', " + index + ","); + } + w.WriteLine(" };"); + w.WriteLine("}"); + w.Close(); + } + + //Console.WriteLine(" Ok."); + Console.WriteLine("Generating DecompositionMappings.cs file..."); + + { + StreamWriter w = new StreamWriter("DecompositionMappings.cs", false, Encoding.Default); + w.WriteLine("// Do not edit !!!"); + w.WriteLine("// this file is generated automatically"); + w.WriteLine(); + w.WriteLine("public class DecompositionMappings"); + w.WriteLine("{"); + w.WriteLine("\tpublic static readonly string[] m = new string[] {"); + IEnumerator i = compatibilityMappings.GetEnumerator(); + while (i.MoveNext()) + { + string m = (string)i.Current; + w.WriteLine(" \"" + toString(m) + "\","); + } + w.WriteLine(" };"); + w.WriteLine("}"); + w.Close(); + } + + //Console.WriteLine(" Ok."); + Console.WriteLine("Generating Composition.cs file..."); + + // Dump canonical composition + { + StreamWriter w = new StreamWriter("Composition.cs", false, Encoding.Default); + w.WriteLine("// Do not edit !!!"); + w.WriteLine("// this file is generated automatically"); + w.WriteLine(); + w.WriteLine("public class Composition"); + w.WriteLine("{"); + + IEnumerator i; + int index = 0; + + SortedList indices = new SortedList(); + + i = new HashSet(complexComposition.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string s0 = (string)i.Current; + indices[(int)System.Convert.ToInt32(s0, 16)] = (int)index; + index++; + } + + int multiSecondStart = index; + w.WriteLine("\t/* jagged Array */"); + w.WriteLine("\tpublic static readonly char[][] multiFirst = new char[][] {"); + //w.WriteLine(" public final static char[][] multiFirst = new char[][] {"); + i = new HashSet(complexComposition.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string s0 = (string)i.Current; + SortedList m = (SortedList)complexComposition[s0]; + + SortedList line = new SortedList(); + int maxIndex = 1; + + System.Collections.IEnumerator i2 = new HashSet(m.Keys).GetEnumerator(); + while (i2.MoveNext()) + { + string s1 = (string)i2.Current; + string k = (string)m[s1]; + + int s1i = (int)System.Convert.ToInt32(s1, 16); + + if (!indices.ContainsKey(s1i)) + { + indices[s1i] = (int)index; + index++; + } + line[indices[s1i]] = k; + maxIndex = System.Math.Max(maxIndex, ((int)indices[s1i])); + } + + w.Write("\tnew char[] { "); + for (int j = multiSecondStart; j <= maxIndex; j++) + { + if (line.ContainsKey((int)j)) + { + string s = (string)line[(int)j]; + w.Write("'" + toString(s) + "', "); + } + else + { + //w.Write(" 0, "); + w.Write("'" + toString("0000") + "', "); + } + } + w.WriteLine("},"); + } + w.WriteLine(" };"); + + int singleFirstStart = index; + + w.WriteLine("\tpublic static readonly char[,] singleFirst = new char[,] {"); + i = new HashSet(singleFirstComposition.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + string[] v = ((string[])singleFirstComposition[k]); + w.WriteLine(" { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },"); + + if (indices.ContainsKey((int)System.Convert.ToInt32(k, 16))) + { + Console.WriteLine(k + " already indexed!"); + } + + indices[(int)System.Convert.ToInt32(k, 16)] = (int)index; + index++; + } + w.WriteLine(" };"); + + int singleSecondStart = index; + + w.WriteLine("\tpublic static readonly char[,] singleSecond = new char[,] {"); + i = new HashSet(singleSecondComposition.Keys).GetEnumerator(); + while (i.MoveNext()) + { + string k = (string)i.Current; + string[] v = ((string[])singleSecondComposition[k]); + w.WriteLine(" { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },"); + + indices[(int)System.Convert.ToInt32(k, 16)] = (int)index; + index++; + } + w.WriteLine(" };"); + + w.WriteLine("\tpublic static readonly int multiSecondStart = " + multiSecondStart + ";"); + w.WriteLine("\tpublic static readonly int singleFirstStart = " + singleFirstStart + ";"); + w.WriteLine("\tpublic static readonly int singleSecondStart = " + singleSecondStart + ";"); + + System.Text.StringBuilder compositionPages = new System.Text.StringBuilder(); + + w.WriteLine("\tpublic static readonly int[] composePage = new int[] {"); + int pageCount = 0; + for (int j = 0; j * 256 < composeLookupMax + 255; j++) + { + bool empty = true; + StringBuilder page = new StringBuilder(); + for (int k = 0; k < 256; k++) + { + if (k % 16 == 0) + { + page.Append("\r\n "); + } + if (indices.ContainsKey((int)(j * 256 + k))) + { + page.Append(indices[(int)(j * 256 + k)]); + page.Append(", "); + empty = false; + } + else + { + page.Append("-1, "); + } + } + + if (empty) + { + w.WriteLine(" -1,"); + } + else + { + w.WriteLine(" " + pageCount + ","); + compositionPages.Append("\t{"); + compositionPages.Append(page); + compositionPages.Append("\r\n },\r\n"); + pageCount++; + } + } + w.WriteLine(" };"); + //w.WriteLine("\t/* jagged Array */"); + w.WriteLine("\tpublic static readonly int[,] composeData = new int[,] {"); + w.Write(compositionPages); + w.WriteLine(" };"); + w.WriteLine("}"); + w.Close(); + } + + //Console.WriteLine(" Ok."); + Console.WriteLine("Finished!"); + } + } +} \ No newline at end of file diff --git a/csharp/generate/GenerateRFC3454.cs b/csharp/generate/GenerateRFC3454.cs new file mode 100644 index 0000000..0682e4b --- /dev/null +++ b/csharp/generate/GenerateRFC3454.cs @@ -0,0 +1,294 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System; +using System.IO; +using System.Text; + +namespace gnu.inet.encoding.misc +{ + public class GenerateRFC3454 + { + internal const string FILE_RFC3454 = "rfc3454.txt"; + internal const string FILE_OUTPUT = "RFC3454.cs"; + + public static void Generate() + { + if (!File.Exists(FILE_RFC3454)) + { + Console.WriteLine("Unable to find rfc3454.txt."); + Console.WriteLine("Please download this file from:"); + Console.WriteLine("http://www.ietf.org/rfc/rfc3454.txt"); + + return; + } + + Console.WriteLine("Generating " + FILE_OUTPUT + " file..."); + + + StreamReader r = new StreamReader(FILE_RFC3454); + StreamWriter w = new StreamWriter(FILE_OUTPUT); + + w.WriteLine("// Do not edit !!!"); + w.WriteLine("// this file is generated automatically"); + w.WriteLine(); + w.WriteLine("using System;"); + w.WriteLine(); + w.WriteLine("namespace Gnu.Inet.Encoding{"); + w.WriteLine(); + w.WriteLine("public class RFC3454"); + + w.WriteLine("{"); + + int n = 0; + + string t = null; + System.Text.StringBuilder o1 = null; + System.Text.StringBuilder o2 = null; + + while (true) + { + string line = r.ReadLine(); + string l = line; + + if (null == l) + { + break; + } + l = l.Trim(); + + if (l.Equals("")) + { + // Ignore empty line + } + else if (-1 != l.IndexOf("\u000c")) + { + // Ignore FF + } + else if (0 == l.IndexOf("RFC")) + { + // Ignore page header + } + else if (0 == l.IndexOf("Hoffman & Blanchet")) + { + // Ignore page footer + } + else if (-1 != l.IndexOf("----- Start Table ")) + { + // Start of a table + t = l.Substring(l.IndexOf("Table") + 6, (l.LastIndexOf("-----") - 1) - (l.IndexOf("Table") + 6)); + o1 = new System.Text.StringBuilder(); + o2 = new System.Text.StringBuilder(); + } + else if (-1 != l.IndexOf("----- End Table ")) + { + // End of a table + if ("A.1".Equals(t)) + { + w.WriteLine(" public static char[][] A1 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("B.1".Equals(t)) + { + w.WriteLine(" public static char[] B1 = new char[] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("B.2".Equals(t)) + { + w.WriteLine(" public static char[] B2search = new char[] {\r\n" + o1.ToString() + " };\r\n"); + w.WriteLine(" public static string[] B2replace = new string[] {\r\n" + o2.ToString() + " };\r\n"); + } + else if ("B.3".Equals(t)) + { + w.WriteLine(" public static char[] B3search = new char[] {\r\n" + o1.ToString() + " };\r\n"); + w.WriteLine(" public static string[] B3replace = new string[] {\r\n" + o2.ToString() + " };\r\n"); + } + else if ("C.1.1".Equals(t)) + { + w.WriteLine(" public static char[] C11 = new char[] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.1.2".Equals(t)) + { + w.WriteLine(" public static char[] C12 = new char[] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.2.1".Equals(t)) + { + w.WriteLine(" public static char[][] C21 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.2.2".Equals(t)) + { + w.WriteLine(" public static char[][] C22 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.3".Equals(t)) + { + w.WriteLine(" public static char[][] C3 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.4".Equals(t)) + { + w.WriteLine(" public static char[][] C4 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.5".Equals(t)) + { + w.WriteLine(" public static char[][] C5 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.6".Equals(t)) + { + w.WriteLine(" public static char[][] C6 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.7".Equals(t)) + { + w.WriteLine(" public static char[][] C7 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("C.8".Equals(t)) + { + w.WriteLine(" public static char[][] C8 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("D.1".Equals(t)) + { + w.WriteLine(" public static char[][] D1 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + else if ("D.2".Equals(t)) + { + w.WriteLine(" public static char[][] D2 = new char[][] {\r\n" + o1.ToString() + " };\r\n"); + } + t = null; + } + else if (null != t) + { + // Filter comments + if (-1 != l.LastIndexOf(";")) + { + string c = l.Substring(l.LastIndexOf(";")).Trim(); + try + { + Convert.ToInt32(c, 16); + } + catch + { + l = l.Substring(0, (l.LastIndexOf(";")) - (0)); + } + } + + if ("A.1".Equals(t)) + { + if (4 == l.Length) + { + o1.Append(" new char[] { '\\u"); + o1.Append(l); + o1.Append("' },"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if (5 == l.Length) + { + //Char + o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n"); + //Console.WriteLine("Skip: " + l); + // Skip characters outside the range of Java unicode + } + else if (9 == l.Length) + { + o1.Append(" new char[] { '\\u"); + o1.Append(l.Substring(0, (4) - (0))); + o1.Append("', '\\u"); + o1.Append(l.Substring(5, (9) - (5))); + o1.Append("' },"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if (11 == l.Length) + { + o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n"); + //o1.AppendLine("// " + l); + // Console.WriteLine("Skip: " + l); + // Skip characters outside the range of Java unicode + } + else + { + Console.WriteLine("Unknown format of A.1 line: " + l); + } + } + else if ("B.1".Equals(t)) + { + Tokenizer tok = new Tokenizer(l, " ;"); + o1.Append(" '\\u" + tok.NextToken() + "',"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if ("B.2".Equals(t) || "B.3".Equals(t)) + { + Tokenizer tok = new Tokenizer(l, "; "); + string c = tok.NextToken(); + if (c.Length == 4) + { + o1.Append(" '\\u" + c + "',"); + o1.Append("\t/*" + line.Trim() + "*/\r\n"); + if (tok.HasMoreTokens()) + { + o2.Append(" \""); + while (tok.HasMoreTokens()) + { + o2.Append("\\u" + tok.NextToken()); + } + o2.Append("\","); + o2.Append("\t/*" + line.Trim() + "*/\r\n"); + } + else + { + o2.Append(" null,"); + o2.Append("\t/*" + line.Trim() + "*/\r\n"); + } + } + } + else if ("C.1.1".Equals(t)) + { + o1.Append(" '\\u" + l + "',"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if ("C.1.2".Equals(t)) + { + o1.Append(" '\\u" + l + "',"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if ("C.2.1".Equals(t) || "C.2.2".Equals(t) || "C.3".Equals(t) || "C.4".Equals(t) || "C.5".Equals(t) || "C.6".Equals(t) || "C.7".Equals(t) || "C.8".Equals(t) || "D.1".Equals(t) || "D.2".Equals(t)) + { + if (4 == l.Length) + { + o1.Append(" new char[] { '\\u" + l + "' },"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + else if (9 == l.Length) + { + o1.Append(" new char[] { '\\u"); + o1.Append(l.Substring(0, (4) - (0))); + o1.Append("', '\\u"); + o1.Append(l.Substring(5, (9) - (5))); + o1.Append("' },"); + o1.Append("\t/* " + line.Trim() + " */\r\n"); + } + } + } + + n++; + } + + w.WriteLine("}"); + w.WriteLine("}"); + w.Close(); + } + } +} \ No newline at end of file diff --git a/csharp/generate/HashSet.cs b/csharp/generate/HashSet.cs new file mode 100644 index 0000000..056b689 --- /dev/null +++ b/csharp/generate/HashSet.cs @@ -0,0 +1,91 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System; +using System.Collections; + +namespace gnu.inet.encoding.misc +{ + /// + /// HashSet class. + /// + public class HashSet : ArrayList + { + public HashSet() : base() + { + } + + public HashSet(System.Collections.ICollection c) + { + this.AddAll(c); + } + + public HashSet(int capacity) : base(capacity) + { + } + + /// + /// Adds a new element to the ArrayList if it is not already present. + /// + /// Element to insert to the ArrayList. + /// Returns true if the new element was inserted, false otherwise. + new public virtual bool Add(System.Object obj) + { + bool inserted; + + if ((inserted = this.Contains(obj)) == false) + { + base.Add(obj); + } + + return !inserted; + } + + /// + /// Adds all the elements of the specified collection that are not present to the list. + /// + /// Collection where the new elements will be added + /// Returns true if at least one element was added, false otherwise. + public bool AddAll(System.Collections.ICollection c) + { + System.Collections.IEnumerator e = new System.Collections.ArrayList(c).GetEnumerator(); + bool added = false; + + while (e.MoveNext() == true) + { + if (this.Add(e.Current) == true) + added = true; + } + + return added; + } + + /// + /// Returns a copy of the HashSet instance. + /// + /// Returns a shallow copy of the current HashSet. + public override System.Object Clone() + { + return base.MemberwiseClone(); + } + } +} \ No newline at end of file diff --git a/csharp/generate/Program.cs b/csharp/generate/Program.cs new file mode 100644 index 0000000..82800d3 --- /dev/null +++ b/csharp/generate/Program.cs @@ -0,0 +1,39 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System; + +namespace gnu.inet.encoding.misc +{ + class Program + { + /// + /// Main entry point of this console app + /// + /// + static void Main(string[] args) + { + GenerateRFC3454.Generate(); + GenerateNFKC.Generate(); + } + } +} diff --git a/csharp/generate/Tokenizer.cs b/csharp/generate/Tokenizer.cs new file mode 100644 index 0000000..450077e --- /dev/null +++ b/csharp/generate/Tokenizer.cs @@ -0,0 +1,223 @@ +/// +/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +/// * +/// Author: Alexander Gnauck AG-Software +/// * +/// This file is part of GNU Libidn. +/// * +/// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +/// USA +/// +using System; +using System.Collections; +using System.Text; + +namespace gnu.inet.encoding.misc +{ + /// + /// The class performs token processing in strings + /// + public class Tokenizer : IEnumerator + { + /// Position over the string + private long currentPos = 0; + + /// Include demiliters in the results. + private bool includeDelims = false; + + /// Char representation of the String to tokenize. + private char[] chars = null; + + //The tokenizer uses the default delimiter set: the space character, the tab character, the newline character, and the carriage-return character and the form-feed character + private string delimiters = " \t\n\r\f"; + + /// + /// Initializes a new class instance with a specified string to process + /// + /// String to tokenize + public Tokenizer(string source) + { + this.chars = source.ToCharArray(); + } + + /// + /// Initializes a new class instance with a specified string to process + /// and the specified token delimiters to use + /// + /// String to tokenize + /// String containing the delimiters + public Tokenizer(string source, string delimiters) + : this(source) + { + this.delimiters = delimiters; + } + + + /// + /// Initializes a new class instance with a specified string to process, the specified token + /// delimiters to use, and whether the delimiters must be included in the results. + /// + /// String to tokenize + /// String containing the delimiters + /// Determines if delimiters are included in the results. + public Tokenizer(string source, string delimiters, bool includeDelims) + : this(source, delimiters) + { + this.includeDelims = includeDelims; + } + + + /// + /// Returns the next token from the token list + /// + /// The string value of the token + public string NextToken() + { + return NextToken(this.delimiters); + } + + /// + /// Returns the next token from the source string, using the provided + /// token delimiters + /// + /// String containing the delimiters to use + /// The string value of the token + public string NextToken(string delimiters) + { + //According to documentation, the usage of the received delimiters should be temporary (only for this call). + //However, it seems it is not true, so the following line is necessary. + this.delimiters = delimiters; + + //at the end + if (this.currentPos == this.chars.Length) + throw new System.ArgumentOutOfRangeException(); + //if over a delimiter and delimiters must be returned + else if ((System.Array.IndexOf(delimiters.ToCharArray(), chars[this.currentPos]) != -1) + && this.includeDelims) + return "" + this.chars[this.currentPos++]; + //need to get the token wo delimiters. + else + return nextToken(delimiters.ToCharArray()); + } + + //Returns the nextToken wo delimiters + private string nextToken(char[] delimiters) + { + string token = ""; + long pos = this.currentPos; + + //skip possible delimiters + while (System.Array.IndexOf(delimiters, this.chars[currentPos]) != -1) + //The last one is a delimiter (i.e there is no more tokens) + if (++this.currentPos == this.chars.Length) + { + this.currentPos = pos; + throw new System.ArgumentOutOfRangeException(); + } + + //getting the token + while (System.Array.IndexOf(delimiters, this.chars[this.currentPos]) == -1) + { + // don't use += to work around bug in compiler + // see https://bugzilla.novell.com/show_bug.cgi?id=372483 + token = token + this.chars[this.currentPos]; + //the last one is not a delimiter + if (++this.currentPos == this.chars.Length) + break; + } + return token; + } + + + /// + /// Determines if there are more tokens to return from the source string + /// + /// True or false, depending if there are more tokens + public bool HasMoreTokens() + { + //keeping the current pos + long pos = this.currentPos; + + try + { + this.NextToken(); + } + catch (System.ArgumentOutOfRangeException) + { + return false; + } + finally + { + this.currentPos = pos; + } + return true; + } + + /// + /// Remaining tokens count + /// + public int Count + { + get + { + //keeping the current pos + long pos = this.currentPos; + int i = 0; + + try + { + while (true) + { + this.NextToken(); + i++; + } + } + catch (System.ArgumentOutOfRangeException) + { + this.currentPos = pos; + return i; + } + } + } + + /// + /// Performs the same action as NextToken. + /// + public System.Object Current + { + get + { + return (Object)this.NextToken(); + } + } + + /// + // Performs the same action as HasMoreTokens. + /// + /// True or false, depending if there are more tokens + public bool MoveNext() + { + return this.HasMoreTokens(); + } + + /// + /// Does nothing. + /// + public void Reset() + { + ; + } + } +} \ No newline at end of file diff --git a/csharp/libidn.csproj b/csharp/libidn.csproj new file mode 100644 index 0000000..3f0be5b --- /dev/null +++ b/csharp/libidn.csproj @@ -0,0 +1,59 @@ + + + Debug + AnyCPU + 2.0 + {BED43666-B1A2-486D-871C-A65A2A925764} + + libidn + Library + + 1 + + + False + False + OnSuccessfulBuild + + + + + True + False + False + False + + bin\Debug\ + False + + + False + False + False + False + + bin\Release\ + False + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/csharp/libidn.csproj.user b/csharp/libidn.csproj.user new file mode 100644 index 0000000..1126ff8 --- /dev/null +++ b/csharp/libidn.csproj.user @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/csharp/libidn.sln b/csharp/libidn.sln new file mode 100644 index 0000000..a5cf359 --- /dev/null +++ b/csharp/libidn.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +# SharpDevelop 2.1.0.2376 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libidn", "libidn.csproj", "{BED43666-B1A2-486D-871C-A65A2A925764}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BED43666-B1A2-486D-871C-A65A2A925764}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BED43666-B1A2-486D-871C-A65A2A925764}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BED43666-B1A2-486D-871C-A65A2A925764}.Release|Any CPU.Build.0 = Release|Any CPU + {BED43666-B1A2-486D-871C-A65A2A925764}.Release|Any CPU.ActiveCfg = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/csharp/libidn.suo b/csharp/libidn.suo new file mode 100644 index 0000000000000000000000000000000000000000..1de29711ac6d7ef5379e7f329857c65014ff2ea4 GIT binary patch literal 82432 zcmeHQdz>6aweF1}0YVZI0wVGl@=kD<-Oc7fe89dE7LrY1LlR}Kag&{dO?GFOo!LAj zk%X%Rxr$LyQ4vImNqBKG2KF{l4x#+toeYJvFnl zJ2N{|`#W3R)iqt!Ri{p!bL!NoCyq>d_O1hGJ!g2rTa4Ej$Bv(5j8W1@;krWZPc;nQ zzXovZ`0?YCd_693TMk9i0{=ukN2AZq1e^e1e~$&62sjBa9&j>X9AE-q5?~?#-EW)? zI0Y~na2j9=;B>$lfY$h+!cLL-&)3Oa+ zcuzNAJ76u~S^(eGhd2Rvn|-gozsDy{p0n?-G z!pgT_aM_ILqZOnXCSo93i4uE^&A5#l8*$ZaeqGpG+|SMc6_WB9yPpQ%5q}w08SQAh zE$G`$#7W~S{EwkdlFoJw3)78J6~q&c7v1tnLz$nU1tqZux{USszujmvOW%sxY`|6e z5JCC;7LF6$@=3RUVZWMqNnoFl4zLd;jWKC}jDL>x@c_~RK4ZC(*KhojrjQ26_-9_y z02%)gTr*7_|MEVLe~w4Fm$(vX>iB1R(D)~P;rM4B(g2Qs(gD%{rd@(q9sg1W9;FR_ z721wmF{^J0S>s~uu#(xs` z{dU?m#H14(&F{3+SeIS6eiz_+z;3{aPrNwo)#%roZ=HYS%fI>9eeB+h!XF!nA=w8O zcwDV!IwDtg#y2r(?9x~~*4IudZJ6(f zv7?NTmrQ=!whH7RaNbRrn1G860>>;vBWBVlMobSdrysLK%%tWqBZ9lQ(Sf)bxD+>O zTnyBv%S_({`m-7|XE}apQQ}^c{v?4n4JKvYX46Bfl+^!oL4Q;nPtB2%mA98J=Rdz+#-48ZVf1G?+P)j5k`G^Fw?&UZD(oNLfbuy9kSEhEexD?EGj^eV9cW#5xhqWUmr}_)vc=qaq;4^c7V=$h21d`!aoyf%a;Lfd z+AD!yT>wfwF=MAGZzXZnhfzl=&hf|RiGkL)zOd1x1pBw*s z(1H%fqT>8Ylu3>tj1pC&{BbCo^1g2Q)ESJm5uY4WQ28PYHlbyRmwurNlQ^UAV%+5xA07I;6WE?fT}bik&C%CsYz1C6qVD9wITDGH z!Effcng`6U26bpNrjPq){RQuT=+XmEf8oe!pItL?nbG&d%j)Ocw)yhU|Kihot~_@C z7w|IZ2c9_ir?odt{Z{jr7XN(1ZGYQNK^Cc3A3o>0>KFFb@7Z?rW52m*{3oo`2|qlm z>(!H{t=M;b?<+?R?QgbH|9i@eC%-an+R|^l_}s2p>$^$H5Za7I8>bvPcIez?`#;rj z@5jzPdeLy#fZ8+C%{tJ=8vL(C&)1jAZCXyg?U!}uL~fzn3@a5+f&hyjaJr4Le* zD0+>wryppM|e94RcB+^L#Mehkx@88(4#3a&OcwyjJ*Zmd~r zp~(f$M=Lj)ZCwef#d*z(LnaZK(AxIv2acYy{N@?AeQ(sAr@vwr?#01-sIK8~ZUMTt zqEf3+bvBA&JjLJZ9&U$=G}tF5%B5c*lWzzA+@Al z)W84M9$`7uV@Uror_+BH?R5IjD>1PBHZJ(t1D`q2ed*q_Kliq|A6nCKF9>A1{%bWq zpw=wg-BTiWxKk+`6B~L=3~=TZzJR1~cSYmkXj9LY{%#2Wu}FWsBhuU%Pb6bqUH$P* zv3PV-yuE+JmS}S)ZekHA9b%nGUEP`Jhd!b$+27IG6REAPo*!M=*RwgcA(@D_Z%SsQ4R$>_$u?&a;B@v6R9g2IN7Zyecab@*eDdgnrGOs`6z6Y1*8@$>|+krXrk z?Y#mmx)~feW&I!?4;2m!=Ys#CDuFr;wtiqnTI{m3`F^1`;aWn!dD_BV$bTGoWD~gv_?6Mmj>3d+{5X_S6+8bf+DYTS z>;69aFz%Tb1lNkpYwO}krkf-&@G=*!V~t3SK|u@vjWHQcN*SBnNGL-3y@bvMi~8FZLW~p6%B}3K3O}K z%@B~yl}y=lj10krU`6YI3yUBERAWNoHHCpCAjAuBwFrL;%(QA#Wm1d#dB`~*c@}_y zr4j{UC15cx?7-Jc5t8N?zlvhATe%3PNg_L><2{Fue_07Er)*39lXPDAme{VJyoS7o z)pzVYjyK}-E$9kq7gayu<)=nh46gnB`7M85nZmq3^%3taD zvQ)l`+zI(Vhf+AagVbUwYH_$=cq^T@{c}m+e=Eqz<@i$Rr!i}v=|3HP<>0;F3X&tw zd$}S>R3{r%*P94uBfbEy>7D2evt+EbrB=Tea2`mEJr-$^^d zsbS3&E4ilS(SSg#{4VlVQKgN2Y>&xoA0FNI|{zcnrVXiiz{7Ub79lC^p?$`)zKfyR@$0*bf zec<0IKX7nMJFYzC&zGGFtfD@^p#thsM$j+0#&^&p7sMJpaC%skKaMmmihc@kJK#>h9RU9J({}tB#NP+(2YeRrIRKx39`QW@ z>WX>)CB$C_+-u+8hxh>CtM>iZ5Pu!;4g3Cn#NPrOwC}%z_`84y?E421KLj{r-~Ryd z!}c|bJAN3~KLk8xr~Mf5PXLeG_tYW%6!4^d|1-ot2mGgf|4YQb0z7Ts{~Gac0Kc{G zSw_BtTVf!e;kTX|EPstE3H~d1R-9ZC-|xqN2J`SQ{p{SWT-O%dc6NEls)i%Kk12`v zli4u1&F(n1f7S`EHWRy9+A{=?Kk5tbdU3->_c+$qA5JKV_7B!)dS(6(*Z$Tt4Rdfe zT8(s8W3bb*gr z0v?HL-CPAFc7+G5KMag>wpn;?>nZ1Q$rrZ%(}cS9NydPf>#x#Ry5(Ptcm0*jJA&8x zg_KTb-Pigx?f6ES3!qX5Ne_!>;~{}z36@r9iB^aIjj*_>G#6KDkY0(q8eqmeNM$nq zSD`)nO~KguHP>85Rk$TNc@i9}?SDp*kN|K6Nt60uoE^Tjm5Rvr|LkxoJYk4ciim30u9sDZwwOuGn;=>XGhFG z1GGeU{yiVv_!tc)5W?nv+VrOjwEs8{nWh7D%l``UQl@7JE5Fvt68fLzPeYEW0NwKc z9eEGgZw)JdzMUs5V)<;(2tc>|FCs5>5ey9h_P0wL+8TG``QWSzieq(EoiVL>l4~rq zAHVhOy`$){;5{YZ5>+PONtvK--;D>RqfLN0jWm;`Y-R1Bb*$p8-6VLJ5=g~sz*x|_ z{EhaNHO?HFK>g8)xUu?&dr`gKDQH8`V_L9U_T5%JygXS4-q1DhQolEn?s~)0hGi|( zewM-r$V9)xcG*)R?Gmi_OBig2-6hfve)wTgO18qgN~9IMRt!!HaJ8fq=!C8wjab1I zrBY}Uk+6ewyKIXaN~A5q_r9wNv{nnr7+(y;2ot6+V@niM2-%A z3FJlkFXFC3?rGxg@~!rs?BzQ~J8oZ7sg>cLVt|_a9c+R(z^vCyKA+N*Q$)(zm#D1xX)`R9flek|uLr z2(m)u)+=IU74Xrk^z}a544mEyu&iAB5!3q3@>sy$*Z^Fo4=(P{i4N>)j+*Pbw7_$0 z7(4KVw9{Y=^vP=f7Jg>7CSz|9Y-PH7?ak-CSM$oXZm+$Jmn|LGIThrMLf>LA+#=Ol zmv#K4(fX4sv{u{GA4byN=_J-1^Ux=5Uld+#m8|1&u5_F=IChkN)~K(;SFHvkp` zB(Mdg6(ubw4$7ydtJgvAk#se$T0y|(MFRWvmGxI#{K(j+Chco89$azvsJr+~`kU9og)?PZ@idzoLE_xfipQ;& zoB!4RRg%m74$dvyR#Vp}4fj5K>37gBh-d9CkXV;mY{&1sWq9X^Dy*y}K|f@ksx|iq zk&4k%*KF`7^c`c_^hQ88$bFKA^ubdM5Z-(-jgny<~Tb#KnM3;{}xvmuXWWVH0h0 zPXb6>4A`V%&~VTuN}ARV{-7Or#bJAF`7`4Vebq0&cTK=rk>qNiszb!BIdZu|N?UPD zYwBH-;MpybCY}!I+a(Tv?{T!Dj+d=Wqyx2vEZM7VwESnZT)OSM$!IqEOeI1^)e_V+*oy0Oxt=L!d*h+Ljh;>PJzs|HKUok~u>B1C zPX=nr8f*N-_zz@y!Oj>~ex1h4xc}u`{>xJJ#bl84(So!npJYi8b-~VmAkiJ3~ z!pg6)vV{K6ru=W>jiS*X>hbSq2Z@tg|2X~+nU8h9hLF?7ay^S>viiQR`tT>HH&Su% z=)t!xbbq0x3-@|eQ)dgua!EAq%a*$XlnoT1#y=zdjC2 zyT9P*zfgSX!=RO$V<$9M(w~|ebJ!MP-|Kz$*dV_@jQ%Y07UpwL`YZjXTlc&19{NaP z2rIt^D{AQi{ZG6WnJxh6mVX3!Y2C%pjIHcT(1uH}&AkETRpM$M?&*oa^1o20_+KD5 zHoOSd0&(@d+5VgH}ZsjUd>8g8Sv05%o0(96sUPp1v!jW|#Iqq|=ANC5Q2 zZu(n5;mttMc`yxW0@Oc%XfP*H7Hf5^WUAB z7BSU-Xpr`i+#hv5h3@|=J09MVKZc4zy7!M6#`);W;@9<1ud_ABqg+?sn2WOGIWAjd zoFF-MHp(n}c(gR$JfZ%bIc|S-^ioscJ>8I8w%8R&8+y4toSIN`HQ2R>q5cMc-7_^Wr6KWp*It9yptuTW>63?w zpA#-cW+UpridT0_+nHisd8Kx#?77_0vIEnS5@7;T=Q(m zu>krBKFN-Gyz(jb^#sHd?dwU1C)?Lk5T9;ezZUVC_Vsy)Uk^CjzCYKFBX&F$@ihBd z>QIh{rv>N}p>TG_X0qzawV_fyeP}Yiz1Teea%E>Ecx&c*ZE{HEcrV{3v(tGfxo~Eu zg;;r7k}^AS9k#U3l%!A6!s(?&STL+j=_RfJAIqs;pm638ku*d%8DxJ!FXV;QPYYA} zsS*TeQlaeE=W1a6lS(INp@zAWwF-;Z z&SdT2Y_vnEpR{WjJhGr~NI5@$jb#Mo7W+9pgSF8KvYVjo_h8S!80tA8h@a}-2cE% z3;+J~JAha|%cZ4@Zuvh#-Y2xmPrn05%4gXO_G?3|MIR@-IXt)>QZVTaj1n@58>o7G~b*0?Q|s zuxy5O`T4vJz_l2Lp`t51RWy#Zg>`AHl8%3V=kZK!{;ir@|BKhU<&(8vO;C?-^_yPL zsb6kg4|cs?`YD{xE6aZgH1|l9|HA0cJorXW7qX$hqX7l)UxH~+l}?|KVBm;RlM z@^8{AUvK_t#JeuZp#1SD|1(&?GScG6U*Q%D+{k{5q^% zqzl>L-x(4_$qqzT)>u;Q477^8((iqKl#xEU_TWc_KLcb#$(;6yqMs7@<8H_GXz3jo zcX6CG(Sw%bz9+WBbtTabseW4I7okY#HnFY8G)PZ&f^Fikp;QvK%@~{w;vKnKm z61vA`{Lv3dJ^t6@37_(>27197*xr#s*5SI**k$%FWnhcm=;K*t-oi5Dty|F!Nl<)$ z$-&}@-0MV{`$Z_P|K{5BmAgm6^@8Q~UygZdx*gwL?)EFp^y~F7!OWra9-9qkKn6XWhd_n_o+X<(EqhGz;xy$F zw=5(%IEORj3)?C8s5MjTlTUs#6X~(3xvdcrufw_iRTw|JR{Ug+sLm!yQ$D-clRgXBhu= z?7*`VAF1FP1!WHR2^%}1J&QwI9RZH5#Hxd}%HX$7!Dbx;&|QRQkx2W&swFItN)MIs|7qU9f?(8uiP;%LWtC2azf^nz| zzLvRSLC+epLNRi61wri~t2RM;E5{#~r7Jogm{Rt?*lDhUxb=NrN*hGY=b{D6{ugt1 zLb6-7lU@k+arJt%f3A1lxa+{NmU_;Q*d~$X)^TQq98mzZhYiqgP2ZGv&prtCV=uI1AiyKH4{Sq1?5xI)$4rj zem(N)%x6hoh;-F=I zm-o!znwo{N#M%6K()z1$@1NZDh(R*8w6?2pm4FsO??l)_J0~Rd^vDD>4dhDwPb$eL zNBrll3I~+y`F13A(E99)i&FoR+d*){PuZfI=gV3mF}ua zaY)tdAMWYc1ir!HG|K0%WGf5uoYN#^$4vK7`|X5C=Qkx+=da{amr&@ujY|7f{$(in z$g=iIv}eLmkK9>7#VKdMTso{PbJIPr)}e*uR(r2l6;>pwvCpj*5cTl$&RzzU&nJ#C zaJ1!9XPpT*E!OWXx6ki=>Dr%Oc5wBKea~O?t9vGZU8VK=yYW3ElRC>*8Mz#YzwF|jo7G$@6`O@V%e6O)`eDU`CUY0O#jk8iq0lm0l>1+`fOcdt z6)(_j<<+1;$ghQf_tY+`@-^4d=p{nNhbnIu8olQFxV!GbG+zCVd~$+*dINHbQa{ok zfx=&fOO?<_6Rf~9yhQR-HDhI|FWgQm)uzbXVmhAKQl-8y`)B&Q+B68iqsicXPC=G|T#k#8)1nVqsdA_BdB=GxbBcTdgbvoG(jzt&ne57;7LmM&S#a zJ`(!S&k4XrSoAo14xcsSg{!Pa6FYCrL zh#11l*W3TiUFx!mX1+AdzqjML$iHFb^UQ&Cf%11HGSvZeqOb_rpho1YmE0I~Sd$aS$a@)8*~T&jK&i-^sNuuTZA@&)V%OF=?v=wx+bGq)EIT7hav2 z*GF6xyd5RMD~O$5t$CU!H9PcZIU5|qdSkQ6J0y(=_y+EuCJ)hv(|9A`JhqxCN$4i~ zu*V>Qw3x|7oFJ7z98^Cwy^KxL%GvHM@b+|&kE-X;BiuvBxCKxQ*fa+9lt8R0^P~}T zp6JI|%zj^U*qI%=*z~;JEfN<4Hqm}mf=YuVjj@_u?6gTvVtHIkWc&HR2xUiT*GI7nOc4!uTYik|5EM$h{3Y} zW&6*Ob5ceo-d8x!tE>IEEfA_!oZdj{(SE~6e^Xb4cphtcMX+#J1k3iHmgjs`@+$B8 z;|Z;0uD{s0{=EaVeq{T_7Jfpt_*Qua)%t2Ec*(N;pU9a@2QY3pZ0v$}UZ_1Tbt?qU zhjk%{exN);%l3cS?=E$0Ce + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/csharp/libidn_PPC.csdproj.user b/csharp/libidn_PPC.csdproj.user new file mode 100644 index 0000000..f681a81 --- /dev/null +++ b/csharp/libidn_PPC.csdproj.user @@ -0,0 +1,55 @@ + + + + + + + + + + + + + diff --git a/csharp/libidn_PPC.sln b/csharp/libidn_PPC.sln new file mode 100644 index 0000000..955a418 --- /dev/null +++ b/csharp/libidn_PPC.sln @@ -0,0 +1,23 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{20D4826A-C6FA-45DB-90F4-C717570B9F32}") = "libidn_PPC", "libidn_PPC.csdproj", "{D890E339-5F13-482B-BD29-C0ED806F41BD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.ActiveCfg = Debug|Pocket PC + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.Build.0 = Debug|Pocket PC + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.Deploy.0 = Debug|Pocket PC + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.ActiveCfg = Release|Pocket PC + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.Build.0 = Release|Pocket PC + {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.Deploy.0 = Release|Pocket PC + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/csharp/libidn_PPC.suo b/csharp/libidn_PPC.suo new file mode 100644 index 0000000000000000000000000000000000000000..f9e135a3702f1b93e224cb1606bdd989383b6190 GIT binary patch literal 8192 zcmeHMOKenC82)FV@{sb7m!QQflnMw<1q3P4*v<@!v<2Hj8=VBFGq=OE)47wGTUw+p z*eG#f;>yN_kHiHS7j>t`=)#2%7qIZL(L@tthzn6;qKUEf`_7%yd35e@r>z(gPIKnm zdtU#4{>OLz|Mu#YRo}n;{>C4qq&y}IWO8bW+)>c)!!xTYD@FWx;QQp%)RfaHg2&tC z7Lvd};B{e6hc#%a??tGKQJ0`DLtTn`Co1*494(K>=iBAhmq4dj__M{3kfhLNVeogSC`?Jn8*WY^3UxiWn4*77MSTI1$q<^s-1|@1BDSh}I zl`cj7G`NZ4>Bhy#oqsi^dZka?{w23H{g{Bwx-Gh2BY8~n()ca5k)ca94qjGLN+O4P!x%X{ox1;XJz3csW&f8^vB=F4e z-xIHVye06)wTXr=&X2?)>Z;1G0p1d`FSMt+P$F)oOrzCI4cpI~nXGLNn;A1{4w)%i zIl+dYdD=``X)|MlM$;KHn{76Ny#XtuMps}o5jBl~m9jHdQn~EHV8o7)t);!~ZAMr0 zlsTkcYlDeM(uy0QSi-h4oUpRp>PsX|qsQzs4q2HYwR}m@+tPqFl(tgfMh({XBvLVJ zB%7bU@X7A>Hg2{&kW8fetVkwibS6?tnv0&m*)owNhi4Yw%&w|>xc(>9fHX^3g20eL z8I~bn2hrRV18*sbp$!33QVQctpiNTs$ALd5fI010=^$}h;g5}5pj9FBNDdF(nA!pS zA)Zi=v`Dvkh5htn{hp^E1m!GvjDt%eus0+mea0)=8}z=F+CuuI+6P(0@kgpXxDRY# z?-*a2i zPQps&5lA5lx?yE0lm_)+fI~{e1TW6q6L`vEZUi=DKub2BW9YN+wp*I;_b~R*_qvHa zd4e$J$I*_$Hq-b!DIM6)#)?L)2xG4V^pL<#DfD!JhwhTza2X-^^7%-a(Q3M=KSmxw zH_UyB^?Fvt}KAQ zk9#pj@k*a@>N`GXOLzKbAS1?PF2L<9N32r)`B!7DoBy{%_Cuh`IJ_q(3rmQ?<;%`l z&?oKg+;-XmwLScQmZ&*#?6aJ=mzTiYdwGAAmbvtm?)6{3*ND1)Vv5Fk`FTOo4_BC) zYVc1(QvQV}O^luEQj*VPV7)g{SL?rO@V&VT=($B_wJBedZ$7&|i=Fx%9IleVq$BH(-S9 z&M1wu@V~pUi#|VbjP? z?ZMvx*@cVykUWIvU9uOpu^S=aF4Q2NI2yo39a2`)B>OOPFXpx~|7!=QNyR6lfe37g zF+qCTfq`}Gyh!tW$$6~ri)$LVCl@?Mwr#L?0+{G&IoKM~k zLS*xO+D>>N{gYoUOc{fW=|6*bW;}8X6dQ4~w_@ChVp}nr;E>lq%e?cHze8uk4{z=k zoPl>o*O#@wymkCj|C?+7QV93#rMk0CKfcs* zZshuF-yNuZU1c0sKl-ir{N@is?=^oF9shH*?ji}0fo>4af(3lgpm#qaata*@0HX@M4R7mL>5_$W@v%H}`Kgxe;{!)7eDl`1&dCqnRh-UAe@`3C z|Dq~tje%dc?2qyL%b*ksp_HoXvNu&-+w3f#nq*5P4M9#ZISMNzVmR5@kTa>wFXjI= zY(6t#R+fPdQsBYiz{azK22M7{yrVexDwOO|#JB@MaPH`K$Co+wbl0X? z+<#lJ`m@{)0k{aUEUR)U6Ifmy7ySOpe45`Ky~h8A`MjQ5xdVb{s z`qQz8SNacN%Rh449*4F_H3I7~Q8ho>b1GBkx6|tB7oMNl_Ko~a`&~I+rv0znpohL0 zv8i7sbZj~=0m4`j25Y=-1Y~9*ZVgmpx3CMlt1zvA;f%V@XkN~##}GE0#g)4cuC`zQ zpF{uuqYGcY=mU%%7?rx^om#cCvHu6LSm*zRc|JX#Y-$AH9a1^_MnVJs=l>tppnCPc WotVoyUq$C0Ug^&lUA@m-=>H45D6?b$ literal 0 HcmV?d00001 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..12bbd35 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,373 @@ +libidn (1.15-6) unstable; urgency=low + + * Updated tag value for tizen 2.0 build + * Git: external/libidn + * Tag: libidn_1.15-6 + + -- Taeksu Shin Thu, 23 Aug 2012 13:57:42 +0900 + +libidn (1.15-5slp2) unstable; urgency=low + + * Renamed tag + * Git: pkgs/l/libidn + * Tag: libidn_1.15-5slp2 + + -- Taeksu Shin Thu, 15 Dec 2011 12:36:23 +0900 + +libidn (1.15-2tizen) unstable; urgency=low + + * Ported to Tizen + * Git: pkgs/l/libidn + * Tag: libidn_1.15-2tizen + + -- Taeksu Shin Wed, 07 Dec 2011 11:32:43 +0900 + +libidn (1.15-2) unstable; urgency=low + + [ Simon Josefsson ] + * Bump shlibs to 1.13 because later versions introduced symbol + versioning; closes: #550650. + * Fix debhelper-but-no-misc-depends for libidn11-java and libidn11-dev. + * Add doc-base file to register PDF manual. + * Upgrade to standards version 3.8.3. + * Remove libidn11-dev's postinst/prerm, as invoking install-info is now + handled by debhelper. + + -- Simon Josefsson Tue, 13 Oct 2009 12:16:12 +0200 + +libidn (1.15-1) unstable; urgency=low + + [ Simon Josefsson ] + * Let install-info decide where to put libidn.info. + * New upstream version. + * Build with new --with-packager* variables to make 'idn --help' + and 'idn --version' print Debian specific information. + + -- Simon Josefsson Mon, 08 Jun 2009 11:59:06 +0200 + +libidn (1.14-3) unstable; urgency=low + + [ Simon Josefsson ] + * Don't use autotools-dev, the config.* files in libidn + are newer than what's in autotools-dev. + * Use more idiomatatic code to filter out platforms without gcj. + Thanks to Adeodato Simó . + * Upload to unstable after testing in experimental. + + -- Simon Josefsson Fri, 17 Apr 2009 00:22:30 +0200 + +libidn (1.14-2) experimental; urgency=low + + [ Simon Josefsson ] + * Don't build java package on platforms that lack gcj; closes: #518673. + * Put libidn11-java package in section java, silences lintian + wrong-section-according-to-package-name. + + -- Simon Josefsson Thu, 16 Apr 2009 09:07:32 +0200 + +libidn (1.14-1) experimental; urgency=low + + [ Simon Josefsson ] + * New upstream version. + - Uses version linker script. + * Upgraded to debian policy 3.8.1. + + -- Simon Josefsson Wed, 08 Apr 2009 18:03:54 +0200 + +libidn (1.12-2) experimental; urgency=low + + [ Simon Josefsson ] + * Add libidn11-java package; closes: #445302. + * Update URL in watch file to point at ftp.gnu.org instead of alpha.gnu.org. + * Use "set -e" in postinst/prerm scripts to silence lintian + warning maintainer-script-without-set-e. + + -- Simon Josefsson Tue, 24 Feb 2009 11:16:27 +0100 + +libidn (1.12-1) unstable; urgency=low + + [ Simon Josefsson ] + * New upstream version. + - The manual is now licensed under GFDLv1.3+. + * Update and improve information in copyright file. + + -- Simon Josefsson Tue, 24 Feb 2009 10:19:44 +0100 + +libidn (1.11-1) experimental; urgency=low + + [ Simon Josefsson ] + * Improve data in copyright file. + * Improve package descriptions in control file. + * Fix lintian binary-control-field-duplicates-source warning. + * New upstream version. + - Fixes lintian warning hyphen-used-as-minus-sign in man pages. + - Uses DFSG free license for man pages. + + -- Simon Josefsson Wed, 07 Jan 2009 00:07:14 +0100 + +libidn (1.10-3) unstable; urgency=low + + [ Simon Josefsson ] + * Add XS-Dm-Upload-Allowed header and Simon as uploader. + * Add Vcs-Cvs and Vcs-Browser headers to control. + * Bump watch file version to 3 from 2. + * Use machine-interpretable copyright file. The information is + also significantly improved. + * Drop Build-Depends on gengetopt. + + -- Simon Josefsson Wed, 22 Oct 2008 11:03:59 +0200 + +libidn (1.10-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Reintroduce libidn11-dev.postinst, do .prerm like + debhelper would, just with section Development. + Pass -n to dh_installinfo because we do the scripting + ourselves. Remove bogus idn.info. + Fix wrong order of arguments in install-info call + compared to 1.10-1. really Closes: #499201 + + -- Thomas Viehmann Thu, 18 Sep 2008 18:24:10 +0200 + +libidn (1.10-2) unstable; urgency=low + + * Remove libidn11-dev.postinst; closes: #499201 + + -- Anibal Monsalve Salazar Wed, 17 Sep 2008 14:35:10 +1000 + +libidn (1.10-1) unstable; urgency=low + + * New upstream release + * Standards-Version is 3.8.0 + * Fix info-document-missing-dir-section + * Fix info-document-has-wrong-extension + + -- Anibal Monsalve Salazar Tue, 16 Sep 2008 17:26:02 +1000 + +libidn (1.9-1) unstable; urgency=low + + * New upstream release + + -- Anibal Monsalve Salazar Wed, 09 Jul 2008 20:55:25 +1000 + +libidn (1.8+20080606-1) unstable; urgency=low + + * New source from upstream's git tree + - Include libidn.pdf libidn.ps libidn.html generated with the + new libidn.texi license; closes: #484093 + + -- Anibal Monsalve Salazar Sat, 07 Jun 2008 09:12:00 +1000 + +libidn (1.8+20080602-1) unstable; urgency=low + + * New source from upstream's git tree + - Relicense libidn.texi; closes: #484093 + * Don't run "$(MAKE) -C doc pdf" (which was introduced in 1.8-1.1 + see #424522) and don't remove libidn.pdf libidn.ps libidn.html + + -- Anibal Monsalve Salazar Mon, 02 Jun 2008 23:38:51 +1000 + +libidn (1.8-2) unstable; urgency=low + + * Include info manual image in libidn11-dev; closes: #438150 + + -- Anibal Monsalve Salazar Sun, 01 Jun 2008 16:06:44 +1000 + +libidn (1.8-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Rebuild pdf in build rule to fix FTBFS if built twice in a row, + closes: #424522. + + -- Peter Eisentraut Sun, 01 Jun 2008 00:09:22 +0200 + +libidn (1.8-1) unstable; urgency=low + + * New upstream release + * Get rid of cdbs + + -- Anibal Monsalve Salazar Wed, 30 Apr 2008 20:17:00 +1000 + +libidn (1.7-1) unstable; urgency=low + + * New upstream release + + -- Anibal Monsalve Salazar Thu, 17 Apr 2008 20:17:34 +1000 + +libidn (1.6-1) unstable; urgency=low + + * New upstream release + + -- Anibal Monsalve Salazar Sun, 06 Apr 2008 10:16:50 +1000 + +libidn (1.4-1) unstable; urgency=low + + * New upstream release + * Set Standards-Version to 3.7.3 + * Set debhelper compatibility to 6 + * Updated debian/copyright + + -- Anibal Monsalve Salazar Sun, 10 Feb 2008 14:15:33 +1100 + +libidn (1.2-1) unstable; urgency=low + + * New upstream release. + + -- Anibal Monsalve Salazar Thu, 04 Oct 2007 23:26:24 +1000 + +libidn (1.1-1) unstable; urgency=low + + * New upstream release. + + -- Anibal Monsalve Salazar Fri, 14 Sep 2007 09:08:52 +1000 + +libidn (1.0-0) unstable; urgency=low + + * New upstream release. + * Fixed the following lintian message: + - W: libidn source: substvar-source-version-is-deprecated libidn11-dev + * libidn11, idn: added {misc:Depends} as a dependency. + * source package: added priority. + + -- Anibal Monsalve Salazar Tue, 07 Aug 2007 21:29:54 +1000 + +libidn (0.6.5-1) unstable; urgency=low + + * New upstream release. + + -- Anibal Monsalve Salazar Thu, 13 Jul 2006 22:11:01 +1000 + +libidn (0.6.3-1) unstable; urgency=low + + * New upstream release, closes: #333621. + * Set Standards-Version to 3.7.2. + * Set debian/compat to 5. + * Added debian/watch. + + -- Anibal Monsalve Salazar Fri, 23 Jun 2006 16:10:52 +1000 + +libidn (0.5.18-2) unstable; urgency=low + + * New maintainer, closes: #354183. + * Set Standards-Version to 3.6.2. + * Added homepage in debian/control. + + -- Anibal Monsalve Salazar Fri, 24 Feb 2006 14:57:39 +1100 + +libidn (0.5.18-1) unstable; urgency=low + + * New upstream release + + -- Ryan M. Golbeck Wed, 20 Jul 2005 08:42:22 -0400 + +libidn (0.5.13-1.0) unstable; urgency=low + + * Ack NMU bugs + - (Closes: #280171) + - (Closes: #283920) + * Fixed shlibs (Closes: #299319) + + -- Ryan M. Golbeck Sun, 13 Mar 2005 22:23:24 -0500 + +libidn (0.5.13-0.1) unstable; urgency=low + + * Non-Maintainer Upload, with maintainer consent. + * New upstream release (Closes: #280171). + + Fixes segfault on powerpc (Closes: #283920). + + -- Julien BLACHE Fri, 25 Feb 2005 22:45:30 +0100 + +libidn (0.5.2-3) unstable; urgency=high + + * Fixed shlib in libidn11 to point to current version (Closes: #267096) + + -- Ryan M. Golbeck Fri, 20 Aug 2004 23:56:00 -0500 + +libidn (0.5.2-2) unstable; urgency=low + + * Fixed conflict with libidn9-dev (Closes: #263977) + + -- Ryan M. Golbeck Fri, 06 Aug 2004 12:47:00 -0500 + +libidn (0.5.2-1) unstable; urgency=low + + * New upstream (Closes: #245758) + + Fixes rpath issue (Closes: #244525) + + * Move .la file from -dev to library package to allow + dlopening (Closes: #235889) + + * Include pdf format of manual and example files (Closes: #233537) + + -- Ryan M. Golbeck Tue, 03 Aug 2004 23:09:41 -0500 + +libidn (0.4.1-1) unstable; urgency=low + + * New upstream (Closes: #231670) + + * Fixed build dependancy problem (Closes: #233776) + + * Documentation changes (Closes: #226867) + + Reverted to real manpage for idn (Closes: #237766) + + libidn11-dev now includes libidn.info and the API manpages + + -- Ryan M. Golbeck Sun, 14 Mar 2004 10:30:54 -0500 + +libidn (0.3.4-1) unstable; urgency=low + + * New upstream release (Closes: #222626) + + bumped SO version (dependancy changes, new packages) + + fixed output CHARSET (Closes: #202739) + + * Converted to cdbs + * Fixed dependancy of idn package + * Increased standards version to 3.6.1 + + -- Ryan M. Golbeck Thu, 18 Dec 2003 11:17:25 -0500 + +libidn (0.1.14-2) unstable; urgency=low + + * Fixed priorities of other binary packages + * Changed section of libidn9-dev to libdevel + + -- Ryan M. Golbeck Fri, 23 May 2003 00:00:00 -0400 + +libidn (0.1.14-1) unstable; urgency=low + + * New upstream release + * elisp fixes (closes: #192608) + + * libidn9 made priority standard + + -- Ryan M. Golbeck Tue, 20 May 2003 22:04:18 -0400 + +libidn (0.1.11-3) unstable; urgency=low + + * Fixed section of libidn9-dev package. + + -- Ryan M. Golbeck Sat, 29 Mar 2003 11:11:12 -0500 + +libidn (0.1.11-2) unstable; urgency=low + + * Edited manpage to point to the info page properly. + * Added pkg-config dependancy. + + -- Ryan M. Golbeck Mon, 17 Mar 2003 11:11:11 -0500 + +libidn (0.1.11-1) unstable; urgency=low + + * New upstream release (closes: #183378) + + * Added rules to build idn_cmd.? + * Added new binary package to house new upstream commandline and emacs + utilities. + * Added NEWS and README to libidn9. + + -- Ryan M. Golbeck Tue, 4 Mar 2003 08:39:29 -0500 + +libidn (0.1.8-1) unstable; urgency=low + + * Initial packaging (closes: #181538) + + -- Ryan M. Golbeck Tue, 18 Feb 2003 00:11:11 -0500 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..b2f95e9 --- /dev/null +++ b/debian/control @@ -0,0 +1,40 @@ +Source: libidn +Section: libs +Priority: optional +Maintainer: Anibal Monsalve Salazar , Taeksu Shin , Dongwook Lee +Uploaders: Taeksu Shin , Dongwook Lee +XS-Dm-Upload-Allowed: yes +Standards-Version: 3.8.3 +Build-Depends: debhelper (>= 6) +Vcs-Cvs: :pserver:anonymous@cvs.savannah.gnu.org:/sources/libidn +Vcs-Browser: http://cvs.savannah.gnu.org/viewvc/debian-libidn/?root=libidn +Homepage: http://www.gnu.org/software/libidn/ + +Package: libidn11-dev +Section: libdevel +Architecture: any +Depends: libidn11 (= ${binary:Version}), pkg-config, ${misc:Depends} +Conflicts: libidn9-dev +Description: Development files for GNU Libidn, an IDN library + GNU Libidn is a fully documented implementation of the Stringprep, + Punycode and IDNA specifications. Libidn's purpose is to encode and + decode internationalized domain names. The Nameprep, XMPP, SASLprep, + and iSCSI profiles are supported. + . + This package contains the header files, static library, pkg-config + information, API man pages, and the Libidn manual. + +Package: libidn11 +Priority: standard +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: libidn9-dev +Replaces: libidn11-dev +Description: GNU Libidn library, implementation of IETF IDN specifications + GNU Libidn is a fully documented implementation of the Stringprep, + Punycode and IDNA specifications. Libidn's purpose is to encode and + decode internationalized domain names. The Nameprep, XMPP, SASLprep, + and iSCSI profiles are supported. + . + This package contains the shared library. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..50eff44 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,307 @@ +Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=226 +Upstream-Name: Libidn +Upstream-Maintainer: Simon Josefsson +Upstream-Source: ftp://ftp.gnu.org/pub/gnu/libidn/ + +Files: * +Copyright: Copyright (C) 2002-2009 Simon Josefsson +License: GPL-3+ + The command-line tools, the build environment, the self-tests, the + Emacs Lisp code, and the examples are licensed under the GPLv3+. For + example src/idn.c: + + * idn.c --- Command line interface to libidn. + * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see . + + On Debian systems, the full text of the GNU General Public License + version 3 can be found in the `/usr/share/common-licenses/GPL-3' + file. + +Files: doc/libidn.texi +Copyright: Copyright 2002-2009 Simon Josefsson. +License: GFDL-1.3+ + This is the manual, licensed under GFDLv1.3+. + + Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. + + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 or + any later version published by the Free Software Foundation; with no + Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A + copy of the license is included in the section entitled ``GNU Free + Documentation License''. + + On Debian systems, the complete text of the GNU Free Documentation + License Version 1.3 can be found in the file + `/usr/share/common-licenses/GFDL-1.3'. + +Files: csharp/* +Copyright: Copyright (C) 2004, 2007 Free Software Foundation, Inc. +License: LGPL-2.1+ + The C# library is licensed under the LGPLv2.1+. For example + csharp/IDNA.cs: + + /// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + /// * + /// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de + /// * + /// This file is part of GNU Libidn. + /// * + /// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + /// USA + + On Debian systems, the full text of the GNU Lesser General Public + License version 2.1 can be found in the + `/usr/share/common-licenses/LGPL-2.1' file. + +Files: java/* +Copyright: Copyright (C) 2004-2007 Free Software Foundation, Inc. +License: LGPL-2.1+ + The Java library is licensed under the LGPLv2.1+. For example + java/gnu/inet/encoding/IDNA.java: + + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + +Files: gl/* +Files: gltests/* +Files: build-aux/* +Files: GNUmakefile +Files: maint.mk +Copyright: Copyright (C) 2007 Free Software Foundation, Inc. +License: GPL-3+ + These files are copied from gnulib, and the copyright is normally + held by Free Software Foundation, Inc. For example gl/strerror.c: + + Copyright (C) 2007-2009 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 3 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, see . */ + +Files: lib/* +Copyright: Copyright (C) 2002-2008 Simon Josefsson +License: LGPL-2.1+ + This is the library itself, licensed under LGPLv2.1+. For example + lib/stringprep.c: + +/* stringprep.c --- Core stringprep implementation. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Files: lib/gen-unicode-tables.pl +Copyright: Copyright (C) 2004, 2005, 2006, 2007, 2008 Simon Josefsson +Copyright: Copyright (C) 1998, 1999 Tom Tromey +Copyright: Copyright (C) 2001 Red Hat Software +License: GPL-3+ + This file is originally from glib. + + # Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + # Copyright (C) 1998, 1999 Tom Tromey + # Copyright (C) 2001 Red Hat Software + + # 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 3 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, see . + + # I consider the output of this program to be unrestricted. Use it as + # you will. + +Files: lib/punycode.? +Copyright: Copyright (C) 2002-2007 Simon Josefsson +Copyright: Copyright (C) The Internet Society (2003). +License: LGPL-2.1+ + This file was written by Adam M. Costello and is released under the + following license (see RFC 3492): + + * Disclaimer and license: Regarding this entire document or any + * portion of it (including the pseudocode and C code), the author + * makes no guarantees and is not responsible for any damage resulting + * from its use. The author grants irrevocable permission to anyone + * to use, modify, and distribute it in any way that does not diminish + * the rights of anyone else to use, modify, and distribute it, + * provided that redistributed derivative works do not contain + * misleading author or version information. Derivative works need + * not be licensed under similar terms. + + The file has been modified and is now distributed under the + LGPLv2.1+. + +Files: lib/nfkc.c +Copyright: Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson +Copyright: Copyright (C) 1999, 2000 Tom Tromey +Copyright: Copyright 2000 Red Hat, Inc. +License: LGPL-2.1+ + This file contains some functions derived from glib. + + * nfkc.c --- Unicode normalization utilities. + * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + * This file contains functions from GLIB, including gutf8.c and + * gunidecomp.c, all licensed under LGPL and copyright hold by: + * + * Copyright (C) 1999, 2000 Tom Tromey + * Copyright 2000 Red Hat, Inc. + +Files: lib/gl/* +Files: lib/gltests/* +Copyright: Copyright (C) 2007 Free Software Foundation, Inc. +License: LGPL-2.1+ + These files are copied from gnulib, and the copyright is normally + held by Free Software Foundation, Inc. For example lib/gl/strverscmp.c: + + Compare strings while treating digits characters numerically. + Copyright (C) 1997, 2000, 2002, 2004, 2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jean-François Bignolles , 1997. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Files: doc/gdoc +Copyright: Copyright (c) 2002-2007 Simon Josefsson +Copyright: Copyright (c) 1998 Michael Zucchi +License: GPL-3+ + This tool is used to generate texinfo snippets and man pages from the + source code. + + ## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + ## added -texinfo, -listfunc, -pkg-name + ## man page revamp + ## various improvements + ## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos + ## added -tex + ## Copyright (c) 1998 Michael Zucchi + + # 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 3 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, see . + +Files: doc/man/* +Copyright: Copyright © 2002-2009 Simon Josefsson. +License: GAP + These are the auto-generated man pages. For example doc/man/stringprep.3: + + Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Simon Josefsson. + + Copying and distribution of this file, with or without + modification, are permitted in any medium without royalty + provided the copyright notice and this notice are preserved. + +Remaining files are generated by autoconf, automake, libtool, gettext, +texinfo, etc and are not discussed further. diff --git a/debian/idn.install b/debian/idn.install new file mode 100644 index 0000000..84a74af --- /dev/null +++ b/debian/idn.install @@ -0,0 +1,2 @@ +debian/tmp/usr/bin/idn +debian/tmp/usr/share/emacs/site-lisp/*.el diff --git a/debian/idn.manpages b/debian/idn.manpages new file mode 100644 index 0000000..ce31f1b --- /dev/null +++ b/debian/idn.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/idn.1 diff --git a/debian/libidn11-dev.doc-base b/debian/libidn11-dev.doc-base new file mode 100644 index 0000000..303b917 --- /dev/null +++ b/debian/libidn11-dev.doc-base @@ -0,0 +1,8 @@ +Document: libidn11 +Title: Programmer API for Libidn +Author: Simon Josefsson +Abstract: Manual for Internationalized Domain Names library (GNU Libidn) +Section: Programming + +Format: PDF +Files: /usr/share/doc/libidn11-dev/libidn.pdf.gz diff --git a/debian/libidn11-dev.docs b/debian/libidn11-dev.docs new file mode 100644 index 0000000..c0c1a65 --- /dev/null +++ b/debian/libidn11-dev.docs @@ -0,0 +1 @@ +doc/libidn.pdf diff --git a/debian/libidn11-dev.examples b/debian/libidn11-dev.examples new file mode 100644 index 0000000..23adc7b --- /dev/null +++ b/debian/libidn11-dev.examples @@ -0,0 +1,2 @@ +examples/README +examples/*.c diff --git a/debian/libidn11-dev.info b/debian/libidn11-dev.info new file mode 100644 index 0000000..6bcfba7 --- /dev/null +++ b/debian/libidn11-dev.info @@ -0,0 +1 @@ +debian/tmp/usr/share/info/libidn.info diff --git a/debian/libidn11-dev.install b/debian/libidn11-dev.install new file mode 100644 index 0000000..9d5ce75 --- /dev/null +++ b/debian/libidn11-dev.install @@ -0,0 +1,5 @@ +debian/tmp/usr/include/* +debian/tmp/usr/lib/lib*.a +debian/tmp/usr/lib/lib*so +debian/tmp/usr/lib/pkgconfig/* +#debian/tmp/usr/share/info/libidn-components.png diff --git a/debian/libidn11-dev.manpages b/debian/libidn11-dev.manpages new file mode 100644 index 0000000..7c72677 --- /dev/null +++ b/debian/libidn11-dev.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man3/* diff --git a/debian/libidn11-java.doc-base b/debian/libidn11-java.doc-base new file mode 100644 index 0000000..d71f9b7 --- /dev/null +++ b/debian/libidn11-java.doc-base @@ -0,0 +1,10 @@ +Document: libidn11-java +Title: Programmer API for libidn-java +Author: Simon Josefsson +Abstract: Javadocs programmer API of libidn-java, a + library for internationalized domain names handling +Section: Programming + +Format: HTML +Index: /usr/share/doc/libidn11-java/api/index.html +Files: /usr/share/doc/libidn11-java/api/*.html diff --git a/debian/libidn11-java.docs b/debian/libidn11-java.docs new file mode 100644 index 0000000..6a199f3 --- /dev/null +++ b/debian/libidn11-java.docs @@ -0,0 +1 @@ +debian/tmp/usr/share/doc/libidn11-java/api/* diff --git a/debian/libidn11-java.install b/debian/libidn11-java.install new file mode 100644 index 0000000..01d1645 --- /dev/null +++ b/debian/libidn11-java.install @@ -0,0 +1 @@ +debian/tmp/usr/share/java/libidn*.jar diff --git a/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile new file mode 100644 index 0000000..ce2b4d1 --- /dev/null +++ b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile @@ -0,0 +1,694 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# doc/java/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = doc/java +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /scratchbox/tools/bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /scratchbox/tools/bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run gjdoc +GMSGFMT = /scratchbox/devkits/slp-tools/bin/msgfmt +GMSGFMT_015 = /scratchbox/devkits/slp-tools/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /scratchbox/tools/bin/grep +GTKDOC_CHECK = +GTKDOC_MKPDF = +GTKDOC_REBASE = true +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /scratchbox/tools/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = jar +LD = /scratchbox/compilers/arm-linux-gnueabi-gcc4.4.1-glibc2.11.1/arm-none-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run makeinfo +MKDIR_P = /scratchbox/tools/bin/mkdir -p +MSGFMT = /scratchbox/devkits/slp-tools/bin/msgfmt +MSGFMT_015 = /scratchbox/devkits/slp-tools/bin/msgfmt +MSGMERGE = /scratchbox/devkits/slp-tools/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = +NEXT_AS_FIRST_DIRECTIVE_STRING_H = +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = +NEXT_ERRNO_H = +NEXT_ICONV_H = +NEXT_STDARG_H = +NEXT_STDINT_H = +NEXT_STRING_H = +NEXT_UNISTD_H = +NEXT_WCHAR_H = +NM = /scratchbox/compilers/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/missing --run perl +PKG_CONFIG = /scratchbox/tools/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /scratchbox/tools/bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /scratchbox/devkits/slp-tools/bin/xgettext +XGETTEXT_015 = /scratchbox/devkits/slp-tools/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux +abs_builddir = /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/doc/java +abs_srcdir = /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/doc/java +abs_top_builddir = /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15 +abs_top_srcdir = /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15 +ac_ct_CC = +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/ubuntu_lucid_telepathy_package/libidn-1.15/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /scratchbox/tools/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +HTML = about.html deprecated.html package-list alphaindex.html \ + index.html serialized-form.html \ + resources/gjdochtml-clean-color1.css \ + resources/gjdochtml-clean-layout.css resources/gjdoc.js \ + resources/inherit.png gnu/inet/encoding/classes.html \ + gnu/inet/encoding/CombiningClass.html \ + gnu/inet/encoding/Composition.html \ + gnu/inet/encoding/DecompositionKeys.html \ + gnu/inet/encoding/DecompositionMappings.html \ + gnu/inet/encoding/IDNAException.html \ + gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ + gnu/inet/encoding/package-summary.html \ + gnu/inet/encoding/PunycodeException.html \ + gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ + gnu/inet/encoding/StringprepException.html \ + gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html + +EXTRA_DIST = $(HTML) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +#all-local: +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#clean-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +all-local: $(HTML) + +$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java + cd ../../java && make javadoc + +clean-local: + rm -f $(HTML) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.am b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.am new file mode 100644 index 0000000..918be92 --- /dev/null +++ b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.am @@ -0,0 +1,45 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +if JAVA +HTML = about.html deprecated.html package-list alphaindex.html \ + index.html serialized-form.html \ + resources/gjdochtml-clean-color1.css \ + resources/gjdochtml-clean-layout.css resources/gjdoc.js \ + resources/inherit.png gnu/inet/encoding/classes.html \ + gnu/inet/encoding/CombiningClass.html \ + gnu/inet/encoding/Composition.html \ + gnu/inet/encoding/DecompositionKeys.html \ + gnu/inet/encoding/DecompositionMappings.html \ + gnu/inet/encoding/IDNAException.html \ + gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ + gnu/inet/encoding/package-summary.html \ + gnu/inet/encoding/PunycodeException.html \ + gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ + gnu/inet/encoding/StringprepException.html \ + gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html +EXTRA_DIST = $(HTML) + +all-local: $(HTML) + +$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java + cd ../../java && make javadoc + +clean-local: + rm -f $(HTML) +endif diff --git a/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.in b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.in new file mode 100644 index 0000000..ab6694e --- /dev/null +++ b/debian/libidn11-java/usr/share/doc/libidn11-java/api/Makefile.in @@ -0,0 +1,694 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/java +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +@JAVA_TRUE@HTML = about.html deprecated.html package-list alphaindex.html \ +@JAVA_TRUE@ index.html serialized-form.html \ +@JAVA_TRUE@ resources/gjdochtml-clean-color1.css \ +@JAVA_TRUE@ resources/gjdochtml-clean-layout.css resources/gjdoc.js \ +@JAVA_TRUE@ resources/inherit.png gnu/inet/encoding/classes.html \ +@JAVA_TRUE@ gnu/inet/encoding/CombiningClass.html \ +@JAVA_TRUE@ gnu/inet/encoding/Composition.html \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionKeys.html \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionMappings.html \ +@JAVA_TRUE@ gnu/inet/encoding/IDNAException.html \ +@JAVA_TRUE@ gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ +@JAVA_TRUE@ gnu/inet/encoding/package-summary.html \ +@JAVA_TRUE@ gnu/inet/encoding/PunycodeException.html \ +@JAVA_TRUE@ gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ +@JAVA_TRUE@ gnu/inet/encoding/StringprepException.html \ +@JAVA_TRUE@ gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html + +@JAVA_TRUE@EXTRA_DIST = $(HTML) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +@JAVA_FALSE@all-local: +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@JAVA_FALSE@clean-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +@JAVA_TRUE@all-local: $(HTML) + +@JAVA_TRUE@$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java +@JAVA_TRUE@ cd ../../java && make javadoc + +@JAVA_TRUE@clean-local: +@JAVA_TRUE@ rm -f $(HTML) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/debian/libidn11.install b/debian/libidn11.install new file mode 100644 index 0000000..54cea47 --- /dev/null +++ b/debian/libidn11.install @@ -0,0 +1,2 @@ +debian/tmp/usr/lib/lib*.so.* +debian/tmp/usr/lib/lib*.la diff --git a/debian/libidn11.postinst b/debian/libidn11.postinst new file mode 100644 index 0000000..d2f394b --- /dev/null +++ b/debian/libidn11.postinst @@ -0,0 +1,9 @@ +#! /bin/sh + +set -e + +if [ "$1" = "configure" ]; then + ldconfig +fi + +#DEBHELPER# diff --git a/debian/libidn11.postrm b/debian/libidn11.postrm new file mode 100644 index 0000000..f90ef4e --- /dev/null +++ b/debian/libidn11.postrm @@ -0,0 +1,9 @@ +#! /bin/sh + +set -e + +if [ "$1" = "remove" ]; then + ldconfig +fi + +#DEBHELPER# diff --git a/debian/libidn11.shlibs b/debian/libidn11.shlibs new file mode 100644 index 0000000..d3e1353 --- /dev/null +++ b/debian/libidn11.shlibs @@ -0,0 +1 @@ +libidn 11 libidn11 (>= 1.13) diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1442ada --- /dev/null +++ b/debian/rules @@ -0,0 +1,88 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +export DH_VERBOSE=1 + +# Don't build libidn11-java on platforms that doesn't have gcj. +NO_JAVA_ARCHES := arm hppa hurd-i386 armel i386 +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +ifeq (,$(filter $(DEB_HOST_ARCH),$(NO_JAVA_ARCHES))) + ENABLE_JAVA := --enable-java +else + export DH_OPTIONS=-Nlibidn11-java +endif + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +#DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) + +CFG_CROSS = --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_ARCH) +CFG_PATHS = --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info +CFG_VERS = `dpkg-parsechangelog|grep ^Version:|cut -d\ -f2` +CFG_DEBP = --with-packager=Debian --with-packager-version=$(CFG_VERS) --with-packager-bug-reports=http://bugs.debian.org/ + +config.status: configure + dh_testdir + # Add here commands to configure the package. + ./configure $(CFG_CROSS) $(CFG_PATHS) $(CFG_DEBP) $(ENABLE_JAVA) \ + CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" + +build: build-stamp +build-stamp: config.status + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + [ ! -f Makefile ] || $(MAKE) distclean + + dh_clean --exclude ./contrib/doxygen/Doxyfile.orig + +install: build + dh_testdir + dh_testroot + dh_clean -k --exclude ./contrib/doxygen/Doxyfile.orig + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + #install -d $(CURDIR)/debian/libidn11-java/usr/share/doc/libidn11-java/api/ + #cp -a $(CURDIR)/doc/java/* $(CURDIR)/debian/libidn11-java/usr/share/doc/libidn11-java/api/ + #rm -f $(CURDIR)/debian/libidn11-java/usr/share/doc/libidn11-java/api/package-list + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installexamples + dh_install + #dh_installinfo -n + #dh_installman + dh_link + dh_strip + dh_compress -X.png + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + #dh_installdocs -A README NEWS TODO AUTHORS THANKS + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..f821712 --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +ftp://ftp.gnu.org/pub/gnu/libidn/libidn-(.*)\.tar\.gz diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..3d042ce --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,1926 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +# -*- makefile -*- +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +# This file is automatically generated. DO NOT EDIT! -*- makefile -*- + + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +#am__append_1 = . reference +DIST_COMMON = $(dist_man_MANS) $(libidn_TEXINFOS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoc \ + $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.in \ + $(srcdir)/stamp-vti $(srcdir)/version.texi +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +INFO_DEPS = $(srcdir)/libidn.info +TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex +am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux +DVIS = libidn.dvi +PDFS = libidn.pdf +PSS = libidn.ps +HTMLS = libidn.html +TEXINFOS = libidn.texi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +DVIPS = dvips +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +man1dir = $(mandir)/man1 +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(dist_man_MANS) +DATA = $(images_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = specifications tld java cyclo . reference +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = +NEXT_AS_FIRST_DIRECTIVE_STRING_H = +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = +NEXT_ERRNO_H = +NEXT_ICONV_H = +NEXT_STDARG_H = +NEXT_STDINT_H = +NEXT_STRING_H = +NEXT_UNISTD_H = +NEXT_WCHAR_H = +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +SUBDIRS = specifications tld java cyclo $(am__append_1) +EXTRA_DIST = gdoc libidn.html libidn.ps libidn.pdf texinfo.css \ + components.fig + +info_TEXINFOS = libidn.texi +libidn_TEXINFOS = fdl-1.3.texi gpl-3.0.texi lgpl-2.1.texi $(gdoc_TEXINFOS) \ + libidn-components.eps libidn-components.png libidn-components.pdf + +imagesdir = $(infodir) +images_DATA = libidn-components.png +AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -I $(top_srcdir)/examples +TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ + --no-split --number-sections --css-include=texinfo.css + + +# Man pages. +dist_man_MANS = idn.1 $(gdoc_MANS) +MAINTAINERCLEANFILES = $(dist_man_MANS) + +# GDOC +GDOC_SRC = $(top_srcdir)/lib/idna.c $(top_srcdir)/lib/nfkc.c \ + $(top_srcdir)/lib/pr29.c $(top_srcdir)/lib/punycode.c \ + $(top_srcdir)/lib/stringprep.c $(top_srcdir)/lib/tld.c \ + $(top_srcdir)/lib/toutf8.c $(top_srcdir)/lib/version.c \ + $(top_srcdir)/lib/idn-free.c \ + $(top_srcdir)/lib/strerror-idna.c $(top_srcdir)/lib/strerror-pr29.c \ + $(top_srcdir)/lib/strerror-punycode.c \ + $(top_srcdir)/lib/strerror-stringprep.c \ + $(top_srcdir)/lib/strerror-tld.c + +GDOC_TEXI_PREFIX = texi/ +GDOC_MAN_PREFIX = man/ +GDOC_MAN_EXTRA_ARGS = -module $(PACKAGE) -sourceversion $(VERSION) \ + -bugsto $(PACKAGE_BUGREPORT) -pkg-name "$(PACKAGE_NAME)" \ + -includefuncprefix -seeinfo $(PACKAGE) \ + -copyright "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson" \ + -verbatimcopying + +BUILT_SOURCES = Makefile.gdoc + +# +### idna.c +# + +# idna.c: idna_to_ascii_4i + +# idna.c: idna_to_unicode_44i + +# idna.c: idna_to_ascii_4z + +# idna.c: idna_to_ascii_8z + +# idna.c: idna_to_ascii_lz + +# idna.c: idna_to_unicode_4z4z + +# idna.c: idna_to_unicode_8z4z + +# idna.c: idna_to_unicode_8z8z + +# idna.c: idna_to_unicode_8zlz + +# idna.c: idna_to_unicode_lzlz + +# +### nfkc.c +# + +# nfkc.c: stringprep_utf8_to_unichar + +# nfkc.c: stringprep_unichar_to_utf8 + +# nfkc.c: stringprep_utf8_to_ucs4 + +# nfkc.c: stringprep_ucs4_to_utf8 + +# nfkc.c: stringprep_utf8_nfkc_normalize + +# nfkc.c: stringprep_ucs4_nfkc_normalize + +# +### pr29.c +# + +# pr29.c: pr29_4 + +# pr29.c: pr29_4z + +# pr29.c: pr29_8z + +# +### punycode.c +# + +# punycode.c: punycode_encode + +# punycode.c: punycode_decode + +# +### stringprep.c +# + +# stringprep.c: stringprep_4i + +# stringprep.c: stringprep_4zi + +# stringprep.c: stringprep + +# stringprep.c: stringprep_profile + +# +### tld.c +# + +# tld.c: tld_get_table + +# tld.c: tld_default_table + +# tld.c: tld_get_4 + +# tld.c: tld_get_4z + +# tld.c: tld_get_z + +# tld.c: tld_check_4t + +# tld.c: tld_check_4tz + +# tld.c: tld_check_4 + +# tld.c: tld_check_4z + +# tld.c: tld_check_8z + +# tld.c: tld_check_lz + +# +### toutf8.c +# + +# toutf8.c: stringprep_locale_charset + +# toutf8.c: stringprep_convert + +# toutf8.c: stringprep_locale_to_utf8 + +# toutf8.c: stringprep_utf8_to_locale + +# +### version.c +# + +# version.c: stringprep_check_version + +# +### idn-free.c +# + +# idn-free.c: idn_free + +# +### strerror-idna.c +# + +# strerror-idna.c: idna_strerror + +# +### strerror-pr29.c +# + +# strerror-pr29.c: pr29_strerror + +# +### strerror-punycode.c +# + +# strerror-punycode.c: punycode_strerror + +# +### strerror-stringprep.c +# + +# strerror-stringprep.c: stringprep_strerror + +# +### strerror-tld.c +# + +# strerror-tld.c: tld_strerror +gdoc_TEXINFOS = texi/idna.c.texi texi/idna_to_ascii_4i.texi \ + texi/idna_to_unicode_44i.texi texi/idna_to_ascii_4z.texi \ + texi/idna_to_ascii_8z.texi texi/idna_to_ascii_lz.texi \ + texi/idna_to_unicode_4z4z.texi texi/idna_to_unicode_8z4z.texi \ + texi/idna_to_unicode_8z8z.texi texi/idna_to_unicode_8zlz.texi \ + texi/idna_to_unicode_lzlz.texi texi/nfkc.c.texi \ + texi/stringprep_utf8_to_unichar.texi \ + texi/stringprep_unichar_to_utf8.texi \ + texi/stringprep_utf8_to_ucs4.texi \ + texi/stringprep_ucs4_to_utf8.texi \ + texi/stringprep_utf8_nfkc_normalize.texi \ + texi/stringprep_ucs4_nfkc_normalize.texi texi/pr29.c.texi \ + texi/pr29_4.texi texi/pr29_4z.texi texi/pr29_8z.texi \ + texi/punycode.c.texi texi/punycode_encode.texi \ + texi/punycode_decode.texi texi/stringprep.c.texi \ + texi/stringprep_4i.texi texi/stringprep_4zi.texi \ + texi/stringprep.texi texi/stringprep_profile.texi \ + texi/tld.c.texi texi/tld_get_table.texi \ + texi/tld_default_table.texi texi/tld_get_4.texi \ + texi/tld_get_4z.texi texi/tld_get_z.texi \ + texi/tld_check_4t.texi texi/tld_check_4tz.texi \ + texi/tld_check_4.texi texi/tld_check_4z.texi \ + texi/tld_check_8z.texi texi/tld_check_lz.texi \ + texi/toutf8.c.texi texi/stringprep_locale_charset.texi \ + texi/stringprep_convert.texi \ + texi/stringprep_locale_to_utf8.texi \ + texi/stringprep_utf8_to_locale.texi texi/version.c.texi \ + texi/stringprep_check_version.texi texi/idn-free.c.texi \ + texi/idn_free.texi texi/strerror-idna.c.texi \ + texi/idna_strerror.texi texi/strerror-pr29.c.texi \ + texi/pr29_strerror.texi texi/strerror-punycode.c.texi \ + texi/punycode_strerror.texi texi/strerror-stringprep.c.texi \ + texi/stringprep_strerror.texi texi/strerror-tld.c.texi \ + texi/tld_strerror.texi +gdoc_MANS = man/idna_to_ascii_4i.3 man/idna_to_unicode_44i.3 \ + man/idna_to_ascii_4z.3 man/idna_to_ascii_8z.3 \ + man/idna_to_ascii_lz.3 man/idna_to_unicode_4z4z.3 \ + man/idna_to_unicode_8z4z.3 man/idna_to_unicode_8z8z.3 \ + man/idna_to_unicode_8zlz.3 man/idna_to_unicode_lzlz.3 \ + man/stringprep_utf8_to_unichar.3 \ + man/stringprep_unichar_to_utf8.3 man/stringprep_utf8_to_ucs4.3 \ + man/stringprep_ucs4_to_utf8.3 \ + man/stringprep_utf8_nfkc_normalize.3 \ + man/stringprep_ucs4_nfkc_normalize.3 man/pr29_4.3 \ + man/pr29_4z.3 man/pr29_8z.3 man/punycode_encode.3 \ + man/punycode_decode.3 man/stringprep_4i.3 man/stringprep_4zi.3 \ + man/stringprep.3 man/stringprep_profile.3 man/tld_get_table.3 \ + man/tld_default_table.3 man/tld_get_4.3 man/tld_get_4z.3 \ + man/tld_get_z.3 man/tld_check_4t.3 man/tld_check_4tz.3 \ + man/tld_check_4.3 man/tld_check_4z.3 man/tld_check_8z.3 \ + man/tld_check_lz.3 man/stringprep_locale_charset.3 \ + man/stringprep_convert.3 man/stringprep_locale_to_utf8.3 \ + man/stringprep_utf8_to_locale.3 man/stringprep_check_version.3 \ + man/idn_free.3 man/idna_strerror.3 man/pr29_strerror.3 \ + man/punycode_strerror.3 man/stringprep_strerror.3 \ + man/tld_strerror.3 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.gdoc $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +.texi.info: + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi.pdf: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $< + +.texi.html: + rm -rf $(@:.html=.htp) + if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@; \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + else \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ + exit 1; \ + fi +$(srcdir)/libidn.info: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.dvi: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.pdf: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.html: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: libidn.texi $(top_srcdir)/configure + @(dir=.; test -f ./libidn.texi || dir=$(srcdir); \ + set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libidn.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + 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 + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && \ + (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf libidn.aux libidn.cp libidn.cps libidn.fn libidn.fns libidn.ky \ + libidn.kys libidn.log libidn.pg libidn.tmp libidn.toc \ + libidn.tp libidn.tps libidn.vr libidn.vrs + +clean-aminfo: + -test -z "libidn.dvi libidn.pdf libidn.ps libidn.html" \ + || rm -rf libidn.dvi libidn.pdf libidn.ps libidn.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +install-man1: $(dist_man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list=''; test -n "$(man1dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } +install-man3: $(dist_man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list=''; test -n "$(man3dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man3dir)" && rm -f $$files; } +install-imagesDATA: $(images_DATA) + @$(NORMAL_INSTALL) + test -z "$(imagesdir)" || $(MKDIR_P) "$(DESTDIR)$(imagesdir)" + @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(imagesdir)" || exit $$?; \ + done + +uninstall-imagesDATA: + @$(NORMAL_UNINSTALL) + @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(imagesdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(imagesdir)" && rm -f $$files + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: $(DVIS) + +html: html-recursive + +html-am: $(HTMLS) + +info: info-recursive + +info-am: $(INFO_DEPS) + +install-data-am: install-imagesDATA install-info-am install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html: install-html-recursive + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d$$p"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-recursive + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: install-man1 install-man3 + +install-pdf: install-pdf-recursive + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-recursive + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ + mostlyclean-libtool mostlyclean-vti + +pdf: pdf-recursive + +pdf-am: $(PDFS) + +ps: ps-recursive + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \ + uninstall-info-am uninstall-man uninstall-pdf-am \ + uninstall-ps-am + +uninstall-man: uninstall-man1 uninstall-man3 + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-aminfo clean-generic \ + clean-libtool ctags ctags-recursive dist-info distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-imagesDATA install-info install-info-am install-man \ + install-man1 install-man3 install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-vti mostlyclean mostlyclean-aminfo \ + mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \ + uninstall-info-am uninstall-man uninstall-man1 uninstall-man3 \ + uninstall-pdf-am uninstall-ps-am + + +libidn-components.eps: components.fig + fig2dev -L eps $< $@ + +libidn-components.png: components.fig + fig2dev -L png $< $@ + +libidn-components.pdf: components.fig + fig2dev -L pdf $< $@ + +idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \ + $(top_srcdir)/configure.ac + $(HELP2MAN) \ + --name="Internationalized Domain Names command line tool" \ + --output=$@ $(top_builddir)/src/idn$(EXEEXT) + +Makefile.gdoc: $(top_builddir)/configure Makefile.am Makefile.gdoci $(GDOC_SRC) + echo '# This file is automatically generated. DO NOT EDIT! -*- makefile -*-' > Makefile.gdoc + echo >> Makefile.gdoc + echo 'gdoc_TEXINFOS =' >> Makefile.gdoc + echo 'gdoc_MANS =' >> Makefile.gdoc + echo >> Makefile.gdoc + for file in $(GDOC_SRC); do \ + shortfile=`basename $$file`; \ + echo "#" >> Makefile.gdoc; \ + echo "### $$shortfile" >> Makefile.gdoc; \ + echo "#" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$shortfile.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$shortfile.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + functions=`$(PERL) $(srcdir)/gdoc -listfunc $$file`; \ + for function in $$functions; do \ + echo "# $$shortfile: $$function" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$function.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$function.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + echo "gdoc_MANS += $(GDOC_MAN_PREFIX)$$function.3" >> Makefile.gdoc; \ + echo "$(GDOC_MAN_PREFIX)$$function.3: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -man $$(GDOC_MAN_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + done; \ + echo >> Makefile.gdoc; \ + done + $(MAKE) Makefile +texi/idna.c.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idna_to_ascii_4i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ +man/idna_to_ascii_4i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ +texi/idna_to_unicode_44i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ +man/idna_to_unicode_44i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ +texi/idna_to_ascii_4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ +man/idna_to_ascii_4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ +texi/idna_to_ascii_8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ +man/idna_to_ascii_8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ +texi/idna_to_ascii_lz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ +man/idna_to_ascii_lz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ +texi/idna_to_unicode_4z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ +man/idna_to_unicode_4z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ +texi/idna_to_unicode_8z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ +man/idna_to_unicode_8z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ +texi/idna_to_unicode_8z8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ +man/idna_to_unicode_8z8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ +texi/idna_to_unicode_8zlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ +man/idna_to_unicode_8zlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ +texi/idna_to_unicode_lzlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ +man/idna_to_unicode_lzlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ +texi/nfkc.c.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_utf8_to_unichar.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ +man/stringprep_utf8_to_unichar.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ +texi/stringprep_unichar_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ +man/stringprep_unichar_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ +texi/stringprep_utf8_to_ucs4.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ +man/stringprep_utf8_to_ucs4.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ +texi/stringprep_ucs4_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ +man/stringprep_ucs4_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ +texi/stringprep_utf8_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ +man/stringprep_utf8_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ +texi/stringprep_ucs4_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ +man/stringprep_ucs4_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ +texi/pr29.c.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/pr29_4.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4 $< > $@ +man/pr29_4.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4 $< > $@ +texi/pr29_4z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4z $< > $@ +man/pr29_4z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4z $< > $@ +texi/pr29_8z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_8z $< > $@ +man/pr29_8z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_8z $< > $@ +texi/punycode.c.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/punycode_encode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_encode $< > $@ +man/punycode_encode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_encode $< > $@ +texi/punycode_decode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_decode $< > $@ +man/punycode_decode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_decode $< > $@ +texi/stringprep.c.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_4i.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4i $< > $@ +man/stringprep_4i.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4i $< > $@ +texi/stringprep_4zi.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4zi $< > $@ +man/stringprep_4zi.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4zi $< > $@ +texi/stringprep.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep $< > $@ +man/stringprep.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep $< > $@ +texi/stringprep_profile.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_profile $< > $@ +man/stringprep_profile.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_profile $< > $@ +texi/tld.c.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/tld_get_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_table $< > $@ +man/tld_get_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_table $< > $@ +texi/tld_default_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_default_table $< > $@ +man/tld_default_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_default_table $< > $@ +texi/tld_get_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4 $< > $@ +man/tld_get_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4 $< > $@ +texi/tld_get_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4z $< > $@ +man/tld_get_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4z $< > $@ +texi/tld_get_z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_z $< > $@ +man/tld_get_z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_z $< > $@ +texi/tld_check_4t.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4t $< > $@ +man/tld_check_4t.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4t $< > $@ +texi/tld_check_4tz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4tz $< > $@ +man/tld_check_4tz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4tz $< > $@ +texi/tld_check_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4 $< > $@ +man/tld_check_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4 $< > $@ +texi/tld_check_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4z $< > $@ +man/tld_check_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4z $< > $@ +texi/tld_check_8z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_8z $< > $@ +man/tld_check_8z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_8z $< > $@ +texi/tld_check_lz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_lz $< > $@ +man/tld_check_lz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_lz $< > $@ +texi/toutf8.c.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_locale_charset.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ +man/stringprep_locale_charset.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ +texi/stringprep_convert.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_convert $< > $@ +man/stringprep_convert.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_convert $< > $@ +texi/stringprep_locale_to_utf8.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ +man/stringprep_locale_to_utf8.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ +texi/stringprep_utf8_to_locale.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ +man/stringprep_utf8_to_locale.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ +texi/version.c.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_check_version.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_check_version $< > $@ +man/stringprep_check_version.3: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_check_version $< > $@ +texi/idn-free.c.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idn_free.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idn_free $< > $@ +man/idn_free.3: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idn_free $< > $@ +texi/strerror-idna.c.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idna_strerror.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_strerror $< > $@ +man/idna_strerror.3: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_strerror $< > $@ +texi/strerror-pr29.c.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/pr29_strerror.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_strerror $< > $@ +man/pr29_strerror.3: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_strerror $< > $@ +texi/strerror-punycode.c.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/punycode_strerror.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_strerror $< > $@ +man/punycode_strerror.3: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_strerror $< > $@ +texi/strerror-stringprep.c.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_strerror.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_strerror $< > $@ +man/stringprep_strerror.3: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_strerror $< > $@ +texi/strerror-tld.c.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/tld_strerror.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_strerror $< > $@ +man/tld_strerror.3: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_strerror $< > $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..1e3c040 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,77 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +SUBDIRS = specifications tld java cyclo +if ENABLE_GTK_DOC +SUBDIRS += . reference +endif + +EXTRA_DIST = gdoc libidn.html libidn.ps libidn.pdf texinfo.css \ + components.fig + +info_TEXINFOS = libidn.texi +libidn_TEXINFOS = fdl-1.3.texi gpl-3.0.texi lgpl-2.1.texi $(gdoc_TEXINFOS) \ + libidn-components.eps libidn-components.png libidn-components.pdf + +imagesdir = $(infodir) +images_DATA = libidn-components.png + +libidn-components.eps: components.fig + fig2dev -L eps $< $@ + +libidn-components.png: components.fig + fig2dev -L png $< $@ + +libidn-components.pdf: components.fig + fig2dev -L pdf $< $@ + +AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -I $(top_srcdir)/examples +TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ + --no-split --number-sections --css-include=texinfo.css + +# Man pages. + +dist_man_MANS = idn.1 $(gdoc_MANS) +MAINTAINERCLEANFILES = $(dist_man_MANS) + +idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \ + $(top_srcdir)/configure.ac + $(HELP2MAN) \ + --name="Internationalized Domain Names command line tool" \ + --output=$@ $(top_builddir)/src/idn$(EXEEXT) + +# GDOC + +GDOC_SRC = $(top_srcdir)/lib/idna.c $(top_srcdir)/lib/nfkc.c \ + $(top_srcdir)/lib/pr29.c $(top_srcdir)/lib/punycode.c \ + $(top_srcdir)/lib/stringprep.c $(top_srcdir)/lib/tld.c \ + $(top_srcdir)/lib/toutf8.c $(top_srcdir)/lib/version.c \ + $(top_srcdir)/lib/idn-free.c \ + $(top_srcdir)/lib/strerror-idna.c $(top_srcdir)/lib/strerror-pr29.c \ + $(top_srcdir)/lib/strerror-punycode.c \ + $(top_srcdir)/lib/strerror-stringprep.c \ + $(top_srcdir)/lib/strerror-tld.c +GDOC_TEXI_PREFIX = texi/ +GDOC_MAN_PREFIX = man/ +GDOC_MAN_EXTRA_ARGS = -module $(PACKAGE) -sourceversion $(VERSION) \ + -bugsto $(PACKAGE_BUGREPORT) -pkg-name "$(PACKAGE_NAME)" \ + -includefuncprefix -seeinfo $(PACKAGE) \ + -copyright "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson" \ + -verbatimcopying +include $(srcdir)/Makefile.gdoci diff --git a/doc/Makefile.gdoc b/doc/Makefile.gdoc new file mode 100644 index 0000000..eb305bd --- /dev/null +++ b/doc/Makefile.gdoc @@ -0,0 +1,648 @@ +# This file is automatically generated. DO NOT EDIT! -*- makefile -*- + +gdoc_TEXINFOS = +gdoc_MANS = + +# +### idna.c +# +gdoc_TEXINFOS += texi/idna.c.texi +texi/idna.c.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# idna.c: idna_to_ascii_4i +gdoc_TEXINFOS += texi/idna_to_ascii_4i.texi +texi/idna_to_ascii_4i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ + +gdoc_MANS += man/idna_to_ascii_4i.3 +man/idna_to_ascii_4i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ + +# idna.c: idna_to_unicode_44i +gdoc_TEXINFOS += texi/idna_to_unicode_44i.texi +texi/idna_to_unicode_44i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ + +gdoc_MANS += man/idna_to_unicode_44i.3 +man/idna_to_unicode_44i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ + +# idna.c: idna_to_ascii_4z +gdoc_TEXINFOS += texi/idna_to_ascii_4z.texi +texi/idna_to_ascii_4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ + +gdoc_MANS += man/idna_to_ascii_4z.3 +man/idna_to_ascii_4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ + +# idna.c: idna_to_ascii_8z +gdoc_TEXINFOS += texi/idna_to_ascii_8z.texi +texi/idna_to_ascii_8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ + +gdoc_MANS += man/idna_to_ascii_8z.3 +man/idna_to_ascii_8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ + +# idna.c: idna_to_ascii_lz +gdoc_TEXINFOS += texi/idna_to_ascii_lz.texi +texi/idna_to_ascii_lz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ + +gdoc_MANS += man/idna_to_ascii_lz.3 +man/idna_to_ascii_lz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ + +# idna.c: idna_to_unicode_4z4z +gdoc_TEXINFOS += texi/idna_to_unicode_4z4z.texi +texi/idna_to_unicode_4z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ + +gdoc_MANS += man/idna_to_unicode_4z4z.3 +man/idna_to_unicode_4z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ + +# idna.c: idna_to_unicode_8z4z +gdoc_TEXINFOS += texi/idna_to_unicode_8z4z.texi +texi/idna_to_unicode_8z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ + +gdoc_MANS += man/idna_to_unicode_8z4z.3 +man/idna_to_unicode_8z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ + +# idna.c: idna_to_unicode_8z8z +gdoc_TEXINFOS += texi/idna_to_unicode_8z8z.texi +texi/idna_to_unicode_8z8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ + +gdoc_MANS += man/idna_to_unicode_8z8z.3 +man/idna_to_unicode_8z8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ + +# idna.c: idna_to_unicode_8zlz +gdoc_TEXINFOS += texi/idna_to_unicode_8zlz.texi +texi/idna_to_unicode_8zlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ + +gdoc_MANS += man/idna_to_unicode_8zlz.3 +man/idna_to_unicode_8zlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ + +# idna.c: idna_to_unicode_lzlz +gdoc_TEXINFOS += texi/idna_to_unicode_lzlz.texi +texi/idna_to_unicode_lzlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ + +gdoc_MANS += man/idna_to_unicode_lzlz.3 +man/idna_to_unicode_lzlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ + + +# +### nfkc.c +# +gdoc_TEXINFOS += texi/nfkc.c.texi +texi/nfkc.c.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# nfkc.c: stringprep_utf8_to_unichar +gdoc_TEXINFOS += texi/stringprep_utf8_to_unichar.texi +texi/stringprep_utf8_to_unichar.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ + +gdoc_MANS += man/stringprep_utf8_to_unichar.3 +man/stringprep_utf8_to_unichar.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ + +# nfkc.c: stringprep_unichar_to_utf8 +gdoc_TEXINFOS += texi/stringprep_unichar_to_utf8.texi +texi/stringprep_unichar_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ + +gdoc_MANS += man/stringprep_unichar_to_utf8.3 +man/stringprep_unichar_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ + +# nfkc.c: stringprep_utf8_to_ucs4 +gdoc_TEXINFOS += texi/stringprep_utf8_to_ucs4.texi +texi/stringprep_utf8_to_ucs4.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ + +gdoc_MANS += man/stringprep_utf8_to_ucs4.3 +man/stringprep_utf8_to_ucs4.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ + +# nfkc.c: stringprep_ucs4_to_utf8 +gdoc_TEXINFOS += texi/stringprep_ucs4_to_utf8.texi +texi/stringprep_ucs4_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ + +gdoc_MANS += man/stringprep_ucs4_to_utf8.3 +man/stringprep_ucs4_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ + +# nfkc.c: stringprep_utf8_nfkc_normalize +gdoc_TEXINFOS += texi/stringprep_utf8_nfkc_normalize.texi +texi/stringprep_utf8_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ + +gdoc_MANS += man/stringprep_utf8_nfkc_normalize.3 +man/stringprep_utf8_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ + +# nfkc.c: stringprep_ucs4_nfkc_normalize +gdoc_TEXINFOS += texi/stringprep_ucs4_nfkc_normalize.texi +texi/stringprep_ucs4_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ + +gdoc_MANS += man/stringprep_ucs4_nfkc_normalize.3 +man/stringprep_ucs4_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ + + +# +### pr29.c +# +gdoc_TEXINFOS += texi/pr29.c.texi +texi/pr29.c.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# pr29.c: pr29_4 +gdoc_TEXINFOS += texi/pr29_4.texi +texi/pr29_4.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4 $< > $@ + +gdoc_MANS += man/pr29_4.3 +man/pr29_4.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4 $< > $@ + +# pr29.c: pr29_4z +gdoc_TEXINFOS += texi/pr29_4z.texi +texi/pr29_4z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4z $< > $@ + +gdoc_MANS += man/pr29_4z.3 +man/pr29_4z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4z $< > $@ + +# pr29.c: pr29_8z +gdoc_TEXINFOS += texi/pr29_8z.texi +texi/pr29_8z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_8z $< > $@ + +gdoc_MANS += man/pr29_8z.3 +man/pr29_8z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_8z $< > $@ + + +# +### punycode.c +# +gdoc_TEXINFOS += texi/punycode.c.texi +texi/punycode.c.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# punycode.c: punycode_encode +gdoc_TEXINFOS += texi/punycode_encode.texi +texi/punycode_encode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_encode $< > $@ + +gdoc_MANS += man/punycode_encode.3 +man/punycode_encode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_encode $< > $@ + +# punycode.c: punycode_decode +gdoc_TEXINFOS += texi/punycode_decode.texi +texi/punycode_decode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_decode $< > $@ + +gdoc_MANS += man/punycode_decode.3 +man/punycode_decode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_decode $< > $@ + + +# +### stringprep.c +# +gdoc_TEXINFOS += texi/stringprep.c.texi +texi/stringprep.c.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# stringprep.c: stringprep_4i +gdoc_TEXINFOS += texi/stringprep_4i.texi +texi/stringprep_4i.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4i $< > $@ + +gdoc_MANS += man/stringprep_4i.3 +man/stringprep_4i.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4i $< > $@ + +# stringprep.c: stringprep_4zi +gdoc_TEXINFOS += texi/stringprep_4zi.texi +texi/stringprep_4zi.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4zi $< > $@ + +gdoc_MANS += man/stringprep_4zi.3 +man/stringprep_4zi.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4zi $< > $@ + +# stringprep.c: stringprep +gdoc_TEXINFOS += texi/stringprep.texi +texi/stringprep.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep $< > $@ + +gdoc_MANS += man/stringprep.3 +man/stringprep.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep $< > $@ + +# stringprep.c: stringprep_profile +gdoc_TEXINFOS += texi/stringprep_profile.texi +texi/stringprep_profile.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_profile $< > $@ + +gdoc_MANS += man/stringprep_profile.3 +man/stringprep_profile.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_profile $< > $@ + + +# +### tld.c +# +gdoc_TEXINFOS += texi/tld.c.texi +texi/tld.c.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# tld.c: tld_get_table +gdoc_TEXINFOS += texi/tld_get_table.texi +texi/tld_get_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_table $< > $@ + +gdoc_MANS += man/tld_get_table.3 +man/tld_get_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_table $< > $@ + +# tld.c: tld_default_table +gdoc_TEXINFOS += texi/tld_default_table.texi +texi/tld_default_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_default_table $< > $@ + +gdoc_MANS += man/tld_default_table.3 +man/tld_default_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_default_table $< > $@ + +# tld.c: tld_get_4 +gdoc_TEXINFOS += texi/tld_get_4.texi +texi/tld_get_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4 $< > $@ + +gdoc_MANS += man/tld_get_4.3 +man/tld_get_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4 $< > $@ + +# tld.c: tld_get_4z +gdoc_TEXINFOS += texi/tld_get_4z.texi +texi/tld_get_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4z $< > $@ + +gdoc_MANS += man/tld_get_4z.3 +man/tld_get_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4z $< > $@ + +# tld.c: tld_get_z +gdoc_TEXINFOS += texi/tld_get_z.texi +texi/tld_get_z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_z $< > $@ + +gdoc_MANS += man/tld_get_z.3 +man/tld_get_z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_z $< > $@ + +# tld.c: tld_check_4t +gdoc_TEXINFOS += texi/tld_check_4t.texi +texi/tld_check_4t.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4t $< > $@ + +gdoc_MANS += man/tld_check_4t.3 +man/tld_check_4t.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4t $< > $@ + +# tld.c: tld_check_4tz +gdoc_TEXINFOS += texi/tld_check_4tz.texi +texi/tld_check_4tz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4tz $< > $@ + +gdoc_MANS += man/tld_check_4tz.3 +man/tld_check_4tz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4tz $< > $@ + +# tld.c: tld_check_4 +gdoc_TEXINFOS += texi/tld_check_4.texi +texi/tld_check_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4 $< > $@ + +gdoc_MANS += man/tld_check_4.3 +man/tld_check_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4 $< > $@ + +# tld.c: tld_check_4z +gdoc_TEXINFOS += texi/tld_check_4z.texi +texi/tld_check_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4z $< > $@ + +gdoc_MANS += man/tld_check_4z.3 +man/tld_check_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4z $< > $@ + +# tld.c: tld_check_8z +gdoc_TEXINFOS += texi/tld_check_8z.texi +texi/tld_check_8z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_8z $< > $@ + +gdoc_MANS += man/tld_check_8z.3 +man/tld_check_8z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_8z $< > $@ + +# tld.c: tld_check_lz +gdoc_TEXINFOS += texi/tld_check_lz.texi +texi/tld_check_lz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_lz $< > $@ + +gdoc_MANS += man/tld_check_lz.3 +man/tld_check_lz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_lz $< > $@ + + +# +### toutf8.c +# +gdoc_TEXINFOS += texi/toutf8.c.texi +texi/toutf8.c.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# toutf8.c: stringprep_locale_charset +gdoc_TEXINFOS += texi/stringprep_locale_charset.texi +texi/stringprep_locale_charset.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ + +gdoc_MANS += man/stringprep_locale_charset.3 +man/stringprep_locale_charset.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ + +# toutf8.c: stringprep_convert +gdoc_TEXINFOS += texi/stringprep_convert.texi +texi/stringprep_convert.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_convert $< > $@ + +gdoc_MANS += man/stringprep_convert.3 +man/stringprep_convert.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_convert $< > $@ + +# toutf8.c: stringprep_locale_to_utf8 +gdoc_TEXINFOS += texi/stringprep_locale_to_utf8.texi +texi/stringprep_locale_to_utf8.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ + +gdoc_MANS += man/stringprep_locale_to_utf8.3 +man/stringprep_locale_to_utf8.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ + +# toutf8.c: stringprep_utf8_to_locale +gdoc_TEXINFOS += texi/stringprep_utf8_to_locale.texi +texi/stringprep_utf8_to_locale.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ + +gdoc_MANS += man/stringprep_utf8_to_locale.3 +man/stringprep_utf8_to_locale.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ + + +# +### version.c +# +gdoc_TEXINFOS += texi/version.c.texi +texi/version.c.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# version.c: stringprep_check_version +gdoc_TEXINFOS += texi/stringprep_check_version.texi +texi/stringprep_check_version.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_check_version $< > $@ + +gdoc_MANS += man/stringprep_check_version.3 +man/stringprep_check_version.3: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_check_version $< > $@ + + +# +### idn-free.c +# +gdoc_TEXINFOS += texi/idn-free.c.texi +texi/idn-free.c.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# idn-free.c: idn_free +gdoc_TEXINFOS += texi/idn_free.texi +texi/idn_free.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idn_free $< > $@ + +gdoc_MANS += man/idn_free.3 +man/idn_free.3: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idn_free $< > $@ + + +# +### strerror-idna.c +# +gdoc_TEXINFOS += texi/strerror-idna.c.texi +texi/strerror-idna.c.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# strerror-idna.c: idna_strerror +gdoc_TEXINFOS += texi/idna_strerror.texi +texi/idna_strerror.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_strerror $< > $@ + +gdoc_MANS += man/idna_strerror.3 +man/idna_strerror.3: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_strerror $< > $@ + + +# +### strerror-pr29.c +# +gdoc_TEXINFOS += texi/strerror-pr29.c.texi +texi/strerror-pr29.c.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# strerror-pr29.c: pr29_strerror +gdoc_TEXINFOS += texi/pr29_strerror.texi +texi/pr29_strerror.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_strerror $< > $@ + +gdoc_MANS += man/pr29_strerror.3 +man/pr29_strerror.3: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_strerror $< > $@ + + +# +### strerror-punycode.c +# +gdoc_TEXINFOS += texi/strerror-punycode.c.texi +texi/strerror-punycode.c.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# strerror-punycode.c: punycode_strerror +gdoc_TEXINFOS += texi/punycode_strerror.texi +texi/punycode_strerror.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_strerror $< > $@ + +gdoc_MANS += man/punycode_strerror.3 +man/punycode_strerror.3: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_strerror $< > $@ + + +# +### strerror-stringprep.c +# +gdoc_TEXINFOS += texi/strerror-stringprep.c.texi +texi/strerror-stringprep.c.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# strerror-stringprep.c: stringprep_strerror +gdoc_TEXINFOS += texi/stringprep_strerror.texi +texi/stringprep_strerror.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_strerror $< > $@ + +gdoc_MANS += man/stringprep_strerror.3 +man/stringprep_strerror.3: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_strerror $< > $@ + + +# +### strerror-tld.c +# +gdoc_TEXINFOS += texi/strerror-tld.c.texi +texi/strerror-tld.c.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ + +# strerror-tld.c: tld_strerror +gdoc_TEXINFOS += texi/tld_strerror.texi +texi/tld_strerror.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_strerror $< > $@ + +gdoc_MANS += man/tld_strerror.3 +man/tld_strerror.3: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_strerror $< > $@ + + diff --git a/doc/Makefile.gdoci b/doc/Makefile.gdoci new file mode 100644 index 0000000..b1f43f4 --- /dev/null +++ b/doc/Makefile.gdoci @@ -0,0 +1,55 @@ +# -*- makefile -*- +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +BUILT_SOURCES = Makefile.gdoc + +Makefile.gdoc: $(top_builddir)/configure Makefile.am Makefile.gdoci $(GDOC_SRC) + echo '# This file is automatically generated. DO NOT EDIT! -*- makefile -*-' > Makefile.gdoc + echo >> Makefile.gdoc + echo 'gdoc_TEXINFOS =' >> Makefile.gdoc + echo 'gdoc_MANS =' >> Makefile.gdoc + echo >> Makefile.gdoc + for file in $(GDOC_SRC); do \ + shortfile=`basename $$file`; \ + echo "#" >> Makefile.gdoc; \ + echo "### $$shortfile" >> Makefile.gdoc; \ + echo "#" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$shortfile.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$shortfile.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + functions=`$(PERL) $(srcdir)/gdoc -listfunc $$file`; \ + for function in $$functions; do \ + echo "# $$shortfile: $$function" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$function.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$function.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + echo "gdoc_MANS += $(GDOC_MAN_PREFIX)$$function.3" >> Makefile.gdoc; \ + echo "$(GDOC_MAN_PREFIX)$$function.3: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -man $$(GDOC_MAN_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + done; \ + echo >> Makefile.gdoc; \ + done + $(MAKE) Makefile + +include Makefile.gdoc diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..e9e5762 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,1926 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +# -*- makefile -*- +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +# This file is automatically generated. DO NOT EDIT! -*- makefile -*- + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@ENABLE_GTK_DOC_TRUE@am__append_1 = . reference +DIST_COMMON = $(dist_man_MANS) $(libidn_TEXINFOS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoc \ + $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.in \ + $(srcdir)/stamp-vti $(srcdir)/version.texi +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +INFO_DEPS = $(srcdir)/libidn.info +TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex +am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux +DVIS = libidn.dvi +PDFS = libidn.pdf +PSS = libidn.ps +HTMLS = libidn.html +TEXINFOS = libidn.texi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +DVIPS = dvips +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +man1dir = $(mandir)/man1 +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(dist_man_MANS) +DATA = $(images_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = specifications tld java cyclo . reference +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = specifications tld java cyclo $(am__append_1) +EXTRA_DIST = gdoc libidn.html libidn.ps libidn.pdf texinfo.css \ + components.fig + +info_TEXINFOS = libidn.texi +libidn_TEXINFOS = fdl-1.3.texi gpl-3.0.texi lgpl-2.1.texi $(gdoc_TEXINFOS) \ + libidn-components.eps libidn-components.png libidn-components.pdf + +imagesdir = $(infodir) +images_DATA = libidn-components.png +AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -I $(top_srcdir)/examples +TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ + --no-split --number-sections --css-include=texinfo.css + + +# Man pages. +dist_man_MANS = idn.1 $(gdoc_MANS) +MAINTAINERCLEANFILES = $(dist_man_MANS) + +# GDOC +GDOC_SRC = $(top_srcdir)/lib/idna.c $(top_srcdir)/lib/nfkc.c \ + $(top_srcdir)/lib/pr29.c $(top_srcdir)/lib/punycode.c \ + $(top_srcdir)/lib/stringprep.c $(top_srcdir)/lib/tld.c \ + $(top_srcdir)/lib/toutf8.c $(top_srcdir)/lib/version.c \ + $(top_srcdir)/lib/idn-free.c \ + $(top_srcdir)/lib/strerror-idna.c $(top_srcdir)/lib/strerror-pr29.c \ + $(top_srcdir)/lib/strerror-punycode.c \ + $(top_srcdir)/lib/strerror-stringprep.c \ + $(top_srcdir)/lib/strerror-tld.c + +GDOC_TEXI_PREFIX = texi/ +GDOC_MAN_PREFIX = man/ +GDOC_MAN_EXTRA_ARGS = -module $(PACKAGE) -sourceversion $(VERSION) \ + -bugsto $(PACKAGE_BUGREPORT) -pkg-name "$(PACKAGE_NAME)" \ + -includefuncprefix -seeinfo $(PACKAGE) \ + -copyright "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson" \ + -verbatimcopying + +BUILT_SOURCES = Makefile.gdoc + +# +### idna.c +# + +# idna.c: idna_to_ascii_4i + +# idna.c: idna_to_unicode_44i + +# idna.c: idna_to_ascii_4z + +# idna.c: idna_to_ascii_8z + +# idna.c: idna_to_ascii_lz + +# idna.c: idna_to_unicode_4z4z + +# idna.c: idna_to_unicode_8z4z + +# idna.c: idna_to_unicode_8z8z + +# idna.c: idna_to_unicode_8zlz + +# idna.c: idna_to_unicode_lzlz + +# +### nfkc.c +# + +# nfkc.c: stringprep_utf8_to_unichar + +# nfkc.c: stringprep_unichar_to_utf8 + +# nfkc.c: stringprep_utf8_to_ucs4 + +# nfkc.c: stringprep_ucs4_to_utf8 + +# nfkc.c: stringprep_utf8_nfkc_normalize + +# nfkc.c: stringprep_ucs4_nfkc_normalize + +# +### pr29.c +# + +# pr29.c: pr29_4 + +# pr29.c: pr29_4z + +# pr29.c: pr29_8z + +# +### punycode.c +# + +# punycode.c: punycode_encode + +# punycode.c: punycode_decode + +# +### stringprep.c +# + +# stringprep.c: stringprep_4i + +# stringprep.c: stringprep_4zi + +# stringprep.c: stringprep + +# stringprep.c: stringprep_profile + +# +### tld.c +# + +# tld.c: tld_get_table + +# tld.c: tld_default_table + +# tld.c: tld_get_4 + +# tld.c: tld_get_4z + +# tld.c: tld_get_z + +# tld.c: tld_check_4t + +# tld.c: tld_check_4tz + +# tld.c: tld_check_4 + +# tld.c: tld_check_4z + +# tld.c: tld_check_8z + +# tld.c: tld_check_lz + +# +### toutf8.c +# + +# toutf8.c: stringprep_locale_charset + +# toutf8.c: stringprep_convert + +# toutf8.c: stringprep_locale_to_utf8 + +# toutf8.c: stringprep_utf8_to_locale + +# +### version.c +# + +# version.c: stringprep_check_version + +# +### idn-free.c +# + +# idn-free.c: idn_free + +# +### strerror-idna.c +# + +# strerror-idna.c: idna_strerror + +# +### strerror-pr29.c +# + +# strerror-pr29.c: pr29_strerror + +# +### strerror-punycode.c +# + +# strerror-punycode.c: punycode_strerror + +# +### strerror-stringprep.c +# + +# strerror-stringprep.c: stringprep_strerror + +# +### strerror-tld.c +# + +# strerror-tld.c: tld_strerror +gdoc_TEXINFOS = texi/idna.c.texi texi/idna_to_ascii_4i.texi \ + texi/idna_to_unicode_44i.texi texi/idna_to_ascii_4z.texi \ + texi/idna_to_ascii_8z.texi texi/idna_to_ascii_lz.texi \ + texi/idna_to_unicode_4z4z.texi texi/idna_to_unicode_8z4z.texi \ + texi/idna_to_unicode_8z8z.texi texi/idna_to_unicode_8zlz.texi \ + texi/idna_to_unicode_lzlz.texi texi/nfkc.c.texi \ + texi/stringprep_utf8_to_unichar.texi \ + texi/stringprep_unichar_to_utf8.texi \ + texi/stringprep_utf8_to_ucs4.texi \ + texi/stringprep_ucs4_to_utf8.texi \ + texi/stringprep_utf8_nfkc_normalize.texi \ + texi/stringprep_ucs4_nfkc_normalize.texi texi/pr29.c.texi \ + texi/pr29_4.texi texi/pr29_4z.texi texi/pr29_8z.texi \ + texi/punycode.c.texi texi/punycode_encode.texi \ + texi/punycode_decode.texi texi/stringprep.c.texi \ + texi/stringprep_4i.texi texi/stringprep_4zi.texi \ + texi/stringprep.texi texi/stringprep_profile.texi \ + texi/tld.c.texi texi/tld_get_table.texi \ + texi/tld_default_table.texi texi/tld_get_4.texi \ + texi/tld_get_4z.texi texi/tld_get_z.texi \ + texi/tld_check_4t.texi texi/tld_check_4tz.texi \ + texi/tld_check_4.texi texi/tld_check_4z.texi \ + texi/tld_check_8z.texi texi/tld_check_lz.texi \ + texi/toutf8.c.texi texi/stringprep_locale_charset.texi \ + texi/stringprep_convert.texi \ + texi/stringprep_locale_to_utf8.texi \ + texi/stringprep_utf8_to_locale.texi texi/version.c.texi \ + texi/stringprep_check_version.texi texi/idn-free.c.texi \ + texi/idn_free.texi texi/strerror-idna.c.texi \ + texi/idna_strerror.texi texi/strerror-pr29.c.texi \ + texi/pr29_strerror.texi texi/strerror-punycode.c.texi \ + texi/punycode_strerror.texi texi/strerror-stringprep.c.texi \ + texi/stringprep_strerror.texi texi/strerror-tld.c.texi \ + texi/tld_strerror.texi +gdoc_MANS = man/idna_to_ascii_4i.3 man/idna_to_unicode_44i.3 \ + man/idna_to_ascii_4z.3 man/idna_to_ascii_8z.3 \ + man/idna_to_ascii_lz.3 man/idna_to_unicode_4z4z.3 \ + man/idna_to_unicode_8z4z.3 man/idna_to_unicode_8z8z.3 \ + man/idna_to_unicode_8zlz.3 man/idna_to_unicode_lzlz.3 \ + man/stringprep_utf8_to_unichar.3 \ + man/stringprep_unichar_to_utf8.3 man/stringprep_utf8_to_ucs4.3 \ + man/stringprep_ucs4_to_utf8.3 \ + man/stringprep_utf8_nfkc_normalize.3 \ + man/stringprep_ucs4_nfkc_normalize.3 man/pr29_4.3 \ + man/pr29_4z.3 man/pr29_8z.3 man/punycode_encode.3 \ + man/punycode_decode.3 man/stringprep_4i.3 man/stringprep_4zi.3 \ + man/stringprep.3 man/stringprep_profile.3 man/tld_get_table.3 \ + man/tld_default_table.3 man/tld_get_4.3 man/tld_get_4z.3 \ + man/tld_get_z.3 man/tld_check_4t.3 man/tld_check_4tz.3 \ + man/tld_check_4.3 man/tld_check_4z.3 man/tld_check_8z.3 \ + man/tld_check_lz.3 man/stringprep_locale_charset.3 \ + man/stringprep_convert.3 man/stringprep_locale_to_utf8.3 \ + man/stringprep_utf8_to_locale.3 man/stringprep_check_version.3 \ + man/idn_free.3 man/idna_strerror.3 man/pr29_strerror.3 \ + man/punycode_strerror.3 man/stringprep_strerror.3 \ + man/tld_strerror.3 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.gdoc $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +.texi.info: + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi.pdf: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $< + +.texi.html: + rm -rf $(@:.html=.htp) + if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@; \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + else \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ + exit 1; \ + fi +$(srcdir)/libidn.info: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.dvi: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.pdf: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +libidn.html: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS) +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: libidn.texi $(top_srcdir)/configure + @(dir=.; test -f ./libidn.texi || dir=$(srcdir); \ + set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libidn.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + 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 + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && \ + (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf libidn.aux libidn.cp libidn.cps libidn.fn libidn.fns libidn.ky \ + libidn.kys libidn.log libidn.pg libidn.tmp libidn.toc \ + libidn.tp libidn.tps libidn.vr libidn.vrs + +clean-aminfo: + -test -z "libidn.dvi libidn.pdf libidn.ps libidn.html" \ + || rm -rf libidn.dvi libidn.pdf libidn.ps libidn.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +install-man1: $(dist_man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list=''; test -n "$(man1dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } +install-man3: $(dist_man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list=''; test -n "$(man3dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man3dir)" && rm -f $$files; } +install-imagesDATA: $(images_DATA) + @$(NORMAL_INSTALL) + test -z "$(imagesdir)" || $(MKDIR_P) "$(DESTDIR)$(imagesdir)" + @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(imagesdir)" || exit $$?; \ + done + +uninstall-imagesDATA: + @$(NORMAL_UNINSTALL) + @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(imagesdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(imagesdir)" && rm -f $$files + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: $(DVIS) + +html: html-recursive + +html-am: $(HTMLS) + +info: info-recursive + +info-am: $(INFO_DEPS) + +install-data-am: install-imagesDATA install-info-am install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html: install-html-recursive + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d$$p"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-recursive + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: install-man1 install-man3 + +install-pdf: install-pdf-recursive + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-recursive + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ + mostlyclean-libtool mostlyclean-vti + +pdf: pdf-recursive + +pdf-am: $(PDFS) + +ps: ps-recursive + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \ + uninstall-info-am uninstall-man uninstall-pdf-am \ + uninstall-ps-am + +uninstall-man: uninstall-man1 uninstall-man3 + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-aminfo clean-generic \ + clean-libtool ctags ctags-recursive dist-info distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-imagesDATA install-info install-info-am install-man \ + install-man1 install-man3 install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-vti mostlyclean mostlyclean-aminfo \ + mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \ + uninstall-info-am uninstall-man uninstall-man1 uninstall-man3 \ + uninstall-pdf-am uninstall-ps-am + + +libidn-components.eps: components.fig + fig2dev -L eps $< $@ + +libidn-components.png: components.fig + fig2dev -L png $< $@ + +libidn-components.pdf: components.fig + fig2dev -L pdf $< $@ + +idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \ + $(top_srcdir)/configure.ac + $(HELP2MAN) \ + --name="Internationalized Domain Names command line tool" \ + --output=$@ $(top_builddir)/src/idn$(EXEEXT) + +Makefile.gdoc: $(top_builddir)/configure Makefile.am Makefile.gdoci $(GDOC_SRC) + echo '# This file is automatically generated. DO NOT EDIT! -*- makefile -*-' > Makefile.gdoc + echo >> Makefile.gdoc + echo 'gdoc_TEXINFOS =' >> Makefile.gdoc + echo 'gdoc_MANS =' >> Makefile.gdoc + echo >> Makefile.gdoc + for file in $(GDOC_SRC); do \ + shortfile=`basename $$file`; \ + echo "#" >> Makefile.gdoc; \ + echo "### $$shortfile" >> Makefile.gdoc; \ + echo "#" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$shortfile.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$shortfile.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + functions=`$(PERL) $(srcdir)/gdoc -listfunc $$file`; \ + for function in $$functions; do \ + echo "# $$shortfile: $$function" >> Makefile.gdoc; \ + echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$function.texi" >> Makefile.gdoc; \ + echo "$(GDOC_TEXI_PREFIX)$$function.texi: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + echo "gdoc_MANS += $(GDOC_MAN_PREFIX)$$function.3" >> Makefile.gdoc; \ + echo "$(GDOC_MAN_PREFIX)$$function.3: $$file" >> Makefile.gdoc; \ + echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -man $$(GDOC_MAN_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/ /" >> Makefile.gdoc; \ + echo >> Makefile.gdoc; \ + done; \ + echo >> Makefile.gdoc; \ + done + $(MAKE) Makefile +texi/idna.c.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idna_to_ascii_4i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ +man/idna_to_ascii_4i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@ +texi/idna_to_unicode_44i.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ +man/idna_to_unicode_44i.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@ +texi/idna_to_ascii_4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ +man/idna_to_ascii_4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@ +texi/idna_to_ascii_8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ +man/idna_to_ascii_8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@ +texi/idna_to_ascii_lz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ +man/idna_to_ascii_lz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@ +texi/idna_to_unicode_4z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ +man/idna_to_unicode_4z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@ +texi/idna_to_unicode_8z4z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ +man/idna_to_unicode_8z4z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@ +texi/idna_to_unicode_8z8z.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ +man/idna_to_unicode_8z8z.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@ +texi/idna_to_unicode_8zlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ +man/idna_to_unicode_8zlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@ +texi/idna_to_unicode_lzlz.texi: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ +man/idna_to_unicode_lzlz.3: ../lib/idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@ +texi/nfkc.c.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_utf8_to_unichar.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ +man/stringprep_utf8_to_unichar.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@ +texi/stringprep_unichar_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ +man/stringprep_unichar_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@ +texi/stringprep_utf8_to_ucs4.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ +man/stringprep_utf8_to_ucs4.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@ +texi/stringprep_ucs4_to_utf8.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ +man/stringprep_ucs4_to_utf8.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@ +texi/stringprep_utf8_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ +man/stringprep_utf8_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@ +texi/stringprep_ucs4_nfkc_normalize.texi: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ +man/stringprep_ucs4_nfkc_normalize.3: ../lib/nfkc.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@ +texi/pr29.c.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/pr29_4.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4 $< > $@ +man/pr29_4.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4 $< > $@ +texi/pr29_4z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4z $< > $@ +man/pr29_4z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4z $< > $@ +texi/pr29_8z.texi: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_8z $< > $@ +man/pr29_8z.3: ../lib/pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_8z $< > $@ +texi/punycode.c.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/punycode_encode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_encode $< > $@ +man/punycode_encode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_encode $< > $@ +texi/punycode_decode.texi: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_decode $< > $@ +man/punycode_decode.3: ../lib/punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_decode $< > $@ +texi/stringprep.c.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_4i.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4i $< > $@ +man/stringprep_4i.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4i $< > $@ +texi/stringprep_4zi.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4zi $< > $@ +man/stringprep_4zi.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4zi $< > $@ +texi/stringprep.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep $< > $@ +man/stringprep.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep $< > $@ +texi/stringprep_profile.texi: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_profile $< > $@ +man/stringprep_profile.3: ../lib/stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_profile $< > $@ +texi/tld.c.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/tld_get_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_table $< > $@ +man/tld_get_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_table $< > $@ +texi/tld_default_table.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_default_table $< > $@ +man/tld_default_table.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_default_table $< > $@ +texi/tld_get_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4 $< > $@ +man/tld_get_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4 $< > $@ +texi/tld_get_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4z $< > $@ +man/tld_get_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4z $< > $@ +texi/tld_get_z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_z $< > $@ +man/tld_get_z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_z $< > $@ +texi/tld_check_4t.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4t $< > $@ +man/tld_check_4t.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4t $< > $@ +texi/tld_check_4tz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4tz $< > $@ +man/tld_check_4tz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4tz $< > $@ +texi/tld_check_4.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4 $< > $@ +man/tld_check_4.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4 $< > $@ +texi/tld_check_4z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4z $< > $@ +man/tld_check_4z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4z $< > $@ +texi/tld_check_8z.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_8z $< > $@ +man/tld_check_8z.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_8z $< > $@ +texi/tld_check_lz.texi: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_lz $< > $@ +man/tld_check_lz.3: ../lib/tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_lz $< > $@ +texi/toutf8.c.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_locale_charset.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ +man/stringprep_locale_charset.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_charset $< > $@ +texi/stringprep_convert.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_convert $< > $@ +man/stringprep_convert.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_convert $< > $@ +texi/stringprep_locale_to_utf8.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ +man/stringprep_locale_to_utf8.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@ +texi/stringprep_utf8_to_locale.texi: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ +man/stringprep_utf8_to_locale.3: ../lib/toutf8.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@ +texi/version.c.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_check_version.texi: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_check_version $< > $@ +man/stringprep_check_version.3: ../lib/version.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_check_version $< > $@ +texi/idn-free.c.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idn_free.texi: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idn_free $< > $@ +man/idn_free.3: ../lib/idn-free.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idn_free $< > $@ +texi/strerror-idna.c.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/idna_strerror.texi: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_strerror $< > $@ +man/idna_strerror.3: ../lib/strerror-idna.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_strerror $< > $@ +texi/strerror-pr29.c.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/pr29_strerror.texi: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_strerror $< > $@ +man/pr29_strerror.3: ../lib/strerror-pr29.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_strerror $< > $@ +texi/strerror-punycode.c.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/punycode_strerror.texi: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_strerror $< > $@ +man/punycode_strerror.3: ../lib/strerror-punycode.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_strerror $< > $@ +texi/strerror-stringprep.c.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/stringprep_strerror.texi: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_strerror $< > $@ +man/stringprep_strerror.3: ../lib/strerror-stringprep.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_strerror $< > $@ +texi/strerror-tld.c.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@ +texi/tld_strerror.texi: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_strerror $< > $@ +man/tld_strerror.3: ../lib/strerror-tld.c + mkdir -p `dirname $@` + $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_strerror $< > $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/components.fig b/doc/components.fig new file mode 100644 index 0000000..0a7570b --- /dev/null +++ b/doc/components.fig @@ -0,0 +1,96 @@ +#FIG 3.2 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 3285 1845 4680 2295 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5 + 4669 2295 4669 1845 3295 1845 3295 2295 4669 2295 +4 0 0 50 -1 16 11 0.0000 4 165 765 3600 2107 Nameprep\001 +-6 +6 2610 1845 3195 2295 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5 + 3186 2295 3186 1845 2618 1845 2618 2295 3186 2295 +4 0 0 50 -1 16 11 0.0000 4 120 405 2700 2130 iSCSI\001 +-6 +6 1935 1845 2520 2295 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5 + 2512 2295 2512 1845 1943 1845 1943 2295 2512 2295 +4 0 0 50 -1 16 11 0.0000 4 120 405 2025 2130 SASL\001 +-6 +6 1260 1845 1845 2295 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5 + 1837 2295 1837 1845 1268 1845 1268 2295 1837 2295 +4 0 0 50 -1 16 11 0.0000 4 120 450 1327 2130 XMPP\001 +-6 +6 810 4545 6795 5175 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5 + 6795 5159 810 5159 810 4560 6795 4560 6795 5159 +4 0 0 50 -1 18 11 0.0000 4 150 1305 3150 4905 GNU IDN Library\001 +-6 +6 4005 2835 5850 3510 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5 + 5850 3508 5850 2837 4005 2837 4005 3508 5850 3508 +4 0 0 50 -1 16 10 0.0000 4 105 360 4751 3227 IDNA\001 +-6 +6 4050 900 5580 1440 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5 + 5580 1398 5580 900 4050 900 4050 1398 5580 1398 +4 0 0 50 -1 16 11 0.0000 4 150 705 4455 1215 Punycode\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 2880 1398 2880 1848 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 3690 1395 3690 1848 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 2880 2298 2880 4573 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 2160 2298 2160 4573 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 1530 2298 1530 4573 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 1035 1398 1035 4573 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 1530 1398 1530 1848 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 2205 1398 2205 1848 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 3555 2298 3555 4573 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 4905 3506 4905 4573 +2 4 2 1 0 7 50 -1 -1 3.000 0 0 4 0 0 5 + 6795 6419 810 6419 810 5820 6795 5820 6795 6419 +2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 1 1 2 + 1 0 1.00 60.00 120.00 + 1 0 1.00 60.00 120.00 + 3735 5175 3735 5805 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 5 0 0 5 + 3916 1398 3916 900 765 900 765 1398 3916 1398 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 4365 2277 4365 2835 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 4860 1395 4860 2863 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5 + 6795 1395 6795 900 5670 900 5670 1395 6795 1395 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 31.59 63.18 + 6165 1398 6165 4573 +4 0 0 50 -1 16 11 0.0000 4 165 765 3345 6157 Application\001 +4 0 0 50 -1 16 11 0.0000 4 165 765 1935 1215 StringPrep\001 +4 0 0 50 -1 16 11 0.0000 4 120 315 6075 1170 TLD\001 diff --git a/doc/cyclo/Makefile b/doc/cyclo/Makefile new file mode 100644 index 0000000..6366024 --- /dev/null +++ b/doc/cyclo/Makefile @@ -0,0 +1,678 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# doc/cyclo/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = doc/cyclo +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = +NEXT_AS_FIRST_DIRECTIVE_STRING_H = +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = +NEXT_ERRNO_H = +NEXT_ICONV_H = +NEXT_STDARG_H = +NEXT_STDINT_H = +NEXT_STRING_H = +NEXT_UNISTD_H = +NEXT_WCHAR_H = +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/cyclo +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/cyclo +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +EXTRA_DIST = cyclo-libidn.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/cyclo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/cyclo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +cyclo-libidn.html: + $(PMCCABE) ${top_srcdir}/lib/*.[ch] \ + | sort -nr \ + | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ + -v lang=html -v name="$(PACKAGE_NAME)" \ + -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \ + -v url="http://www.gnu.org/software/libidn/" \ + -v css=../../build-aux/pmccabe.css \ + > tmp + mv tmp $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/cyclo/Makefile.am b/doc/cyclo/Makefile.am new file mode 100644 index 0000000..2c72cfc --- /dev/null +++ b/doc/cyclo/Makefile.am @@ -0,0 +1,30 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +EXTRA_DIST = cyclo-libidn.html + +cyclo-libidn.html: + $(PMCCABE) ${top_srcdir}/lib/*.[ch] \ + | sort -nr \ + | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ + -v lang=html -v name="$(PACKAGE_NAME)" \ + -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \ + -v url="http://www.gnu.org/software/libidn/" \ + -v css=../../build-aux/pmccabe.css \ + > tmp + mv tmp $@ diff --git a/doc/cyclo/Makefile.in b/doc/cyclo/Makefile.in new file mode 100644 index 0000000..c6f64cc --- /dev/null +++ b/doc/cyclo/Makefile.in @@ -0,0 +1,678 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/cyclo +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = cyclo-libidn.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/cyclo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/cyclo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +cyclo-libidn.html: + $(PMCCABE) ${top_srcdir}/lib/*.[ch] \ + | sort -nr \ + | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ + -v lang=html -v name="$(PACKAGE_NAME)" \ + -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \ + -v url="http://www.gnu.org/software/libidn/" \ + -v css=../../build-aux/pmccabe.css \ + > tmp + mv tmp $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/cyclo/cyclo-libidn.html b/doc/cyclo/cyclo-libidn.html new file mode 100644 index 0000000..b46c9b1 --- /dev/null +++ b/doc/cyclo/cyclo-libidn.html @@ -0,0 +1,2974 @@ + + + + +Cyclomatic Complexity report for GNU Libidn + + + + + + + + + + + +Back to GNU Libidn Homepage

+
GNU Libidn Cyclomatic Complexity Report
+

Report generated at: Mon Jun 08 12:41:12 CEST 2009

+
Resume
+
+ + + + + + + + + + + + + + + + + + + + + +
+Total number of functions + +72 +
+Number of low risk functions + +61 +
+Number of moderate risk functions + +6 +
+Number of high risk functions + +5 +
+Number of untestable functions + +0 +
+
+
Details for all functions
+

Used ranges:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+  + +Cyclomatic Complexity + +Risk Evaluation +
+  + +0 - 10 + +Simple module, without much risk +
+  + +11 - 20 + +More complex module, moderate risk +
+  + +21 - 50 + +Complex module, high risk +
+  + +greater than 50 + +Untestable module, very high risk +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +Function Name + +Cyclomatic +
+Complexity +
+Number of +
+Statements +
+Number of +
+Lines +
+Source File +
+ + +idna_to_ascii_4i + +37 + +92 + +191 + +lib/idna.c +
+ +
+ + +stringprep_4i + +37 + +76 + +137 + +lib/stringprep.c +
+ +
+ + +_g_utf8_normalize_wc + +30 + +77 + +135 + +lib/nfkc.c +
+ +
+ + +punycode_encode + +22 + +57 + +111 + +lib/punycode.c +
+ +
+ + +punycode_decode + +21 + +59 + +101 + +lib/punycode.c +
+ +
+ + +idna_to_ascii_4z + +15 + +45 + +82 + +lib/idna.c +
+ +
+ + +g_utf8_to_ucs4_fast + +14 + +50 + +88 + +lib/nfkc.c +
+ +
+ + +tld_get_4 + +13 + +24 + +36 + +lib/tld.c +
+ +
+ + +idna_to_unicode_internal + +12 + +47 + +116 + +lib/idna.c +
+ +
+ + +combine + +12 + +21 + +54 + +lib/nfkc.c +
+ +
+ + +_tld_checkchar + +11 + +15 + +28 + +lib/tld.c +
+ +
+  + +g_ucs4_to_utf8 + +10 + +28 + +47 + +lib/nfkc.c +
+  + +find_decomposition + +10 + +21 + +41 + +lib/nfkc.c +
+  + +combine_hangul + +10 + +11 + +23 + +lib/nfkc.c +
+  + +stringprep_profile + +9 + +24 + +38 + +lib/stringprep.c +
+  + +g_utf8_strlen + +9 + +16 + +37 + +lib/nfkc.c +
+  + +g_unichar_to_utf8 + +8 + +28 + +50 + +lib/nfkc.c +
+  + +idna_to_unicode_4z4z + +7 + +38 + +62 + +lib/idna.c +
+  + +g_unicode_canonical_ordering + +7 + +24 + +36 + +lib/nfkc.c +
+  + +decompose_hangul + +7 + +16 + +34 + +lib/nfkc.c +
+  + +pr29_4 + +7 + +15 + +27 + +lib/pr29.c +
+  + +stringprep_find_character_in_table + +6 + +8 + +21 + +lib/stringprep.c +
+  + +stringprep + +6 + +30 + +53 + +lib/stringprep.c +
+  + +tld_get_table + +5 + +9 + +14 + +lib/tld.c +
+  + +stringprep_locale_charset + +5 + +7 + +17 + +lib/toutf8.c +
+  + +stringprep_apply_table_to_string + +5 + +13 + +27 + +lib/stringprep.c +
+  + +tld_check_4t + +5 + +13 + +24 + +lib/tld.c +
+  + +tld_default_table + +4 + +8 + +16 + +lib/tld.c +
+  + +decode_digit + +4 + +4 + +6 + +lib/punycode.c +
+  + +tld_check_4 + +4 + +13 + +28 + +lib/tld.c +
+  + +idna_to_unicode_44i + +4 + +12 + +24 + +lib/idna.c +
+  + +stringprep_find_string_in_table + +4 + +10 + +19 + +lib/stringprep.c +
+  + +first_column + +4 + +10 + +12 + +lib/pr29.c +
+  + +adapt + +3 + +9 + +16 + +lib/punycode.c +
+  + +stringprep_4zi_1 + +3 + +8 + +18 + +lib/stringprep.c +
+  + +combinationclass + +3 + +7 + +11 + +lib/pr29.c +
+  + +in_last_column_row + +3 + +7 + +11 + +lib/pr29.c +
+  + +tld_check_4z + +3 + +6 + +14 + +lib/tld.c +
+  + +stringprep_4zi + +3 + +6 + +12 + +lib/stringprep.c +
+  + +tld_check_4tz + +3 + +6 + +13 + +lib/tld.c +
+  + +tld_get_4z + +3 + +6 + +13 + +lib/tld.c +
+  + +stringprep_check_version + +3 + +3 + +8 + +lib/version.c +
+  + +tld_get_z + +3 + +14 + +22 + +lib/tld.c +
+  + +tld_check_8z + +3 + +11 + +21 + +lib/tld.c +
+  + +tld_check_lz + +3 + +10 + +20 + +lib/tld.c +
+  + +tld_strerror + +7 + +17 + +40 + +lib/strerror-tld.c +
+  + +punycode_strerror + +5 + +13 + +32 + +lib/strerror-punycode.c +
+  + +pr29_strerror + +4 + +11 + +28 + +lib/strerror-pr29.c +
+  + +idna_to_unicode_8z4z + +2 + +9 + +16 + +lib/idna.c +
+  + +idna_to_ascii_8z + +2 + +9 + +18 + +lib/idna.c +
+  + +idna_to_unicode_lzlz + +2 + +8 + +15 + +lib/idna.c +
+  + +idna_to_unicode_8zlz + +2 + +8 + +15 + +lib/idna.c +
+  + +idna_to_unicode_8z8z + +2 + +8 + +15 + +lib/idna.c +
+  + +idna_to_ascii_lz + +2 + +8 + +16 + +lib/idna.c +
+  + +g_utf8_get_char + +2 + +8 + +14 + +lib/nfkc.c +
+  + +pr29_8z + +2 + +8 + +16 + +lib/pr29.c +
+  + +stringprep_convert + +2 + +7 + +16 + +lib/toutf8.c +
+  + +pr29_4z + +2 + +6 + +10 + +lib/pr29.c +
+  + +encode_basic + +2 + +2 + +6 + +lib/punycode.c +
+  + +stringprep_strerror + +13 + +29 + +64 + +lib/strerror-stringprep.c +
+  + +idna_strerror + +13 + +29 + +64 + +lib/strerror-idna.c +
+  + +stringprep_ucs4_nfkc_normalize + +1 + +6 + +12 + +lib/nfkc.c +
+  + +g_utf8_normalize + +1 + +5 + +11 + +lib/nfkc.c +
+  + +stringprep_ucs4_to_utf8 + +1 + +1 + +7 + +lib/nfkc.c +
+  + +encode_digit + +1 + +1 + +7 + +lib/punycode.c +
+  + +stringprep_utf8_to_ucs4 + +1 + +1 + +5 + +lib/nfkc.c +
+  + +stringprep_unichar_to_utf8 + +1 + +1 + +5 + +lib/nfkc.c +
+  + +stringprep_utf8_to_unichar + +1 + +1 + +5 + +lib/nfkc.c +
+  + +idn_free + +1 + +1 + +5 + +lib/idn-free.c +
+  + +stringprep_utf8_to_locale + +1 + +1 + +5 + +lib/toutf8.c +
+  + +stringprep_locale_to_utf8 + +1 + +1 + +5 + +lib/toutf8.c +
+
Copyright (c) 2007, 2008 Free Software Foundation Inc. + + diff --git a/doc/fdl-1.3.texi b/doc/fdl-1.3.texi new file mode 100644 index 0000000..8805f1a --- /dev/null +++ b/doc/fdl-1.3.texi @@ -0,0 +1,506 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{PDF} produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +@uref{http://www.gnu.org/copyleft/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: + diff --git a/doc/gdoc b/doc/gdoc new file mode 100755 index 0000000..82d9e0a --- /dev/null +++ b/doc/gdoc @@ -0,0 +1,909 @@ +#!/usr/bin/perl + +## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +## added -texinfo, -listfunc, -pkg-name +## man page revamp +## various improvements +## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos +## added -tex +## Copyright (c) 1998 Michael Zucchi + +# 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 3 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, see . + +# This will read a C source code file and scan for embedded comments +# in the style of gnome comments (+minor extensions - see below). + +# usage: +# gdoc [ -docbook | -html | -text | -man | -tex | -texinfo | -listfunc ] +# [ -sourceversion verno ] [ -include file | -includefuncprefix ] +# [ -bugsto address ] [ -pkg-name packagename ] +# [ -seeinfo infonode ] [ -copyright notice ] [ -verbatimcopying ] +# [ -function funcname [ -function funcname ...] ] c file(s)s > outputfile +# +# Set output format using one of -docbook, -html, -text, -man, -tex, +# -texinfo, or -listfunc. Default is man. +# +# -sourceversion +# Version number for source code, e.g. '1.0.4'. Used in 'man' headers. +# Defaults to using current date. +# +# -include FILE +# For man pages, mention #include in the synopsis. +# +# -includefuncprefix +# For man pages, mention a #include in the synopsis. +# The FILE derived from the function prefix. For example, a +# function gss_init_sec_context will generate an include +# statement of #include . +# +# -bugsto address +# For man pages, include a section about reporting bugs and mention +# the given e-mail address, e.g 'bug-libidn@gnu.org'. +# +# -pkg-name packagename +# For man pages when -bugsto is used, also include help URLs to the +# the project's home page. For example, "GNU Libidn". +# +# -seeinfo infonode +# For man pages, include a section that point to an info manual +# for more information. +# +# -copyright notice +# For man pages, include a copyright section with the given +# notice after a preamble. Use, e.g., '2002, 2003 Simon Josefsson'. +# +# -verbatimcopying +# For man pages, and when the -copyright parameter is used, +# add a licensing statement that say verbatim copying is permitted. +# +# -function funcname +# If set, then only generate documentation for the given function(s). All +# other functions are ignored. +# +# c files - list of 'c' files to process +# +# All output goes to stdout, with errors to stderr. + +# +# format of comments. +# In the following table, (...)? signifies optional structure. +# (...)* signifies 0 or more structure elements +# /** +# * function_name(:)? (- short description)? +# (* @parameterx: (description of parameter x)?)* +# (* a blank line)? +# * (Description:)? (Description of function)? +# * (Section header: (section description)? )* +# (*)?*/ +# +# So .. the trivial example would be: +# +# /** +# * my_function +# **/ +# +# If the Description: header tag is ommitted, then there must be a blank line +# after the last parameter specification. +# e.g. +# /** +# * my_function - does my stuff +# * @my_arg: its mine damnit +# * +# * Does my stuff explained. +# */ +# +# or, could also use: +# /** +# * my_function - does my stuff +# * @my_arg: its mine damnit +# * Description: Does my stuff explained. +# */ +# etc. +# +# All descriptions can be multiline, apart from the short function description. +# +# All descriptive text is further processed, scanning for the following special +# patterns, which are highlighted appropriately. +# +# 'funcname()' - function +# '$ENVVAR' - environmental variable OBSOLETE (?) +# '#struct_name' - name of a structure +# '@parameter' - name of a parameter +# '%CONST' - name of a constant. + +# +# Extensions for LaTeX: +# +# 1. the symbol '->' will be replaced with a rightarrow +# 2. x^y with ${x}^{y}$. +# 3. xxx\: with xxx: + +use POSIX qw(strftime); + +# match expressions used to find embedded type information +$type_constant = "\\\%(\\w+)"; +$type_func = "(\\w+\\(\\))"; +$type_param = "\\\@(\\w+)"; +$type_struct = "\\\#(\\w+)"; +$type_env = "(\\\$\\w+)"; + + +# Output conversion substitutions. +# One for each output format + +# these work fairly well +%highlights_html = ( $type_constant, "\$1", + $type_func, "\$1", + $type_struct, "\$1", + $type_param, "\$1" ); +$blankline_html = "

"; + +%highlights_texinfo = ( $type_constant, "\\\@code{\$1}", + $type_func, "\\\@code{\$1}", + $type_struct, "\\\@code{\$1}", + $type_param, "\\\@code{\$1}" ); +$blankline_texinfo = ""; + +%highlights_tex = ( $type_constant, "{\\\\it \$1}", + $type_func, "{\\\\bf \$1}", + $type_struct, "{\\\\it \$1}", + $type_param, "{\\\\bf \$1}" ); +$blankline_tex = "\\\\"; + +# sgml, docbook format +%highlights_sgml = ( $type_constant, "\$1", + $type_func, "\$1", + $type_struct, "\$1", + $type_env, "\$1", + $type_param, "\$1" ); +$blankline_sgml = "\n"; + +# these are pretty rough +%highlights_man = ( $type_constant, "\\\\fB\$1\\\\fP", + $type_func, "\\\\fB\$1\\\\fP", + $type_struct, "\\\\fB\$1\\\\fP", + $type_param, "\\\\fI\$1\\\\fP" ); +$blankline_man = ""; + +# text-mode +%highlights_text = ( $type_constant, "\$1", + $type_func, "\$1", + $type_struct, "\$1", + $type_param, "\$1" ); +$blankline_text = ""; + + +sub usage { + print "Usage: $0 [ -v ] [ -docbook | -html | -text | -man | -tex | -texinfo -listfunc ]\n"; + print " [ -sourceversion verno ] [ -include file | -includefuncprefix ]\n"; + print " [ -bugsto address ] [ -seeinfo infonode ] [ -copyright notice]\n"; + print " [ -verbatimcopying ] [ -pkg-name packagename ]\n"; + print " [ -function funcname [ -function funcname ...] ]\n"; + print " c source file(s) > outputfile\n"; + exit 1; +} + +# read arguments +if ($#ARGV==-1) { + usage(); +} + +$verbose = 0; +$output_mode = "man"; +%highlights = %highlights_man; +$blankline = $blankline_man; +$modulename = "API Documentation"; +$sourceversion = strftime "%Y-%m-%d", localtime; +$function_only = 0; +while ($ARGV[0] =~ m/^-(.*)/) { + $cmd = shift @ARGV; + if ($cmd eq "-html") { + $output_mode = "html"; + %highlights = %highlights_html; + $blankline = $blankline_html; + } elsif ($cmd eq "-man") { + $output_mode = "man"; + %highlights = %highlights_man; + $blankline = $blankline_man; + } elsif ($cmd eq "-tex") { + $output_mode = "tex"; + %highlights = %highlights_tex; + $blankline = $blankline_tex; + } elsif ($cmd eq "-texinfo") { + $output_mode = "texinfo"; + %highlights = %highlights_texinfo; + $blankline = $blankline_texinfo; + } elsif ($cmd eq "-text") { + $output_mode = "text"; + %highlights = %highlights_text; + $blankline = $blankline_text; + } elsif ($cmd eq "-docbook") { + $output_mode = "sgml"; + %highlights = %highlights_sgml; + $blankline = $blankline_sgml; + } elsif ($cmd eq "-listfunc") { + $output_mode = "listfunc"; + } elsif ($cmd eq "-module") { # not needed for sgml, inherits from calling document + $modulename = shift @ARGV; + } elsif ($cmd eq "-sourceversion") { + $sourceversion = shift @ARGV; + } elsif ($cmd eq "-include") { + $include = shift @ARGV; + } elsif ($cmd eq "-includefuncprefix") { + $includefuncprefix = 1; + } elsif ($cmd eq "-bugsto") { + $bugsto = shift @ARGV; + } elsif ($cmd eq "-pkg-name") { + $pkgname = shift @ARGV; + } elsif ($cmd eq "-copyright") { + $copyright = shift @ARGV; + } elsif ($cmd eq "-verbatimcopying") { + $verbatimcopying = 1; + } elsif ($cmd eq "-seeinfo") { + $seeinfo = shift @ARGV; + } elsif ($cmd eq "-function") { # to only output specific functions + $function_only = 1; + $function = shift @ARGV; + $function_table{$function} = 1; + } elsif ($cmd eq "-v") { + $verbose = 1; + } elsif (($cmd eq "-h") || ($cmd eq "--help")) { + usage(); + } +} + +## +# dumps section contents to arrays/hashes intended for that purpose. +# +sub dump_section { + my $name = shift @_; + my $contents = join "\n", @_; + + if ($name =~ m/$type_constant/) { + $name = $1; +# print STDERR "constant section '$1' = '$contents'\n"; + $constants{$name} = $contents; + } elsif ($name =~ m/$type_param/) { +# print STDERR "parameter def '$1' = '$contents'\n"; + $name = $1; + $parameters{$name} = $contents; + } else { +# print STDERR "other section '$name' = '$contents'\n"; + $sections{$name} = $contents; + push @sectionlist, $name; + } +} + +## +# output function +# +# parameters, a hash. +# function => "function name" +# parameterlist => @list of parameters +# parameters => %parameter descriptions +# sectionlist => @list of sections +# sections => %descriont descriptions +# + +sub repstr { + $pattern = shift; + $repl = shift; + $match1 = shift; + $match2 = shift; + $match3 = shift; + $match4 = shift; + + $output = $repl; + $output =~ s,\$1,$match1,g; + $output =~ s,\$2,$match2,g; + $output =~ s,\$3,$match3,g; + $output =~ s,\$4,$match4,g; + + eval "\$return = qq/$output/"; + +# print "pattern $pattern matched 1=$match1 2=$match2 3=$match3 4=$match4 replace $repl yielded $output interpolated $return\n"; + + $return; +} + +sub just_highlight { + my $contents = join "\n", @_; + my $line; + my $ret = ""; + + foreach $pattern (keys %highlights) { +# print "scanning pattern $pattern ($highlights{$pattern})\n"; + $contents =~ s:$pattern:repstr($pattern, $highlights{$pattern}, $1, $2, $3, $4):gse; + } + foreach $line (split "\n", $contents) { + if ($line eq ""){ + $ret = $ret . $lineprefix . $blankline; + } else { + $ret = $ret . $lineprefix . $line; + } + $ret = $ret . "\n"; + } + + return $ret; +} + +sub output_highlight { + print (just_highlight (@_)); +} + +# output in texinfo +sub output_texinfo { + my %args = %{$_[0]}; + my ($parameter, $section); + my $count; + + print "\@subheading ".$args{'function'}."\n"; + print "\@anchor{".$args{'function'}."}\n"; + print "\@deftypefun {" . $args{'functiontype'} . "} "; + print "{".$args{'function'}."} "; + print "("; + $count = 0; + foreach $parameter (@{$args{'parameterlist'}}) { + print $args{'parametertypes'}{$parameter}." \@var{".$parameter."}"; + if ($count != $#{$args{'parameterlist'}}) { + $count++; + print ", "; + } + } + print ")\n"; + foreach $parameter (@{$args{'parameterlist'}}) { + if ($args{'parameters'}{$parameter}) { + print "\@var{".$parameter."}: "; + output_highlight($args{'parameters'}{$parameter}); + print "\n"; + } + } + foreach $section (@{$args{'sectionlist'}}) { + print "\n\@strong{$section:} " if $section ne $section_default; + $args{'sections'}{$section} =~ s:([{}]):\@\1:gs; + output_highlight($args{'sections'}{$section}); + } + print "\@end deftypefun\n\n"; +} + +# output in html +sub output_html { + my %args = %{$_[0]}; + my ($parameter, $section); + my $count; + print "\n\n 

Function

\n"; + + print "".$args{'functiontype'}."\n"; + print "".$args{'function'}."\n"; + print "("; + $count = 0; + foreach $parameter (@{$args{'parameterlist'}}) { + print "".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; + if ($count != $#{$args{'parameterlist'}}) { + $count++; + print ", "; + } + } + print ")\n"; + + print "

Arguments

\n"; + print "
\n"; + foreach $parameter (@{$args{'parameterlist'}}) { + print "
".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; + print "
"; + output_highlight($args{'parameters'}{$parameter}); + } + print "
\n"; + foreach $section (@{$args{'sectionlist'}}) { + print "

$section

\n"; + print "
    \n"; + output_highlight($args{'sections'}{$section}); + print "
\n"; + } + print "
\n"; +} + +# output in tex +sub output_tex { + my %args = %{$_[0]}; + my ($parameter, $section); + my $count; + my $func = $args{'function'}; + my $param; + my $param2; + my $sec; + my $check; + my $type; + + $func =~ s/_/\\_/g; + + print "\n\n\\subsection{". $func . "}\n\\label{" . $args{'function'} . "}\n"; + + $type = $args{'functiontype'}; + $type =~ s/_/\\_/g; + + print "{\\it ".$type."}\n"; + print "{\\bf ".$func."}\n"; + print "("; + $count = 0; + foreach $parameter (@{$args{'parameterlist'}}) { + $param = $args{'parametertypes'}{$parameter}; + $param2 = $parameter; + $param =~ s/_/\\_/g; + $param2 =~ s/_/\\_/g; + + print "{\\it ".$param."} {\\bf ".$param2."}"; + if ($count != $#{$args{'parameterlist'}}) { + $count++; + print ", "; + } + } + print ")\n"; + + print "\n{\\large{Arguments}}\n"; + + print "\\begin{itemize}\n"; + $check=0; + foreach $parameter (@{$args{'parameterlist'}}) { + $param1 = $args{'parametertypes'}{$parameter}; + $param1 =~ s/_/\\_/g; + $param2 = $parameter; + $param2 =~ s/_/\\_/g; + + $check = 1; + print "\\item {\\it ".$param1."} {\\bf ".$param2."}: \n"; +# print "\n"; + + $param3 = $args{'parameters'}{$parameter}; + $param3 =~ s/#([a-zA-Z\_]+)/{\\it \1}/g; + + $out = just_highlight($param3); + $out =~ s/_/\\_/g; + print $out; + } + if ($check==0) { + print "\\item void\n"; + } + print "\\end{itemize}\n"; + + foreach $section (@{$args{'sectionlist'}}) { + $sec = $section; + $sec =~ s/_/\\_/g; + $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g; + + print "\n{\\large{$sec}}\\\\\n"; + print "\\begin{rmfamily}\n"; + + $sec = $args{'sections'}{$section}; + $sec =~ s/\\:/:/g; + $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g; + $sec =~ s/->/\$\\rightarrow\$/g; + $sec =~ s/([0-9]+)\^([0-9]+)/\$\{\1\}\^\{\2\}\$/g; + + $out = just_highlight($sec); + $out =~ s/_/\\_/g; + + print $out; + print "\\end{rmfamily}\n"; + } + print "\n"; +} + + +# output in sgml DocBook +sub output_sgml { + my %args = %{$_[0]}; + my ($parameter, $section); + my $count; + my $id; + + $id = $args{'module'}."-".$args{'function'}; + $id =~ s/[^A-Za-z0-9]/-/g; + + print "\n"; + print "\n"; + print "".$args{'function'}."\n"; + print "\n"; + print "\n"; + print " ".$args{'function'}."\n"; + print " \n"; + print " ".$args{'purpose'}."\n"; + print " \n"; + print "\n"; + + print "\n"; + print " Synopsis\n"; + print " \n"; + print " ".$args{'functiontype'}." "; + print "".$args{'function'}." "; + print "\n"; + +# print "\n"; +# print " Synopsis\n"; +# print " \n"; +# print " ".$args{'functiontype'}." "; +# print "".$args{'function'}." "; +# print "\n"; + + $count = 0; + if ($#{$args{'parameterlist'}} >= 0) { + foreach $parameter (@{$args{'parameterlist'}}) { + print " ".$args{'parametertypes'}{$parameter}; + print " $parameter\n"; + } + } else { + print " \n"; + } + print " \n"; + print "\n"; +# print "\n"; + + # print parameters + print "\n Arguments\n"; +# print "\nArguments\n"; + if ($#{$args{'parameterlist'}} >= 0) { + print " \n"; + foreach $parameter (@{$args{'parameterlist'}}) { + print " \n $parameter\n"; + print " \n \n"; + $lineprefix=" "; + output_highlight($args{'parameters'}{$parameter}); + print " \n \n \n"; + } + print " \n"; + } else { + print " \n None\n \n"; + } + print "\n"; + + # print out each section + $lineprefix=" "; + foreach $section (@{$args{'sectionlist'}}) { + print "\n $section\n \n"; +# print "\n$section\n"; + if ($section =~ m/EXAMPLE/i) { + print "\n"; + } + output_highlight($args{'sections'}{$section}); +# print ""; + if ($section =~ m/EXAMPLE/i) { + print "\n"; + } + print " \n\n"; + } + + print "\n\n"; +} + +## +# output in man +sub output_man { + my %args = %{$_[0]}; + my ($parameter, $section); + my $count; + + print ".\\\" DO NOT MODIFY THIS FILE! It was generated by gdoc.\n"; + print ".TH \"$args{'function'}\" 3 \"$args{'sourceversion'}\" \"". $args{'module'} . "\" \"". $args{'module'} . "\"\n"; + + print ".SH NAME\n"; + + print $args{'function'}; + if ($args{'purpose'}) { + print " \\- " . $args{'purpose'} . "\n"; + } else { + print " \\- API function\n"; + } + + print ".SH SYNOPSIS\n"; + print ".B #include <". $args{'include'} . ">\n" + if $args{'include'}; + print ".B #include <". lc((split /_/, $args{'function'})[0]) . ".h>\n" + if $args{'includefuncprefix'}; + print ".sp\n"; + print ".BI \"".$args{'functiontype'}." ".$args{'function'}."("; + $count = 0; + foreach $parameter (@{$args{'parameterlist'}}) { + print $args{'parametertypes'}{$parameter}." \" ".$parameter." \""; + if ($count != $#{$args{'parameterlist'}}) { + $count++; + print ", "; + } + } + print ");\"\n"; + + print ".SH ARGUMENTS\n"; + foreach $parameter (@{$args{'parameterlist'}}) { + print ".IP \"".$args{'parametertypes'}{$parameter}." ".$parameter."\" 12\n"; + $param = $args{'parameters'}{$parameter}; + $param =~ s/-/\\-/g; + output_highlight($param); + } + foreach $section (@{$args{'sectionlist'}}) { + print ".SH \"" . uc($section) . "\"\n"; + $sec = $args{'sections'}{$section}; + $sec =~ s/-/\\-/g; + output_highlight($sec); + } + + if ($args{'bugsto'}) { + print ".SH \"REPORTING BUGS\"\n"; + print "Report bugs to <". $args{'bugsto'} . ">.\n"; + if ($args{'pkgname'}) { + print $args{'pkgname'} . " home page: " . + "http://www.gnu.org/software/" . $args{'module'} . "/\n"; + } + print "General help using GNU software: http://www.gnu.org/gethelp/\n"; + } + + if ($args{'copyright'}) { + print ".SH COPYRIGHT\n"; + print "Copyright \\(co ". $args{'copyright'} . ".\n"; + if ($args{'verbatimcopying'}) { + print ".br\n"; + print "Copying and distribution of this file, with or without modification,\n"; + print "are permitted in any medium without royalty provided the copyright\n"; + print "notice and this notice are preserved.\n"; + } + } + + if ($args{'seeinfo'}) { + print ".SH \"SEE ALSO\"\n"; + print "The full documentation for\n"; + print ".B " . $args{'module'} . "\n"; + print "is maintained as a Texinfo manual. If the\n"; + print ".B info\n"; + print "and\n"; + print ".B " . $args{'module'} . "\n"; + print "programs are properly installed at your site, the command\n"; + print ".IP\n"; + print ".B info " . $args{'seeinfo'} . "\n"; + print ".PP\n"; + print "should give you access to the complete manual.\n"; + } +} + +sub output_listfunc { + my %args = %{$_[0]}; + print $args{'function'} . "\n"; +} + +## +# output in text +sub output_text { + my %args = %{$_[0]}; + my ($parameter, $section); + + print "Function = ".$args{'function'}."\n"; + print " return type: ".$args{'functiontype'}."\n\n"; + foreach $parameter (@{$args{'parameterlist'}}) { + print " ".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; + print " -> ".$args{'parameters'}{$parameter}."\n"; + } + foreach $section (@{$args{'sectionlist'}}) { + print " $section:\n"; + print " -> "; + output_highlight($args{'sections'}{$section}); + } +} + +## +# generic output function - calls the right one based +# on current output mode. +sub output_function { +# output_html(@_); + eval "output_".$output_mode."(\@_);"; +} + + +## +# takes a function prototype and spits out all the details +# stored in the global arrays/hsahes. +sub dump_function { + my $prototype = shift @_; + + if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || + $prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || + $prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || + $prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || + $prototype =~ m/^(\w+\s+\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/) { + $return_type = $1; + $function_name = $2; + $args = $3; + +# print STDERR "ARGS = '$args'\n"; + + foreach $arg (split ',', $args) { + # strip leading/trailing spaces + $arg =~ s/^\s*//; + $arg =~ s/\s*$//; +# print STDERR "SCAN ARG: '$arg'\n"; + @args = split('\s', $arg); + +# print STDERR " -> @args\n"; + $param = pop @args; +# print STDERR " -> @args\n"; + if ($param =~ m/^(\*+)(.*)/) { + $param = $2; + push @args, $1; + } + if ($param =~ m/^(.*)(\[\])$/) { + $param = $1; + push @args, $2; + } +# print STDERR " :> @args\n"; + $type = join " ", @args; + + if ($parameters{$param} eq "" && $param != "void") { + $parameters{$param} = "-- undescribed --"; + print STDERR "warning: $lineno: Function parameter '$param' not described in '$function_name'\n"; + } + + push @parameterlist, $param; + $parametertypes{$param} = $type; + +# print STDERR "param = '$param', type = '$type'\n"; + } + } else { + print STDERR "warning: $lineno: Cannot understand prototype: '$prototype'\n"; + return; + } + + if ($function_only==0 || defined($function_table{$function_name})) { + output_function({'function' => $function_name, + 'module' => $modulename, + 'sourceversion' => $sourceversion, + 'include' => $include, + 'includefuncprefix' => $includefuncprefix, + 'bugsto' => $bugsto, + 'pkgname' => $pkgname, + 'copyright' => $copyright, + 'verbatimcopying' => $verbatimcopying, + 'seeinfo' => $seeinfo, + 'functiontype' => $return_type, + 'parameterlist' => \@parameterlist, + 'parameters' => \%parameters, + 'parametertypes' => \%parametertypes, + 'sectionlist' => \@sectionlist, + 'sections' => \%sections, + 'purpose' => $function_purpose + }); + } +} + +###################################################################### +# main +# states +# 0 - normal code +# 1 - looking for function name +# 2 - scanning field start. +# 3 - scanning prototype. +$state = 0; +$section = ""; + +$doc_special = "\@\%\$\#"; + +$doc_start = "^/\\*\\*\$"; +$doc_end = "\\*/"; +$doc_com = "\\s*\\*\\s*"; +$doc_func = $doc_com."(\\w+):?"; +$doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w ]+):\\s*(.*)"; +$doc_content = $doc_com."(.*)"; + +%constants = (); +%parameters = (); +@parameterlist = (); +%sections = (); +@sectionlist = (); + +$contents = ""; +$section_default = "Description"; # default section +$section = $section_default; + +$lineno = 0; +foreach $file (@ARGV) { + if (!open(IN,"<$file")) { + print STDERR "Error: Cannot open file $file\n"; + next; + } + while () { + $lineno++; + + if ($state == 0) { + if (/$doc_start/o) { + $state = 1; # next line is always the function name + } + } elsif ($state == 1) { # this line is the function name (always) + if (/$doc_func/o) { + $function = $1; + $state = 2; + if (/-\s*(.*)/) { + $function_purpose = $1; + } else { + $function_purpose = ""; + } + if ($verbose) { + print STDERR "Info($lineno): Scanning doc for $function\n"; + } + } else { + print STDERR "warning: $lineno: Cannot understand $_ on line $lineno", + " - I thought it was a doc line\n"; + $state = 0; + } + } elsif ($state == 2) { # look for head: lines, and include content + if (/$doc_sect/o) { + $newsection = $1; + $newcontents = $2; + + if ($contents ne "") { + dump_section($section, $contents); + $section = $section_default; + } + + $contents = $newcontents; + if ($contents ne "") { + $contents .= "\n"; + } + $section = $newsection; + } elsif (/$doc_end/) { + + if ($contents ne "") { + dump_section($section, $contents); + $section = $section_default; + $contents = ""; + } + +# print STDERR "end of doc comment, looking for prototype\n"; + $prototype = ""; + $state = 3; + } elsif (/$doc_content/) { + # miguel-style comment kludge, look for blank lines after + # @parameter line to signify start of description + if ($1 eq "" && $section =~ m/^@/) { + dump_section($section, $contents); + $section = $section_default; + $contents = ""; + } else { + $contents .= $1."\n"; + } + } else { + # i dont know - bad line? ignore. + print STDERR "warning: $lineno: Bad line: $_"; + } + } elsif ($state == 3) { # scanning for function { (end of prototype) + if (m#\s*/\*\s+MACDOC\s*#io) { + # do nothing + } + elsif (/([^\{]*)/) { + $prototype .= $1; + } + if (/\{/) { + $prototype =~ s@/\*.*?\*/@@gos; # strip comments. + $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's. + $prototype =~ s@^ +@@gos; # strip leading spaces + dump_function($prototype); + + $function = ""; + %constants = (); + %parameters = (); + %parametertypes = (); + @parameterlist = (); + %sections = (); + @sectionlist = (); + $prototype = ""; + + $state = 0; + } + } + } +} diff --git a/doc/gpl-3.0.texi b/doc/gpl-3.0.texi new file mode 100644 index 0000000..97a17e1 --- /dev/null +++ b/doc/gpl-3.0.texi @@ -0,0 +1,717 @@ +@c The GNU General Public License. +@center Version 3, 29 June 2007 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. +@end display + +@heading Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program---to make sure it remains +free software for all its users. We, the Free Software Foundation, +use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + +@heading TERMS AND CONDITIONS + +@enumerate 0 +@item Definitions. + +``This License'' refers to version 3 of the GNU General Public License. + +``Copyright'' also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +``The Program'' refers to any copyrightable work licensed under this +License. Each licensee is addressed as ``you''. ``Licensees'' and +``recipients'' may be individuals or organizations. + +To ``modify'' a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a ``modified version'' of +the earlier work or a work ``based on'' the earlier work. + +A ``covered work'' means either the unmodified Program or a work based +on the Program. + +To ``propagate'' a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To ``convey'' a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays ``Appropriate Legal Notices'' to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +@item Source Code. + +The ``source code'' for a work means the preferred form of the work for +making modifications to it. ``Object code'' means any non-source form +of a work. + +A ``Standard Interface'' means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The ``System Libraries'' of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +``Major Component'', in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The ``Corresponding Source'' for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +@item Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +@item Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +@item Conveying Verbatim Copies. + +You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +@item Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +@enumerate a +@item +The work must carry prominent notices stating that you modified it, +and giving a relevant date. + +@item +The work must carry prominent notices stating that it is released +under this License and any conditions added under section 7. This +requirement modifies the requirement in section 4 to ``keep intact all +notices''. + +@item +You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will +therefore apply, along with any applicable section 7 additional terms, +to the whole of the work, and all its parts, regardless of how they +are packaged. This License gives no permission to license the work in +any other way, but it does not invalidate such permission if you have +separately received it. + +@item +If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your work +need not make them do so. +@end enumerate + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +``aggregate'' if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +@item Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +@enumerate a +@item +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium customarily +used for software interchange. + +@item +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a written +offer, valid for at least three years and valid for as long as you +offer spare parts or customer support for that product model, to give +anyone who possesses the object code either (1) a copy of the +Corresponding Source for all the software in the product that is +covered by this License, on a durable physical medium customarily used +for software interchange, for a price no more than your reasonable +cost of physically performing this conveying of source, or (2) access +to copy the Corresponding Source from a network server at no charge. + +@item +Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is +allowed only occasionally and noncommercially, and only if you +received the object code with such an offer, in accord with subsection +6b. + +@item +Convey the object code by offering access from a designated place +(gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to copy +the object code is a network server, the Corresponding Source may be +on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. +Regardless of what server hosts the Corresponding Source, you remain +obligated to ensure that it is available for as long as needed to +satisfy these requirements. + +@item +Convey the object code using peer-to-peer transmission, provided you +inform other peers where the object code and Corresponding Source of +the work are being offered to the general public at no charge under +subsection 6d. + +@end enumerate + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A ``User Product'' is either (1) a ``consumer product'', which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +``normally used'' refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +``Installation Information'' for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +@item Additional Terms. + +``Additional permissions'' are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +@enumerate a +@item +Disclaiming warranty or limiting liability differently from the terms +of sections 15 and 16 of this License; or + +@item +Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices +displayed by works containing it; or + +@item +Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +@item +Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +@item +Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or + +@item +Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with +contractual assumptions of liability to the recipient, for any +liability that these contractual assumptions directly impose on those +licensors and authors. +@end enumerate + +All other non-permissive additional terms are considered ``further +restrictions'' within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +@item Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +@item Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +@item Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An ``entity transaction'' is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +@item Patents. + +A ``contributor'' is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's ``contributor version''. + +A contributor's ``essential patent claims'' are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, ``control'' includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a ``patent license'' is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To ``grant'' such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. ``Knowingly relying'' means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is ``discriminatory'' if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +@item No Surrender of Others' Freedom. + +If 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 convey +a covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree +to terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +@item Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +@item Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU 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 that a certain numbered version of the GNU General Public +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that numbered version or +of any later version published by the Free Software Foundation. If +the Program does not specify a version number of the GNU General +Public License, you may choose any version ever published by the Free +Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU General Public License can be used, that proxy's public +statement of acceptance of a version permanently authorizes you to +choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +@item Disclaimer of Warranty. + +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. + +@item Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS 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. + +@item Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +@end enumerate + +@heading END OF TERMS AND CONDITIONS + +@heading 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 +state the exclusion of warranty; and each file should have at least +the ``copyright'' line and a pointer to where the full notice is found. + +@smallexample +@var{one line to give the program's name and a brief idea of what it does.} +Copyright (C) @var{year} @var{name of author} + +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 3 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, see @url{http://www.gnu.org/licenses/}. +@end smallexample + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +@smallexample +@var{program} Copyright (C) @var{year} @var{name of author} +This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. +This is free software, and you are welcome to redistribute it +under certain conditions; type @samp{show c} for details. +@end smallexample + +The hypothetical commands @samp{show w} and @samp{show c} should show +the appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an ``about box''. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a ``copyright disclaimer'' for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +@url{http://www.gnu.org/licenses/}. + +The GNU 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 Lesser General Public License instead of this License. But +first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. diff --git a/doc/idn.1 b/doc/idn.1 new file mode 100644 index 0000000..a71f878 --- /dev/null +++ b/doc/idn.1 @@ -0,0 +1,90 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. +.TH IDN "1" "June 2009" "idn 1.15" "User Commands" +.SH NAME +idn \- Internationalized Domain Names command line tool +.SH SYNOPSIS +.B idn +[\fIOPTION\fR]... [\fISTRINGS\fR]... +.SH DESCRIPTION +Internationalized Domain Name (IDN) convert STRINGS, or standard input. +.PP +Command line interface to the internationalized domain name library. +.PP +All strings are expected to be encoded in the preferred charset used +by your locale. Use `\-\-debug' to find out what this charset is. You +can override the charset used by setting environment variable CHARSET. +.PP +To process a string that starts with `\-', for example `\-foo', use `\-\-' +to signal the end of parameters, as in `idn \fB\-\-quiet\fR \fB\-a\fR \fB\-\-\fR \fB\-foo\fR'. +.PP +Mandatory arguments to long options are mandatory for short options too. +.TP +\fB\-h\fR, \fB\-\-help\fR +Print help and exit +.TP +\fB\-V\fR, \fB\-\-version\fR +Print version and exit +.TP +\fB\-s\fR, \fB\-\-stringprep\fR +Prepare string according to nameprep profile +.TP +\fB\-d\fR, \fB\-\-punycode\-decode\fR +Decode Punycode +.TP +\fB\-e\fR, \fB\-\-punycode\-encode\fR +Encode Punycode +.TP +\fB\-a\fR, \fB\-\-idna\-to\-ascii\fR +Convert to ACE according to IDNA (default mode) +.TP +\fB\-u\fR, \fB\-\-idna\-to\-unicode\fR +Convert from ACE according to IDNA +.TP +\fB\-\-allow\-unassigned\fR +Toggle IDNA AllowUnassigned flag (default off) +.TP +\fB\-\-usestd3asciirules\fR +Toggle IDNA UseSTD3ASCIIRules flag (default off) +.TP +\fB\-\-no\-tld\fR +Don't check string for TLD specific rules +Only for \fB\-\-idna\-to\-ascii\fR and \fB\-\-idna\-to\-unicode\fR +.TP +\fB\-n\fR, \fB\-\-nfkc\fR +Normalize string according to Unicode v3.2 NFKC +.TP +\fB\-p\fR, \fB\-\-profile\fR=\fISTRING\fR +Use specified stringprep profile instead +Valid stringprep profiles: `Nameprep', +`iSCSI', `Nodeprep', `Resourceprep', +`trace', `SASLprep' +.TP +\fB\-\-debug\fR +Print debugging information +.TP +\fB\-\-quiet\fR +Silent operation +.SH AUTHOR +Written by Simon Josefsson. +.SH "REPORTING BUGS" +Report bugs to . +GNU Libidn home page: . +General help using GNU software: . +.SH COPYRIGHT +Copyright \(co 2009 Simon Josefsson. +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +.SH "SEE ALSO" +The full documentation for +.B idn +is maintained as a Texinfo manual. If the +.B info +and +.B idn +programs are properly installed at your site, the command +.IP +.B info idn +.PP +should give you access to the complete manual. diff --git a/doc/java/Makefile b/doc/java/Makefile new file mode 100644 index 0000000..f2b63d8 --- /dev/null +++ b/doc/java/Makefile @@ -0,0 +1,695 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# doc/java/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = doc/java +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = +NEXT_AS_FIRST_DIRECTIVE_STRING_H = +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = +NEXT_ERRNO_H = +NEXT_ICONV_H = +NEXT_STDARG_H = +NEXT_STDINT_H = +NEXT_STRING_H = +NEXT_UNISTD_H = +NEXT_WCHAR_H = +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/java +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/java +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +#HTML = about.html deprecated.html package-list alphaindex.html \ +# index.html serialized-form.html \ +# resources/gjdochtml-clean-color1.css \ +# resources/gjdochtml-clean-layout.css resources/gjdoc.js \ +# resources/inherit.png gnu/inet/encoding/classes.html \ +# gnu/inet/encoding/CombiningClass.html \ +# gnu/inet/encoding/Composition.html \ +# gnu/inet/encoding/DecompositionKeys.html \ +# gnu/inet/encoding/DecompositionMappings.html \ +# gnu/inet/encoding/IDNAException.html \ +# gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ +# gnu/inet/encoding/package-summary.html \ +# gnu/inet/encoding/PunycodeException.html \ +# gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ +# gnu/inet/encoding/StringprepException.html \ +# gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html + +#EXTRA_DIST = $(HTML) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-local: +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +#all-local: $(HTML) + +#$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java +# cd ../../java && make javadoc + +#clean-local: +# rm -f $(HTML) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/java/Makefile.am b/doc/java/Makefile.am new file mode 100644 index 0000000..918be92 --- /dev/null +++ b/doc/java/Makefile.am @@ -0,0 +1,45 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +if JAVA +HTML = about.html deprecated.html package-list alphaindex.html \ + index.html serialized-form.html \ + resources/gjdochtml-clean-color1.css \ + resources/gjdochtml-clean-layout.css resources/gjdoc.js \ + resources/inherit.png gnu/inet/encoding/classes.html \ + gnu/inet/encoding/CombiningClass.html \ + gnu/inet/encoding/Composition.html \ + gnu/inet/encoding/DecompositionKeys.html \ + gnu/inet/encoding/DecompositionMappings.html \ + gnu/inet/encoding/IDNAException.html \ + gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ + gnu/inet/encoding/package-summary.html \ + gnu/inet/encoding/PunycodeException.html \ + gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ + gnu/inet/encoding/StringprepException.html \ + gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html +EXTRA_DIST = $(HTML) + +all-local: $(HTML) + +$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java + cd ../../java && make javadoc + +clean-local: + rm -f $(HTML) +endif diff --git a/doc/java/Makefile.in b/doc/java/Makefile.in new file mode 100644 index 0000000..ad3bd1b --- /dev/null +++ b/doc/java/Makefile.in @@ -0,0 +1,695 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/java +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +@JAVA_TRUE@HTML = about.html deprecated.html package-list alphaindex.html \ +@JAVA_TRUE@ index.html serialized-form.html \ +@JAVA_TRUE@ resources/gjdochtml-clean-color1.css \ +@JAVA_TRUE@ resources/gjdochtml-clean-layout.css resources/gjdoc.js \ +@JAVA_TRUE@ resources/inherit.png gnu/inet/encoding/classes.html \ +@JAVA_TRUE@ gnu/inet/encoding/CombiningClass.html \ +@JAVA_TRUE@ gnu/inet/encoding/Composition.html \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionKeys.html \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionMappings.html \ +@JAVA_TRUE@ gnu/inet/encoding/IDNAException.html \ +@JAVA_TRUE@ gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html \ +@JAVA_TRUE@ gnu/inet/encoding/package-summary.html \ +@JAVA_TRUE@ gnu/inet/encoding/PunycodeException.html \ +@JAVA_TRUE@ gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html \ +@JAVA_TRUE@ gnu/inet/encoding/StringprepException.html \ +@JAVA_TRUE@ gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html + +@JAVA_TRUE@EXTRA_DIST = $(HTML) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +@JAVA_FALSE@all-local: +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@JAVA_FALSE@clean-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +@JAVA_TRUE@all-local: $(HTML) + +@JAVA_TRUE@$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java +@JAVA_TRUE@ cd ../../java && make javadoc + +@JAVA_TRUE@clean-local: +@JAVA_TRUE@ rm -f $(HTML) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/lgpl-2.1.texi b/doc/lgpl-2.1.texi new file mode 100644 index 0000000..a2ba64b --- /dev/null +++ b/doc/lgpl-2.1.texi @@ -0,0 +1,561 @@ +@c The GNU Lesser General Public License. +@center Version 2.1, February 1999 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.] +@end display + +@subheading 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---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. + + 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 @dfn{Lesser} General Public License because it +does @emph{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. + +@subheading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +@enumerate 0 +@item +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. + +@item +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. + +@item +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: + +@enumerate a +@item +The modified work must itself be a software library. + +@item +You must cause the files modified to carry prominent notices +stating that you changed the files and the date of any change. + +@item +You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. + +@item +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.) +@end enumerate + +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. + +@item +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. + + 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. + +@item +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. + +@item +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. + +@item +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: + +@enumerate a +@item +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.) + +@item +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. + +@item +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. + +@item +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. + +@item +Verify that the user has already received a copy of these +materials or that you have already sent this user a copy. +@end enumerate + + 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. + +@item +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: + +@enumerate a +@item +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. + +@item +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. +@end enumerate + +@item +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. + +@item +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. + +@item +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. + +@item +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. + +@item +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. + +@item +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. + +@item +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. + +@iftex +@heading NO WARRANTY +@end iftex +@ifinfo +@center NO WARRANTY + +@end ifinfo + +@item +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. + +@item +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 enumerate + +@iftex +@heading END OF TERMS AND CONDITIONS +@end iftex +@ifinfo +@center END OF TERMS AND CONDITIONS + +@end ifinfo + +@page +@subheading 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. + +@smallexample +@var{one line to give the library's name and an idea of what it does.} +Copyright (C) @var{year} @var{name of author} + +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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +USA. +@end smallexample + +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: + +@smallexample +Yoyodyne, Inc., hereby disclaims all copyright interest in the library +`Frob' (a library for tweaking knobs) written by James Random Hacker. + +@var{signature of Ty Coon}, 1 April 1990 +Ty Coon, President of Vice +@end smallexample + +That's all there is to it! diff --git a/doc/libidn-components.eps b/doc/libidn-components.eps new file mode 100644 index 0000000..2f83eee --- /dev/null +++ b/doc/libidn-components.eps @@ -0,0 +1,331 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: components.fig +%%Creator: fig2dev Version 3.2 Patchlevel 5a +%%CreationDate: Mon Jun 8 12:40:03 2009 +%%BoundingBox: 0 0 382 350 +%Magnification: 1.0000 +%%EndComments +%%BeginProlog +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +/pageheader { +save +newpath 0 350 moveto 0 0 lineto 382 0 lineto 382 350 lineto closepath clip newpath +-47.4 405.1 translate +1 -1 scale +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06299 0.06299 sc +} bind def +/pagefooter { +$F2psEnd +restore +} bind def +%%EndProlog +pageheader +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw +n 3355 1845 m 3295 1845 3295 2235 60 arcto 4 {pop} repeat + 3295 2295 4609 2295 60 arcto 4 {pop} repeat + 4669 2295 4669 1905 60 arcto 4 {pop} repeat + 4669 1845 3355 1845 60 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 2663 1845 m 2618 1845 2618 2250 45 arcto 4 {pop} repeat + 2618 2295 3141 2295 45 arcto 4 {pop} repeat + 3186 2295 3186 1890 45 arcto 4 {pop} repeat + 3186 1845 2663 1845 45 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 1988 1845 m 1943 1845 1943 2250 45 arcto 4 {pop} repeat + 1943 2295 2467 2295 45 arcto 4 {pop} repeat + 2512 2295 2512 1890 45 arcto 4 {pop} repeat + 2512 1845 1988 1845 45 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 1313 1845 m 1268 1845 1268 2250 45 arcto 4 {pop} repeat + 1268 2295 1792 2295 45 arcto 4 {pop} repeat + 1837 2295 1837 1890 45 arcto 4 {pop} repeat + 1837 1845 1313 1845 45 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 870 4560 m 810 4560 810 5099 60 arcto 4 {pop} repeat + 810 5159 6735 5159 60 arcto 4 {pop} repeat + 6795 5159 6795 4620 60 arcto 4 {pop} repeat + 6795 4560 870 4560 60 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 4065 2837 m 4005 2837 4005 3448 60 arcto 4 {pop} repeat + 4005 3508 5790 3508 60 arcto 4 {pop} repeat + 5850 3508 5850 2897 60 arcto 4 {pop} repeat + 5850 2837 4065 2837 60 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 4110 900 m 4050 900 4050 1338 60 arcto 4 {pop} repeat + 4050 1398 5520 1398 60 arcto 4 {pop} repeat + 5580 1398 5580 960 60 arcto 4 {pop} repeat + 5580 900 4110 900 60 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +gs clippath +2864 1768 m 2864 1863 l 2895 1863 l 2895 1768 l 2895 1768 l 2880 1832 l 2864 1768 l cp +eoclip +n 2880 1398 m + 2880 1848 l gs col0 s gr gr + +% arrowhead +n 2864 1768 m 2880 1832 l 2895 1768 l 2864 1768 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3674 1768 m 3674 1863 l 3705 1863 l 3705 1768 l 3705 1768 l 3690 1832 l 3674 1768 l cp +eoclip +n 3690 1395 m + 3690 1848 l gs col0 s gr gr + +% arrowhead +n 3674 1768 m 3690 1832 l 3705 1768 l 3674 1768 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2864 4493 m 2864 4588 l 2895 4588 l 2895 4493 l 2895 4493 l 2880 4557 l 2864 4493 l cp +eoclip +n 2880 2298 m + 2880 4573 l gs col0 s gr gr + +% arrowhead +n 2864 4493 m 2880 4557 l 2895 4493 l 2864 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2144 4493 m 2144 4588 l 2175 4588 l 2175 4493 l 2175 4493 l 2160 4557 l 2144 4493 l cp +eoclip +n 2160 2298 m + 2160 4573 l gs col0 s gr gr + +% arrowhead +n 2144 4493 m 2160 4557 l 2175 4493 l 2144 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1514 4493 m 1514 4588 l 1545 4588 l 1545 4493 l 1545 4493 l 1530 4557 l 1514 4493 l cp +eoclip +n 1530 2298 m + 1530 4573 l gs col0 s gr gr + +% arrowhead +n 1514 4493 m 1530 4557 l 1545 4493 l 1514 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1019 4493 m 1019 4588 l 1050 4588 l 1050 4493 l 1050 4493 l 1035 4557 l 1019 4493 l cp +eoclip +n 1035 1398 m + 1035 4573 l gs col0 s gr gr + +% arrowhead +n 1019 4493 m 1035 4557 l 1050 4493 l 1019 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1514 1768 m 1514 1863 l 1545 1863 l 1545 1768 l 1545 1768 l 1530 1832 l 1514 1768 l cp +eoclip +n 1530 1398 m + 1530 1848 l gs col0 s gr gr + +% arrowhead +n 1514 1768 m 1530 1832 l 1545 1768 l 1514 1768 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2189 1768 m 2189 1863 l 2220 1863 l 2220 1768 l 2220 1768 l 2205 1832 l 2189 1768 l cp +eoclip +n 2205 1398 m + 2205 1848 l gs col0 s gr gr + +% arrowhead +n 2189 1768 m 2205 1832 l 2220 1768 l 2189 1768 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3539 4493 m 3539 4588 l 3570 4588 l 3570 4493 l 3570 4493 l 3555 4557 l 3539 4493 l cp +eoclip +n 3555 2298 m + 3555 4573 l gs col0 s gr gr + +% arrowhead +n 3539 4493 m 3555 4557 l 3570 4493 l 3539 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4889 4493 m 4889 4588 l 4920 4588 l 4920 4493 l 4920 4493 l 4905 4557 l 4889 4493 l cp +eoclip +n 4905 3506 m + 4905 4573 l gs col0 s gr gr + +% arrowhead +n 4889 4493 m 4905 4557 l 4920 4493 l 4889 4493 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [15 45] 45 sd +n 870 5820 m 810 5820 810 6359 60 arcto 4 {pop} repeat + 810 6419 6735 6419 60 arcto 4 {pop} repeat + 6795 6419 6795 5880 60 arcto 4 {pop} repeat + 6795 5820 870 5820 60 arcto 4 {pop} repeat + cp gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +gs clippath +3705 5669 m 3705 5820 l 3765 5820 l 3765 5669 l 3765 5669 l 3735 5789 l 3705 5669 l cp +3765 5311 m 3765 5160 l 3705 5160 l 3705 5311 l 3705 5311 l 3735 5191 l 3765 5311 l cp +eoclip +n 3735 5175 m + 3735 5805 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 3765 5311 m 3735 5191 l 3705 5311 l 3765 5311 l cp gs col7 1.00 shd ef gr col0 s +% arrowhead +n 3705 5669 m 3735 5789 l 3765 5669 l 3705 5669 l cp gs col7 1.00 shd ef gr col0 s +% Polyline +n 840 900 m 765 900 765 1323 75 arcto 4 {pop} repeat + 765 1398 3841 1398 75 arcto 4 {pop} repeat + 3916 1398 3916 975 75 arcto 4 {pop} repeat + 3916 900 840 900 75 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +gs clippath +4349 2755 m 4349 2850 l 4380 2850 l 4380 2755 l 4380 2755 l 4365 2819 l 4349 2755 l cp +eoclip +n 4365 2277 m + 4365 2835 l gs col0 s gr gr + +% arrowhead +n 4349 2755 m 4365 2819 l 4380 2755 l 4349 2755 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4844 2783 m 4844 2878 l 4875 2878 l 4875 2783 l 4875 2783 l 4860 2847 l 4844 2783 l cp +eoclip +n 4860 1395 m + 4860 2863 l gs col0 s gr gr + +% arrowhead +n 4844 2783 m 4860 2847 l 4875 2783 l 4844 2783 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 5715 900 m 5670 900 5670 1350 45 arcto 4 {pop} repeat + 5670 1395 6750 1395 45 arcto 4 {pop} repeat + 6795 1395 6795 945 45 arcto 4 {pop} repeat + 6795 900 5715 900 45 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +gs clippath +6149 4493 m 6149 4588 l 6180 4588 l 6180 4493 l 6180 4493 l 6165 4557 l 6149 4493 l cp +eoclip +n 6165 1398 m + 6165 4573 l gs col0 s gr gr + +% arrowhead +n 6149 4493 m 6165 4557 l 6180 4493 l 6149 4493 l cp gs 0.00 setgray ef gr col0 s +/Helvetica ff 165.00 scf sf +3600 2107 m +gs 1 -1 sc (Nameprep) col0 sh gr +/Helvetica ff 165.00 scf sf +2700 2130 m +gs 1 -1 sc (iSCSI) col0 sh gr +/Helvetica ff 165.00 scf sf +2025 2130 m +gs 1 -1 sc (SASL) col0 sh gr +/Helvetica ff 165.00 scf sf +1327 2130 m +gs 1 -1 sc (XMPP) col0 sh gr +/Helvetica-Bold ff 165.00 scf sf +3150 4905 m +gs 1 -1 sc (GNU IDN Library) col0 sh gr +/Helvetica ff 150.00 scf sf +4751 3227 m +gs 1 -1 sc (IDNA) col0 sh gr +/Helvetica ff 165.00 scf sf +4455 1215 m +gs 1 -1 sc (Punycode) col0 sh gr +/Helvetica ff 165.00 scf sf +3345 6157 m +gs 1 -1 sc (Application) col0 sh gr +/Helvetica ff 165.00 scf sf +1935 1215 m +gs 1 -1 sc (StringPrep) col0 sh gr +/Helvetica ff 165.00 scf sf +6075 1170 m +gs 1 -1 sc (TLD) col0 sh gr +% here ends figure; +pagefooter +showpage +%%Trailer +%EOF diff --git a/doc/libidn-components.pdf b/doc/libidn-components.pdf new file mode 100644 index 0000000000000000000000000000000000000000..21eb38378bfd25f8679396473ef3e80026b36a02 GIT binary patch literal 9168 zcmb_i2|SeD_fH{>7Almjv2XFr%8(_DEz8&wDPzoNY{Sf0Td0KW`&Ln;6cJey*_UJ~ z5{k%DiI7r}{GUPP?S23M-|zGPyz_j_Jonsl&OP^>bMNPS&n0Gz)s}_Jp&(*SlTjHE zG!zD<*gHX#l>q~ynhB8z5!KJn9=5zictT z=&NBAkeqvpqaN#OUM<*?Z6D+XJG8ij-zDmI)8MxJo&w8qTLW!@_|}SO(?$Fyov=df z=v`2CnJX*>s^TR&ulV@3H;R|jUX$i5A9uP0hV<`v@vx+#&1x#%J5!FUyt85Sy6MFI zv5` zPgsRU`^X2Iy-QkXgdX+;(?^dMJU;WsbR}k3Tw{wqWm3*8G~vpv$H93^#8ty3c3kGN zt;m&7X^(E*q^tJRgz)x9DeB&CVcOyJ2xg&(UUBF8Tpr%?p?E=N46d0>latC{)OEz? zq{^96?&+Qj(G?&gcV0pf@LUP@0i3=s?cryA->_WVD<3~4fAW&WPOSNa?wqa5)0cst zsbaoacwi{4MOyo)-saJw8s@F-A)Gw;SEN&kPp&FdPNDON#uuZvK56hdFAd+gtB~v% zw>Kkh?rwZY{0lqbhHz8ZMsd@i08VC)BRVgo9ZXZ}w}`Xh9~y1aNQ=`;*&9QxAUk+Q zN(aP3A4+dQDG75-&;!va%mw|92}5M7^r6`uuIz%{2ld&Q1>Jki`NEl#IqL-r$%P7@ zOS@!B@j>Flnmo*;6Ob7m^~>n{7ZF^C>6*Rwx&lzI`oudTj+7fppMA_B>*a%* zfwAAFA9N35sXC&bYqUj8Ks1#1^Yy7rs)guAyAO{n*_rJgG}bq8ZEjgQ`TQEOEdr5PEs@w|DIUq9H7`G8Q}AV#wCr z!t{Ly#v3l&L^e$})hp$`Q*)Z&y~h6X1M=AP1v8GG;_9WRS%n({J53|u z;bM+xM@j=PFSC*Mi67$lrk$7<$|uFV9~HqD5-ljU^X0*~<3fb^WR9|{HP>8wLpJ9L zxfSKr^=YymXO6sZ57{!=9K*e-DZ;=u(^J+i5Du^jKk7fBd4S0<#66E=*UX{8(`wX< zJx|dmb2KXRTZc^EC#(s94wLF$XsVQ)Mh010O~O8sPG9g5n)#E{Hm0LK z9`NUg_@ZIAsPsy!k@Fu5EUekiM(hb~HNB%JEnc4z_oC9ePB*^?R-46B(&9>*8snYM zO>(aHE^ILqF?BlT`{V{+WN=evPHcEcEUTueF0z`?!a@tBsC9Z9|z&rfI z?`&b#b=0bamW2tsS?n7}xLW>5*R8{&FOoG%H@Yo21mExFJbTa>%3-e(%Yms7%Y|yO zZ&o4Klmuqa+%+&?tELBcRs&Bkgt%aY3Capak? z!={(l&5jDYcJtPRK`awBYX|75W%mcWi+LIs>~uL|XkTlerx4~xnnO)rHJhLQ<^X;E ze1GeuA0c+P2H#r8Ce^}OcfUm4_5I#i&n4g_mCC`sSE$5ZUML75d`a|4V0?dacFlkb zOAXd`2;0A?`;>U;rFakAM4`ioFp-ycPcLn6+?gly-g!kyC~C=0tWk9PrSNOsXPf(+ zF1$VG*>Ohu0JViWnn%S=5Sm2BR%{{IUl{X|F_ZLMEZw9#oUYJS)zwtzyWF)j|9x9> z=OeB%n}OvA#s0?wuJ1T(vl;iYwl;v!v*f!t@$ALiA`UmLcKY=4^wg0Mj=8oUkB2m*^4Q$b;N6d9X869X7=Bg@00Q(?G_Kt63M8 zCheyd7as2OKlycRU~$56|Lvh~BYP*Mdb#g3h2heTqIOXHPk$dHOa)R*xAjQ+B~=_x z7gRgrW5`>x<+#{`)>;>3CpMK2$IpbREsY8GwC;GZ%yh-FqLJw4u!bMNHwNZlAPvSZ z0uDn!)@Z2Tc*NY-od_7?9f^P;(SeNDp!h&-U|=^AgMcE@Fk1-NNhP|`p-2W|fdHmN z8pV@JAksiAV@#zG%!qUw07N@bz?|qq2idiJ=sIR}5YIs2h*c473MdX=l?UMspb54? zjWj3&7MVgo(wbQemQ|PpY6IA3DNy*Ug5T4C061eqC|p%_&B&Emt${gH1qegV^!F52 zrunlM1HmwQ0aG{(0%tgN9V4S>jZXtlBQksh9KzuYtn_4bi7sA5I+=h67*s5gMxc`2 z=@cqdaYfro#27sg5I<6Bbj=fZDpVc~7~t35;RrZznCw75L9>C%%QFmAKp zec&Htl?Mq@R!3iLGdMvljI413!7tg(5j5OQ-Hk^6)i(3Ar!!KNF>5dgKT~DJoqzfd ztE+FQqw(8+vKkZ@hd-UTGBMK?eJfq-y@*8oqZc7R{q@TSD|1}e0)6s-KEL`IkzjBt ztVH0a-c@g}^!?&ojoLqGUGx9%2(9w`)U_tDq6dj#q|EOJ^!oq9*9;wNuKtyKzq4}1 ziAH!=;yN*;0W6>g7yyQV5nv3M0p@@efCmVG13&~E0W#nMxB_kf1#kzb03GlIe5F<< z2cFW1NGN<|_gR;L>o(EVbKLr49BASC#MS(H?nA&7L|%lVhdc z&BX&LI(L!xm^z=$eNSA)k2vJ;>3rmX^&+@zu_qE3sSH;gpA*QQc+ZdvGIlUJl`?iA6c5^8RI=s=guTRFdQR&mbM=sV~8 z_?}f;s?6US$ICig4AxB?;z>16MsKvo#XXXW7)meNUdTKnQJFlMStF>;vb`+x#)fHM zQU1;gk=0Fg?ZRCf@;JljiK(0?h{wFQg?}!&@kne`tK%>s`2`o)K8Da`cUxwg0MwZ!+2+Oi_J)DGy-Mcsv#4%0e^Mr03wyo5g zup5kXtd3(HG~D%S@?wk?`;S4t*HOxy(w?TL9`}Fp<|xpt{}F2Ak9{6AUFd)C?)Ihc zBZ|8ANu60z`?BZB=-GnX9QCmm2CHlRLKHS`nwx$l)qY>{PRA`%|HOLhYZC=GkM)wX z-oE#6jLC~T(I8^1a~$W?F{Qb`%xJ@ob3(!!TtdvH5n5LxQpg39amK8NMqf`aSH)st z6kb~{=xQlF+=i>+S(DH26TnpQ6ujGa`Mxj!R@Ogq-yDR9Kj&FQO(UP8alGD}VBI=3g}RN!fP zZI4IxD71JuzrP_kQb0?GBWJ+ILgK>aaH$Dy&iuqTH;KB`dupBhFCIsBN-WPNX{*== zTi-Li{%z|c$zC3_LzDAd``VN_k}?M)GptNv4pY8AJbA$Bz_dQrwI#i0%Ha9G%1}mO@_P=+f=!v z+JF4msdL*1?fgo#PyDxaBDmgEWgoEd{19f@OYuss6F|~{)W&a^UB@m)ojER6DvzbwjW6sJ+#((`61aITDr4iwfGgshS zLOyKrzcM4;W7SP)7Y@hOFv0y6hTBfd-Yyt=A;=%CrLSmNtJ@p)?e3n*;KhKvVXGFK zQWX_mu}tp{M_b^5&)3(pFI;@nzmASB1&f5BmBS&Jphy8V@hh`!&aBz6nPbUz_OTrU zHE!_TUEU@yQW9IA=ciSkt-|964+(h0MYl^uTx`rMF=lFcjBP3z8X9%2GTkoqWP3nd zF@5i|+D4Bu`9kYA`~A+H#=vt)*tmgE*@!23qf=vnV%M08WBd(cN+u`$rngUM`8$_A zX(b^gUw7thbgl9`Jj;C@d)v(SIJZSYn(EW~A7}I2pNj>EJk6xY9d#mV;qnG^Cs=fN z9;6*e-rW$I?wu>%UN1#1PVcxu_MUu-b7zgI+lw_68s+)ur}K5FMQBS=_tq{_#8fDY z2r3ElCN2L{?WM*&yS_VwBRtxJ48PK5J$#x7$+@qSKYQ;Grk$dQ{zw+NknFngN&T1d zJ16DuUoARk?pamh-c-X}1QEN^cB1Xa#8NBKHFuvaw{7`7_-D&*U8R{Pn1zxBZQ4nF zvmJgRX%h4IpU0_{bPOBJoFZu^wc6npanU)MR`%h_{iTjCEW zMtRIBquhWb+SQab-0+Ur5Z@T;KjWX4=kor|{?yB7D$|a*c2+A_&0Wo3EJRpq+&IIh zdcr8IVEe4{IPs}#l&+R~t>wl0`W~vGb4@L}MI)8oW0TO4=)+;ow}ncqkLkak(tg$H zZ%>$tpL~m28aFcF!(nZQ-msj`u<;F48&Cb48~yce}FL% z+OGp+sP$kB3+SvsF(beNgkbg{_@V+dcRYdk2k2TkBCZ2n>niF0J?MhNU<&I&SFFE* zjm7S!>Gx4zq-BT#GKjrX1Zj=E+joewTDtwFql3#b5PKylNuuY_GO1qUWL(!Ur&%8^ zY+&qj`BYkUt36Z26jkv(Hdz0ofb&k*&!6Z0#`=UVwVpY;-|PNm)$~#=0~uYO)TCzlIJ3}o;L}4(`yAPX?HCzsV4BvLE;4B9rQ{ zdc<_NVMm8-WImzOzO$^SHBtIan9eQM_mZtPnO_VikHl{1?;AiRjmJ;luns%xQiJe? z>=*Ry+8Bas#K}eLnbCJ*%f#y+mQ$A&9)0_f_CcT2D^CAZ6MePAjjAGY-z=InS|JQJd8Kyk z#A7(7VY9QDzIU?W)v_~($In>aSDVFsxy~N`$(y*bdl6b_G9Hpru7iH!aR02R^Se1^ zbDcNEDjKCTC6!f$cQU_(I}D0%_1^Jm>+lx-4~yB$UF@3II!lM5>LsLeK0goSNij*k zr!?xa(MrV4DZ=X`%0MaQD#GLGV(H#dIh)$)Bf-Wu&AAfp42!sJ<4Rc)?ilU$ie5x~ z+115&_>3&!{8P#~NA*NV6^l?eUq=NM;tx z77n%;y}k3z7D9sd_E6%c`paGKg|d$C3+qg0w*GYdANJ9o6)~`awQ`>QSrqzxX0tLh z_<3N1BT=wldxx@`54cA;6X{TUq9fT&MPj<*p#+rdpdxV?Z3r`T*Cd`G>-tfNW`0KI z1V3kjqJxB*DnwZg4_4xcvOaisS<=dl9}NngZB>LdO%1e#84Ny3KCbSrU~LNOR2Q z2~Z`~fuv*#mgQCzf-Mz^6Lh+}5&(F6d&_wv$kKe>=y)Gl zH<}1I-ije)t6ySnG`SU<{J#gncgfs#kVNe+0J zEQWwY%fjJAMOhg5ktM?92_y#$9Oghk{~XDEorQlH3hV&KLV_*;-;}_Tqk|`bNL7*0 zF*bneoS@L?tK~5$Mou0j0j$mZUoZ%a$Un~=4CC75l|ddQL$Gc|^2LG$PgMjA2F_4k z7KSm0Ba~1uB^XKuhERgRlz~4u!H|QZn&3Szc<=jPh_2&YCrY83gNdL@B0C}+h+a@j zB9+F708$PCHOA8kCtQeLL>DL;zdHPijx`ZwfDxv3UiugPhIcnK{J%Zt>dHuH2A>j^ zLhy72t2}zx|1w?v#RxkPewpd+Np)FS5e@`^=t5*zL<55i2kmqqD3K^sS3H={cz1WO z28E}CP6ohalu%U$JLzP)3sH4ty{WsK&E_4Z1aOt>H z+!)H`z@V)L!G)~4`m!Po{MPsnAzC4Us~U_J@N3Udg+TwM&%dYW_eKfASQQCx#y0pj zK+C9vuHo6A%UbfER<#sZ#AB=!(Cv)1B8gREEHs!r3Tmiz^(^fxV86J&9LrKsz8Uh6e%kPX2)a@q? zgTjCy_OCPq5)BsQ|Db`T!ar#+82s|0f?3jsBa>Xhns;=~IBouk!(&iU+H%RPaA$pnw_K54=oL zfC8oz3V7=SW{oKn&~qbEpo|Ox@1*pwP#a|pl(r&FTLYts#Av`2vFhpyNQ8#GHe6l{ hi$;Mh)&I<4%eW7s(eYIJN^mjq3TTL!m=;bO@;{k}U_Sr= literal 0 HcmV?d00001 diff --git a/doc/libidn-components.png b/doc/libidn-components.png new file mode 100644 index 0000000000000000000000000000000000000000..697d948708feeb864c92285943b73772a11b6a07 GIT binary patch literal 4779 zcmeHKdpMNq79V80-?qI?h1k36mRmb1m!YCiQ7X5|m?XK+xQ=2B5h^2F#UPY~G7V`k zxs7U$A-RMQV;amJ%w)_AF~cyO;q>gY&pGWs&UyCvXFvV1p7p)!``-6kYrVhqd)IsI zgp-|;{6={I0HEYxZ+j8|ka#GTE3%Se%QSKGuvp23+IvI*0E&*QBGKE0a}pc1BM-Sp zo`PS9jP?%q1=yW9rfcU9kBE%$2@eR3)ZJ%jY7*##TN2N}JJ=pLeKDU+?aA}$kd%It z1AqT1t3Y9LFSuxH(RZ=9v|L#F=?B3sho+W@@hfkms0!sfvE!9*`&SUK_cHKariQ>m zWI`NMVd)^@4==;ncUde{Gpwpr{7Q3L^a(l$5-3G%jxE2>TB@pX#NZuLqn9SLJ{AT* zX?&HL5J=aA_Htc4z?je!VeT{sdLi?-MY=%lLC?6KxC4sL@4P@>b-V0LOE=)Y=W|` z-&Th9xG==6Av)-MC&I#x_bBKg5*=L(VOvyN_P%jyw)OJM%T3%v~lcP zH}dcsh9!ODg??tuY|(LOn5ky#b!B1|;zmE#l2&~&l~uLr)3chf?v0Jv=X_IRmgdeR zz0iVvs`5ib>f<@{_;Vel$4FtW@dK>GxAC-#k=!QKKwW`mj44ImWbneyIsePPF^&4`P4-WT9 z$r9n(?t^So!UVlR4FdU>Z7~z3!~<~u*sr{~58B@I&Vt^%gFxuMWD>hh(S0ExrfC1fxp_{!1RZi9C}tK7q$aiQ^phTP(z!!QL3;gYc!>1xQ1fSC}A ze{BTt3vupinQkoWyJvEU8>ZoHhYyT*iw;CIy%Pj2uHcxrhi0mG@#rUUI6vH3d~Qa) zGOWH3dekL*tTB;o;>mF(p7W?3y3HG$W$SlAyYN*h7$Zt}2-h(hO;~u<^2{?|P*I~V zLQSYVmLAYoeH|y9PK<*aG?zkkypR@*R?te22d2H5m^Y$(8sW=T0?(*s@v3+&A`-s@ z3iUT7fh7z_UI8`ZC^V#dL-F6vR8qoA?n?t@XwOviXEghy1l4*R&WN^4VR#B?w+@2} zEO&jP5{w21U*xBo2*?5L^9Dqf{NYisrr$DZBCw>~;|XZ1S>U<_DxvQsrOZ*h5_vss zYiIV5YHx63fGMlmG@|AtuG0f|*22K_mP~AW?PO$YIFc75$!=d|<+vpQ=MkK+tcI zE<=9zq-&BY!%v+P65;IXAj6+J4$JSY2~*~Go{5->NhybV#PSV;?V85P(4Cz36q;pF znX%Cj;UEh{lBV^?5m@;#XlmVrdFx_nZ3nh#R*PZC_|=m9XBWa3(Du31+Ipj?0;8&R zI;wWu%o2{!+~`5T(9dgF-BLaI1`M6Ix10RlZ!+?aNAn>;TIiAt=bfxPJcQ3?K z=XUz3BSRZS)_vE4n5HA1;D!Dzf>B$%?JZckD)PiNzm#el?g5Z527$bK^F7S55UT*Z z6+JI!wa5PRQvFTniEJeoiW_P12x2=Hud{)HJF+^l}!B1$u+< z26cYPf^y!lGL9eszjL?Q0Nx?TFA^R=%&#Nk*uBgS&)}*lX+kt+n5&k@0%=euoE!G7~_4964rq+zJx&~HW zmGg)MK@{Qk_bTaR)OlW!M;d3F=P0=4n}>oNbEp`&?B4IaO`~N z!>@JuYkaA<>$#nU$O{5UoEqzumGLg`ohg3dJp}XX$BQbcV*N_q)WR zp`+R=)$-`PX?+>?Me;hGd9?TBcQS*${UtYv9EP@-B34}vflPuW4cF)>BSvwqM|Q2$ z-(E<_cr7PhWG-lbeli@UNb08V`}hkw$Qr)Pi<8%^UkY6lzG2Tt%VdcCQ?y!CJQ#T7u`TPPo56>gb zS2$64J*;b0-?;ddN5bkZU#i&BrefhOY*hD;TTU>ihiHIb==KvfIIoVbmJezp! z|9w-Emj8THdb>*kpsV=Y_<8f>nB
+

+GNU Libidn API Reference Manual

+
+
+idna +
+
+pr29 +
+
+punycode +
+
+tld +
+
+stringprep +
+
+idn-free +
+
+

+GNU Libidn is a fully documented implementation of the Stringprep, +Punycode and IDNA specifications. Libidn's purpose is to encode and +decode internationalized domain names. The native C, C# and Java +libraries are available under the GNU Lesser General Public License +version 2.1 or later. +

+

+The library contains a generic Stringprep implementation. Profiles +for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. +Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported. +A mechanism to define Top-Level Domain (TLD) specific validation +tables, and to compare strings against those tables, is included. +Default tables for some TLDs are also included. +

+

+The Stringprep API consists of two main functions, one for converting +data from the system's native representation into UTF-8, and one +function to perform the Stringprep processing. Adding a new +Stringprep profile for your application within the API is +straightforward. The Punycode API consists of one encoding function +and one decoding function. The IDNA API consists of the ToASCII and +ToUnicode functions, as well as an high-level interface for converting +entire domain names to and from the ACE encoded form. The TLD API +consists of one set of functions to extract the TLD name from a domain +string, one set of functions to locate the proper TLD table to use +based on the TLD name, and core functions to validate a string against +a TLD table, and some utility wrappers to perform all the steps in one +call. +

+

+The library is used by, e.g., GNU SASL and Shishi to process user +names and passwords. Libidn can be built into GNU Libc to enable a +new system-wide getaddrinfo flag for IDN processing. +

+

+Libidn is developed for the GNU/Linux system, but runs on over 20 Unix +platforms (including Solaris, IRIX, AIX, and Tru64) and Windows. The +library is written in C and (parts of) the API is also accessible from +C++, Emacs Lisp, Python and Java. A native Java and C# port is +included. +

+

+Also included is a command line tool, several self tests, code +examples, and more, all licensed under the GNU General Public License +version 3.0 or later. +

+

+ The internal layout of the library, and how your application + interact with the various parts of the library, are shown in + Figure 1, “Components of Libidn”. +

+
+

Figure 1. Components of Libidn

+
Components of Libidn
+
+
+
+ + + diff --git a/doc/reference/html/home.png b/doc/reference/html/home.png new file mode 100644 index 0000000000000000000000000000000000000000..17003611d9df2b066afc682cbde962f3a575002d GIT binary patch literal 654 zcmV;90&)F`P)~yY zO1cF+0vxb!W?!x?K+*#62Jq)nA4q`)5S6sgX4ao{=)(Mgq+YMr)7sjak|a^9)zS!j zlk{-n29mabXYF=7SYBQx&vO8xC}MYams+hxqtO7sImhPaCf@rq;I^3!#u*2aUP)55 zT2&N90xmEJ0s&fGT~(T<3d2xYmK9C>IP*x-M@ib*+0pFm>>uW37N2Wzaq-fCnIZE9 zpb8}0+uN+KuQM2oZVHfP8U6kQdo3?>Wo2dT)WeM9So8DqhLi#T0 z-i(>mfjhvbsYV`;4sgfJ-p>G-SqJ!fjR6BQYs1h*y9xaN0l{VB;o%`08yiy@)$8@~ z2PD1gcDuiy;j1tR0v#V8OH%W)25-YKyx(j#IXO9*YWf0mb8}QG6@b@;cHxh9{t7+@ o!Yd`f8L$sLH?yBt^q3C6015TtIu@BS5dZ)H07*qoM6N<$f*igdr~m)} literal 0 HcmV?d00001 diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html new file mode 100644 index 0000000..040d93b --- /dev/null +++ b/doc/reference/html/index.html @@ -0,0 +1,47 @@ + + + + +GNU Libidn API Reference Manual + + + + + + + + +
+
+
+
+
+ +
+ + + diff --git a/doc/reference/html/index.sgml b/doc/reference/html/index.sgml new file mode 100644 index 0000000..74f3de9 --- /dev/null +++ b/doc/reference/html/index.sgml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/html/left.png b/doc/reference/html/left.png new file mode 100644 index 0000000000000000000000000000000000000000..2d05b3d5b4aeec9384bbfe404bfc4ed0897051c4 GIT binary patch literal 459 zcmV;+0W|)JP)40xL?wO*>WZ(J#ML5j2<9jD6A%Q&kC}jOeEc;X{s;`zcnxLeZR6?6h#^ihmNF6NpGdilO$m<82oD9WQ|6nVv1`? z>KufRi{?QPXg;4;wroQu4?mN1Ydd@|kaQ|ZyWLK!)yi7Wb%=0{}lD)tfliHAUyWRQ+fD_;aV6j->y6!O_8bENggY&pGWs&UyCvXFvV1p7p)!``-6kYrVhqd)IsI zgp-|;{6={I0HEYxZ+j8|ka#GTE3%Se%QSKGuvp23+IvI*0E&*QBGKE0a}pc1BM-Sp zo`PS9jP?%q1=yW9rfcU9kBE%$2@eR3)ZJ%jY7*##TN2N}JJ=pLeKDU+?aA}$kd%It z1AqT1t3Y9LFSuxH(RZ=9v|L#F=?B3sho+W@@hfkms0!sfvE!9*`&SUK_cHKariQ>m zWI`NMVd)^@4==;ncUde{Gpwpr{7Q3L^a(l$5-3G%jxE2>TB@pX#NZuLqn9SLJ{AT* zX?&HL5J=aA_Htc4z?je!VeT{sdLi?-MY=%lLC?6KxC4sL@4P@>b-V0LOE=)Y=W|` z-&Th9xG==6Av)-MC&I#x_bBKg5*=L(VOvyN_P%jyw)OJM%T3%v~lcP zH}dcsh9!ODg??tuY|(LOn5ky#b!B1|;zmE#l2&~&l~uLr)3chf?v0Jv=X_IRmgdeR zz0iVvs`5ib>f<@{_;Vel$4FtW@dK>GxAC-#k=!QKKwW`mj44ImWbneyIsePPF^&4`P4-WT9 z$r9n(?t^So!UVlR4FdU>Z7~z3!~<~u*sr{~58B@I&Vt^%gFxuMWD>hh(S0ExrfC1fxp_{!1RZi9C}tK7q$aiQ^phTP(z!!QL3;gYc!>1xQ1fSC}A ze{BTt3vupinQkoWyJvEU8>ZoHhYyT*iw;CIy%Pj2uHcxrhi0mG@#rUUI6vH3d~Qa) zGOWH3dekL*tTB;o;>mF(p7W?3y3HG$W$SlAyYN*h7$Zt}2-h(hO;~u<^2{?|P*I~V zLQSYVmLAYoeH|y9PK<*aG?zkkypR@*R?te22d2H5m^Y$(8sW=T0?(*s@v3+&A`-s@ z3iUT7fh7z_UI8`ZC^V#dL-F6vR8qoA?n?t@XwOviXEghy1l4*R&WN^4VR#B?w+@2} zEO&jP5{w21U*xBo2*?5L^9Dqf{NYisrr$DZBCw>~;|XZ1S>U<_DxvQsrOZ*h5_vss zYiIV5YHx63fGMlmG@|AtuG0f|*22K_mP~AW?PO$YIFc75$!=d|<+vpQ=MkK+tcI zE<=9zq-&BY!%v+P65;IXAj6+J4$JSY2~*~Go{5->NhybV#PSV;?V85P(4Cz36q;pF znX%Cj;UEh{lBV^?5m@;#XlmVrdFx_nZ3nh#R*PZC_|=m9XBWa3(Du31+Ipj?0;8&R zI;wWu%o2{!+~`5T(9dgF-BLaI1`M6Ix10RlZ!+?aNAn>;TIiAt=bfxPJcQ3?K z=XUz3BSRZS)_vE4n5HA1;D!Dzf>B$%?JZckD)PiNzm#el?g5Z527$bK^F7S55UT*Z z6+JI!wa5PRQvFTniEJeoiW_P12x2=Hud{)HJF+^l}!B1$u+< z26cYPf^y!lGL9eszjL?Q0Nx?TFA^R=%&#Nk*uBgS&)}*lX+kt+n5&k@0%=euoE!G7~_4964rq+zJx&~HW zmGg)MK@{Qk_bTaR)OlW!M;d3F=P0=4n}>oNbEp`&?B4IaO`~N z!>@JuYkaA<>$#nU$O{5UoEqzumGLg`ohg3dJp}XX$BQbcV*N_q)WR zp`+R=)$-`PX?+>?Me;hGd9?TBcQS*${UtYv9EP@-B34}vflPuW4cF)>BSvwqM|Q2$ z-(E<_cr7PhWG-lbeli@UNb08V`}hkw$Qr)Pi<8%^UkY6lzG2Tt%VdcCQ?y!CJQ#T7u`TPPo56>gb zS2$64J*;b0-?;ddN5bkZU#i&BrefhOY*hD;TTU>ihiHIb==KvfIIoVbmJezp! z|9w-Emj8THdb>*kpsV=Y_<8f>nB + + + +idn-free + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

idn-free

+

idn-free

+
+
+

Synopsis

+
+#define             IDNAPI
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+ + + diff --git a/doc/reference/html/libidn-idna.html b/doc/reference/html/libidn-idna.html new file mode 100644 index 0000000..cf8bcf4 --- /dev/null +++ b/doc/reference/html/libidn-idna.html @@ -0,0 +1,762 @@ + + + + +idna + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

idna

+

idna

+
+
+

Synopsis

+
+#define             IDNAPI
+enum                Idna_rc;
+enum                Idna_flags;
+#define             IDNA_ACE_PREFIX
+const char *        idna_strerror                       (Idna_rc rc);
+int                 idna_to_ascii_4i                    (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char *out,
+                                                         int flags);
+int                 idna_to_unicode_44i                 (const uint32_t *in,
+                                                         size_t inlen,
+                                                         uint32_t *out,
+                                                         size_t *outlen,
+                                                         int flags);
+int                 idna_to_ascii_4z                    (const uint32_t *input,
+                                                         char **output,
+                                                         int flags);
+int                 idna_to_ascii_8z                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 idna_to_ascii_lz                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 idna_to_unicode_4z4z                (const uint32_t *input,
+                                                         uint32_t **output,
+                                                         int flags);
+int                 idna_to_unicode_8z4z                (const char *input,
+                                                         uint32_t **output,
+                                                         int flags);
+int                 idna_to_unicode_8z8z                (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 idna_to_unicode_8zlz                (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 idna_to_unicode_lzlz                (const char *input,
+                                                         char **output,
+                                                         int flags);
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+

enum Idna_rc

+
  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201,
+    IDNA_DLOPEN_ERROR = 202
+  } Idna_rc;
+
+

+Enumerated return codes of idna_to_ascii_4i(), +idna_to_unicode_44i() functions (and functions derived from those +functions). The value 0 is guaranteed to always correspond to +success.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

IDNA_SUCCESS

Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +

IDNA_STRINGPREP_ERROR

Error during string preparation. +

IDNA_PUNYCODE_ERROR

Error during punycode operation. +

IDNA_CONTAINS_NON_LDH

For IDNA_USE_STD3_ASCII_RULES, indicate that + the string contains non-LDH ASCII characters. +

IDNA_CONTAINS_LDH

+

IDNA_CONTAINS_MINUS

For IDNA_USE_STD3_ASCII_RULES, indicate that + the string contains a leading or trailing hyphen-minus (U+002D). +

IDNA_INVALID_LENGTH

The final output string is not within the + (inclusive) range 1 to 63 characters. +

IDNA_NO_ACE_PREFIX

The string does not contain the ACE prefix + (for ToUnicode). +

IDNA_ROUNDTRIP_VERIFY_ERROR

The ToASCII operation on output + string does not equal the input. +

IDNA_CONTAINS_ACE_PREFIX

The input contains the ACE prefix (for + ToASCII). +

IDNA_ICONV_ERROR

Could not convert string in locale encoding. +

IDNA_MALLOC_ERROR

Could not allocate buffer (this is typically a + fatal error). +

IDNA_DLOPEN_ERROR

Could not dlopen the libcidn DSO (only used + internally in libc). +
+
+
+
+

enum Idna_flags

+
  typedef enum
+  {
+    IDNA_ALLOW_UNASSIGNED = 0x0001,
+    IDNA_USE_STD3_ASCII_RULES = 0x0002
+  } Idna_flags;
+
+

+Flags to pass to idna_to_ascii_4i(), idna_to_unicode_44i() etc.

+

+

+
++ + + + + + + + + + +

IDNA_ALLOW_UNASSIGNED

Don't reject strings containing unassigned + Unicode code points. +

IDNA_USE_STD3_ASCII_RULES

Validate strings according to STD3 + rules (i.e., normal host name rules). +
+
+
+
+

IDNA_ACE_PREFIX

+
#  define IDNA_ACE_PREFIX "xn--"
+
+

+The IANA allocated prefix to use for IDNA. "xn--"

+

+

+
+
+
+

idna_strerror ()

+
const char *        idna_strerror                       (Idna_rc rc);
+

+Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. +

+

+IDNA_SUCCESS: Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +IDNA_STRINGPREP_ERROR: Error during string preparation. +IDNA_PUNYCODE_ERROR: Error during punycode operation. +IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that + the string contains non-LDH ASCII characters. +IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that + the string contains a leading or trailing hyphen-minus (U+002D). +IDNA_INVALID_LENGTH: The final output string is not within the + (inclusive) range 1 to 63 characters. +IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix + (for ToUnicode). +IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output + string does not equal the input. +IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for + ToASCII). +IDNA_ICONV_ERROR: Could not convert string in locale encoding. +IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a + fatal error). +IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used + internally in libc).

+

+

+
++ + + + + + + + + + +

rc :

an Idna_rc return code. +

Returns :

Returns a pointer to a statically allocated string +containing a description of the error with the return code rc. +
+
+
+
+

idna_to_ascii_4i ()

+
int                 idna_to_ascii_4i                    (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char *out,
+                                                         int flags);
+

+The ToASCII operation takes a sequence of Unicode code points that +make up one domain label and transforms it into a sequence of code +points in the ASCII range (0..7F). If ToASCII succeeds, the +original sequence and the resulting sequence are equivalent labels. +

+

+It is important to note that the ToASCII operation can fail. ToASCII +fails if any step of it fails. If any step of the ToASCII operation +fails on any label in a domain name, that domain name MUST NOT be used +as an internationalized domain name. The method for deadling with this +failure is application-specific. +

+

+The inputs to ToASCII are a sequence of code points, the AllowUnassigned +flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a +sequence of ASCII code points or a failure condition. +

+

+ToASCII never alters a sequence of code points that are all in the ASCII +range to begin with (although it could fail). Applying the ToASCII +operation multiple times has exactly the same effect as applying it just +once.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

in :

input array with unicode code points. +

inlen :

length of input array with unicode code points. +

out :

output zero terminated string that must have room for at + least 63 characters plus the terminating zero. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns 0 on success, or an Idna_rc error code. +
+
+
+
+

idna_to_unicode_44i ()

+
int                 idna_to_unicode_44i                 (const uint32_t *in,
+                                                         size_t inlen,
+                                                         uint32_t *out,
+                                                         size_t *outlen,
+                                                         int flags);
+

+The ToUnicode operation takes a sequence of Unicode code points +that make up one domain label and returns a sequence of Unicode +code points. If the input sequence is a label in ACE form, then the +result is an equivalent internationalized label that is not in ACE +form, otherwise the original sequence is returned unaltered. +

+

+ToUnicode never fails. If any step fails, then the original input +sequence is returned immediately in that step. +

+

+The Punycode decoder can never output more code points than it +inputs, but Nameprep can, and therefore ToUnicode can. Note that +the number of octets needed to represent a sequence of code points +depends on the particular character encoding used. +

+

+The inputs to ToUnicode are a sequence of code points, the +AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of +ToUnicode is always a sequence of Unicode code points.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

in :

input array with unicode code points. +

inlen :

length of input array with unicode code points. +

out :

output array with unicode code points. +

outlen :

on input, maximum size of output array with unicode code points, + on exit, actual size of output array with unicode code points. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns Idna_rc error condition, but it must only be + used for debugging purposes. The output buffer is always + guaranteed to contain the correct data according to the + specification (sans malloc induced errors). NB! This means that + you normally ignore the return code from this function, as + checking it means breaking the standard. +
+
+
+
+

idna_to_ascii_4z ()

+
int                 idna_to_ascii_4z                    (const uint32_t *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert UCS-4 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero terminated input Unicode string. +

output :

pointer to newly allocated output string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_ascii_8z ()

+
int                 idna_to_ascii_8z                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert UTF-8 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero terminated input UTF-8 string. +

output :

pointer to newly allocated output string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_ascii_lz ()

+
int                 idna_to_ascii_lz                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert domain name in the locale's encoding to ASCII string. The +domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero terminated input string encoded in the current locale's + character set. +

output :

pointer to newly allocated output string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_unicode_4z4z ()

+
int                 idna_to_unicode_4z4z                (const uint32_t *input,
+                                                         uint32_t **output,
+                                                         int flags);
+

+Convert possibly ACE encoded domain name in UCS-4 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero-terminated Unicode string. +

output :

pointer to newly allocated output Unicode string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_unicode_8z4z ()

+
int                 idna_to_unicode_8z4z                (const char *input,
+                                                         uint32_t **output,
+                                                         int flags);
+

+Convert possibly ACE encoded domain name in UTF-8 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero-terminated UTF-8 string. +

output :

pointer to newly allocated output Unicode string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_unicode_8z8z ()

+
int                 idna_to_unicode_8z8z                (const char *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert possibly ACE encoded domain name in UTF-8 format into a +UTF-8 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero-terminated UTF-8 string. +

output :

pointer to newly allocated output UTF-8 string. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_unicode_8zlz ()

+
int                 idna_to_unicode_8zlz                (const char *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert possibly ACE encoded domain name in UTF-8 format into a +string encoded in the current locale's character set. The domain +name may contain several labels, separated by dots. The output +buffer must be deallocated by the caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero-terminated UTF-8 string. +

output :

pointer to newly allocated output string encoded in the + current locale's character set. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+

idna_to_unicode_lzlz ()

+
int                 idna_to_unicode_lzlz                (const char *input,
+                                                         char **output,
+                                                         int flags);
+

+Convert possibly ACE encoded domain name in the locale's character +set into a string encoded in the current locale's character set. +The domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller.

+

+

+
++ + + + + + + + + + + + + + + + + + +

input :

zero-terminated string encoded in the current locale's + character set. +

output :

pointer to newly allocated output string encoded in the + current locale's character set. +

flags :

an Idna_flags value, e.g., IDNA_ALLOW_UNASSIGNED or + IDNA_USE_STD3_ASCII_RULES. +

Returns :

Returns IDNA_SUCCESS on success, or error code. +
+
+
+
+ + + diff --git a/doc/reference/html/libidn-pr29.html b/doc/reference/html/libidn-pr29.html new file mode 100644 index 0000000..dc653df --- /dev/null +++ b/doc/reference/html/libidn-pr29.html @@ -0,0 +1,237 @@ + + + + +pr29 + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

pr29

+

pr29

+
+
+

Synopsis

+
+#define             IDNAPI
+enum                Pr29_rc;
+const char *        pr29_strerror                       (Pr29_rc rc);
+int                 pr29_4                              (const uint32_t *in,
+                                                         size_t len);
+int                 pr29_4z                             (const uint32_t *in);
+int                 pr29_8z                             (const char *in);
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+

enum Pr29_rc

+
  typedef enum
+  {
+    PR29_SUCCESS = 0,
+    PR29_PROBLEM = 1,		/* String is a problem sequence. */
+    PR29_STRINGPREP_ERROR = 2	/* Charset conversion failed (p29_8*). */
+  } Pr29_rc;
+
+

+Enumerated return codes for pr29_4(), pr29_4z(), pr29_8z(). The +value 0 is guaranteed to always correspond to success.

+

+

+
++ + + + + + + + + + + + + + +

PR29_SUCCESS

Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +

PR29_PROBLEM

A problem sequence was encountered. +

PR29_STRINGPREP_ERROR

The character set conversion failed (only + for pr29_8() and pr29_8z()). +
+
+
+
+

pr29_strerror ()

+
const char *        pr29_strerror                       (Pr29_rc rc);
+

+Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. +

+

+PR29_SUCCESS: Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +PR29_PROBLEM: A problem sequence was encountered. +PR29_STRINGPREP_ERROR: The character set conversion failed (only + for pr29_8() and pr29_8z()).

+

+

+
++ + + + + + + + + + +

rc :

an Pr29_rc return code. +

Returns :

Returns a pointer to a statically allocated string + containing a description of the error with the return code rc. +
+
+
+
+

pr29_4 ()

+
int                 pr29_4                              (const uint32_t *in,
+                                                         size_t len);
+

+Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications.

+

+

+
++ + + + + + + + + + + + + + +

in :

input array with unicode code points. +

len :

length of input array with unicode code points. +

Returns :

Returns the Pr29_rc value PR29_SUCCESS on success, + and PR29_PROBLEM if the input sequence is a "problem sequence" + (i.e., may be normalized into different strings by different + implementations). +
+
+
+
+

pr29_4z ()

+
int                 pr29_4z                             (const uint32_t *in);
+

+Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications.

+

+

+
++ + + + + + + + + + +

in :

zero terminated array of Unicode code points. +

Returns :

Returns the Pr29_rc value PR29_SUCCESS on success, + and PR29_PROBLEM if the input sequence is a "problem sequence" + (i.e., may be normalized into different strings by different + implementations). +
+
+
+
+

pr29_8z ()

+
int                 pr29_8z                             (const char *in);
+

+Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications.

+

+

+
++ + + + + + + + + + +

in :

zero terminated input UTF-8 string. +

Returns :

Returns the Pr29_rc value PR29_SUCCESS on success, + and PR29_PROBLEM if the input sequence is a "problem sequence" + (i.e., may be normalized into different strings by different + implementations), or PR29_STRINGPREP_ERROR if there was a + problem converting the string from UTF-8 to UCS-4. +
+
+
+
+ + + diff --git a/doc/reference/html/libidn-punycode.html b/doc/reference/html/libidn-punycode.html new file mode 100644 index 0000000..ae827a1 --- /dev/null +++ b/doc/reference/html/libidn-punycode.html @@ -0,0 +1,310 @@ + + + + +punycode + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

punycode

+

punycode

+
+
+

Synopsis

+
+#define             IDNAPI
+enum                Punycode_status;
+const char *        punycode_strerror                   (Punycode_status rc);
+typedef             punycode_uint;
+int                 punycode_encode                     (size_t input_length,
+                                                         const punycode_uint input[],
+                                                         unsigned char case_flags[],
+                                                         size_t *output_length,
+                                                         char output[]);
+int                 punycode_decode                     (size_t input_length,
+                                                         const char input[],
+                                                         size_t *output_length,
+                                                         punycode_uint output[],
+                                                         unsigned char case_flags[]);
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+

enum Punycode_status

+
  typedef enum
+  {
+    PUNYCODE_SUCCESS = punycode_success,
+    PUNYCODE_BAD_INPUT = punycode_bad_input,
+    PUNYCODE_BIG_OUTPUT = punycode_big_output,
+    PUNYCODE_OVERFLOW = punycode_overflow
+  } Punycode_status;
+
+

+Enumerated return codes of punycode_encode() and punycode_decode(). +The value 0 is guaranteed to always correspond to success.

+

+

+
++ + + + + + + + + + + + + + + + + + +

PUNYCODE_SUCCESS

Successful operation. This value is guaranteed + to always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +

PUNYCODE_BAD_INPUT

Input is invalid. +

PUNYCODE_BIG_OUTPUT

Output would exceed the space provided. +

PUNYCODE_OVERFLOW

Input needs wider integers to process. +
+
+
+
+

punycode_strerror ()

+
const char *        punycode_strerror                   (Punycode_status rc);
+

+Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. +

+

+PUNYCODE_SUCCESS: Successful operation. This value is guaranteed + to always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +PUNYCODE_BAD_INPUT: Input is invalid. +PUNYCODE_BIG_OUTPUT: Output would exceed the space provided. +PUNYCODE_OVERFLOW: Input needs wider integers to process.

+

+

+
++ + + + + + + + + + +

rc :

an Punycode_status return code. +

Returns :

Returns a pointer to a statically allocated string +containing a description of the error with the return code rc. +
+
+
+
+

punycode_uint

+
  typedef uint32_t punycode_uint;
+
+

+Unicode code point data type, this is always a 32 bit unsigned +integer.

+

+

+
+
+
+

punycode_encode ()

+
int                 punycode_encode                     (size_t input_length,
+                                                         const punycode_uint input[],
+                                                         unsigned char case_flags[],
+                                                         size_t *output_length,
+                                                         char output[]);
+

+Converts a sequence of code points (presumed to be Unicode code +points) to Punycode.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

input_length :

The number of code points in the input array and + the number of flags in the case_flags array. +

input :

An array of code points. They are presumed to be Unicode + code points, but that is not strictly REQUIRED. The array + contains code points, not code units. UTF-16 uses code units + D800 through DFFF to refer to code points 10000..10FFFF. The + code points D800..DFFF do not occur in any valid Unicode string. + The code points that can occur in Unicode strings (0..D7FF and + E000..10FFFF) are also called Unicode scalar values. +

case_flags :

A NULL pointer or an array of boolean values parallel + to the input array. Nonzero (true, flagged) suggests that the + corresponding Unicode character be forced to uppercase after + being decoded (if possible), and zero (false, unflagged) suggests + that it be forced to lowercase (if possible). ASCII code points + (0..7F) are encoded literally, except that ASCII letters are + forced to uppercase or lowercase according to the corresponding + case flags. If case_flags is a NULL pointer then ASCII letters + are left as they are, and other code points are treated as + unflagged. +

output_length :

The caller passes in the maximum number of ASCII + code points that it can receive. On successful return it will + contain the number of ASCII code points actually output. +

output :

An array of ASCII code points. It is *not* + null-terminated; it will contain zeros if and only if the input + contains zeros. (Of course the caller can leave room for a + terminator and add one if needed.) +

Returns :

The return value can be any of the Punycode_status + values defined above except PUNYCODE_BAD_INPUT. If not + PUNYCODE_SUCCESS, then output_size and output might contain + garbage. +
+
+
+
+

punycode_decode ()

+
int                 punycode_decode                     (size_t input_length,
+                                                         const char input[],
+                                                         size_t *output_length,
+                                                         punycode_uint output[],
+                                                         unsigned char case_flags[]);
+

+Converts Punycode to a sequence of code points (presumed to be +Unicode code points).

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

input_length :

The number of ASCII code points in the input array. +

input :

An array of ASCII code points (0..7F). +

output_length :

The caller passes in the maximum number of code + points that it can receive into the output array (which is also + the maximum number of flags that it can receive into the + case_flags array, if case_flags is not a NULL pointer). On + successful return it will contain the number of code points + actually output (which is also the number of flags actually + output, if case_flags is not a null pointer). The decoder will + never need to output more code points than the number of ASCII + code points in the input, because of the way the encoding is + defined. The number of code points output cannot exceed the + maximum possible value of a punycode_uint, even if the supplied + output_length is greater than that. +

output :

An array of code points like the input argument of + punycode_encode() (see above). +

case_flags :

A NULL pointer (if the flags are not needed by the + caller) or an array of boolean values parallel to the output + array. Nonzero (true, flagged) suggests that the corresponding + Unicode character be forced to uppercase by the caller (if + possible), and zero (false, unflagged) suggests that it be forced + to lowercase (if possible). ASCII code points (0..7F) are output + already in the proper case, but their flags will be set + appropriately so that applying the flags would be harmless. +

Returns :

The return value can be any of the Punycode_status + values defined above. If not PUNYCODE_SUCCESS, then + output_length, output, and case_flags might contain garbage. + +
+
+
+
+ + + diff --git a/doc/reference/html/libidn-stringprep.html b/doc/reference/html/libidn-stringprep.html new file mode 100644 index 0000000..9c338d1 --- /dev/null +++ b/doc/reference/html/libidn-stringprep.html @@ -0,0 +1,1191 @@ + + + + +stringprep + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

stringprep

+

stringprep

+
+
+

Synopsis

+
+#define             IDNAPI
+#define             STRINGPREP_VERSION
+enum                Stringprep_rc;
+enum                Stringprep_profile_flags;
+enum                Stringprep_profile_steps;
+#define             STRINGPREP_MAX_MAP_CHARS
+typedef             Stringprep_table_element;
+typedef             Stringprep_profile;
+typedef             Stringprep_profiles;
+#define             stringprep_nameprep                 (in, maxlen)
+#define             stringprep_nameprep_no_unassigned   (in, maxlen)
+#define             stringprep_plain                    (in, maxlen)
+#define             stringprep_kerberos5                (in, maxlen)
+#define             stringprep_xmpp_nodeprep            (in, maxlen)
+#define             stringprep_xmpp_resourceprep        (in, maxlen)
+#define             stringprep_iscsi                    (in, maxlen)
+int                 stringprep_4i                       (uint32_t *ucs4,
+                                                         size_t *len,
+                                                         size_t maxucs4len,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+int                 stringprep_4zi                      (uint32_t *ucs4,
+                                                         size_t maxucs4len,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+int                 stringprep                          (char *in,
+                                                         size_t maxlen,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+int                 stringprep_profile                  (const char *in,
+                                                         char **out,
+                                                         const char *profile,
+                                                         Stringprep_profile_flags flags);
+const char *        stringprep_strerror                 (Stringprep_rc rc);
+const char *        stringprep_check_version            (const char *req_version);
+int                 stringprep_unichar_to_utf8          (uint32_t c,
+                                                         char *outbuf);
+uint32_t            stringprep_utf8_to_unichar          (const char *p);
+uint32_t *          stringprep_utf8_to_ucs4             (const char *str,
+                                                         ssize_t len,
+                                                         size_t *items_written);
+char *              stringprep_ucs4_to_utf8             (const uint32_t *str,
+                                                         ssize_t len,
+                                                         size_t *items_read,
+                                                         size_t *items_written);
+char *              stringprep_utf8_nfkc_normalize      (const char *str,
+                                                         ssize_t len);
+uint32_t *          stringprep_ucs4_nfkc_normalize      (uint32_t *str,
+                                                         ssize_t len);
+const char *        stringprep_locale_charset           (void);
+char *              stringprep_convert                  (const char *str,
+                                                         const char *to_codeset,
+                                                         const char *from_codeset);
+char *              stringprep_locale_to_utf8           (const char *str);
+char *              stringprep_utf8_to_locale           (const char *str);
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+

STRINGPREP_VERSION

+
# define STRINGPREP_VERSION "1.15"
+
+

+String defined via CPP denoting the header file version number. +Used together with stringprep_check_version() to verify header file +and run-time library consistency.

+

+

+
+
+
+

enum Stringprep_rc

+
  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+
+

+Enumerated return codes of stringprep(), stringprep_profile() +functions (and macros using those functions). The value 0 is +guaranteed to always correspond to success.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

STRINGPREP_OK

Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +

STRINGPREP_CONTAINS_UNASSIGNED

String contain unassigned Unicode + code points, which is forbidden by the profile. +

STRINGPREP_CONTAINS_PROHIBITED

String contain code points + prohibited by the profile. +

STRINGPREP_BIDI_BOTH_L_AND_RAL

String contain code points with + conflicting bidirection category. +

STRINGPREP_BIDI_LEADTRAIL_NOT_RAL

Leading and trailing character + in string not of proper bidirectional category. +

STRINGPREP_BIDI_CONTAINS_PROHIBITED

Contains prohibited code + points detected by bidirectional code. +

STRINGPREP_TOO_SMALL_BUFFER

Buffer handed to function was too + small. This usually indicate a problem in the calling + application. +

STRINGPREP_PROFILE_ERROR

The stringprep profile was inconsistent. + This usually indicate an internal error in the library. +

STRINGPREP_FLAG_ERROR

The supplied flag conflicted with profile. + This usually indicate a problem in the calling application. +

STRINGPREP_UNKNOWN_PROFILE

The supplied profile name was not + known to the library. +

STRINGPREP_NFKC_FAILED

The Unicode NFKC operation failed. This + usually indicate an internal error in the library. +

STRINGPREP_MALLOC_ERROR

The malloc() was out of memory. This is + usually a fatal error. +
+
+
+
+

enum Stringprep_profile_flags

+
  typedef enum
+  {
+    STRINGPREP_NO_NFKC = 1,
+    STRINGPREP_NO_BIDI = 2,
+    STRINGPREP_NO_UNASSIGNED = 4
+  } Stringprep_profile_flags;
+
+

+Stringprep profile flags.

+

+

+
++ + + + + + + + + + + + + + +

STRINGPREP_NO_NFKC

Disable the NFKC normalization, as well as + selecting the non-NFKC case folding tables. Usually the profile + specifies BIDI and NFKC settings, and applications should not + override it unless in special situations. +

STRINGPREP_NO_BIDI

Disable the BIDI step. Usually the profile + specifies BIDI and NFKC settings, and applications should not + override it unless in special situations. +

STRINGPREP_NO_UNASSIGNED

Make the library return with an error if + string contains unassigned characters according to profile. +
+
+
+
+

enum Stringprep_profile_steps

+
  typedef enum
+  {
+    STRINGPREP_NFKC = 1,
+    STRINGPREP_BIDI = 2,
+    STRINGPREP_MAP_TABLE = 3,
+    STRINGPREP_UNASSIGNED_TABLE = 4,
+    STRINGPREP_PROHIBIT_TABLE = 5,
+    STRINGPREP_BIDI_PROHIBIT_TABLE = 6,
+    STRINGPREP_BIDI_RAL_TABLE = 7,
+    STRINGPREP_BIDI_L_TABLE = 8
+  } Stringprep_profile_steps;
+
+

+Various steps in the stringprep algorithm. You really want to +study the source code to understand this one. Only useful if you +want to add another profile.

+

+

+
+
+
+

STRINGPREP_MAX_MAP_CHARS

+
# define STRINGPREP_MAX_MAP_CHARS 4
+
+

+Maximum number of code points that can replace a single code point, +during stringprep mapping.

+

+

+
+
+
+

Stringprep_table_element

+
  typedef struct Stringprep_table_element Stringprep_table_element;
+
+

+

+
+
+
+

Stringprep_profile

+
  typedef struct Stringprep_table Stringprep_profile;
+
+

+

+
+
+
+

Stringprep_profiles

+
  typedef struct Stringprep_profiles Stringprep_profiles;
+
+

+

+
+
+
+

stringprep_nameprep()

+
#define             stringprep_nameprep(in, maxlen)
+

+Prepare the input UTF-8 string according to the nameprep profile. +The AllowUnassigned flag is true, use +stringprep_nameprep_no_unassigned() if you want a false +AllowUnassigned. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_nameprep_no_unassigned()

+
#define             stringprep_nameprep_no_unassigned(in, maxlen)
+

+Prepare the input UTF-8 string according to the nameprep profile. +The AllowUnassigned flag is false, use stringprep_nameprep() for +true AllowUnassigned. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_plain()

+
#define             stringprep_plain(in, maxlen)
+

+Prepare the input UTF-8 string according to the draft SASL +ANONYMOUS profile. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_kerberos5()

+
#define             stringprep_kerberos5(in, maxlen)
+

+

+
++ + + + + + + + + + +

in :

+

maxlen :

+
+
+
+
+

stringprep_xmpp_nodeprep()

+
#define             stringprep_xmpp_nodeprep(in, maxlen)
+

+Prepare the input UTF-8 string according to the draft XMPP node +identifier profile. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_xmpp_resourceprep()

+
#define             stringprep_xmpp_resourceprep(in, maxlen)
+

+Prepare the input UTF-8 string according to the draft XMPP resource +identifier profile. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_iscsi()

+
#define             stringprep_iscsi(in, maxlen)
+

+Prepare the input UTF-8 string according to the draft iSCSI +stringprep profile. Returns 0 iff successful, or an error code.

+

+

+
++ + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +
+
+
+
+

stringprep_4i ()

+
int                 stringprep_4i                       (uint32_t *ucs4,
+                                                         size_t *len,
+                                                         size_t maxucs4len,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+

+Prepare the input UCS-4 string according to the stringprep profile, +and write back the result to the input string. +

+

+The input is not required to be zero terminated (ucs4[len] = 0). +The output will not be zero terminated unless ucs4[len] = 0. +Instead, see stringprep_4zi() if your input is zero terminated or +if you want the output to be. +

+

+Since the stringprep operation can expand the string, maxucs4len +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. +

+

+The flags are one of Stringprep_profile_flags values, or 0. +

+

+The profile contain the Stringprep_profile instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

ucs4 :

input/output array with string to prepare. +

len :

on input, length of input array with Unicode code points, + on exit, length of output array with Unicode code points. +

maxucs4len :

maximum length of input/output array. +

flags :

a Stringprep_profile_flags value, or 0. +

profile :

pointer to Stringprep_profile to use. +

Returns :

Returns STRINGPREP_OK iff successful, or an + Stringprep_rc error code. +
+
+
+
+

stringprep_4zi ()

+
int                 stringprep_4zi                      (uint32_t *ucs4,
+                                                         size_t maxucs4len,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+

+Prepare the input zero terminated UCS-4 string according to the +stringprep profile, and write back the result to the input string. +

+

+Since the stringprep operation can expand the string, maxucs4len +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. +

+

+The flags are one of Stringprep_profile_flags values, or 0. +

+

+The profile contain the Stringprep_profile instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

ucs4 :

input/output array with zero terminated string to prepare. +

maxucs4len :

maximum length of input/output array. +

flags :

a Stringprep_profile_flags value, or 0. +

profile :

pointer to Stringprep_profile to use. +

Returns :

Returns STRINGPREP_OK iff successful, or an + Stringprep_rc error code. +
+
+
+
+

stringprep ()

+
int                 stringprep                          (char *in,
+                                                         size_t maxlen,
+                                                         Stringprep_profile_flags flags,
+                                                         const Stringprep_profile *profile);
+

+Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and write back the result to the input string. +

+

+Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +stringprep_locale_to_utf8(). +

+

+Since the stringprep operation can expand the string, maxlen +indicate how large the buffer holding the string is. This function +will not read or write to characters outside that size. +

+

+The flags are one of Stringprep_profile_flags values, or 0. +

+

+The profile contain the Stringprep_profile instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

in :

input/ouput array with string to prepare. +

maxlen :

maximum length of input/output array. +

flags :

a Stringprep_profile_flags value, or 0. +

profile :

pointer to Stringprep_profile to use. +

Returns :

Returns STRINGPREP_OK iff successful, or an error code. +
+
+
+
+

stringprep_profile ()

+
int                 stringprep_profile                  (const char *in,
+                                                         char **out,
+                                                         const char *profile,
+                                                         Stringprep_profile_flags flags);
+

+Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and return the result in a newly allocated +variable. +

+

+Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +stringprep_locale_to_utf8(). +

+

+The output out variable must be deallocated by the caller. +

+

+The flags are one of Stringprep_profile_flags values, or 0. +

+

+The profile specifies the name of the stringprep profile to use. +It must be one of the internally supported stringprep profiles.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

in :

input array with UTF-8 string to prepare. +

out :

output variable with pointer to newly allocate string. +

profile :

name of stringprep profile to use. +

flags :

a Stringprep_profile_flags value, or 0. +

Returns :

Returns STRINGPREP_OK iff successful, or an error code. +
+
+
+
+

stringprep_strerror ()

+
const char *        stringprep_strerror                 (Stringprep_rc rc);
+

+Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. +

+

+STRINGPREP_OK: Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode + code points, which is forbidden by the profile. +STRINGPREP_CONTAINS_PROHIBITED: String contain code points + prohibited by the profile. +STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with + conflicting bidirection category. +STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character + in string not of proper bidirectional category. +STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code + points detected by bidirectional code. +STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too + small. This usually indicate a problem in the calling + application. +STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent. + This usually indicate an internal error in the library. +STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile. + This usually indicate a problem in the calling application. +STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not + known to the library. +STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed. This + usually indicate an internal error in the library. +STRINGPREP_MALLOC_ERROR: The malloc() was out of memory. This is + usually a fatal error.

+

+

+
++ + + + + + + + + + +

rc :

a Stringprep_rc return code. +

Returns :

Returns a pointer to a statically allocated string + containing a description of the error with the return code rc. +
+
+
+
+

stringprep_check_version ()

+
const char *        stringprep_check_version            (const char *req_version);
+

+Check that the version of the library is at minimum the requested one +and return the version string; return NULL if the condition is not +satisfied. If a NULL is passed to this function, no check is done, +but the version string is simply returned. +

+

+See STRINGPREP_VERSION for a suitable req_version string.

+

+

+
++ + + + + + + + + + +

req_version :

Required version number, or NULL. +

Returns :

Version string of run-time library, or NULL if the +run-time library does not meet the required version number. +
+
+
+
+

stringprep_unichar_to_utf8 ()

+
int                 stringprep_unichar_to_utf8          (uint32_t c,
+                                                         char *outbuf);
+

+Converts a single character to UTF-8.

+

+

+
++ + + + + + + + + + + + + + +

c :

a ISO10646 character code +

outbuf :

output buffer, must have at least 6 bytes of space. + If NULL, the length will be computed and returned + and nothing will be written to outbuf. +

Returns :

number of bytes written. +
+
+
+
+

stringprep_utf8_to_unichar ()

+
uint32_t            stringprep_utf8_to_unichar          (const char *p);
+

+Converts a sequence of bytes encoded as UTF-8 to a Unicode character. +If p does not point to a valid UTF-8 encoded character, results are +undefined.

+

+

+
++ + + + + + + + + + +

p :

a pointer to Unicode character encoded as UTF-8 +

Returns :

the resulting character. +
+
+
+
+

stringprep_utf8_to_ucs4 ()

+
uint32_t *          stringprep_utf8_to_ucs4             (const char *str,
+                                                         ssize_t len,
+                                                         size_t *items_written);
+

+Convert a string from UTF-8 to a 32-bit fixed width +representation as UCS-4, assuming valid UTF-8 input. +This function does no error checking on the input.

+

+

+
++ + + + + + + + + + + + + + + + + + +

str :

a UTF-8 encoded string +

len :

the maximum length of str to use. If len < 0, then + the string is nul-terminated. +

items_written :

location to store the number of characters in the + result, or NULL. +

Returns :

a pointer to a newly allocated UCS-4 string. + This value must be deallocated by the caller. +
+
+
+
+

stringprep_ucs4_to_utf8 ()

+
char *              stringprep_ucs4_to_utf8             (const uint32_t *str,
+                                                         ssize_t len,
+                                                         size_t *items_read,
+                                                         size_t *items_written);
+

+Convert a string from a 32-bit fixed width representation as UCS-4. +to UTF-8. The result will be terminated with a 0 byte.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

str :

a UCS-4 encoded string +

len :

the maximum length of str to use. If len < 0, then + the string is terminated with a 0 character. +

items_read :

location to store number of characters read read, or NULL. +

items_written :

location to store number of bytes written or NULL. + The value here stored does not include the trailing 0 + byte. +

Returns :

a pointer to a newly allocated UTF-8 string. + This value must be deallocated by the caller. + If an error occurs, NULL will be returned and error + set. +
+
+
+
+

stringprep_utf8_nfkc_normalize ()

+
char *              stringprep_utf8_nfkc_normalize      (const char *str,
+                                                         ssize_t len);
+

+Converts a string into canonical form, standardizing +such issues as whether a character with an accent +is represented as a base character and combining +accent or as a single precomposed character. +

+

+The normalization mode is NFKC (ALL COMPOSE). It standardizes +differences that do not affect the text content, such as the +above-mentioned accent representation. It standardizes the +"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to +the standard forms (in this case DIGIT THREE). Formatting +information may be lost but for most text operations such +characters should be considered the same. It returns a result with +composed forms rather than a maximally decomposed form.

+

+

+
++ + + + + + + + + + + + + + +

str :

a UTF-8 encoded string. +

len :

length of str, in bytes, or -1 if str is nul-terminated. +

Returns :

a newly allocated string, that is the + NFKC normalized form of str. +
+
+
+
+

stringprep_ucs4_nfkc_normalize ()

+
uint32_t *          stringprep_ucs4_nfkc_normalize      (uint32_t *str,
+                                                         ssize_t len);
+

+Converts UCS4 string into UTF-8 and runs +stringprep_utf8_nfkc_normalize().

+

+

+
++ + + + + + + + + + + + + + +

str :

a Unicode string. +

len :

length of str array, or -1 if str is nul-terminated. +

Returns :

a newly allocated Unicode string, that is the NFKC + normalized form of str. +
+
+
+
+

stringprep_locale_charset ()

+
const char *        stringprep_locale_charset           (void);
+

+Find out current locale charset. The function respect the CHARSET +environment variable, but typically uses nl_langinfo(CODESET) when +it is supported. It fall back on "ASCII" if CHARSET isn't set and +nl_langinfo isn't supported or return anything. +

+

+Note that this function return the application's locale's preferred +charset (or thread's locale's preffered charset, if your system +support thread-specific locales). It does not return what the +system may be using. Thus, if you receive data from external +sources you cannot in general use this function to guess what +charset it is encoded in. Use stringprep_convert from the external +representation into the charset returned by this function, to have +data in the locale encoding.

+

+

+
++ + + + +

Returns :

Return the character set used by the current locale. + It will never return NULL, but use "ASCII" as a fallback. +
+
+
+
+

stringprep_convert ()

+
char *              stringprep_convert                  (const char *str,
+                                                         const char *to_codeset,
+                                                         const char *from_codeset);
+

+Convert the string from one character set to another using the +system's iconv() function.

+

+

+
++ + + + + + + + + + + + + + + + + + +

str :

input zero-terminated string. +

to_codeset :

name of destination character set. +

from_codeset :

name of origin character set, as used by str. +

Returns :

Returns newly allocated zero-terminated string which + is str transcoded into to_codeset. +
+
+
+
+

stringprep_locale_to_utf8 ()

+
char *              stringprep_locale_to_utf8           (const char *str);
+

+Convert string encoded in the locale's character set into UTF-8 by +using stringprep_convert().

+

+

+
++ + + + + + + + + + +

str :

input zero terminated string. +

Returns :

Returns newly allocated zero-terminated string which + is str transcoded into UTF-8. +
+
+
+
+

stringprep_utf8_to_locale ()

+
char *              stringprep_utf8_to_locale           (const char *str);
+

+Convert string encoded in UTF-8 into the locale's character set by +using stringprep_convert().

+

+

+
++ + + + + + + + + + +

str :

input zero terminated string. +

Returns :

Returns newly allocated zero-terminated string which + is str transcoded into the locale's character set. +
+
+
+
+ + + diff --git a/doc/reference/html/libidn-tld.html b/doc/reference/html/libidn-tld.html new file mode 100644 index 0000000..a3d5b16 --- /dev/null +++ b/doc/reference/html/libidn-tld.html @@ -0,0 +1,678 @@ + + + + +tld + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

tld

+

tld

+
+
+

Synopsis

+
+#define             IDNAPI
+typedef             Tld_table_element;
+typedef             Tld_table;
+enum                Tld_rc;
+const char *        tld_strerror                        (Tld_rc rc);
+int                 tld_get_4                           (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char **out);
+int                 tld_get_4z                          (const uint32_t *in,
+                                                         char **out);
+int                 tld_get_z                           (const char *in,
+                                                         char **out);
+const Tld_table *   tld_get_table                       (const char *tld,
+                                                         const Tld_table **tables);
+const Tld_table *   tld_default_table                   (const char *tld,
+                                                         const Tld_table **overrides);
+int                 tld_check_4t                        (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const Tld_table *tld);
+int                 tld_check_4tz                       (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const Tld_table *tld);
+int                 tld_check_4                         (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+int                 tld_check_4z                        (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+int                 tld_check_8z                        (const char *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+int                 tld_check_lz                        (const char *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+
+
+
+

Description

+

+

+
+
+

Details

+
+

IDNAPI

+
#define             IDNAPI
+

+

+
+
+
+

Tld_table_element

+
  typedef struct Tld_table_element Tld_table_element;
+
+

+

+
+
+
+

Tld_table

+
  typedef struct Tld_table Tld_table;
+
+

+

+
+
+
+

enum Tld_rc

+
  typedef enum
+  {
+    TLD_SUCCESS = 0,
+    TLD_INVALID = 1,		/* Invalid character found. */
+    TLD_NODATA = 2,		/* Char, domain or inlen = 0. */
+    TLD_MALLOC_ERROR = 3,
+    TLD_ICONV_ERROR = 4,
+    TLD_NO_TLD = 5,
+    /* Workaround typo in earlier versions. */
+    TLD_NOTLD = TLD_NO_TLD
+  } Tld_rc;
+
+

+Enumerated return codes of the TLD checking functions. +The value 0 is guaranteed to always correspond to success.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

TLD_SUCCESS

Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +

TLD_INVALID

Invalid character found. +

TLD_NODATA

No input data was provided. +

TLD_MALLOC_ERROR

Error during memory allocation. +

TLD_ICONV_ERROR

Error during iconv string conversion. +

TLD_NO_TLD

No top-level domain found in domain string. +

TLD_NOTLD

+
+
+
+
+

tld_strerror ()

+
const char *        tld_strerror                        (Tld_rc rc);
+

+Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. +

+

+TLD_SUCCESS: Successful operation. This value is guaranteed to + always be zero, the remaining ones are only guaranteed to hold + non-zero values, for logical comparison purposes. +TLD_INVALID: Invalid character found. +TLD_NODATA: No input data was provided. +TLD_MALLOC_ERROR: Error during memory allocation. +TLD_ICONV_ERROR: Error during iconv string conversion. +TLD_NO_TLD: No top-level domain found in domain string.

+

+

+
++ + + + + + + + + + +

rc :

tld return code +

Returns :

Returns a pointer to a statically allocated string +containing a description of the error with the return code rc. +
+
+
+
+

tld_get_4 ()

+
int                 tld_get_4                           (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char **out);
+

+Isolate the top-level domain of in and return it as an ASCII +string in out.

+

+

+
++ + + + + + + + + + + + + + + + + + +

in :

Array of unicode code points to process. Does not need to be + zero terminated. +

inlen :

Number of unicode code points. +

out :

Zero terminated ascii result string pointer. +

Returns :

Return TLD_SUCCESS on success, or the corresponding + Tld_rc error code otherwise. +
+
+
+
+

tld_get_4z ()

+
int                 tld_get_4z                          (const uint32_t *in,
+                                                         char **out);
+

+Isolate the top-level domain of in and return it as an ASCII +string in out.

+

+

+
++ + + + + + + + + + + + + + +

in :

Zero terminated array of unicode code points to process. +

out :

Zero terminated ascii result string pointer. +

Returns :

Return TLD_SUCCESS on success, or the corresponding + Tld_rc error code otherwise. +
+
+
+
+

tld_get_z ()

+
int                 tld_get_z                           (const char *in,
+                                                         char **out);
+

+Isolate the top-level domain of in and return it as an ASCII +string in out. The input string in may be UTF-8, ISO-8859-1 or +any ASCII compatible character encoding.

+

+

+
++ + + + + + + + + + + + + + +

in :

Zero terminated character array to process. +

out :

Zero terminated ascii result string pointer. +

Returns :

Return TLD_SUCCESS on success, or the corresponding + Tld_rc error code otherwise. +
+
+
+
+

tld_get_table ()

+
const Tld_table *   tld_get_table                       (const char *tld,
+                                                         const Tld_table **tables);
+

+Get the TLD table for a named TLD by searching through the given +TLD table array.

+

+

+
++ + + + + + + + + + + + + + +

tld :

TLD name (e.g. "com") as zero terminated ASCII byte string. +

tables :

Zero terminated array of Tld_table info-structures for + TLDs. +

Returns :

Return structure corresponding to TLD tld by going + thru tables, or return NULL if no such structure is found. +
+
+
+
+

tld_default_table ()

+
const Tld_table *   tld_default_table                   (const char *tld,
+                                                         const Tld_table **overrides);
+

+Get the TLD table for a named TLD, using the internal defaults, +possibly overrided by the (optional) supplied tables.

+

+

+
++ + + + + + + + + + + + + + +

tld :

TLD name (e.g. "com") as zero terminated ASCII byte string. +

overrides :

Additional zero terminated array of Tld_table + info-structures for TLDs, or NULL to only use library deault + tables. +

Returns :

Return structure corresponding to TLD tld_str, first + looking through overrides then thru built-in list, or NULL if + no such structure found. +
+
+
+
+

tld_check_4t ()

+
int                 tld_check_4t                        (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const Tld_table *tld);
+

+Test each of the code points in in for whether or not +they are allowed by the data structure in tld, return +the position of the first character for which this is not +the case in errpos.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

in :

Array of unicode code points to process. Does not need to be + zero terminated. +

inlen :

Number of unicode code points. +

errpos :

Position of offending character is returned here. +

tld :

A Tld_table data structure representing the restrictions for + which the input should be tested. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all code + points are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+

tld_check_4tz ()

+
int                 tld_check_4tz                       (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const Tld_table *tld);
+

+Test each of the code points in in for whether or not +they are allowed by the data structure in tld, return +the position of the first character for which this is not +the case in errpos.

+

+

+
++ + + + + + + + + + + + + + + + + + +

in :

Zero terminated array of unicode code points to process. +

errpos :

Position of offending character is returned here. +

tld :

A Tld_table data structure representing the restrictions for + which the input should be tested. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all code + points are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+

tld_check_4 ()

+
int                 tld_check_4                         (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+

+Test each of the code points in in for whether or not they are +allowed by the information in overrides or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in overrides, the information in overrides takes +precedence. If several entries for a specific TLD are found, the +first one is used. If overrides is NULL, only the built-in +information is used. The position of the first offending character +is returned in errpos.

+

+

+
++ + + + + + + + + + + + + + + + + + + + + + +

in :

Array of unicode code points to process. Does not need to be + zero terminated. +

inlen :

Number of unicode code points. +

errpos :

Position of offending character is returned here. +

overrides :

A Tld_table array of additional domain restriction + structures that complement and supersede the built-in information. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all code + points are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+

tld_check_4z ()

+
int                 tld_check_4z                        (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+

+Test each of the code points in in for whether or not they are +allowed by the information in overrides or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in overrides, the information in overrides takes +precedence. If several entries for a specific TLD are found, the +first one is used. If overrides is NULL, only the built-in +information is used. The position of the first offending character +is returned in errpos.

+

+

+
++ + + + + + + + + + + + + + + + + + +

in :

Zero-terminated array of unicode code points to process. +

errpos :

Position of offending character is returned here. +

overrides :

A Tld_table array of additional domain restriction + structures that complement and supersede the built-in information. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all code + points are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+

tld_check_8z ()

+
int                 tld_check_8z                        (const char *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+

+Test each of the characters in in for whether or not they are +allowed by the information in overrides or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in overrides, the information in overrides takes +precedence. If several entries for a specific TLD are found, the +first one is used. If overrides is NULL, only the built-in +information is used. The position of the first offending character +is returned in errpos. Note that the error position refers to the +decoded character offset rather than the byte position in the +string.

+

+

+
++ + + + + + + + + + + + + + + + + + +

in :

Zero-terminated UTF8 string to process. +

errpos :

Position of offending character is returned here. +

overrides :

A Tld_table array of additional domain restriction + structures that complement and supersede the built-in information. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all + characters are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+

tld_check_lz ()

+
int                 tld_check_lz                        (const char *in,
+                                                         size_t *errpos,
+                                                         const Tld_table **overrides);
+

+Test each of the characters in in for whether or not they are +allowed by the information in overrides or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in overrides, the information in overrides takes +precedence. If several entries for a specific TLD are found, the +first one is used. If overrides is NULL, only the built-in +information is used. The position of the first offending character +is returned in errpos. Note that the error position refers to the +decoded character offset rather than the byte position in the +string.

+

+

+
++ + + + + + + + + + + + + + + + + + +

in :

Zero-terminated string in the current locales encoding to process. +

errpos :

Position of offending character is returned here. +

overrides :

A Tld_table array of additional domain restriction + structures that complement and supersede the built-in information. +

Returns :

Returns the Tld_rc value TLD_SUCCESS if all + characters are valid or when tld is null, TLD_INVALID if a + character is not allowed, or additional error codes on general + failure conditions. +
+
+
+
+ + + diff --git a/doc/reference/html/libidn.devhelp b/doc/reference/html/libidn.devhelp new file mode 100644 index 0000000..425c605 --- /dev/null +++ b/doc/reference/html/libidn.devhelp @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/html/libidn.devhelp2 b/doc/reference/html/libidn.devhelp2 new file mode 100644 index 0000000..decdecf --- /dev/null +++ b/doc/reference/html/libidn.devhelp2 @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/html/right.png b/doc/reference/html/right.png new file mode 100644 index 0000000000000000000000000000000000000000..92832e3a4566e59d6e4092010e08d28f3be3a68d GIT binary patch literal 472 zcmV;}0Vn>6P)Cd4HCN^TYHBC0dz3r5|}*T3c5!K}0^NPTey!^rYo;W&eW{b1SE%dR-1ljcju- zJITo5P_e{cPDWDszO|97o#m$fni3V4d%~7^?0HU4-k!+X`e~w55Q}HA=c?CM9`EK` z^o5GF_RsnG`ey+9wOf8O4bzg>7W*;jU~M?g`OZAA$mNp|Lz<$s+~N9!2`ir8RcClo$(Q~19INM~9}j;&*|enC yGd}kJak0wj?aUKd8;%}`i}SSew>!A-2iw}^5}Rh(M>+vRkipZ{&t;ucLK6U4uc96R literal 0 HcmV?d00001 diff --git a/doc/reference/libidn-docs.sgml b/doc/reference/libidn-docs.sgml new file mode 100644 index 0000000..cbf57c7 --- /dev/null +++ b/doc/reference/libidn-docs.sgml @@ -0,0 +1,83 @@ + + + + + GNU Libidn API Reference Manual + + + + GNU Libidn API Reference Manual + + +GNU Libidn is a fully documented implementation of the Stringprep, +Punycode and IDNA specifications. Libidn's purpose is to encode and +decode internationalized domain names. The native C, C# and Java +libraries are available under the GNU Lesser General Public License +version 2.1 or later. + + + +The library contains a generic Stringprep implementation. Profiles +for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. +Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported. +A mechanism to define Top-Level Domain (TLD) specific validation +tables, and to compare strings against those tables, is included. +Default tables for some TLDs are also included. + + + +The Stringprep API consists of two main functions, one for converting +data from the system's native representation into UTF-8, and one +function to perform the Stringprep processing. Adding a new +Stringprep profile for your application within the API is +straightforward. The Punycode API consists of one encoding function +and one decoding function. The IDNA API consists of the ToASCII and +ToUnicode functions, as well as an high-level interface for converting +entire domain names to and from the ACE encoded form. The TLD API +consists of one set of functions to extract the TLD name from a domain +string, one set of functions to locate the proper TLD table to use +based on the TLD name, and core functions to validate a string against +a TLD table, and some utility wrappers to perform all the steps in one +call. + + + +The library is used by, e.g., GNU SASL and Shishi to process user +names and passwords. Libidn can be built into GNU Libc to enable a +new system-wide getaddrinfo flag for IDN processing. + + + +Libidn is developed for the GNU/Linux system, but runs on over 20 Unix +platforms (including Solaris, IRIX, AIX, and Tru64) and Windows. The +library is written in C and (parts of) the API is also accessible from +C++, Emacs Lisp, Python and Java. A native Java and C# port is +included. + + + +Also included is a command line tool, several self tests, code +examples, and more, all licensed under the GNU General Public License +version 3.0 or later. + + + + The internal layout of the library, and how your application + interact with the various parts of the library, are shown in + . + + +
+ Components of Libidn + +
+ + + + + + + +
+
diff --git a/doc/reference/libidn-overrides.txt b/doc/reference/libidn-overrides.txt new file mode 100644 index 0000000..e69de29 diff --git a/doc/reference/libidn-sections.txt b/doc/reference/libidn-sections.txt new file mode 100644 index 0000000..a0a3db4 --- /dev/null +++ b/doc/reference/libidn-sections.txt @@ -0,0 +1,121 @@ +
+intprops +TYPE_TWOS_COMPLEMENT +TYPE_ONES_COMPLEMENT +TYPE_SIGNED_MAGNITUDE +TYPE_SIGNED +TYPE_MINIMUM +TYPE_MAXIMUM +signed_type_or_expr__ +INT_STRLEN_BOUND +INT_BUFSIZE_BOUND + +TYPE_IS_INTEGER +
+ +
+idna +IDNAPI +Idna_rc +Idna_flags +IDNA_ACE_PREFIX +idna_strerror +idna_to_ascii_4i +idna_to_unicode_44i +idna_to_ascii_4z +idna_to_ascii_8z +idna_to_ascii_lz +idna_to_unicode_4z4z +idna_to_unicode_8z4z +idna_to_unicode_8z8z +idna_to_unicode_8zlz +idna_to_unicode_lzlz +
+ +
+pr29 +IDNAPI +Pr29_rc +pr29_strerror +pr29_4 +pr29_4z +pr29_8z +
+ +
+tld +IDNAPI +Tld_table_element +Tld_table +Tld_rc +tld_strerror +tld_get_4 +tld_get_4z +tld_get_z +tld_get_table +tld_default_table +tld_check_4t +tld_check_4tz +tld_check_4 +tld_check_4z +tld_check_8z +tld_check_lz +
+ +
+punycode +IDNAPI +Punycode_status +punycode_strerror +punycode_uint +punycode_encode +punycode_decode +
+ +
+idn-free +IDNAPI +
+ +
+stringprep +IDNAPI +STRINGPREP_VERSION +Stringprep_rc +Stringprep_profile_flags +Stringprep_profile_steps +STRINGPREP_MAX_MAP_CHARS +Stringprep_table_element +Stringprep_profile +Stringprep_profiles +stringprep_nameprep +stringprep_nameprep_no_unassigned +stringprep_plain +stringprep_kerberos5 +stringprep_xmpp_nodeprep +stringprep_xmpp_resourceprep +stringprep_iscsi +stringprep_4i +stringprep_4zi +stringprep +stringprep_profile +stringprep_strerror +stringprep_check_version +stringprep_unichar_to_utf8 +stringprep_utf8_to_unichar +stringprep_utf8_to_ucs4 +stringprep_ucs4_to_utf8 +stringprep_utf8_nfkc_normalize +stringprep_ucs4_nfkc_normalize +stringprep_locale_charset +stringprep_convert +stringprep_locale_to_utf8 +stringprep_utf8_to_locale +
+ +
+verify +verify_true +verify +
+ diff --git a/doc/reference/libidn.types b/doc/reference/libidn.types new file mode 100644 index 0000000..e69de29 diff --git a/doc/reference/tmpl/idn-free.sgml b/doc/reference/tmpl/idn-free.sgml new file mode 100644 index 0000000..11b27f1 --- /dev/null +++ b/doc/reference/tmpl/idn-free.sgml @@ -0,0 +1,28 @@ + +idn-free + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/reference/tmpl/idna.sgml b/doc/reference/tmpl/idna.sgml new file mode 100644 index 0000000..f995297 --- /dev/null +++ b/doc/reference/tmpl/idna.sgml @@ -0,0 +1,184 @@ + +idna + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@IDNA_SUCCESS: +@IDNA_STRINGPREP_ERROR: +@IDNA_PUNYCODE_ERROR: +@IDNA_CONTAINS_NON_LDH: +@IDNA_CONTAINS_LDH: +@IDNA_CONTAINS_MINUS: +@IDNA_INVALID_LENGTH: +@IDNA_NO_ACE_PREFIX: +@IDNA_ROUNDTRIP_VERIFY_ERROR: +@IDNA_CONTAINS_ACE_PREFIX: +@IDNA_ICONV_ERROR: +@IDNA_MALLOC_ERROR: +@IDNA_DLOPEN_ERROR: + + + + + + +@IDNA_ALLOW_UNASSIGNED: +@IDNA_USE_STD3_ASCII_RULES: + + + + + + + + + + + + + +@rc: +@Returns: + + + + + + + +@in: +@inlen: +@out: +@flags: +@Returns: + + + + + + + +@in: +@inlen: +@out: +@outlen: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + + + + + + +@input: +@output: +@flags: +@Returns: + + diff --git a/doc/reference/tmpl/intprops.sgml b/doc/reference/tmpl/intprops.sgml new file mode 100644 index 0000000..8a900a5 --- /dev/null +++ b/doc/reference/tmpl/intprops.sgml @@ -0,0 +1,93 @@ + +intprops + + + + + + + + + + + + + + + + + + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + + + + + + +@t: + + diff --git a/doc/reference/tmpl/libidn-unused.sgml b/doc/reference/tmpl/libidn-unused.sgml new file mode 100644 index 0000000..e69de29 diff --git a/doc/reference/tmpl/pr29.sgml b/doc/reference/tmpl/pr29.sgml new file mode 100644 index 0000000..43d7d22 --- /dev/null +++ b/doc/reference/tmpl/pr29.sgml @@ -0,0 +1,74 @@ + +pr29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@PR29_SUCCESS: +@PR29_PROBLEM: +@PR29_STRINGPREP_ERROR: + + + + + + +@rc: +@Returns: + + + + + + + +@in: +@len: +@Returns: + + + + + + + +@in: +@Returns: + + + + + + + +@in: +@Returns: + + diff --git a/doc/reference/tmpl/punycode.sgml b/doc/reference/tmpl/punycode.sgml new file mode 100644 index 0000000..5cbe442 --- /dev/null +++ b/doc/reference/tmpl/punycode.sgml @@ -0,0 +1,79 @@ + +punycode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@PUNYCODE_SUCCESS: +@PUNYCODE_BAD_INPUT: +@PUNYCODE_BIG_OUTPUT: +@PUNYCODE_OVERFLOW: + + + + + + +@rc: +@Returns: + + + + + + + + + + + + + +@input_length: +@input: +@case_flags: +@output_length: +@output: +@Returns: + + + + + + + +@input_length: +@input: +@output_length: +@output: +@case_flags: +@Returns: + + diff --git a/doc/reference/tmpl/stringprep.sgml b/doc/reference/tmpl/stringprep.sgml new file mode 100644 index 0000000..59f8d30 --- /dev/null +++ b/doc/reference/tmpl/stringprep.sgml @@ -0,0 +1,330 @@ + +stringprep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@STRINGPREP_OK: +@STRINGPREP_CONTAINS_UNASSIGNED: +@STRINGPREP_CONTAINS_PROHIBITED: +@STRINGPREP_BIDI_BOTH_L_AND_RAL: +@STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: +@STRINGPREP_BIDI_CONTAINS_PROHIBITED: +@STRINGPREP_TOO_SMALL_BUFFER: +@STRINGPREP_PROFILE_ERROR: +@STRINGPREP_FLAG_ERROR: +@STRINGPREP_UNKNOWN_PROFILE: +@STRINGPREP_NFKC_FAILED: +@STRINGPREP_MALLOC_ERROR: + + + + + + +@STRINGPREP_NO_NFKC: +@STRINGPREP_NO_BIDI: +@STRINGPREP_NO_UNASSIGNED: + + + + + + +@STRINGPREP_NFKC: +@STRINGPREP_BIDI: +@STRINGPREP_MAP_TABLE: +@STRINGPREP_UNASSIGNED_TABLE: +@STRINGPREP_PROHIBIT_TABLE: +@STRINGPREP_BIDI_PROHIBIT_TABLE: +@STRINGPREP_BIDI_RAL_TABLE: +@STRINGPREP_BIDI_L_TABLE: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@in: +@maxlen: + + + + + + + +@ucs4: +@len: +@maxucs4len: +@flags: +@profile: +@Returns: + + + + + + + +@ucs4: +@maxucs4len: +@flags: +@profile: +@Returns: + + + + + + + +@in: +@maxlen: +@flags: +@profile: +@Returns: + + + + + + + +@in: +@out: +@profile: +@flags: +@Returns: + + + + + + + +@rc: +@Returns: + + + + + + + +@req_version: +@Returns: + + + + + + + +@c: +@outbuf: +@Returns: + + + + + + + +@p: +@Returns: + + + + + + + +@str: +@len: +@items_written: +@Returns: + + + + + + + +@str: +@len: +@items_read: +@items_written: +@Returns: + + + + + + + +@str: +@len: +@Returns: + + + + + + + +@str: +@len: +@Returns: + + + + + + + +@Returns: + + + + + + + +@str: +@to_codeset: +@from_codeset: +@Returns: + + + + + + + +@str: +@Returns: + + + + + + + +@str: +@Returns: + + diff --git a/doc/reference/tmpl/tld.sgml b/doc/reference/tmpl/tld.sgml new file mode 100644 index 0000000..680d2cc --- /dev/null +++ b/doc/reference/tmpl/tld.sgml @@ -0,0 +1,181 @@ + +tld + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@TLD_SUCCESS: +@TLD_INVALID: +@TLD_NODATA: +@TLD_MALLOC_ERROR: +@TLD_ICONV_ERROR: +@TLD_NO_TLD: +@TLD_NOTLD: + + + + + + +@rc: +@Returns: + + + + + + + +@in: +@inlen: +@out: +@Returns: + + + + + + + +@in: +@out: +@Returns: + + + + + + + +@in: +@out: +@Returns: + + + + + + + +@tld: +@tables: +@Returns: + + + + + + + +@tld: +@overrides: +@Returns: + + + + + + + +@in: +@inlen: +@errpos: +@tld: +@Returns: + + + + + + + +@in: +@errpos: +@tld: +@Returns: + + + + + + + +@in: +@inlen: +@errpos: +@overrides: +@Returns: + + + + + + + +@in: +@errpos: +@overrides: +@Returns: + + + + + + + +@in: +@errpos: +@overrides: +@Returns: + + + + + + + +@in: +@errpos: +@overrides: +@Returns: + + diff --git a/doc/reference/tmpl/verify.sgml b/doc/reference/tmpl/verify.sgml new file mode 100644 index 0000000..7ae5ca7 --- /dev/null +++ b/doc/reference/tmpl/verify.sgml @@ -0,0 +1,37 @@ + +verify + + + + + + + + + + + + + + + + + + + + + + + + +@R: + + + + + + + +@R: + + diff --git a/doc/specifications/BidiMirroring-3.2.0.txt b/doc/specifications/BidiMirroring-3.2.0.txt new file mode 100644 index 0000000..fa62021 --- /dev/null +++ b/doc/specifications/BidiMirroring-3.2.0.txt @@ -0,0 +1,529 @@ +# BidiMirroring-3.2.0.txt +# +# This file is an informative supplement to the UnicodeData file. It +# lists characters that have the mirrored property +# where there is another Unicode character that typically has a glyph +# that is the mirror image of the original character's glyph. +# The repertoire covered by the file is Unicode 3.2.0. +# +# The file contains a list of lines with mappings from one code point +# to another one for character-based mirroring. +# Note that for "real" mirroring, a rendering engine needs to select +# appropriate alternative glyphs, and that many Unicode characters do not +# have a mirror-image Unicode character. +# +# Each mapping line contains two fields, separated by a semicolon (';'). +# Each of the two fields contains a code point represented as a +# variable-length hexadecimal value with 4 to 6 digits. +# A comment indicates where the characters are "BEST FIT" mirroring. +# +# Code points with the "mirrored" property but no appropriate mirrors are +# listed as comments at the end of the file. +# +# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, +# at http://www.unicode.org/unicode/reports/tr9/ +# +# Please address any comments to . +# Note that this is an archival address: messages will be checked, +# but do not expect an immediate response. +# +# This file was originally created by Markus Scherer. +# Extended for Unicode 3.2 by Ken Whistler. +# +# ############################################################ + +0028; 0029 # LEFT PARENTHESIS +0029; 0028 # RIGHT PARENTHESIS +003C; 003E # LESS-THAN SIGN +003E; 003C # GREATER-THAN SIGN +005B; 005D # LEFT SQUARE BRACKET +005D; 005B # RIGHT SQUARE BRACKET +007B; 007D # LEFT CURLY BRACKET +007D; 007B # RIGHT CURLY BRACKET +00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +2045; 2046 # LEFT SQUARE BRACKET WITH QUILL +2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL +207D; 207E # SUPERSCRIPT LEFT PARENTHESIS +207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS +208D; 208E # SUBSCRIPT LEFT PARENTHESIS +208E; 208D # SUBSCRIPT RIGHT PARENTHESIS +2208; 220B # ELEMENT OF +2209; 220C # NOT AN ELEMENT OF +220A; 220D # SMALL ELEMENT OF +220B; 2208 # CONTAINS AS MEMBER +220C; 2209 # DOES NOT CONTAIN AS MEMBER +220D; 220A # SMALL CONTAINS AS MEMBER +2215; 29F5 # DIVISION SLASH +223C; 223D # TILDE OPERATOR +223D; 223C # REVERSED TILDE +2243; 22CD # ASYMPTOTICALLY EQUAL TO +2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF +2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO +2254; 2255 # COLON EQUALS +2255; 2254 # EQUALS COLON +2264; 2265 # LESS-THAN OR EQUAL TO +2265; 2264 # GREATER-THAN OR EQUAL TO +2266; 2267 # LESS-THAN OVER EQUAL TO +2267; 2266 # GREATER-THAN OVER EQUAL TO +2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO +2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO +226A; 226B # MUCH LESS-THAN +226B; 226A # MUCH GREATER-THAN +226E; 226F # [BEST FIT] NOT LESS-THAN +226F; 226E # [BEST FIT] NOT GREATER-THAN +2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO +2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO +2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO +2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO +2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO +2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO +2276; 2277 # LESS-THAN OR GREATER-THAN +2277; 2276 # GREATER-THAN OR LESS-THAN +2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN +2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN +227A; 227B # PRECEDES +227B; 227A # SUCCEEDS +227C; 227D # PRECEDES OR EQUAL TO +227D; 227C # SUCCEEDS OR EQUAL TO +227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO +227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO +2280; 2281 # [BEST FIT] DOES NOT PRECEDE +2281; 2280 # [BEST FIT] DOES NOT SUCCEED +2282; 2283 # SUBSET OF +2283; 2282 # SUPERSET OF +2284; 2285 # [BEST FIT] NOT A SUBSET OF +2285; 2284 # [BEST FIT] NOT A SUPERSET OF +2286; 2287 # SUBSET OF OR EQUAL TO +2287; 2286 # SUPERSET OF OR EQUAL TO +2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO +2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO +228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO +228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO +228F; 2290 # SQUARE IMAGE OF +2290; 228F # SQUARE ORIGINAL OF +2291; 2292 # SQUARE IMAGE OF OR EQUAL TO +2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO +2298; 29B8 # CIRCLED DIVISION SLASH +22A2; 22A3 # RIGHT TACK +22A3; 22A2 # LEFT TACK +22A6; 2ADE # ASSERTION +22A8; 2AE4 # TRUE +22A9; 2AE3 # FORCES +22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22B0; 22B1 # PRECEDES UNDER RELATION +22B1; 22B0 # SUCCEEDS UNDER RELATION +22B2; 22B3 # NORMAL SUBGROUP OF +22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP +22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO +22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +22B6; 22B7 # ORIGINAL OF +22B7; 22B6 # IMAGE OF +22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +22CB; 22CC # LEFT SEMIDIRECT PRODUCT +22CC; 22CB # RIGHT SEMIDIRECT PRODUCT +22CD; 2243 # REVERSED TILDE EQUALS +22D0; 22D1 # DOUBLE SUBSET +22D1; 22D0 # DOUBLE SUPERSET +22D6; 22D7 # LESS-THAN WITH DOT +22D7; 22D6 # GREATER-THAN WITH DOT +22D8; 22D9 # VERY MUCH LESS-THAN +22D9; 22D8 # VERY MUCH GREATER-THAN +22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN +22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN +22DC; 22DD # EQUAL TO OR LESS-THAN +22DD; 22DC # EQUAL TO OR GREATER-THAN +22DE; 22DF # EQUAL TO OR PRECEDES +22DF; 22DE # EQUAL TO OR SUCCEEDS +22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL +22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL +22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO +22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO +22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO +22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO +22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO +22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO +22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO +22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO +22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF +22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP +22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO +22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS +22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS +22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F6; 22FD # ELEMENT OF WITH OVERBAR +22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR +22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE +22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD; 22F6 # CONTAINS WITH OVERBAR +22FE; 22F7 # SMALL CONTAINS WITH OVERBAR +2308; 2309 # LEFT CEILING +2309; 2308 # RIGHT CEILING +230A; 230B # LEFT FLOOR +230B; 230A # RIGHT FLOOR +2329; 232A # LEFT-POINTING ANGLE BRACKET +232A; 2329 # RIGHT-POINTING ANGLE BRACKET +2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT +2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET +2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET +2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT +27D5; 27D6 # LEFT OUTER JOIN +27D6; 27D5 # RIGHT OUTER JOIN +27DD; 27DE # LONG RIGHT TACK +27DE; 27DD # LONG LEFT TACK +27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK +27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK +27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET +27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET +27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +2983; 2984 # LEFT WHITE CURLY BRACKET +2984; 2983 # RIGHT WHITE CURLY BRACKET +2985; 2986 # LEFT WHITE PARENTHESIS +2986; 2985 # RIGHT WHITE PARENTHESIS +2987; 2988 # Z NOTATION LEFT IMAGE BRACKET +2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET +2989; 298A # Z NOTATION LEFT BINDING BRACKET +298A; 2989 # Z NOTATION RIGHT BINDING BRACKET +298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR +298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR +298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991; 2992 # LEFT ANGLE BRACKET WITH DOT +2992; 2991 # RIGHT ANGLE BRACKET WITH DOT +2993; 2994 # LEFT ARC LESS-THAN BRACKET +2994; 2993 # RIGHT ARC GREATER-THAN BRACKET +2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET +2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET +29B8; 2298 # CIRCLED REVERSE SOLIDUS +29C0; 29C1 # CIRCLED LESS-THAN +29C1; 29C0 # CIRCLED GREATER-THAN +29C4; 29C5 # SQUARED RISING DIAGONAL SLASH +29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH +29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK +29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK +29D4; 29D5 # TIMES WITH LEFT HALF BLACK +29D5; 29D4 # TIMES WITH RIGHT HALF BLACK +29D8; 29D9 # LEFT WIGGLY FENCE +29D9; 29D8 # RIGHT WIGGLY FENCE +29DA; 29DB # LEFT DOUBLE WIGGLY FENCE +29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE +29F5; 2215 # REVERSE SOLIDUS OPERATOR +29F8; 29F9 # BIG SOLIDUS +29F9; 29F8 # BIG REVERSE SOLIDUS +29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET +29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET +2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS +2A2C; 2A2B # MINUS SIGN WITH RISING DOTS +2A2D; 2A2C # PLUS SIGN IN LEFT HALF CIRCLE +2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE +2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A3C; 2A3D # INTERIOR PRODUCT +2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT +2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION +2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION +2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE +2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE +2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO +2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO +2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN +2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN +2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2AA1; 2AA2 # DOUBLE NESTED LESS-THAN +2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN +2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE +2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE +2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA; 2AAB # SMALLER THAN +2AAB; 2AAA # LARGER THAN +2AAC; 2AAD # SMALLER THAN OR EQUAL TO +2AAD; 2AAC # LARGER THAN OR EQUAL TO +2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN +2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN +2ABB; 2ABC # DOUBLE PRECEDES +2ABC; 2ABB # DOUBLE SUCCEEDS +2ABD; 2ABE # SUBSET WITH DOT +2ABE; 2ABD # SUPERSET WITH DOT +2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW +2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW +2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN +2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN +2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR +2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR +2ACF; 2AD0 # CLOSED SUBSET +2AD0; 2ACF # CLOSED SUPERSET +2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO +2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO +2AD3; 2AD4 # SUBSET ABOVE SUPERSET +2AD4; 2AD3 # SUPERSET ABOVE SUBSET +2AD5; 2AD6 # SUBSET ABOVE SUBSET +2AD6; 2AD5 # SUPERSET ABOVE SUPERSET +2ADE; 22A6 # SHORT LEFT TACK +2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AEC; 2AED # DOUBLE STROKE NOT SIGN +2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN +2AF7; 2AF8 # TRIPLE NESTED LESS-THAN +2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN +2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +3008; 3009 # LEFT ANGLE BRACKET +3009; 3008 # RIGHT ANGLE BRACKET +300A; 300B # LEFT DOUBLE ANGLE BRACKET +300B; 300A # RIGHT DOUBLE ANGLE BRACKET +300C; 300D # [BEST FIT] LEFT CORNER BRACKET +300D; 300C # [BEST FIT] RIGHT CORNER BRACKET +300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET +300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET +3010; 3011 # LEFT BLACK LENTICULAR BRACKET +3011; 3010 # RIGHT BLACK LENTICULAR BRACKET +3014; 3015 # LEFT TORTOISE SHELL BRACKET +3015; 3014 # RIGHT TORTOISE SHELL BRACKET +3016; 3017 # LEFT WHITE LENTICULAR BRACKET +3017; 3016 # RIGHT WHITE LENTICULAR BRACKET +3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET +3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET +301A; 301B # LEFT WHITE SQUARE BRACKET +301B; 301A # RIGHT WHITE SQUARE BRACKET +FF08; FF09 # FULLWIDTH LEFT PARENTHESIS +FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS +FF1C; FF1E # FULLWIDTH LESS-THAN SIGN +FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN +FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET +FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET +FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET +FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET +FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS +FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS +FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET +FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET + +# The following characters have no appropriate mirroring character + +# 2140; DOUBLE-STRUCK N-ARY SUMMATION +# 2201; COMPLEMENT +# 2202; PARTIAL DIFFERENTIAL +# 2203; THERE EXISTS +# 2204; THERE DOES NOT EXIST +# 2211; N-ARY SUMMATION +# 2216; SET MINUS +# 221A; SQUARE ROOT +# 221B; CUBE ROOT +# 221C; FOURTH ROOT +# 221D; PROPORTIONAL TO +# 221F; RIGHT ANGLE +# 2220; ANGLE +# 2221; MEASURED ANGLE +# 2222; SPHERICAL ANGLE +# 2224; DOES NOT DIVIDE +# 2226; NOT PARALLEL TO +# 222B; INTEGRAL +# 222C; DOUBLE INTEGRAL +# 222D; TRIPLE INTEGRAL +# 222E; CONTOUR INTEGRAL +# 222F; SURFACE INTEGRAL +# 2230; VOLUME INTEGRAL +# 2231; CLOCKWISE INTEGRAL +# 2232; CLOCKWISE CONTOUR INTEGRAL +# 2233; ANTICLOCKWISE CONTOUR INTEGRAL +# 2239; EXCESS +# 223B; HOMOTHETIC +# 223E; INVERTED LAZY S +# 223F; SINE WAVE +# 2240; WREATH PRODUCT +# 2241; NOT TILDE +# 2242; MINUS TILDE +# 2244; NOT ASYMPTOTICALLY EQUAL TO +# 2245; APPROXIMATELY EQUAL TO +# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +# 2248; ALMOST EQUAL TO +# 2249; NOT ALMOST EQUAL TO +# 224A; ALMOST EQUAL OR EQUAL TO +# 224B; TRIPLE TILDE +# 224C; ALL EQUAL TO +# 225F; QUESTIONED EQUAL TO +# 2260; NOT EQUAL TO +# 2262; NOT IDENTICAL TO +# 228C; MULTISET +# 22A7; MODELS +# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE +# 22AC; DOES NOT PROVE +# 22AD; NOT TRUE +# 22AE; DOES NOT FORCE +# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +# 22B8; MULTIMAP +# 22BE; RIGHT ANGLE WITH ARC +# 22BF; RIGHT TRIANGLE +# 22F5; ELEMENT OF WITH DOT ABOVE +# 22F8; ELEMENT OF WITH UNDERBAR +# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES +# 22FF; Z NOTATION BAG MEMBERSHIP +# 2320; TOP HALF INTEGRAL +# 2321; BOTTOM HALF INTEGRAL +# 27D3; LOWER RIGHT CORNER WITH DOT +# 27D4; UPPER LEFT CORNER WITH DOT +# 27DC; LEFT MULTIMAP +# 299B; MEASURED ANGLE OPENING LEFT +# 299C; RIGHT ANGLE VARIANT WITH SQUARE +# 299D; MEASURED RIGHT ANGLE WITH DOT +# 299E; ANGLE WITH S INSIDE +# 299F; ACUTE ANGLE +# 29A0; SPHERICAL ANGLE OPENING LEFT +# 29A1; SPHERICAL ANGLE OPENING UP +# 29A2; TURNED ANGLE +# 29A3; REVERSED ANGLE +# 29A4; ANGLE WITH UNDERBAR +# 29A5; REVERSED ANGLE WITH UNDERBAR +# 29A6; OBLIQUE ANGLE OPENING UP +# 29A7; OBLIQUE ANGLE OPENING DOWN +# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT +# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +# 29C9; TWO JOINED SQUARES +# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE +# 29DC; INCOMPLETE INFINITY +# 29E1; INCREASES AS +# 29E3; EQUALS SIGN AND SLANTED PARALLEL +# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +# 29E5; IDENTICAL TO AND SLANTED PARALLEL +# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +# 29F4; RULE-DELAYED +# 29F6; SOLIDUS WITH OVERBAR +# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE +# 2A0A; MODULO TWO SUM +# 2A0B; SUMMATION WITH INTEGRAL +# 2A0C; QUADRUPLE INTEGRAL OPERATOR +# 2A0D; FINITE PART INTEGRAL +# 2A0E; INTEGRAL WITH DOUBLE STROKE +# 2A0F; INTEGRAL AVERAGE WITH SLASH +# 2A10; CIRCULATION FUNCTION +# 2A11; ANTICLOCKWISE INTEGRATION +# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE +# 2A15; INTEGRAL AROUND A POINT OPERATOR +# 2A16; QUATERNION INTEGRAL OPERATOR +# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +# 2A18; INTEGRAL WITH TIMES SIGN +# 2A19; INTEGRAL WITH INTERSECTION +# 2A1A; INTEGRAL WITH UNION +# 2A1B; INTEGRAL WITH OVERBAR +# 2A1C; INTEGRAL WITH UNDERBAR +# 2A1E; LARGE LEFT TRIANGLE OPERATOR +# 2A1F; Z NOTATION SCHEMA COMPOSITION +# 2A20; Z NOTATION SCHEMA PIPING +# 2A21; Z NOTATION SCHEMA PROJECTION +# 2A24; PLUS SIGN WITH TILDE ABOVE +# 2A26; PLUS SIGN WITH TILDE BELOW +# 2A29; MINUS SIGN WITH COMMA ABOVE +# 2A3E; Z NOTATION RELATIONAL COMPOSITION +# 2A57; SLOPING LARGE OR +# 2A58; SLOPING LARGE AND +# 2A6A; TILDE OPERATOR WITH DOT ABOVE +# 2A6B; TILDE OPERATOR WITH RISING DOTS +# 2A6C; SIMILAR MINUS SIMILAR +# 2A6D; CONGRUENT WITH DOT ABOVE +# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +# 2A70; APPROXIMATELY EQUAL OR EQUAL TO +# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR +# 2A74; DOUBLE COLON EQUAL +# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE +# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE +# 2A85; LESS-THAN OR APPROXIMATE +# 2A86; GREATER-THAN OR APPROXIMATE +# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A89; LESS-THAN AND NOT APPROXIMATE +# 2A8A; GREATER-THAN AND NOT APPROXIMATE +# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL +# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL +# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +# 2A9D; SIMILAR OR LESS-THAN +# 2A9E; SIMILAR OR GREATER-THAN +# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR +# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB5; PRECEDES ABOVE NOT EQUAL TO +# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO +# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO +# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO +# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO +# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO +# 2AC7; SUBSET OF ABOVE TILDE OPERATOR +# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR +# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO +# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO +# 2ACB; SUBSET OF ABOVE NOT EQUAL TO +# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO +# 2ADC; FORKING +# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE +# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +# 2AF3; PARALLEL WITH TILDE OPERATOR +# 2AFB; TRIPLE SOLIDUS BINARY RELATION +# 2AFD; DOUBLE SOLIDUS OPERATOR diff --git a/doc/specifications/COPYING.UCD b/doc/specifications/COPYING.UCD new file mode 100644 index 0000000..e1f615d --- /dev/null +++ b/doc/specifications/COPYING.UCD @@ -0,0 +1,61 @@ +License below is copied from , +last updated 7 July 2004, and claims to apply to all Unicode versions. + +According to a post on emacs-devel, +, +RMS believe it is a free license: + + This is a free license, and even compatible with the GPL (if + that ever matters). Yes, we can use it now. + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/ and +http://www.unicode.org/reports/. Unicode Software includes any source +code under the directories http://www.unicode.org/Public/ and +http://www.unicode.org/reports/. + +NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU +UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND +CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, +INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2004 Unicode, Inc. All rights reserved. Distributed +under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and associated documentation (the +"Data Files") or Unicode software and associated documentation (the +"Software") to deal in the Data Files or Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, and/or sell copies of the Data Files or Software, +and to permit persons to whom the Data Files or Software are furnished +to do so, provided that (a) the above copyright notice(s) and this +permission notice appear in all copies of the Data Files or Software, +(b) both the above copyright notice(s) and this permission notice +appear in associated documentation, and (c) there is clear notice in +each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the +data or software has been modified. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR +ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. diff --git a/doc/specifications/CaseFolding-3.2.0.txt b/doc/specifications/CaseFolding-3.2.0.txt new file mode 100644 index 0000000..104a823 --- /dev/null +++ b/doc/specifications/CaseFolding-3.2.0.txt @@ -0,0 +1,912 @@ +# CaseFolding-3.2.0.txt +# Date: 2002-03-22,20:54:33 GMT [MD] +# +# Case Folding Properties +# +# This file is a supplement to the UnicodeData file. +# It provides a case folding mapping generated from the Unicode Character Database. +# If all characters are mapped according to the full mapping below, then +# case differences (according to UnicodeData.txt and SpecialCasing.txt) +# are eliminated. +# +# The data supports both implementations that require simple case foldings +# (where string lengths don't change), and implementations that allow full case folding +# (where string lengths may grow). Note that where they can be supported, the +# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match. +# +# NOTE: case folding does not preserve normalization formats! +# +# For information on case folding, see +# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/ +# +# ================================================================================ +# Format +# ================================================================================ +# The entries in this file are in the following machine-readable format: +# +# ; ; ; # +# +# The status field is: +# C: common case folding, common mappings shared by both simple and full mappings. +# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces. +# S: simple case folding, mappings to single characters where different from F. +# T: special case for uppercase I and dotted uppercase I +# - For non-Turkic languages, this mapping is normally not used. +# - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters. +# +# Usage: +# A. To do a simple case folding, use the mappings with status C + S. +# B. To do a full case folding, use the mappings with status C + F. +# +# The mappings with status T can be used or omitted depending on the desired case-folding +# behavior. (The default option is to exclude them.) +# +# ================================================================= + +0041; C; 0061; # LATIN CAPITAL LETTER A +0042; C; 0062; # LATIN CAPITAL LETTER B +0043; C; 0063; # LATIN CAPITAL LETTER C +0044; C; 0064; # LATIN CAPITAL LETTER D +0045; C; 0065; # LATIN CAPITAL LETTER E +0046; C; 0066; # LATIN CAPITAL LETTER F +0047; C; 0067; # LATIN CAPITAL LETTER G +0048; C; 0068; # LATIN CAPITAL LETTER H +0049; C; 0069; # LATIN CAPITAL LETTER I +0049; T; 0131; # LATIN CAPITAL LETTER I +004A; C; 006A; # LATIN CAPITAL LETTER J +004B; C; 006B; # LATIN CAPITAL LETTER K +004C; C; 006C; # LATIN CAPITAL LETTER L +004D; C; 006D; # LATIN CAPITAL LETTER M +004E; C; 006E; # LATIN CAPITAL LETTER N +004F; C; 006F; # LATIN CAPITAL LETTER O +0050; C; 0070; # LATIN CAPITAL LETTER P +0051; C; 0071; # LATIN CAPITAL LETTER Q +0052; C; 0072; # LATIN CAPITAL LETTER R +0053; C; 0073; # LATIN CAPITAL LETTER S +0054; C; 0074; # LATIN CAPITAL LETTER T +0055; C; 0075; # LATIN CAPITAL LETTER U +0056; C; 0076; # LATIN CAPITAL LETTER V +0057; C; 0077; # LATIN CAPITAL LETTER W +0058; C; 0078; # LATIN CAPITAL LETTER X +0059; C; 0079; # LATIN CAPITAL LETTER Y +005A; C; 007A; # LATIN CAPITAL LETTER Z +00B5; C; 03BC; # MICRO SIGN +00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE +00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE +00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE +00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS +00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE +00C6; C; 00E6; # LATIN CAPITAL LETTER AE +00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA +00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE +00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE +00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS +00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE +00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE +00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS +00D0; C; 00F0; # LATIN CAPITAL LETTER ETH +00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE +00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE +00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE +00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE +00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS +00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE +00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE +00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE +00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS +00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE +00DE; C; 00FE; # LATIN CAPITAL LETTER THORN +00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S +0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON +0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE +0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK +0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE +0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE +010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON +010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON +0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE +0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON +0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE +0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE +0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK +011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON +011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE +0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE +0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA +0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE +0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE +012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON +012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE +012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK +0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE +0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE +0132; C; 0133; # LATIN CAPITAL LIGATURE IJ +0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA +0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE +013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA +013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON +013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT +0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE +0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE +0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA +0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON +0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014A; C; 014B; # LATIN CAPITAL LETTER ENG +014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON +014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE +0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0152; C; 0153; # LATIN CAPITAL LIGATURE OE +0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE +0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA +0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON +015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE +015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA +0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON +0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA +0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON +0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE +0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE +016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON +016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE +016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE +0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK +0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS +0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE +017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE +017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON +017F; C; 0073; # LATIN SMALL LETTER LONG S +0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK +0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR +0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX +0186; C; 0254; # LATIN CAPITAL LETTER OPEN O +0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK +0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D +018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK +018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR +018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E +018F; C; 0259; # LATIN CAPITAL LETTER SCHWA +0190; C; 025B; # LATIN CAPITAL LETTER OPEN E +0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK +0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK +0194; C; 0263; # LATIN CAPITAL LETTER GAMMA +0196; C; 0269; # LATIN CAPITAL LETTER IOTA +0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE +0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK +019C; C; 026F; # LATIN CAPITAL LETTER TURNED M +019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK +019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE +01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN +01A2; C; 01A3; # LATIN CAPITAL LETTER OI +01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK +01A6; C; 0280; # LATIN LETTER YR +01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO +01A9; C; 0283; # LATIN CAPITAL LETTER ESH +01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK +01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK +01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN +01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON +01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK +01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK +01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE +01B7; C; 0292; # LATIN CAPITAL LETTER EZH +01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED +01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE +01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON +01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +01C7; C; 01C9; # LATIN CAPITAL LETTER LJ +01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J +01CA; C; 01CC; # LATIN CAPITAL LETTER NJ +01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J +01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON +01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON +01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON +01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON +01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON +01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE +01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON +01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON +01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK +01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON +01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON +01F1; C; 01F3; # LATIN CAPITAL LETTER DZ +01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z +01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE +01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR +01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN +01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE +01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE +01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE +0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE +0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE +0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE +0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE +020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE +020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE +020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE +0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE +0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE +0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE +0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE +0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW +021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW +021C; C; 021D; # LATIN CAPITAL LETTER YOGH +021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON +0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG +0222; C; 0223; # LATIN CAPITAL LETTER OU +0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK +0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE +0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA +022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE +0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON +0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI +0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS +0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS +0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS +038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS +038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS +038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS +038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS +0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA +0392; C; 03B2; # GREEK CAPITAL LETTER BETA +0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA +0394; C; 03B4; # GREEK CAPITAL LETTER DELTA +0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON +0396; C; 03B6; # GREEK CAPITAL LETTER ZETA +0397; C; 03B7; # GREEK CAPITAL LETTER ETA +0398; C; 03B8; # GREEK CAPITAL LETTER THETA +0399; C; 03B9; # GREEK CAPITAL LETTER IOTA +039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA +039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA +039C; C; 03BC; # GREEK CAPITAL LETTER MU +039D; C; 03BD; # GREEK CAPITAL LETTER NU +039E; C; 03BE; # GREEK CAPITAL LETTER XI +039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON +03A0; C; 03C0; # GREEK CAPITAL LETTER PI +03A1; C; 03C1; # GREEK CAPITAL LETTER RHO +03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA +03A4; C; 03C4; # GREEK CAPITAL LETTER TAU +03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON +03A6; C; 03C6; # GREEK CAPITAL LETTER PHI +03A7; C; 03C7; # GREEK CAPITAL LETTER CHI +03A8; C; 03C8; # GREEK CAPITAL LETTER PSI +03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA +03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA +03D0; C; 03B2; # GREEK BETA SYMBOL +03D1; C; 03B8; # GREEK THETA SYMBOL +03D5; C; 03C6; # GREEK PHI SYMBOL +03D6; C; 03C0; # GREEK PI SYMBOL +03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA +03DA; C; 03DB; # GREEK LETTER STIGMA +03DC; C; 03DD; # GREEK LETTER DIGAMMA +03DE; C; 03DF; # GREEK LETTER KOPPA +03E0; C; 03E1; # GREEK LETTER SAMPI +03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI +03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI +03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI +03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI +03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA +03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA +03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI +03F0; C; 03BA; # GREEK KAPPA SYMBOL +03F1; C; 03C1; # GREEK RHO SYMBOL +03F2; C; 03C3; # GREEK LUNATE SIGMA SYMBOL +03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL +03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL +0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE +0401; C; 0451; # CYRILLIC CAPITAL LETTER IO +0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE +0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE +0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE +0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0407; C; 0457; # CYRILLIC CAPITAL LETTER YI +0408; C; 0458; # CYRILLIC CAPITAL LETTER JE +0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE +040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE +040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE +040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE +040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE +040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U +040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE +0410; C; 0430; # CYRILLIC CAPITAL LETTER A +0411; C; 0431; # CYRILLIC CAPITAL LETTER BE +0412; C; 0432; # CYRILLIC CAPITAL LETTER VE +0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE +0414; C; 0434; # CYRILLIC CAPITAL LETTER DE +0415; C; 0435; # CYRILLIC CAPITAL LETTER IE +0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE +0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE +0418; C; 0438; # CYRILLIC CAPITAL LETTER I +0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I +041A; C; 043A; # CYRILLIC CAPITAL LETTER KA +041B; C; 043B; # CYRILLIC CAPITAL LETTER EL +041C; C; 043C; # CYRILLIC CAPITAL LETTER EM +041D; C; 043D; # CYRILLIC CAPITAL LETTER EN +041E; C; 043E; # CYRILLIC CAPITAL LETTER O +041F; C; 043F; # CYRILLIC CAPITAL LETTER PE +0420; C; 0440; # CYRILLIC CAPITAL LETTER ER +0421; C; 0441; # CYRILLIC CAPITAL LETTER ES +0422; C; 0442; # CYRILLIC CAPITAL LETTER TE +0423; C; 0443; # CYRILLIC CAPITAL LETTER U +0424; C; 0444; # CYRILLIC CAPITAL LETTER EF +0425; C; 0445; # CYRILLIC CAPITAL LETTER HA +0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE +0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE +0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA +0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA +042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN +042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU +042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN +042D; C; 044D; # CYRILLIC CAPITAL LETTER E +042E; C; 044E; # CYRILLIC CAPITAL LETTER YU +042F; C; 044F; # CYRILLIC CAPITAL LETTER YA +0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA +0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT +0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E +0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS +0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS +046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS +046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS +046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI +0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI +0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA +0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA +0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0478; C; 0479; # CYRILLIC CAPITAL LETTER UK +047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA +047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047E; C; 047F; # CYRILLIC CAPITAL LETTER OT +0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA +048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL +048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN +048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK +0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE +0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK +0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER +049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER +049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE +04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA +04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER +04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE +04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK +04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA +04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER +04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER +04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U +04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER +04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE +04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA +04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE +04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER +04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK +04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL +04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK +04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL +04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE +04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL +04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE +04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE +04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE +04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA +04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE +04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON +04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O +04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON +04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE +0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE +0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE +0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE +0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE +050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE +050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE +050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE +0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB +0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN +0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM +0534; C; 0564; # ARMENIAN CAPITAL LETTER DA +0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH +0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA +0537; C; 0567; # ARMENIAN CAPITAL LETTER EH +0538; C; 0568; # ARMENIAN CAPITAL LETTER ET +0539; C; 0569; # ARMENIAN CAPITAL LETTER TO +053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE +053B; C; 056B; # ARMENIAN CAPITAL LETTER INI +053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN +053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH +053E; C; 056E; # ARMENIAN CAPITAL LETTER CA +053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN +0540; C; 0570; # ARMENIAN CAPITAL LETTER HO +0541; C; 0571; # ARMENIAN CAPITAL LETTER JA +0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD +0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH +0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN +0545; C; 0575; # ARMENIAN CAPITAL LETTER YI +0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW +0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA +0548; C; 0578; # ARMENIAN CAPITAL LETTER VO +0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA +054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH +054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH +054C; C; 057C; # ARMENIAN CAPITAL LETTER RA +054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH +054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW +054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN +0550; C; 0580; # ARMENIAN CAPITAL LETTER REH +0551; C; 0581; # ARMENIAN CAPITAL LETTER CO +0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN +0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR +0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH +0555; C; 0585; # ARMENIAN CAPITAL LETTER OH +0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH +0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN +1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW +1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE +1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW +1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW +1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE +1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW +1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW +1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA +1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW +1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW +1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW +1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE +1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON +1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE +1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW +1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS +1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA +1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW +1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW +1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE +1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW +1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW +1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW +1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW +1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW +1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE +1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE +1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW +1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE +1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW +1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW +1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW +1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE +1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE +1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE +1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW +1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW +1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE +1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW +1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE +1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW +1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW +1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW +1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW +1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW +1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW +1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE +1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW +1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE +1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE +1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS +1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE +1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW +1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE +1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS +1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE +1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW +1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW +1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW +1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS +1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE +1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE +1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING +1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW +1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE +1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW +1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE +1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE +1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE +1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW +1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW +1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE +1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE +1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW +1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE +1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE +1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE +1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW +1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE +1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI +1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA +1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI +1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA +1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI +1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA +1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI +1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA +1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI +1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA +1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI +1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI +1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA +1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY +1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON +1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA +1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBE; C; 03B9; # GREEK PROSGEGRAMMENI +1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI +1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA +1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA +1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA +1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI +1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY +1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON +1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA +1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA +1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI +1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY +1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON +1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA +1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA +1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA +1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA +1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA +1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +2126; C; 03C9; # OHM SIGN +212A; C; 006B; # KELVIN SIGN +212B; C; 00E5; # ANGSTROM SIGN +2160; C; 2170; # ROMAN NUMERAL ONE +2161; C; 2171; # ROMAN NUMERAL TWO +2162; C; 2172; # ROMAN NUMERAL THREE +2163; C; 2173; # ROMAN NUMERAL FOUR +2164; C; 2174; # ROMAN NUMERAL FIVE +2165; C; 2175; # ROMAN NUMERAL SIX +2166; C; 2176; # ROMAN NUMERAL SEVEN +2167; C; 2177; # ROMAN NUMERAL EIGHT +2168; C; 2178; # ROMAN NUMERAL NINE +2169; C; 2179; # ROMAN NUMERAL TEN +216A; C; 217A; # ROMAN NUMERAL ELEVEN +216B; C; 217B; # ROMAN NUMERAL TWELVE +216C; C; 217C; # ROMAN NUMERAL FIFTY +216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED +216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED +216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND +24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A +24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B +24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C +24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D +24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E +24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F +24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G +24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H +24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I +24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J +24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K +24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L +24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M +24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N +24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O +24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P +24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q +24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R +24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S +24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T +24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U +24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V +24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W +24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X +24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y +24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z +FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF +FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI +FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL +FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI +FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL +FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T +FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST +FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW +FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH +FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI +FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW +FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH +FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A +FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B +FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C +FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D +FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E +FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F +FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G +FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H +FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I +FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J +FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K +FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L +FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M +FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N +FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O +FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P +FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q +FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R +FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S +FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T +FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U +FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V +FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W +FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X +FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y +FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z +10400; C; 10428; # DESERET CAPITAL LETTER LONG I +10401; C; 10429; # DESERET CAPITAL LETTER LONG E +10402; C; 1042A; # DESERET CAPITAL LETTER LONG A +10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH +10404; C; 1042C; # DESERET CAPITAL LETTER LONG O +10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO +10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I +10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E +10408; C; 10430; # DESERET CAPITAL LETTER SHORT A +10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH +1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O +1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO +1040C; C; 10434; # DESERET CAPITAL LETTER AY +1040D; C; 10435; # DESERET CAPITAL LETTER OW +1040E; C; 10436; # DESERET CAPITAL LETTER WU +1040F; C; 10437; # DESERET CAPITAL LETTER YEE +10410; C; 10438; # DESERET CAPITAL LETTER H +10411; C; 10439; # DESERET CAPITAL LETTER PEE +10412; C; 1043A; # DESERET CAPITAL LETTER BEE +10413; C; 1043B; # DESERET CAPITAL LETTER TEE +10414; C; 1043C; # DESERET CAPITAL LETTER DEE +10415; C; 1043D; # DESERET CAPITAL LETTER CHEE +10416; C; 1043E; # DESERET CAPITAL LETTER JEE +10417; C; 1043F; # DESERET CAPITAL LETTER KAY +10418; C; 10440; # DESERET CAPITAL LETTER GAY +10419; C; 10441; # DESERET CAPITAL LETTER EF +1041A; C; 10442; # DESERET CAPITAL LETTER VEE +1041B; C; 10443; # DESERET CAPITAL LETTER ETH +1041C; C; 10444; # DESERET CAPITAL LETTER THEE +1041D; C; 10445; # DESERET CAPITAL LETTER ES +1041E; C; 10446; # DESERET CAPITAL LETTER ZEE +1041F; C; 10447; # DESERET CAPITAL LETTER ESH +10420; C; 10448; # DESERET CAPITAL LETTER ZHEE +10421; C; 10449; # DESERET CAPITAL LETTER ER +10422; C; 1044A; # DESERET CAPITAL LETTER EL +10423; C; 1044B; # DESERET CAPITAL LETTER EM +10424; C; 1044C; # DESERET CAPITAL LETTER EN +10425; C; 1044D; # DESERET CAPITAL LETTER ENG diff --git a/doc/specifications/CompositionExclusions-3.2.0.txt b/doc/specifications/CompositionExclusions-3.2.0.txt new file mode 100644 index 0000000..07a60b8 --- /dev/null +++ b/doc/specifications/CompositionExclusions-3.2.0.txt @@ -0,0 +1,176 @@ +# CompositionExclusions-3.2.0.txt +# Date: 2002-03-19,23:30:28 GMT [MD] +# +# This file lists the characters from the UAX #15 Composition Exclusion Table. +# +# The format of the comments in this file has been updated since the last version, +# CompositionExclusions-3.txt. The only substantive change to this file between that +# version and this one is the addition of U+2ADC FORKING. +# +# For more information, see +# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table +# ================================================ + +# (1) Script Specifics +# This list of characters cannot be derived from the UnicodeData file. +# ================================================ + +0958 # DEVANAGARI LETTER QA +0959 # DEVANAGARI LETTER KHHA +095A # DEVANAGARI LETTER GHHA +095B # DEVANAGARI LETTER ZA +095C # DEVANAGARI LETTER DDDHA +095D # DEVANAGARI LETTER RHA +095E # DEVANAGARI LETTER FA +095F # DEVANAGARI LETTER YYA +09DC # BENGALI LETTER RRA +09DD # BENGALI LETTER RHA +09DF # BENGALI LETTER YYA +0A33 # GURMUKHI LETTER LLA +0A36 # GURMUKHI LETTER SHA +0A59 # GURMUKHI LETTER KHHA +0A5A # GURMUKHI LETTER GHHA +0A5B # GURMUKHI LETTER ZA +0A5E # GURMUKHI LETTER FA +0B5C # ORIYA LETTER RRA +0B5D # ORIYA LETTER RHA +0F43 # TIBETAN LETTER GHA +0F4D # TIBETAN LETTER DDHA +0F52 # TIBETAN LETTER DHA +0F57 # TIBETAN LETTER BHA +0F5C # TIBETAN LETTER DZHA +0F69 # TIBETAN LETTER KSSA +0F76 # TIBETAN VOWEL SIGN VOCALIC R +0F78 # TIBETAN VOWEL SIGN VOCALIC L +0F93 # TIBETAN SUBJOINED LETTER GHA +0F9D # TIBETAN SUBJOINED LETTER DDHA +0FA2 # TIBETAN SUBJOINED LETTER DHA +0FA7 # TIBETAN SUBJOINED LETTER BHA +0FAC # TIBETAN SUBJOINED LETTER DZHA +0FB9 # TIBETAN SUBJOINED LETTER KSSA +FB1D # HEBREW LETTER YOD WITH HIRIQ +FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A # HEBREW LETTER SHIN WITH SHIN DOT +FB2B # HEBREW LETTER SHIN WITH SIN DOT +FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT +FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT +FB2E # HEBREW LETTER ALEF WITH PATAH +FB2F # HEBREW LETTER ALEF WITH QAMATS +FB30 # HEBREW LETTER ALEF WITH MAPIQ +FB31 # HEBREW LETTER BET WITH DAGESH +FB32 # HEBREW LETTER GIMEL WITH DAGESH +FB33 # HEBREW LETTER DALET WITH DAGESH +FB34 # HEBREW LETTER HE WITH MAPIQ +FB35 # HEBREW LETTER VAV WITH DAGESH +FB36 # HEBREW LETTER ZAYIN WITH DAGESH +FB38 # HEBREW LETTER TET WITH DAGESH +FB39 # HEBREW LETTER YOD WITH DAGESH +FB3A # HEBREW LETTER FINAL KAF WITH DAGESH +FB3B # HEBREW LETTER KAF WITH DAGESH +FB3C # HEBREW LETTER LAMED WITH DAGESH +FB3E # HEBREW LETTER MEM WITH DAGESH +FB40 # HEBREW LETTER NUN WITH DAGESH +FB41 # HEBREW LETTER SAMEKH WITH DAGESH +FB43 # HEBREW LETTER FINAL PE WITH DAGESH +FB44 # HEBREW LETTER PE WITH DAGESH +FB46 # HEBREW LETTER TSADI WITH DAGESH +FB47 # HEBREW LETTER QOF WITH DAGESH +FB48 # HEBREW LETTER RESH WITH DAGESH +FB49 # HEBREW LETTER SHIN WITH DAGESH +FB4A # HEBREW LETTER TAV WITH DAGESH +FB4B # HEBREW LETTER VAV WITH HOLAM +FB4C # HEBREW LETTER BET WITH RAFE +FB4D # HEBREW LETTER KAF WITH RAFE +FB4E # HEBREW LETTER PE WITH RAFE + +# Total code points: 67 + +# ================================================ +# (2) Post Composition Version precomposed characters +# These characters cannot be derived solely from the UnicodeData.txt file +# in this version of Unicode. +# ================================================ + +2ADC # FORKING +1D15E # MUSICAL SYMBOL HALF NOTE +1D15F # MUSICAL SYMBOL QUARTER NOTE +1D160 # MUSICAL SYMBOL EIGHTH NOTE +1D161 # MUSICAL SYMBOL SIXTEENTH NOTE +1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE +1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE +1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB # MUSICAL SYMBOL MINIMA +1D1BC # MUSICAL SYMBOL MINIMA BLACK +1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE +1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK +1D1BF # MUSICAL SYMBOL FUSA WHITE +1D1C0 # MUSICAL SYMBOL FUSA BLACK + +# Total code points: 14 + +# ================================================ +# (3) Singleton Decompositions +# These characters can be derived from the UnicodeData file +# by including all characters whose canonical decomposition +# consists of a single character. +# These characters are simply quoted here for reference. +# ================================================ + +# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +# 0343 COMBINING GREEK KORONIS +# 0374 GREEK NUMERAL SIGN +# 037E GREEK QUESTION MARK +# 0387 GREEK ANO TELEIA +# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA +# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA +# 1F75 GREEK SMALL LETTER ETA WITH OXIA +# 1F77 GREEK SMALL LETTER IOTA WITH OXIA +# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA +# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA +# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA +# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA +# 1FBE GREEK PROSGEGRAMMENI +# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA +# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA +# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA +# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA +# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA +# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA +# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA +# 1FFD GREEK OXIA +# 2000..2001 [2] EN QUAD..EM QUAD +# 2126 OHM SIGN +# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN +# 2329 LEFT-POINTING ANGLE BRACKET +# 232A RIGHT-POINTING ANGLE BRACKET +# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 +# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 +# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 +# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 +# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 924 + +# ================================================ +# (4) Non-Starter Decompositions +# These characters can be derived from the UnicodeData file +# by including all characters whose canonical decomposition consists +# of a sequence of characters, the first of which has a non-zero +# combining class. +# These characters are simply quoted here for reference. +# ================================================ + +# 0344 COMBINING GREEK DIALYTIKA TONOS +# 0F73 TIBETAN VOWEL SIGN II +# 0F75 TIBETAN VOWEL SIGN UU +# 0F81 TIBETAN VOWEL SIGN REVERSED II + +# Total code points: 4 + diff --git a/doc/specifications/LineBreak-3.2.0.txt b/doc/specifications/LineBreak-3.2.0.txt new file mode 100644 index 0000000..8549eb8 --- /dev/null +++ b/doc/specifications/LineBreak-3.2.0.txt @@ -0,0 +1,13889 @@ +# LineBreak-3.2.0.txt +# +# Line Break Properties +# +# This file is a supplement to the UnicodeData.txt file. +# It contains both normative and informative data. +# The format is two fields separated by a semicolon. +# Field 1: Unicode value +# Field 2: LineBreak property, consisting of one of the following values: +# Normative: +# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW" +# Informative: +# "XX", "OP", "CL", "QU", "NS", "EX", "SY", +# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY", +# "BB", "BA", "SA", "AI", "B2" +# - Assigned characters that are not listed explicitly are given the value +# "AL". +# - Unassigned characters are given the value "XX". +# - Characters ranges are specified as for other property files in +# the Unicode Character Database. +# +# The Unicode name of each character is provided in a comment for help +# in identifying the characters. +# +# See UTR #14: Line Breaking Properties, for more information +0000;CM # +0001;CM # +0002;CM # +0003;CM # +0004;CM # +0005;CM # +0006;CM # +0007;CM # +0008;CM # +0009;BA # +000A;LF # +000B;CM # +000C;BK # +000D;CR # +000E;CM # +000F;CM # +0010;CM # +0011;CM # +0012;CM # +0013;CM # +0014;CM # +0015;CM # +0016;CM # +0017;CM # +0018;CM # +0019;CM # +001A;CM # +001B;CM # +001C;CM # +001D;CM # +001E;CM # +001F;CM # +0020;SP # SPACE +0021;EX # EXCLAMATION MARK +0022;QU # QUOTATION MARK +0023;AL # NUMBER SIGN +0024;PR # DOLLAR SIGN +0025;PO # PERCENT SIGN +0026;AL # AMPERSAND +0027;QU # APOSTROPHE +0028;OP # LEFT PARENTHESIS +0029;CL # RIGHT PARENTHESIS +002A;AL # ASTERISK +002B;PR # PLUS SIGN +002C;IS # COMMA +002D;HY # HYPHEN-MINUS +002E;IS # FULL STOP +002F;SY # SOLIDUS +0030;NU # DIGIT ZERO +0031;NU # DIGIT ONE +0032;NU # DIGIT TWO +0033;NU # DIGIT THREE +0034;NU # DIGIT FOUR +0035;NU # DIGIT FIVE +0036;NU # DIGIT SIX +0037;NU # DIGIT SEVEN +0038;NU # DIGIT EIGHT +0039;NU # DIGIT NINE +003A;IS # COLON +003B;IS # SEMICOLON +003C;AL # LESS-THAN SIGN +003D;AL # EQUALS SIGN +003E;AL # GREATER-THAN SIGN +003F;EX # QUESTION MARK +0040;AL # COMMERCIAL AT +0041;AL # LATIN CAPITAL LETTER A +0042;AL # LATIN CAPITAL LETTER B +0043;AL # LATIN CAPITAL LETTER C +0044;AL # LATIN CAPITAL LETTER D +0045;AL # LATIN CAPITAL LETTER E +0046;AL # LATIN CAPITAL LETTER F +0047;AL # LATIN CAPITAL LETTER G +0048;AL # LATIN CAPITAL LETTER H +0049;AL # LATIN CAPITAL LETTER I +004A;AL # LATIN CAPITAL LETTER J +004B;AL # LATIN CAPITAL LETTER K +004C;AL # LATIN CAPITAL LETTER L +004D;AL # LATIN CAPITAL LETTER M +004E;AL # LATIN CAPITAL LETTER N +004F;AL # LATIN CAPITAL LETTER O +0050;AL # LATIN CAPITAL LETTER P +0051;AL # LATIN CAPITAL LETTER Q +0052;AL # LATIN CAPITAL LETTER R +0053;AL # LATIN CAPITAL LETTER S +0054;AL # LATIN CAPITAL LETTER T +0055;AL # LATIN CAPITAL LETTER U +0056;AL # LATIN CAPITAL LETTER V +0057;AL # LATIN CAPITAL LETTER W +0058;AL # LATIN CAPITAL LETTER X +0059;AL # LATIN CAPITAL LETTER Y +005A;AL # LATIN CAPITAL LETTER Z +005B;OP # LEFT SQUARE BRACKET +005C;PR # REVERSE SOLIDUS +005D;CL # RIGHT SQUARE BRACKET +005E;AL # CIRCUMFLEX ACCENT +005F;AL # LOW LINE +0060;AL # GRAVE ACCENT +0061;AL # LATIN SMALL LETTER A +0062;AL # LATIN SMALL LETTER B +0063;AL # LATIN SMALL LETTER C +0064;AL # LATIN SMALL LETTER D +0065;AL # LATIN SMALL LETTER E +0066;AL # LATIN SMALL LETTER F +0067;AL # LATIN SMALL LETTER G +0068;AL # LATIN SMALL LETTER H +0069;AL # LATIN SMALL LETTER I +006A;AL # LATIN SMALL LETTER J +006B;AL # LATIN SMALL LETTER K +006C;AL # LATIN SMALL LETTER L +006D;AL # LATIN SMALL LETTER M +006E;AL # LATIN SMALL LETTER N +006F;AL # LATIN SMALL LETTER O +0070;AL # LATIN SMALL LETTER P +0071;AL # LATIN SMALL LETTER Q +0072;AL # LATIN SMALL LETTER R +0073;AL # LATIN SMALL LETTER S +0074;AL # LATIN SMALL LETTER T +0075;AL # LATIN SMALL LETTER U +0076;AL # LATIN SMALL LETTER V +0077;AL # LATIN SMALL LETTER W +0078;AL # LATIN SMALL LETTER X +0079;AL # LATIN SMALL LETTER Y +007A;AL # LATIN SMALL LETTER Z +007B;OP # LEFT CURLY BRACKET +007C;BA # VERTICAL LINE +007D;CL # RIGHT CURLY BRACKET +007E;AL # TILDE +007F;CM # +0080;CM # +0081;CM # +0082;CM # +0083;CM # +0084;CM # +0085;CM # +0086;CM # +0087;CM # +0088;CM # +0089;CM # +008A;CM # +008B;CM # +008C;CM # +008D;CM # +008E;CM # +008F;CM # +0090;CM # +0091;CM # +0092;CM # +0093;CM # +0094;CM # +0095;CM # +0096;CM # +0097;CM # +0098;CM # +0099;CM # +009A;CM # +009B;CM # +009C;CM # +009D;CM # +009E;CM # +009F;CM # +00A0;GL # NO-BREAK SPACE +00A1;AI # INVERTED EXCLAMATION MARK +00A2;PO # CENT SIGN +00A3;PR # POUND SIGN +00A4;PR # CURRENCY SIGN +00A5;PR # YEN SIGN +00A6;AL # BROKEN BAR +00A7;AI # SECTION SIGN +00A8;AI # DIAERESIS +00A9;AL # COPYRIGHT SIGN +00AA;AI # FEMININE ORDINAL INDICATOR +00AB;QU # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00AC;AL # NOT SIGN +00AD;BA # SOFT HYPHEN +00AE;AL # REGISTERED SIGN +00AF;AL # MACRON +00B0;PO # DEGREE SIGN +00B1;PR # PLUS-MINUS SIGN +00B2;AI # SUPERSCRIPT TWO +00B3;AI # SUPERSCRIPT THREE +00B4;BB # ACUTE ACCENT +00B5;AL # MICRO SIGN +00B6;AI # PILCROW SIGN +00B7;AI # MIDDLE DOT +00B8;AI # CEDILLA +00B9;AI # SUPERSCRIPT ONE +00BA;AI # MASCULINE ORDINAL INDICATOR +00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +00BC;AI # VULGAR FRACTION ONE QUARTER +00BD;AI # VULGAR FRACTION ONE HALF +00BE;AI # VULGAR FRACTION THREE QUARTERS +00BF;AI # INVERTED QUESTION MARK +00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE +00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE +00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +00C3;AL # LATIN CAPITAL LETTER A WITH TILDE +00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS +00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE +00C6;AI # LATIN CAPITAL LETTER AE +00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA +00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE +00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE +00CA;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +00CB;AL # LATIN CAPITAL LETTER E WITH DIAERESIS +00CC;AL # LATIN CAPITAL LETTER I WITH GRAVE +00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE +00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS +00D0;AI # LATIN CAPITAL LETTER ETH +00D1;AL # LATIN CAPITAL LETTER N WITH TILDE +00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE +00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE +00D4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +00D5;AL # LATIN CAPITAL LETTER O WITH TILDE +00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS +00D7;AI # MULTIPLICATION SIGN +00D8;AI # LATIN CAPITAL LETTER O WITH STROKE +00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE +00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE +00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS +00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE +00DE;AI # LATIN CAPITAL LETTER THORN +00DF;AI # LATIN SMALL LETTER SHARP S +00E0;AI # LATIN SMALL LETTER A WITH GRAVE +00E1;AI # LATIN SMALL LETTER A WITH ACUTE +00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX +00E3;AL # LATIN SMALL LETTER A WITH TILDE +00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS +00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE +00E6;AI # LATIN SMALL LETTER AE +00E7;AL # LATIN SMALL LETTER C WITH CEDILLA +00E8;AI # LATIN SMALL LETTER E WITH GRAVE +00E9;AI # LATIN SMALL LETTER E WITH ACUTE +00EA;AI # LATIN SMALL LETTER E WITH CIRCUMFLEX +00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS +00EC;AI # LATIN SMALL LETTER I WITH GRAVE +00ED;AI # LATIN SMALL LETTER I WITH ACUTE +00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX +00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS +00F0;AI # LATIN SMALL LETTER ETH +00F1;AL # LATIN SMALL LETTER N WITH TILDE +00F2;AI # LATIN SMALL LETTER O WITH GRAVE +00F3;AI # LATIN SMALL LETTER O WITH ACUTE +00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX +00F5;AL # LATIN SMALL LETTER O WITH TILDE +00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS +00F7;AI # DIVISION SIGN +00F8;AI # LATIN SMALL LETTER O WITH STROKE +00F9;AI # LATIN SMALL LETTER U WITH GRAVE +00FA;AI # LATIN SMALL LETTER U WITH ACUTE +00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX +00FC;AI # LATIN SMALL LETTER U WITH DIAERESIS +00FD;AL # LATIN SMALL LETTER Y WITH ACUTE +00FE;AI # LATIN SMALL LETTER THORN +00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS +0100;AL # LATIN CAPITAL LETTER A WITH MACRON +0101;AI # LATIN SMALL LETTER A WITH MACRON +0102;AL # LATIN CAPITAL LETTER A WITH BREVE +0103;AL # LATIN SMALL LETTER A WITH BREVE +0104;AL # LATIN CAPITAL LETTER A WITH OGONEK +0105;AL # LATIN SMALL LETTER A WITH OGONEK +0106;AL # LATIN CAPITAL LETTER C WITH ACUTE +0107;AL # LATIN SMALL LETTER C WITH ACUTE +0108;AL # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +0109;AL # LATIN SMALL LETTER C WITH CIRCUMFLEX +010A;AL # LATIN CAPITAL LETTER C WITH DOT ABOVE +010B;AL # LATIN SMALL LETTER C WITH DOT ABOVE +010C;AL # LATIN CAPITAL LETTER C WITH CARON +010D;AL # LATIN SMALL LETTER C WITH CARON +010E;AL # LATIN CAPITAL LETTER D WITH CARON +010F;AL # LATIN SMALL LETTER D WITH CARON +0110;AL # LATIN CAPITAL LETTER D WITH STROKE +0111;AI # LATIN SMALL LETTER D WITH STROKE +0112;AL # LATIN CAPITAL LETTER E WITH MACRON +0113;AI # LATIN SMALL LETTER E WITH MACRON +0114;AL # LATIN CAPITAL LETTER E WITH BREVE +0115;AL # LATIN SMALL LETTER E WITH BREVE +0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE +0117;AL # LATIN SMALL LETTER E WITH DOT ABOVE +0118;AL # LATIN CAPITAL LETTER E WITH OGONEK +0119;AL # LATIN SMALL LETTER E WITH OGONEK +011A;AL # LATIN CAPITAL LETTER E WITH CARON +011B;AI # LATIN SMALL LETTER E WITH CARON +011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX +011E;AL # LATIN CAPITAL LETTER G WITH BREVE +011F;AL # LATIN SMALL LETTER G WITH BREVE +0120;AL # LATIN CAPITAL LETTER G WITH DOT ABOVE +0121;AL # LATIN SMALL LETTER G WITH DOT ABOVE +0122;AL # LATIN CAPITAL LETTER G WITH CEDILLA +0123;AL # LATIN SMALL LETTER G WITH CEDILLA +0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX +0126;AI # LATIN CAPITAL LETTER H WITH STROKE +0127;AI # LATIN SMALL LETTER H WITH STROKE +0128;AL # LATIN CAPITAL LETTER I WITH TILDE +0129;AL # LATIN SMALL LETTER I WITH TILDE +012A;AL # LATIN CAPITAL LETTER I WITH MACRON +012B;AI # LATIN SMALL LETTER I WITH MACRON +012C;AL # LATIN CAPITAL LETTER I WITH BREVE +012D;AL # LATIN SMALL LETTER I WITH BREVE +012E;AL # LATIN CAPITAL LETTER I WITH OGONEK +012F;AL # LATIN SMALL LETTER I WITH OGONEK +0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE +0131;AI # LATIN SMALL LETTER DOTLESS I +0132;AI # LATIN CAPITAL LIGATURE IJ +0133;AI # LATIN SMALL LIGATURE IJ +0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX +0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA +0137;AL # LATIN SMALL LETTER K WITH CEDILLA +0138;AI # LATIN SMALL LETTER KRA +0139;AL # LATIN CAPITAL LETTER L WITH ACUTE +013A;AL # LATIN SMALL LETTER L WITH ACUTE +013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA +013C;AL # LATIN SMALL LETTER L WITH CEDILLA +013D;AL # LATIN CAPITAL LETTER L WITH CARON +013E;AL # LATIN SMALL LETTER L WITH CARON +013F;AI # LATIN CAPITAL LETTER L WITH MIDDLE DOT +0140;AI # LATIN SMALL LETTER L WITH MIDDLE DOT +0141;AI # LATIN CAPITAL LETTER L WITH STROKE +0142;AI # LATIN SMALL LETTER L WITH STROKE +0143;AL # LATIN CAPITAL LETTER N WITH ACUTE +0144;AI # LATIN SMALL LETTER N WITH ACUTE +0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA +0146;AL # LATIN SMALL LETTER N WITH CEDILLA +0147;AL # LATIN CAPITAL LETTER N WITH CARON +0148;AI # LATIN SMALL LETTER N WITH CARON +0149;AI # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014A;AI # LATIN CAPITAL LETTER ENG +014B;AL # LATIN SMALL LETTER ENG +014C;AL # LATIN CAPITAL LETTER O WITH MACRON +014D;AI # LATIN SMALL LETTER O WITH MACRON +014E;AL # LATIN CAPITAL LETTER O WITH BREVE +014F;AL # LATIN SMALL LETTER O WITH BREVE +0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0152;AI # LATIN CAPITAL LIGATURE OE +0153;AI # LATIN SMALL LIGATURE OE +0154;AL # LATIN CAPITAL LETTER R WITH ACUTE +0155;AL # LATIN SMALL LETTER R WITH ACUTE +0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA +0157;AL # LATIN SMALL LETTER R WITH CEDILLA +0158;AL # LATIN CAPITAL LETTER R WITH CARON +0159;AL # LATIN SMALL LETTER R WITH CARON +015A;AL # LATIN CAPITAL LETTER S WITH ACUTE +015B;AL # LATIN SMALL LETTER S WITH ACUTE +015C;AL # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +015D;AL # LATIN SMALL LETTER S WITH CIRCUMFLEX +015E;AL # LATIN CAPITAL LETTER S WITH CEDILLA +015F;AL # LATIN SMALL LETTER S WITH CEDILLA +0160;AL # LATIN CAPITAL LETTER S WITH CARON +0161;AL # LATIN SMALL LETTER S WITH CARON +0162;AL # LATIN CAPITAL LETTER T WITH CEDILLA +0163;AL # LATIN SMALL LETTER T WITH CEDILLA +0164;AL # LATIN CAPITAL LETTER T WITH CARON +0165;AL # LATIN SMALL LETTER T WITH CARON +0166;AI # LATIN CAPITAL LETTER T WITH STROKE +0167;AI # LATIN SMALL LETTER T WITH STROKE +0168;AL # LATIN CAPITAL LETTER U WITH TILDE +0169;AL # LATIN SMALL LETTER U WITH TILDE +016A;AL # LATIN CAPITAL LETTER U WITH MACRON +016B;AI # LATIN SMALL LETTER U WITH MACRON +016C;AL # LATIN CAPITAL LETTER U WITH BREVE +016D;AL # LATIN SMALL LETTER U WITH BREVE +016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE +016F;AL # LATIN SMALL LETTER U WITH RING ABOVE +0170;AL # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0171;AL # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0172;AL # LATIN CAPITAL LETTER U WITH OGONEK +0173;AL # LATIN SMALL LETTER U WITH OGONEK +0174;AL # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +0175;AL # LATIN SMALL LETTER W WITH CIRCUMFLEX +0176;AL # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0177;AL # LATIN SMALL LETTER Y WITH CIRCUMFLEX +0178;AL # LATIN CAPITAL LETTER Y WITH DIAERESIS +0179;AL # LATIN CAPITAL LETTER Z WITH ACUTE +017A;AL # LATIN SMALL LETTER Z WITH ACUTE +017B;AL # LATIN CAPITAL LETTER Z WITH DOT ABOVE +017C;AL # LATIN SMALL LETTER Z WITH DOT ABOVE +017D;AL # LATIN CAPITAL LETTER Z WITH CARON +017E;AL # LATIN SMALL LETTER Z WITH CARON +017F;AL # LATIN SMALL LETTER LONG S +0180;AL # LATIN SMALL LETTER B WITH STROKE +0181;AL # LATIN CAPITAL LETTER B WITH HOOK +0182;AL # LATIN CAPITAL LETTER B WITH TOPBAR +0183;AL # LATIN SMALL LETTER B WITH TOPBAR +0184;AL # LATIN CAPITAL LETTER TONE SIX +0185;AL # LATIN SMALL LETTER TONE SIX +0186;AL # LATIN CAPITAL LETTER OPEN O +0187;AL # LATIN CAPITAL LETTER C WITH HOOK +0188;AL # LATIN SMALL LETTER C WITH HOOK +0189;AL # LATIN CAPITAL LETTER AFRICAN D +018A;AL # LATIN CAPITAL LETTER D WITH HOOK +018B;AL # LATIN CAPITAL LETTER D WITH TOPBAR +018C;AL # LATIN SMALL LETTER D WITH TOPBAR +018D;AL # LATIN SMALL LETTER TURNED DELTA +018E;AL # LATIN CAPITAL LETTER REVERSED E +018F;AL # LATIN CAPITAL LETTER SCHWA +0190;AL # LATIN CAPITAL LETTER OPEN E +0191;AL # LATIN CAPITAL LETTER F WITH HOOK +0192;AL # LATIN SMALL LETTER F WITH HOOK +0193;AL # LATIN CAPITAL LETTER G WITH HOOK +0194;AL # LATIN CAPITAL LETTER GAMMA +0195;AL # LATIN SMALL LETTER HV +0196;AL # LATIN CAPITAL LETTER IOTA +0197;AL # LATIN CAPITAL LETTER I WITH STROKE +0198;AL # LATIN CAPITAL LETTER K WITH HOOK +0199;AL # LATIN SMALL LETTER K WITH HOOK +019A;AL # LATIN SMALL LETTER L WITH BAR +019B;AL # LATIN SMALL LETTER LAMBDA WITH STROKE +019C;AL # LATIN CAPITAL LETTER TURNED M +019D;AL # LATIN CAPITAL LETTER N WITH LEFT HOOK +019E;AL # LATIN SMALL LETTER N WITH LONG RIGHT LEG +019F;AL # LATIN CAPITAL LETTER O WITH MIDDLE TILDE +01A0;AL # LATIN CAPITAL LETTER O WITH HORN +01A1;AL # LATIN SMALL LETTER O WITH HORN +01A2;AL # LATIN CAPITAL LETTER OI +01A3;AL # LATIN SMALL LETTER OI +01A4;AL # LATIN CAPITAL LETTER P WITH HOOK +01A5;AL # LATIN SMALL LETTER P WITH HOOK +01A6;AL # LATIN LETTER YR +01A7;AL # LATIN CAPITAL LETTER TONE TWO +01A8;AL # LATIN SMALL LETTER TONE TWO +01A9;AL # LATIN CAPITAL LETTER ESH +01AA;AL # LATIN LETTER REVERSED ESH LOOP +01AB;AL # LATIN SMALL LETTER T WITH PALATAL HOOK +01AC;AL # LATIN CAPITAL LETTER T WITH HOOK +01AD;AL # LATIN SMALL LETTER T WITH HOOK +01AE;AL # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK +01AF;AL # LATIN CAPITAL LETTER U WITH HORN +01B0;AL # LATIN SMALL LETTER U WITH HORN +01B1;AL # LATIN CAPITAL LETTER UPSILON +01B2;AL # LATIN CAPITAL LETTER V WITH HOOK +01B3;AL # LATIN CAPITAL LETTER Y WITH HOOK +01B4;AL # LATIN SMALL LETTER Y WITH HOOK +01B5;AL # LATIN CAPITAL LETTER Z WITH STROKE +01B6;AL # LATIN SMALL LETTER Z WITH STROKE +01B7;AL # LATIN CAPITAL LETTER EZH +01B8;AL # LATIN CAPITAL LETTER EZH REVERSED +01B9;AL # LATIN SMALL LETTER EZH REVERSED +01BA;AL # LATIN SMALL LETTER EZH WITH TAIL +01BB;AL # LATIN LETTER TWO WITH STROKE +01BC;AL # LATIN CAPITAL LETTER TONE FIVE +01BD;AL # LATIN SMALL LETTER TONE FIVE +01BE;AL # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE +01BF;AL # LATIN LETTER WYNN +01C0;AL # LATIN LETTER DENTAL CLICK +01C1;AL # LATIN LETTER LATERAL CLICK +01C2;AL # LATIN LETTER ALVEOLAR CLICK +01C3;AL # LATIN LETTER RETROFLEX CLICK +01C4;AL # LATIN CAPITAL LETTER DZ WITH CARON +01C5;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +01C6;AL # LATIN SMALL LETTER DZ WITH CARON +01C7;AL # LATIN CAPITAL LETTER LJ +01C8;AL # LATIN CAPITAL LETTER L WITH SMALL LETTER J +01C9;AL # LATIN SMALL LETTER LJ +01CA;AL # LATIN CAPITAL LETTER NJ +01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J +01CC;AL # LATIN SMALL LETTER NJ +01CD;AL # LATIN CAPITAL LETTER A WITH CARON +01CE;AI # LATIN SMALL LETTER A WITH CARON +01CF;AL # LATIN CAPITAL LETTER I WITH CARON +01D0;AI # LATIN SMALL LETTER I WITH CARON +01D1;AL # LATIN CAPITAL LETTER O WITH CARON +01D2;AI # LATIN SMALL LETTER O WITH CARON +01D3;AL # LATIN CAPITAL LETTER U WITH CARON +01D4;AI # LATIN SMALL LETTER U WITH CARON +01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01D6;AI # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D8;AI # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +01DA;AI # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01DC;AI # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DD;AL # LATIN SMALL LETTER TURNED E +01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON +01E3;AL # LATIN SMALL LETTER AE WITH MACRON +01E4;AL # LATIN CAPITAL LETTER G WITH STROKE +01E5;AL # LATIN SMALL LETTER G WITH STROKE +01E6;AL # LATIN CAPITAL LETTER G WITH CARON +01E7;AL # LATIN SMALL LETTER G WITH CARON +01E8;AL # LATIN CAPITAL LETTER K WITH CARON +01E9;AL # LATIN SMALL LETTER K WITH CARON +01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK +01EB;AL # LATIN SMALL LETTER O WITH OGONEK +01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON +01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON +01EF;AL # LATIN SMALL LETTER EZH WITH CARON +01F0;AL # LATIN SMALL LETTER J WITH CARON +01F1;AL # LATIN CAPITAL LETTER DZ +01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z +01F3;AL # LATIN SMALL LETTER DZ +01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE +01F5;AL # LATIN SMALL LETTER G WITH ACUTE +01F6;AL # LATIN CAPITAL LETTER HWAIR +01F7;AL # LATIN CAPITAL LETTER WYNN +01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE +01F9;AL # LATIN SMALL LETTER N WITH GRAVE +01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE +01FD;AL # LATIN SMALL LETTER AE WITH ACUTE +01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE +0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE +0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE +0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE +0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE +0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE +0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE +0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE +0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE +0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE +0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE +020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE +020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE +020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE +020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE +020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE +020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE +0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE +0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE +0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE +0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE +0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE +0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE +0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE +0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE +0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW +0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW +021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW +021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW +021C;AL # LATIN CAPITAL LETTER YOGH +021D;AL # LATIN SMALL LETTER YOGH +021E;AL # LATIN CAPITAL LETTER H WITH CARON +021F;AL # LATIN SMALL LETTER H WITH CARON +0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG +0222;AL # LATIN CAPITAL LETTER OU +0223;AL # LATIN SMALL LETTER OU +0224;AL # LATIN CAPITAL LETTER Z WITH HOOK +0225;AL # LATIN SMALL LETTER Z WITH HOOK +0226;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE +0227;AL # LATIN SMALL LETTER A WITH DOT ABOVE +0228;AL # LATIN CAPITAL LETTER E WITH CEDILLA +0229;AL # LATIN SMALL LETTER E WITH CEDILLA +022A;AL # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +022B;AL # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022C;AL # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +022D;AL # LATIN SMALL LETTER O WITH TILDE AND MACRON +022E;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE +022F;AL # LATIN SMALL LETTER O WITH DOT ABOVE +0230;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +0231;AL # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +0232;AL # LATIN CAPITAL LETTER Y WITH MACRON +0233;AL # LATIN SMALL LETTER Y WITH MACRON +0250;AL # LATIN SMALL LETTER TURNED A +0251;AI # LATIN SMALL LETTER ALPHA +0252;AL # LATIN SMALL LETTER TURNED ALPHA +0253;AL # LATIN SMALL LETTER B WITH HOOK +0254;AL # LATIN SMALL LETTER OPEN O +0255;AL # LATIN SMALL LETTER C WITH CURL +0256;AL # LATIN SMALL LETTER D WITH TAIL +0257;AL # LATIN SMALL LETTER D WITH HOOK +0258;AL # LATIN SMALL LETTER REVERSED E +0259;AL # LATIN SMALL LETTER SCHWA +025A;AL # LATIN SMALL LETTER SCHWA WITH HOOK +025B;AL # LATIN SMALL LETTER OPEN E +025C;AL # LATIN SMALL LETTER REVERSED OPEN E +025D;AL # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK +025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E +025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE +0260;AL # LATIN SMALL LETTER G WITH HOOK +0261;AI # LATIN SMALL LETTER SCRIPT G +0262;AL # LATIN LETTER SMALL CAPITAL G +0263;AL # LATIN SMALL LETTER GAMMA +0264;AL # LATIN SMALL LETTER RAMS HORN +0265;AL # LATIN SMALL LETTER TURNED H +0266;AL # LATIN SMALL LETTER H WITH HOOK +0267;AL # LATIN SMALL LETTER HENG WITH HOOK +0268;AL # LATIN SMALL LETTER I WITH STROKE +0269;AL # LATIN SMALL LETTER IOTA +026A;AL # LATIN LETTER SMALL CAPITAL I +026B;AL # LATIN SMALL LETTER L WITH MIDDLE TILDE +026C;AL # LATIN SMALL LETTER L WITH BELT +026D;AL # LATIN SMALL LETTER L WITH RETROFLEX HOOK +026E;AL # LATIN SMALL LETTER LEZH +026F;AL # LATIN SMALL LETTER TURNED M +0270;AL # LATIN SMALL LETTER TURNED M WITH LONG LEG +0271;AL # LATIN SMALL LETTER M WITH HOOK +0272;AL # LATIN SMALL LETTER N WITH LEFT HOOK +0273;AL # LATIN SMALL LETTER N WITH RETROFLEX HOOK +0274;AL # LATIN LETTER SMALL CAPITAL N +0275;AL # LATIN SMALL LETTER BARRED O +0276;AL # LATIN LETTER SMALL CAPITAL OE +0277;AL # LATIN SMALL LETTER CLOSED OMEGA +0278;AL # LATIN SMALL LETTER PHI +0279;AL # LATIN SMALL LETTER TURNED R +027A;AL # LATIN SMALL LETTER TURNED R WITH LONG LEG +027B;AL # LATIN SMALL LETTER TURNED R WITH HOOK +027C;AL # LATIN SMALL LETTER R WITH LONG LEG +027D;AL # LATIN SMALL LETTER R WITH TAIL +027E;AL # LATIN SMALL LETTER R WITH FISHHOOK +027F;AL # LATIN SMALL LETTER REVERSED R WITH FISHHOOK +0280;AL # LATIN LETTER SMALL CAPITAL R +0281;AL # LATIN LETTER SMALL CAPITAL INVERTED R +0282;AL # LATIN SMALL LETTER S WITH HOOK +0283;AL # LATIN SMALL LETTER ESH +0284;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK +0285;AL # LATIN SMALL LETTER SQUAT REVERSED ESH +0286;AL # LATIN SMALL LETTER ESH WITH CURL +0287;AL # LATIN SMALL LETTER TURNED T +0288;AL # LATIN SMALL LETTER T WITH RETROFLEX HOOK +0289;AL # LATIN SMALL LETTER U BAR +028A;AL # LATIN SMALL LETTER UPSILON +028B;AL # LATIN SMALL LETTER V WITH HOOK +028C;AL # LATIN SMALL LETTER TURNED V +028D;AL # LATIN SMALL LETTER TURNED W +028E;AL # LATIN SMALL LETTER TURNED Y +028F;AL # LATIN LETTER SMALL CAPITAL Y +0290;AL # LATIN SMALL LETTER Z WITH RETROFLEX HOOK +0291;AL # LATIN SMALL LETTER Z WITH CURL +0292;AL # LATIN SMALL LETTER EZH +0293;AL # LATIN SMALL LETTER EZH WITH CURL +0294;AL # LATIN LETTER GLOTTAL STOP +0295;AL # LATIN LETTER PHARYNGEAL VOICED FRICATIVE +0296;AL # LATIN LETTER INVERTED GLOTTAL STOP +0297;AL # LATIN LETTER STRETCHED C +0298;AL # LATIN LETTER BILABIAL CLICK +0299;AL # LATIN LETTER SMALL CAPITAL B +029A;AL # LATIN SMALL LETTER CLOSED OPEN E +029B;AL # LATIN LETTER SMALL CAPITAL G WITH HOOK +029C;AL # LATIN LETTER SMALL CAPITAL H +029D;AL # LATIN SMALL LETTER J WITH CROSSED-TAIL +029E;AL # LATIN SMALL LETTER TURNED K +029F;AL # LATIN LETTER SMALL CAPITAL L +02A0;AL # LATIN SMALL LETTER Q WITH HOOK +02A1;AL # LATIN LETTER GLOTTAL STOP WITH STROKE +02A2;AL # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE +02A3;AL # LATIN SMALL LETTER DZ DIGRAPH +02A4;AL # LATIN SMALL LETTER DEZH DIGRAPH +02A5;AL # LATIN SMALL LETTER DZ DIGRAPH WITH CURL +02A6;AL # LATIN SMALL LETTER TS DIGRAPH +02A7;AL # LATIN SMALL LETTER TESH DIGRAPH +02A8;AL # LATIN SMALL LETTER TC DIGRAPH WITH CURL +02A9;AL # LATIN SMALL LETTER FENG DIGRAPH +02AA;AL # LATIN SMALL LETTER LS DIGRAPH +02AB;AL # LATIN SMALL LETTER LZ DIGRAPH +02AC;AL # LATIN LETTER BILABIAL PERCUSSIVE +02AD;AL # LATIN LETTER BIDENTAL PERCUSSIVE +02B0;AL # MODIFIER LETTER SMALL H +02B1;AL # MODIFIER LETTER SMALL H WITH HOOK +02B2;AL # MODIFIER LETTER SMALL J +02B3;AL # MODIFIER LETTER SMALL R +02B4;AL # MODIFIER LETTER SMALL TURNED R +02B5;AL # MODIFIER LETTER SMALL TURNED R WITH HOOK +02B6;AL # MODIFIER LETTER SMALL CAPITAL INVERTED R +02B7;AL # MODIFIER LETTER SMALL W +02B8;AL # MODIFIER LETTER SMALL Y +02B9;AL # MODIFIER LETTER PRIME +02BA;AL # MODIFIER LETTER DOUBLE PRIME +02BB;AL # MODIFIER LETTER TURNED COMMA +02BC;AL # MODIFIER LETTER APOSTROPHE +02BD;AL # MODIFIER LETTER REVERSED COMMA +02BE;AL # MODIFIER LETTER RIGHT HALF RING +02BF;AL # MODIFIER LETTER LEFT HALF RING +02C0;AL # MODIFIER LETTER GLOTTAL STOP +02C1;AL # MODIFIER LETTER REVERSED GLOTTAL STOP +02C2;AL # MODIFIER LETTER LEFT ARROWHEAD +02C3;AL # MODIFIER LETTER RIGHT ARROWHEAD +02C4;AL # MODIFIER LETTER UP ARROWHEAD +02C5;AL # MODIFIER LETTER DOWN ARROWHEAD +02C6;AL # MODIFIER LETTER CIRCUMFLEX ACCENT +02C7;AI # CARON +02C8;BB # MODIFIER LETTER VERTICAL LINE +02C9;AI # MODIFIER LETTER MACRON +02CA;AI # MODIFIER LETTER ACUTE ACCENT +02CB;AI # MODIFIER LETTER GRAVE ACCENT +02CC;BB # MODIFIER LETTER LOW VERTICAL LINE +02CD;AI # MODIFIER LETTER LOW MACRON +02CE;AL # MODIFIER LETTER LOW GRAVE ACCENT +02CF;AL # MODIFIER LETTER LOW ACUTE ACCENT +02D0;AI # MODIFIER LETTER TRIANGULAR COLON +02D1;AL # MODIFIER LETTER HALF TRIANGULAR COLON +02D2;AL # MODIFIER LETTER CENTRED RIGHT HALF RING +02D3;AL # MODIFIER LETTER CENTRED LEFT HALF RING +02D4;AL # MODIFIER LETTER UP TACK +02D5;AL # MODIFIER LETTER DOWN TACK +02D6;AL # MODIFIER LETTER PLUS SIGN +02D7;AL # MODIFIER LETTER MINUS SIGN +02D8;AI # BREVE +02D9;AI # DOT ABOVE +02DA;AI # RING ABOVE +02DB;AI # OGONEK +02DC;AL # SMALL TILDE +02DD;AI # DOUBLE ACUTE ACCENT +02DE;AL # MODIFIER LETTER RHOTIC HOOK +02DF;AL # MODIFIER LETTER CROSS ACCENT +02E0;AL # MODIFIER LETTER SMALL GAMMA +02E1;AL # MODIFIER LETTER SMALL L +02E2;AL # MODIFIER LETTER SMALL S +02E3;AL # MODIFIER LETTER SMALL X +02E4;AL # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +02E5;AL # MODIFIER LETTER EXTRA-HIGH TONE BAR +02E6;AL # MODIFIER LETTER HIGH TONE BAR +02E7;AL # MODIFIER LETTER MID TONE BAR +02E8;AL # MODIFIER LETTER LOW TONE BAR +02E9;AL # MODIFIER LETTER EXTRA-LOW TONE BAR +02EA;AL # MODIFIER LETTER YIN DEPARTING TONE MARK +02EB;AL # MODIFIER LETTER YANG DEPARTING TONE MARK +02EC;AL # MODIFIER LETTER VOICING +02ED;AL # MODIFIER LETTER UNASPIRATED +02EE;AL # MODIFIER LETTER DOUBLE APOSTROPHE +0300;CM # COMBINING GRAVE ACCENT +0301;CM # COMBINING ACUTE ACCENT +0302;CM # COMBINING CIRCUMFLEX ACCENT +0303;CM # COMBINING TILDE +0304;CM # COMBINING MACRON +0305;CM # COMBINING OVERLINE +0306;CM # COMBINING BREVE +0307;CM # COMBINING DOT ABOVE +0308;CM # COMBINING DIAERESIS +0309;CM # COMBINING HOOK ABOVE +030A;CM # COMBINING RING ABOVE +030B;CM # COMBINING DOUBLE ACUTE ACCENT +030C;CM # COMBINING CARON +030D;CM # COMBINING VERTICAL LINE ABOVE +030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE +030F;CM # COMBINING DOUBLE GRAVE ACCENT +0310;CM # COMBINING CANDRABINDU +0311;CM # COMBINING INVERTED BREVE +0312;CM # COMBINING TURNED COMMA ABOVE +0313;CM # COMBINING COMMA ABOVE +0314;CM # COMBINING REVERSED COMMA ABOVE +0315;CM # COMBINING COMMA ABOVE RIGHT +0316;CM # COMBINING GRAVE ACCENT BELOW +0317;CM # COMBINING ACUTE ACCENT BELOW +0318;CM # COMBINING LEFT TACK BELOW +0319;CM # COMBINING RIGHT TACK BELOW +031A;CM # COMBINING LEFT ANGLE ABOVE +031B;CM # COMBINING HORN +031C;CM # COMBINING LEFT HALF RING BELOW +031D;CM # COMBINING UP TACK BELOW +031E;CM # COMBINING DOWN TACK BELOW +031F;CM # COMBINING PLUS SIGN BELOW +0320;CM # COMBINING MINUS SIGN BELOW +0321;CM # COMBINING PALATALIZED HOOK BELOW +0322;CM # COMBINING RETROFLEX HOOK BELOW +0323;CM # COMBINING DOT BELOW +0324;CM # COMBINING DIAERESIS BELOW +0325;CM # COMBINING RING BELOW +0326;CM # COMBINING COMMA BELOW +0327;CM # COMBINING CEDILLA +0328;CM # COMBINING OGONEK +0329;CM # COMBINING VERTICAL LINE BELOW +032A;CM # COMBINING BRIDGE BELOW +032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW +032C;CM # COMBINING CARON BELOW +032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW +032E;CM # COMBINING BREVE BELOW +032F;CM # COMBINING INVERTED BREVE BELOW +0330;CM # COMBINING TILDE BELOW +0331;CM # COMBINING MACRON BELOW +0332;CM # COMBINING LOW LINE +0333;CM # COMBINING DOUBLE LOW LINE +0334;CM # COMBINING TILDE OVERLAY +0335;CM # COMBINING SHORT STROKE OVERLAY +0336;CM # COMBINING LONG STROKE OVERLAY +0337;CM # COMBINING SHORT SOLIDUS OVERLAY +0338;CM # COMBINING LONG SOLIDUS OVERLAY +0339;CM # COMBINING RIGHT HALF RING BELOW +033A;CM # COMBINING INVERTED BRIDGE BELOW +033B;CM # COMBINING SQUARE BELOW +033C;CM # COMBINING SEAGULL BELOW +033D;CM # COMBINING X ABOVE +033E;CM # COMBINING VERTICAL TILDE +033F;CM # COMBINING DOUBLE OVERLINE +0340;CM # COMBINING GRAVE TONE MARK +0341;CM # COMBINING ACUTE TONE MARK +0342;CM # COMBINING GREEK PERISPOMENI +0343;CM # COMBINING GREEK KORONIS +0344;CM # COMBINING GREEK DIALYTIKA TONOS +0345;CM # COMBINING GREEK YPOGEGRAMMENI +0346;CM # COMBINING BRIDGE ABOVE +0347;CM # COMBINING EQUALS SIGN BELOW +0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW +0349;CM # COMBINING LEFT ANGLE BELOW +034A;CM # COMBINING NOT TILDE ABOVE +034B;CM # COMBINING HOMOTHETIC ABOVE +034C;CM # COMBINING ALMOST EQUAL TO ABOVE +034D;CM # COMBINING LEFT RIGHT ARROW BELOW +034E;CM # COMBINING UPWARDS ARROW BELOW +034F;CM # COMBINING GRAPHEME JOINER +0360;CM # COMBINING DOUBLE TILDE +0361;CM # COMBINING DOUBLE INVERTED BREVE +0362;CM # COMBINING DOUBLE RIGHTWARDS ARROW BELOW +0363;CM # COMBINING LATIN SMALL LETTER A +0364;CM # COMBINING LATIN SMALL LETTER E +0365;CM # COMBINING LATIN SMALL LETTER I +0366;CM # COMBINING LATIN SMALL LETTER O +0367;CM # COMBINING LATIN SMALL LETTER U +0368;CM # COMBINING LATIN SMALL LETTER C +0369;CM # COMBINING LATIN SMALL LETTER D +036A;CM # COMBINING LATIN SMALL LETTER H +036B;CM # COMBINING LATIN SMALL LETTER M +036C;CM # COMBINING LATIN SMALL LETTER R +036D;CM # COMBINING LATIN SMALL LETTER T +036E;CM # COMBINING LATIN SMALL LETTER V +036F;CM # COMBINING LATIN SMALL LETTER X +0374;AL # GREEK NUMERAL SIGN +0375;AL # GREEK LOWER NUMERAL SIGN +037A;AL # GREEK YPOGEGRAMMENI +037E;AL # GREEK QUESTION MARK +0384;AL # GREEK TONOS +0385;AL # GREEK DIALYTIKA TONOS +0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS +0387;AL # GREEK ANO TELEIA +0388;AL # GREEK CAPITAL LETTER EPSILON WITH TONOS +0389;AL # GREEK CAPITAL LETTER ETA WITH TONOS +038A;AL # GREEK CAPITAL LETTER IOTA WITH TONOS +038C;AL # GREEK CAPITAL LETTER OMICRON WITH TONOS +038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS +038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS +0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +0391;AI # GREEK CAPITAL LETTER ALPHA +0392;AI # GREEK CAPITAL LETTER BETA +0393;AI # GREEK CAPITAL LETTER GAMMA +0394;AI # GREEK CAPITAL LETTER DELTA +0395;AI # GREEK CAPITAL LETTER EPSILON +0396;AI # GREEK CAPITAL LETTER ZETA +0397;AI # GREEK CAPITAL LETTER ETA +0398;AI # GREEK CAPITAL LETTER THETA +0399;AI # GREEK CAPITAL LETTER IOTA +039A;AI # GREEK CAPITAL LETTER KAPPA +039B;AI # GREEK CAPITAL LETTER LAMDA +039C;AI # GREEK CAPITAL LETTER MU +039D;AI # GREEK CAPITAL LETTER NU +039E;AI # GREEK CAPITAL LETTER XI +039F;AI # GREEK CAPITAL LETTER OMICRON +03A0;AI # GREEK CAPITAL LETTER PI +03A1;AI # GREEK CAPITAL LETTER RHO +03A3;AI # GREEK CAPITAL LETTER SIGMA +03A4;AI # GREEK CAPITAL LETTER TAU +03A5;AI # GREEK CAPITAL LETTER UPSILON +03A6;AI # GREEK CAPITAL LETTER PHI +03A7;AI # GREEK CAPITAL LETTER CHI +03A8;AI # GREEK CAPITAL LETTER PSI +03A9;AI # GREEK CAPITAL LETTER OMEGA +03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS +03AD;AL # GREEK SMALL LETTER EPSILON WITH TONOS +03AE;AL # GREEK SMALL LETTER ETA WITH TONOS +03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS +03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03B1;AI # GREEK SMALL LETTER ALPHA +03B2;AI # GREEK SMALL LETTER BETA +03B3;AI # GREEK SMALL LETTER GAMMA +03B4;AI # GREEK SMALL LETTER DELTA +03B5;AI # GREEK SMALL LETTER EPSILON +03B6;AI # GREEK SMALL LETTER ZETA +03B7;AI # GREEK SMALL LETTER ETA +03B8;AI # GREEK SMALL LETTER THETA +03B9;AI # GREEK SMALL LETTER IOTA +03BA;AI # GREEK SMALL LETTER KAPPA +03BB;AI # GREEK SMALL LETTER LAMDA +03BC;AI # GREEK SMALL LETTER MU +03BD;AI # GREEK SMALL LETTER NU +03BE;AI # GREEK SMALL LETTER XI +03BF;AI # GREEK SMALL LETTER OMICRON +03C0;AI # GREEK SMALL LETTER PI +03C1;AI # GREEK SMALL LETTER RHO +03C2;AL # GREEK SMALL LETTER FINAL SIGMA +03C3;AI # GREEK SMALL LETTER SIGMA +03C4;AI # GREEK SMALL LETTER TAU +03C5;AI # GREEK SMALL LETTER UPSILON +03C6;AI # GREEK SMALL LETTER PHI +03C7;AI # GREEK SMALL LETTER CHI +03C8;AI # GREEK SMALL LETTER PSI +03C9;AI # GREEK SMALL LETTER OMEGA +03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA +03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS +03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS +03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS +03D0;AL # GREEK BETA SYMBOL +03D1;AL # GREEK THETA SYMBOL +03D2;AL # GREEK UPSILON WITH HOOK SYMBOL +03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL +03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +03D5;AL # GREEK PHI SYMBOL +03D6;AL # GREEK PI SYMBOL +03D7;AL # GREEK KAI SYMBOL +03D8;AL # GREEK LETTER ARCHAIC KOPPA +03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA +03DA;AL # GREEK LETTER STIGMA +03DB;AL # GREEK SMALL LETTER STIGMA +03DC;AL # GREEK LETTER DIGAMMA +03DD;AL # GREEK SMALL LETTER DIGAMMA +03DE;AL # GREEK LETTER KOPPA +03DF;AL # GREEK SMALL LETTER KOPPA +03E0;AL # GREEK LETTER SAMPI +03E1;AL # GREEK SMALL LETTER SAMPI +03E2;AL # COPTIC CAPITAL LETTER SHEI +03E3;AL # COPTIC SMALL LETTER SHEI +03E4;AL # COPTIC CAPITAL LETTER FEI +03E5;AL # COPTIC SMALL LETTER FEI +03E6;AL # COPTIC CAPITAL LETTER KHEI +03E7;AL # COPTIC SMALL LETTER KHEI +03E8;AL # COPTIC CAPITAL LETTER HORI +03E9;AL # COPTIC SMALL LETTER HORI +03EA;AL # COPTIC CAPITAL LETTER GANGIA +03EB;AL # COPTIC SMALL LETTER GANGIA +03EC;AL # COPTIC CAPITAL LETTER SHIMA +03ED;AL # COPTIC SMALL LETTER SHIMA +03EE;AL # COPTIC CAPITAL LETTER DEI +03EF;AL # COPTIC SMALL LETTER DEI +03F0;AL # GREEK KAPPA SYMBOL +03F1;AL # GREEK RHO SYMBOL +03F2;AL # GREEK LUNATE SIGMA SYMBOL +03F3;AL # GREEK LETTER YOT +03F4;AL # GREEK CAPITAL THETA SYMBOL +03F5;AL # GREEK LUNATE EPSILON SYMBOL +03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL +0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE +0401;AI # CYRILLIC CAPITAL LETTER IO +0402;AL # CYRILLIC CAPITAL LETTER DJE +0403;AL # CYRILLIC CAPITAL LETTER GJE +0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0405;AL # CYRILLIC CAPITAL LETTER DZE +0406;AL # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0407;AL # CYRILLIC CAPITAL LETTER YI +0408;AL # CYRILLIC CAPITAL LETTER JE +0409;AL # CYRILLIC CAPITAL LETTER LJE +040A;AL # CYRILLIC CAPITAL LETTER NJE +040B;AL # CYRILLIC CAPITAL LETTER TSHE +040C;AL # CYRILLIC CAPITAL LETTER KJE +040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE +040E;AL # CYRILLIC CAPITAL LETTER SHORT U +040F;AL # CYRILLIC CAPITAL LETTER DZHE +0410;AI # CYRILLIC CAPITAL LETTER A +0411;AI # CYRILLIC CAPITAL LETTER BE +0412;AI # CYRILLIC CAPITAL LETTER VE +0413;AI # CYRILLIC CAPITAL LETTER GHE +0414;AI # CYRILLIC CAPITAL LETTER DE +0415;AI # CYRILLIC CAPITAL LETTER IE +0416;AI # CYRILLIC CAPITAL LETTER ZHE +0417;AI # CYRILLIC CAPITAL LETTER ZE +0418;AI # CYRILLIC CAPITAL LETTER I +0419;AI # CYRILLIC CAPITAL LETTER SHORT I +041A;AI # CYRILLIC CAPITAL LETTER KA +041B;AI # CYRILLIC CAPITAL LETTER EL +041C;AI # CYRILLIC CAPITAL LETTER EM +041D;AI # CYRILLIC CAPITAL LETTER EN +041E;AI # CYRILLIC CAPITAL LETTER O +041F;AI # CYRILLIC CAPITAL LETTER PE +0420;AI # CYRILLIC CAPITAL LETTER ER +0421;AI # CYRILLIC CAPITAL LETTER ES +0422;AI # CYRILLIC CAPITAL LETTER TE +0423;AI # CYRILLIC CAPITAL LETTER U +0424;AI # CYRILLIC CAPITAL LETTER EF +0425;AI # CYRILLIC CAPITAL LETTER HA +0426;AI # CYRILLIC CAPITAL LETTER TSE +0427;AI # CYRILLIC CAPITAL LETTER CHE +0428;AI # CYRILLIC CAPITAL LETTER SHA +0429;AI # CYRILLIC CAPITAL LETTER SHCHA +042A;AI # CYRILLIC CAPITAL LETTER HARD SIGN +042B;AI # CYRILLIC CAPITAL LETTER YERU +042C;AI # CYRILLIC CAPITAL LETTER SOFT SIGN +042D;AI # CYRILLIC CAPITAL LETTER E +042E;AI # CYRILLIC CAPITAL LETTER YU +042F;AI # CYRILLIC CAPITAL LETTER YA +0430;AI # CYRILLIC SMALL LETTER A +0431;AI # CYRILLIC SMALL LETTER BE +0432;AI # CYRILLIC SMALL LETTER VE +0433;AI # CYRILLIC SMALL LETTER GHE +0434;AI # CYRILLIC SMALL LETTER DE +0435;AI # CYRILLIC SMALL LETTER IE +0436;AI # CYRILLIC SMALL LETTER ZHE +0437;AI # CYRILLIC SMALL LETTER ZE +0438;AI # CYRILLIC SMALL LETTER I +0439;AI # CYRILLIC SMALL LETTER SHORT I +043A;AI # CYRILLIC SMALL LETTER KA +043B;AI # CYRILLIC SMALL LETTER EL +043C;AI # CYRILLIC SMALL LETTER EM +043D;AI # CYRILLIC SMALL LETTER EN +043E;AI # CYRILLIC SMALL LETTER O +043F;AI # CYRILLIC SMALL LETTER PE +0440;AI # CYRILLIC SMALL LETTER ER +0441;AI # CYRILLIC SMALL LETTER ES +0442;AI # CYRILLIC SMALL LETTER TE +0443;AI # CYRILLIC SMALL LETTER U +0444;AI # CYRILLIC SMALL LETTER EF +0445;AI # CYRILLIC SMALL LETTER HA +0446;AI # CYRILLIC SMALL LETTER TSE +0447;AI # CYRILLIC SMALL LETTER CHE +0448;AI # CYRILLIC SMALL LETTER SHA +0449;AI # CYRILLIC SMALL LETTER SHCHA +044A;AI # CYRILLIC SMALL LETTER HARD SIGN +044B;AI # CYRILLIC SMALL LETTER YERU +044C;AI # CYRILLIC SMALL LETTER SOFT SIGN +044D;AI # CYRILLIC SMALL LETTER E +044E;AI # CYRILLIC SMALL LETTER YU +044F;AI # CYRILLIC SMALL LETTER YA +0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE +0451;AI # CYRILLIC SMALL LETTER IO +0452;AL # CYRILLIC SMALL LETTER DJE +0453;AL # CYRILLIC SMALL LETTER GJE +0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE +0455;AL # CYRILLIC SMALL LETTER DZE +0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0457;AL # CYRILLIC SMALL LETTER YI +0458;AL # CYRILLIC SMALL LETTER JE +0459;AL # CYRILLIC SMALL LETTER LJE +045A;AL # CYRILLIC SMALL LETTER NJE +045B;AL # CYRILLIC SMALL LETTER TSHE +045C;AL # CYRILLIC SMALL LETTER KJE +045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE +045E;AL # CYRILLIC SMALL LETTER SHORT U +045F;AL # CYRILLIC SMALL LETTER DZHE +0460;AL # CYRILLIC CAPITAL LETTER OMEGA +0461;AL # CYRILLIC SMALL LETTER OMEGA +0462;AL # CYRILLIC CAPITAL LETTER YAT +0463;AL # CYRILLIC SMALL LETTER YAT +0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E +0465;AL # CYRILLIC SMALL LETTER IOTIFIED E +0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS +0467;AL # CYRILLIC SMALL LETTER LITTLE YUS +0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS +0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS +046A;AL # CYRILLIC CAPITAL LETTER BIG YUS +046B;AL # CYRILLIC SMALL LETTER BIG YUS +046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS +046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS +046E;AL # CYRILLIC CAPITAL LETTER KSI +046F;AL # CYRILLIC SMALL LETTER KSI +0470;AL # CYRILLIC CAPITAL LETTER PSI +0471;AL # CYRILLIC SMALL LETTER PSI +0472;AL # CYRILLIC CAPITAL LETTER FITA +0473;AL # CYRILLIC SMALL LETTER FITA +0474;AL # CYRILLIC CAPITAL LETTER IZHITSA +0475;AL # CYRILLIC SMALL LETTER IZHITSA +0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0478;AL # CYRILLIC CAPITAL LETTER UK +0479;AL # CYRILLIC SMALL LETTER UK +047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA +047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA +047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO +047E;AL # CYRILLIC CAPITAL LETTER OT +047F;AL # CYRILLIC SMALL LETTER OT +0480;AL # CYRILLIC CAPITAL LETTER KOPPA +0481;AL # CYRILLIC SMALL LETTER KOPPA +0482;AL # CYRILLIC THOUSANDS SIGN +0483;CM # COMBINING CYRILLIC TITLO +0484;CM # COMBINING CYRILLIC PALATALIZATION +0485;CM # COMBINING CYRILLIC DASIA PNEUMATA +0486;CM # COMBINING CYRILLIC PSILI PNEUMATA +0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN +0489;CM # COMBINING CYRILLIC MILLIONS SIGN +048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL +048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL +048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN +048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN +048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK +048F;AL # CYRILLIC SMALL LETTER ER WITH TICK +0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN +0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE +0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE +0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK +0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK +0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER +0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER +0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER +049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER +049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER +049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE +049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE +049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE +04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA +04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA +04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER +04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER +04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE +04A5;AL # CYRILLIC SMALL LIGATURE EN GHE +04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK +04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK +04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA +04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA +04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER +04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER +04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER +04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER +04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U +04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U +04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER +04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER +04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE +04B5;AL # CYRILLIC SMALL LIGATURE TE TSE +04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER +04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE +04BA;AL # CYRILLIC CAPITAL LETTER SHHA +04BB;AL # CYRILLIC SMALL LETTER SHHA +04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE +04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE +04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER +04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER +04C0;AL # CYRILLIC LETTER PALOCHKA +04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE +04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK +04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK +04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL +04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL +04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK +04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK +04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL +04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL +04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE +04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE +04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL +04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL +04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE +04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE +04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS +04D4;AL # CYRILLIC CAPITAL LIGATURE A IE +04D5;AL # CYRILLIC SMALL LIGATURE A IE +04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE +04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE +04D8;AL # CYRILLIC CAPITAL LETTER SCHWA +04D9;AL # CYRILLIC SMALL LETTER SCHWA +04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS +04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS +04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE +04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE +04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON +04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON +04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS +04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS +04E8;AL # CYRILLIC CAPITAL LETTER BARRED O +04E9;AL # CYRILLIC SMALL LETTER BARRED O +04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS +04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS +04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON +04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON +04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS +04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0500;AL # CYRILLIC CAPITAL LETTER KOMI DE +0501;AL # CYRILLIC SMALL LETTER KOMI DE +0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE +0503;AL # CYRILLIC SMALL LETTER KOMI DJE +0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE +0505;AL # CYRILLIC SMALL LETTER KOMI ZJE +0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE +0507;AL # CYRILLIC SMALL LETTER KOMI DZJE +0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE +0509;AL # CYRILLIC SMALL LETTER KOMI LJE +050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE +050B;AL # CYRILLIC SMALL LETTER KOMI NJE +050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE +050D;AL # CYRILLIC SMALL LETTER KOMI SJE +050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE +050F;AL # CYRILLIC SMALL LETTER KOMI TJE +0531;AL # ARMENIAN CAPITAL LETTER AYB +0532;AL # ARMENIAN CAPITAL LETTER BEN +0533;AL # ARMENIAN CAPITAL LETTER GIM +0534;AL # ARMENIAN CAPITAL LETTER DA +0535;AL # ARMENIAN CAPITAL LETTER ECH +0536;AL # ARMENIAN CAPITAL LETTER ZA +0537;AL # ARMENIAN CAPITAL LETTER EH +0538;AL # ARMENIAN CAPITAL LETTER ET +0539;AL # ARMENIAN CAPITAL LETTER TO +053A;AL # ARMENIAN CAPITAL LETTER ZHE +053B;AL # ARMENIAN CAPITAL LETTER INI +053C;AL # ARMENIAN CAPITAL LETTER LIWN +053D;AL # ARMENIAN CAPITAL LETTER XEH +053E;AL # ARMENIAN CAPITAL LETTER CA +053F;AL # ARMENIAN CAPITAL LETTER KEN +0540;AL # ARMENIAN CAPITAL LETTER HO +0541;AL # ARMENIAN CAPITAL LETTER JA +0542;AL # ARMENIAN CAPITAL LETTER GHAD +0543;AL # ARMENIAN CAPITAL LETTER CHEH +0544;AL # ARMENIAN CAPITAL LETTER MEN +0545;AL # ARMENIAN CAPITAL LETTER YI +0546;AL # ARMENIAN CAPITAL LETTER NOW +0547;AL # ARMENIAN CAPITAL LETTER SHA +0548;AL # ARMENIAN CAPITAL LETTER VO +0549;AL # ARMENIAN CAPITAL LETTER CHA +054A;AL # ARMENIAN CAPITAL LETTER PEH +054B;AL # ARMENIAN CAPITAL LETTER JHEH +054C;AL # ARMENIAN CAPITAL LETTER RA +054D;AL # ARMENIAN CAPITAL LETTER SEH +054E;AL # ARMENIAN CAPITAL LETTER VEW +054F;AL # ARMENIAN CAPITAL LETTER TIWN +0550;AL # ARMENIAN CAPITAL LETTER REH +0551;AL # ARMENIAN CAPITAL LETTER CO +0552;AL # ARMENIAN CAPITAL LETTER YIWN +0553;AL # ARMENIAN CAPITAL LETTER PIWR +0554;AL # ARMENIAN CAPITAL LETTER KEH +0555;AL # ARMENIAN CAPITAL LETTER OH +0556;AL # ARMENIAN CAPITAL LETTER FEH +0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING +055A;AL # ARMENIAN APOSTROPHE +055B;AL # ARMENIAN EMPHASIS MARK +055C;AL # ARMENIAN EXCLAMATION MARK +055D;AL # ARMENIAN COMMA +055E;AL # ARMENIAN QUESTION MARK +055F;AL # ARMENIAN ABBREVIATION MARK +0561;AL # ARMENIAN SMALL LETTER AYB +0562;AL # ARMENIAN SMALL LETTER BEN +0563;AL # ARMENIAN SMALL LETTER GIM +0564;AL # ARMENIAN SMALL LETTER DA +0565;AL # ARMENIAN SMALL LETTER ECH +0566;AL # ARMENIAN SMALL LETTER ZA +0567;AL # ARMENIAN SMALL LETTER EH +0568;AL # ARMENIAN SMALL LETTER ET +0569;AL # ARMENIAN SMALL LETTER TO +056A;AL # ARMENIAN SMALL LETTER ZHE +056B;AL # ARMENIAN SMALL LETTER INI +056C;AL # ARMENIAN SMALL LETTER LIWN +056D;AL # ARMENIAN SMALL LETTER XEH +056E;AL # ARMENIAN SMALL LETTER CA +056F;AL # ARMENIAN SMALL LETTER KEN +0570;AL # ARMENIAN SMALL LETTER HO +0571;AL # ARMENIAN SMALL LETTER JA +0572;AL # ARMENIAN SMALL LETTER GHAD +0573;AL # ARMENIAN SMALL LETTER CHEH +0574;AL # ARMENIAN SMALL LETTER MEN +0575;AL # ARMENIAN SMALL LETTER YI +0576;AL # ARMENIAN SMALL LETTER NOW +0577;AL # ARMENIAN SMALL LETTER SHA +0578;AL # ARMENIAN SMALL LETTER VO +0579;AL # ARMENIAN SMALL LETTER CHA +057A;AL # ARMENIAN SMALL LETTER PEH +057B;AL # ARMENIAN SMALL LETTER JHEH +057C;AL # ARMENIAN SMALL LETTER RA +057D;AL # ARMENIAN SMALL LETTER SEH +057E;AL # ARMENIAN SMALL LETTER VEW +057F;AL # ARMENIAN SMALL LETTER TIWN +0580;AL # ARMENIAN SMALL LETTER REH +0581;AL # ARMENIAN SMALL LETTER CO +0582;AL # ARMENIAN SMALL LETTER YIWN +0583;AL # ARMENIAN SMALL LETTER PIWR +0584;AL # ARMENIAN SMALL LETTER KEH +0585;AL # ARMENIAN SMALL LETTER OH +0586;AL # ARMENIAN SMALL LETTER FEH +0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN +0589;IS # ARMENIAN FULL STOP +058A;BA # ARMENIAN HYPHEN +0591;CM # HEBREW ACCENT ETNAHTA +0592;CM # HEBREW ACCENT SEGOL +0593;CM # HEBREW ACCENT SHALSHELET +0594;CM # HEBREW ACCENT ZAQEF QATAN +0595;CM # HEBREW ACCENT ZAQEF GADOL +0596;CM # HEBREW ACCENT TIPEHA +0597;CM # HEBREW ACCENT REVIA +0598;CM # HEBREW ACCENT ZARQA +0599;CM # HEBREW ACCENT PASHTA +059A;CM # HEBREW ACCENT YETIV +059B;CM # HEBREW ACCENT TEVIR +059C;CM # HEBREW ACCENT GERESH +059D;CM # HEBREW ACCENT GERESH MUQDAM +059E;CM # HEBREW ACCENT GERSHAYIM +059F;CM # HEBREW ACCENT QARNEY PARA +05A0;CM # HEBREW ACCENT TELISHA GEDOLA +05A1;CM # HEBREW ACCENT PAZER +05A3;CM # HEBREW ACCENT MUNAH +05A4;CM # HEBREW ACCENT MAHAPAKH +05A5;CM # HEBREW ACCENT MERKHA +05A6;CM # HEBREW ACCENT MERKHA KEFULA +05A7;CM # HEBREW ACCENT DARGA +05A8;CM # HEBREW ACCENT QADMA +05A9;CM # HEBREW ACCENT TELISHA QETANA +05AA;CM # HEBREW ACCENT YERAH BEN YOMO +05AB;CM # HEBREW ACCENT OLE +05AC;CM # HEBREW ACCENT ILUY +05AD;CM # HEBREW ACCENT DEHI +05AE;CM # HEBREW ACCENT ZINOR +05AF;CM # HEBREW MARK MASORA CIRCLE +05B0;CM # HEBREW POINT SHEVA +05B1;CM # HEBREW POINT HATAF SEGOL +05B2;CM # HEBREW POINT HATAF PATAH +05B3;CM # HEBREW POINT HATAF QAMATS +05B4;CM # HEBREW POINT HIRIQ +05B5;CM # HEBREW POINT TSERE +05B6;CM # HEBREW POINT SEGOL +05B7;CM # HEBREW POINT PATAH +05B8;CM # HEBREW POINT QAMATS +05B9;CM # HEBREW POINT HOLAM +05BB;CM # HEBREW POINT QUBUTS +05BC;CM # HEBREW POINT DAGESH OR MAPIQ +05BD;CM # HEBREW POINT METEG +05BE;AL # HEBREW PUNCTUATION MAQAF +05BF;CM # HEBREW POINT RAFE +05C0;AL # HEBREW PUNCTUATION PASEQ +05C1;CM # HEBREW POINT SHIN DOT +05C2;CM # HEBREW POINT SIN DOT +05C3;AL # HEBREW PUNCTUATION SOF PASUQ +05C4;CM # HEBREW MARK UPPER DOT +05D0;AL # HEBREW LETTER ALEF +05D1;AL # HEBREW LETTER BET +05D2;AL # HEBREW LETTER GIMEL +05D3;AL # HEBREW LETTER DALET +05D4;AL # HEBREW LETTER HE +05D5;AL # HEBREW LETTER VAV +05D6;AL # HEBREW LETTER ZAYIN +05D7;AL # HEBREW LETTER HET +05D8;AL # HEBREW LETTER TET +05D9;AL # HEBREW LETTER YOD +05DA;AL # HEBREW LETTER FINAL KAF +05DB;AL # HEBREW LETTER KAF +05DC;AL # HEBREW LETTER LAMED +05DD;AL # HEBREW LETTER FINAL MEM +05DE;AL # HEBREW LETTER MEM +05DF;AL # HEBREW LETTER FINAL NUN +05E0;AL # HEBREW LETTER NUN +05E1;AL # HEBREW LETTER SAMEKH +05E2;AL # HEBREW LETTER AYIN +05E3;AL # HEBREW LETTER FINAL PE +05E4;AL # HEBREW LETTER PE +05E5;AL # HEBREW LETTER FINAL TSADI +05E6;AL # HEBREW LETTER TSADI +05E7;AL # HEBREW LETTER QOF +05E8;AL # HEBREW LETTER RESH +05E9;AL # HEBREW LETTER SHIN +05EA;AL # HEBREW LETTER TAV +05F0;AL # HEBREW LIGATURE YIDDISH DOUBLE VAV +05F1;AL # HEBREW LIGATURE YIDDISH VAV YOD +05F2;AL # HEBREW LIGATURE YIDDISH DOUBLE YOD +05F3;AL # HEBREW PUNCTUATION GERESH +05F4;AL # HEBREW PUNCTUATION GERSHAYIM +060C;AL # ARABIC COMMA +061B;AL # ARABIC SEMICOLON +061F;AL # ARABIC QUESTION MARK +0621;AL # ARABIC LETTER HAMZA +0622;AL # ARABIC LETTER ALEF WITH MADDA ABOVE +0623;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE +0624;AL # ARABIC LETTER WAW WITH HAMZA ABOVE +0625;AL # ARABIC LETTER ALEF WITH HAMZA BELOW +0626;AL # ARABIC LETTER YEH WITH HAMZA ABOVE +0627;AL # ARABIC LETTER ALEF +0628;AL # ARABIC LETTER BEH +0629;AL # ARABIC LETTER TEH MARBUTA +062A;AL # ARABIC LETTER TEH +062B;AL # ARABIC LETTER THEH +062C;AL # ARABIC LETTER JEEM +062D;AL # ARABIC LETTER HAH +062E;AL # ARABIC LETTER KHAH +062F;AL # ARABIC LETTER DAL +0630;AL # ARABIC LETTER THAL +0631;AL # ARABIC LETTER REH +0632;AL # ARABIC LETTER ZAIN +0633;AL # ARABIC LETTER SEEN +0634;AL # ARABIC LETTER SHEEN +0635;AL # ARABIC LETTER SAD +0636;AL # ARABIC LETTER DAD +0637;AL # ARABIC LETTER TAH +0638;AL # ARABIC LETTER ZAH +0639;AL # ARABIC LETTER AIN +063A;AL # ARABIC LETTER GHAIN +0640;AL # ARABIC TATWEEL +0641;AL # ARABIC LETTER FEH +0642;AL # ARABIC LETTER QAF +0643;AL # ARABIC LETTER KAF +0644;AL # ARABIC LETTER LAM +0645;AL # ARABIC LETTER MEEM +0646;AL # ARABIC LETTER NOON +0647;AL # ARABIC LETTER HEH +0648;AL # ARABIC LETTER WAW +0649;AL # ARABIC LETTER ALEF MAKSURA +064A;AL # ARABIC LETTER YEH +064B;CM # ARABIC FATHATAN +064C;CM # ARABIC DAMMATAN +064D;CM # ARABIC KASRATAN +064E;CM # ARABIC FATHA +064F;CM # ARABIC DAMMA +0650;CM # ARABIC KASRA +0651;CM # ARABIC SHADDA +0652;CM # ARABIC SUKUN +0653;CM # ARABIC MADDAH ABOVE +0654;CM # ARABIC HAMZA ABOVE +0655;CM # ARABIC HAMZA BELOW +0660;NU # ARABIC-INDIC DIGIT ZERO +0661;NU # ARABIC-INDIC DIGIT ONE +0662;NU # ARABIC-INDIC DIGIT TWO +0663;NU # ARABIC-INDIC DIGIT THREE +0664;NU # ARABIC-INDIC DIGIT FOUR +0665;NU # ARABIC-INDIC DIGIT FIVE +0666;NU # ARABIC-INDIC DIGIT SIX +0667;NU # ARABIC-INDIC DIGIT SEVEN +0668;NU # ARABIC-INDIC DIGIT EIGHT +0669;NU # ARABIC-INDIC DIGIT NINE +066A;AL # ARABIC PERCENT SIGN +066B;AL # ARABIC DECIMAL SEPARATOR +066C;AL # ARABIC THOUSANDS SEPARATOR +066D;AL # ARABIC FIVE POINTED STAR +066E;AL # ARABIC LETTER DOTLESS BEH +066F;AL # ARABIC LETTER DOTLESS QAF +0670;CM # ARABIC LETTER SUPERSCRIPT ALEF +0671;AL # ARABIC LETTER ALEF WASLA +0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE +0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW +0674;AL # ARABIC LETTER HIGH HAMZA +0675;AL # ARABIC LETTER HIGH HAMZA ALEF +0676;AL # ARABIC LETTER HIGH HAMZA WAW +0677;AL # ARABIC LETTER U WITH HAMZA ABOVE +0678;AL # ARABIC LETTER HIGH HAMZA YEH +0679;AL # ARABIC LETTER TTEH +067A;AL # ARABIC LETTER TTEHEH +067B;AL # ARABIC LETTER BEEH +067C;AL # ARABIC LETTER TEH WITH RING +067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS +067E;AL # ARABIC LETTER PEH +067F;AL # ARABIC LETTER TEHEH +0680;AL # ARABIC LETTER BEHEH +0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE +0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE +0683;AL # ARABIC LETTER NYEH +0684;AL # ARABIC LETTER DYEH +0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE +0686;AL # ARABIC LETTER TCHEH +0687;AL # ARABIC LETTER TCHEHEH +0688;AL # ARABIC LETTER DDAL +0689;AL # ARABIC LETTER DAL WITH RING +068A;AL # ARABIC LETTER DAL WITH DOT BELOW +068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH +068C;AL # ARABIC LETTER DAHAL +068D;AL # ARABIC LETTER DDAHAL +068E;AL # ARABIC LETTER DUL +068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS +0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE +0691;AL # ARABIC LETTER RREH +0692;AL # ARABIC LETTER REH WITH SMALL V +0693;AL # ARABIC LETTER REH WITH RING +0694;AL # ARABIC LETTER REH WITH DOT BELOW +0695;AL # ARABIC LETTER REH WITH SMALL V BELOW +0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE +0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE +0698;AL # ARABIC LETTER JEH +0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE +069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE +069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW +069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE +069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW +069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE +069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE +06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE +06A1;AL # ARABIC LETTER DOTLESS FEH +06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW +06A3;AL # ARABIC LETTER FEH WITH DOT BELOW +06A4;AL # ARABIC LETTER VEH +06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW +06A6;AL # ARABIC LETTER PEHEH +06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE +06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE +06A9;AL # ARABIC LETTER KEHEH +06AA;AL # ARABIC LETTER SWASH KAF +06AB;AL # ARABIC LETTER KAF WITH RING +06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE +06AD;AL # ARABIC LETTER NG +06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW +06AF;AL # ARABIC LETTER GAF +06B0;AL # ARABIC LETTER GAF WITH RING +06B1;AL # ARABIC LETTER NGOEH +06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW +06B3;AL # ARABIC LETTER GUEH +06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE +06B5;AL # ARABIC LETTER LAM WITH SMALL V +06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE +06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE +06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW +06B9;AL # ARABIC LETTER NOON WITH DOT BELOW +06BA;AL # ARABIC LETTER NOON GHUNNA +06BB;AL # ARABIC LETTER RNOON +06BC;AL # ARABIC LETTER NOON WITH RING +06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE +06BE;AL # ARABIC LETTER HEH DOACHASHMEE +06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE +06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE +06C1;AL # ARABIC LETTER HEH GOAL +06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06C3;AL # ARABIC LETTER TEH MARBUTA GOAL +06C4;AL # ARABIC LETTER WAW WITH RING +06C5;AL # ARABIC LETTER KIRGHIZ OE +06C6;AL # ARABIC LETTER OE +06C7;AL # ARABIC LETTER U +06C8;AL # ARABIC LETTER YU +06C9;AL # ARABIC LETTER KIRGHIZ YU +06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE +06CB;AL # ARABIC LETTER VE +06CC;AL # ARABIC LETTER FARSI YEH +06CD;AL # ARABIC LETTER YEH WITH TAIL +06CE;AL # ARABIC LETTER YEH WITH SMALL V +06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE +06D0;AL # ARABIC LETTER E +06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW +06D2;AL # ARABIC LETTER YEH BARREE +06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +06D4;AL # ARABIC FULL STOP +06D5;AL # ARABIC LETTER AE +06D6;CM # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA +06D7;CM # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA +06D8;CM # ARABIC SMALL HIGH MEEM INITIAL FORM +06D9;CM # ARABIC SMALL HIGH LAM ALEF +06DA;CM # ARABIC SMALL HIGH JEEM +06DB;CM # ARABIC SMALL HIGH THREE DOTS +06DC;CM # ARABIC SMALL HIGH SEEN +06DD;CM # ARABIC END OF AYAH +06DE;CM # ARABIC START OF RUB EL HIZB +06DF;CM # ARABIC SMALL HIGH ROUNDED ZERO +06E0;CM # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO +06E1;CM # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH +06E2;CM # ARABIC SMALL HIGH MEEM ISOLATED FORM +06E3;CM # ARABIC SMALL LOW SEEN +06E4;CM # ARABIC SMALL HIGH MADDA +06E5;AL # ARABIC SMALL WAW +06E6;AL # ARABIC SMALL YEH +06E7;CM # ARABIC SMALL HIGH YEH +06E8;CM # ARABIC SMALL HIGH NOON +06E9;AL # ARABIC PLACE OF SAJDAH +06EA;CM # ARABIC EMPTY CENTRE LOW STOP +06EB;CM # ARABIC EMPTY CENTRE HIGH STOP +06EC;CM # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE +06ED;CM # ARABIC SMALL LOW MEEM +06F0;NU # EXTENDED ARABIC-INDIC DIGIT ZERO +06F1;NU # EXTENDED ARABIC-INDIC DIGIT ONE +06F2;NU # EXTENDED ARABIC-INDIC DIGIT TWO +06F3;NU # EXTENDED ARABIC-INDIC DIGIT THREE +06F4;NU # EXTENDED ARABIC-INDIC DIGIT FOUR +06F5;NU # EXTENDED ARABIC-INDIC DIGIT FIVE +06F6;NU # EXTENDED ARABIC-INDIC DIGIT SIX +06F7;NU # EXTENDED ARABIC-INDIC DIGIT SEVEN +06F8;NU # EXTENDED ARABIC-INDIC DIGIT EIGHT +06F9;NU # EXTENDED ARABIC-INDIC DIGIT NINE +06FA;AL # ARABIC LETTER SHEEN WITH DOT BELOW +06FB;AL # ARABIC LETTER DAD WITH DOT BELOW +06FC;AL # ARABIC LETTER GHAIN WITH DOT BELOW +06FD;AL # ARABIC SIGN SINDHI AMPERSAND +06FE;AL # ARABIC SIGN SINDHI POSTPOSITION MEN +0700;AL # SYRIAC END OF PARAGRAPH +0701;AL # SYRIAC SUPRALINEAR FULL STOP +0702;AL # SYRIAC SUBLINEAR FULL STOP +0703;AL # SYRIAC SUPRALINEAR COLON +0704;AL # SYRIAC SUBLINEAR COLON +0705;AL # SYRIAC HORIZONTAL COLON +0706;AL # SYRIAC COLON SKEWED LEFT +0707;AL # SYRIAC COLON SKEWED RIGHT +0708;AL # SYRIAC SUPRALINEAR COLON SKEWED LEFT +0709;AL # SYRIAC SUBLINEAR COLON SKEWED RIGHT +070A;AL # SYRIAC CONTRACTION +070B;AL # SYRIAC HARKLEAN OBELUS +070C;AL # SYRIAC HARKLEAN METOBELUS +070D;AL # SYRIAC HARKLEAN ASTERISCUS +070F;CM # SYRIAC ABBREVIATION MARK +0710;AL # SYRIAC LETTER ALAPH +0711;CM # SYRIAC LETTER SUPERSCRIPT ALAPH +0712;AL # SYRIAC LETTER BETH +0713;AL # SYRIAC LETTER GAMAL +0714;AL # SYRIAC LETTER GAMAL GARSHUNI +0715;AL # SYRIAC LETTER DALATH +0716;AL # SYRIAC LETTER DOTLESS DALATH RISH +0717;AL # SYRIAC LETTER HE +0718;AL # SYRIAC LETTER WAW +0719;AL # SYRIAC LETTER ZAIN +071A;AL # SYRIAC LETTER HETH +071B;AL # SYRIAC LETTER TETH +071C;AL # SYRIAC LETTER TETH GARSHUNI +071D;AL # SYRIAC LETTER YUDH +071E;AL # SYRIAC LETTER YUDH HE +071F;AL # SYRIAC LETTER KAPH +0720;AL # SYRIAC LETTER LAMADH +0721;AL # SYRIAC LETTER MIM +0722;AL # SYRIAC LETTER NUN +0723;AL # SYRIAC LETTER SEMKATH +0724;AL # SYRIAC LETTER FINAL SEMKATH +0725;AL # SYRIAC LETTER E +0726;AL # SYRIAC LETTER PE +0727;AL # SYRIAC LETTER REVERSED PE +0728;AL # SYRIAC LETTER SADHE +0729;AL # SYRIAC LETTER QAPH +072A;AL # SYRIAC LETTER RISH +072B;AL # SYRIAC LETTER SHIN +072C;AL # SYRIAC LETTER TAW +0730;CM # SYRIAC PTHAHA ABOVE +0731;CM # SYRIAC PTHAHA BELOW +0732;CM # SYRIAC PTHAHA DOTTED +0733;CM # SYRIAC ZQAPHA ABOVE +0734;CM # SYRIAC ZQAPHA BELOW +0735;CM # SYRIAC ZQAPHA DOTTED +0736;CM # SYRIAC RBASA ABOVE +0737;CM # SYRIAC RBASA BELOW +0738;CM # SYRIAC DOTTED ZLAMA HORIZONTAL +0739;CM # SYRIAC DOTTED ZLAMA ANGULAR +073A;CM # SYRIAC HBASA ABOVE +073B;CM # SYRIAC HBASA BELOW +073C;CM # SYRIAC HBASA-ESASA DOTTED +073D;CM # SYRIAC ESASA ABOVE +073E;CM # SYRIAC ESASA BELOW +073F;CM # SYRIAC RWAHA +0740;CM # SYRIAC FEMININE DOT +0741;CM # SYRIAC QUSHSHAYA +0742;CM # SYRIAC RUKKAKHA +0743;CM # SYRIAC TWO VERTICAL DOTS ABOVE +0744;CM # SYRIAC TWO VERTICAL DOTS BELOW +0745;CM # SYRIAC THREE DOTS ABOVE +0746;CM # SYRIAC THREE DOTS BELOW +0747;CM # SYRIAC OBLIQUE LINE ABOVE +0748;CM # SYRIAC OBLIQUE LINE BELOW +0749;CM # SYRIAC MUSIC +074A;CM # SYRIAC BARREKH +0780;AL # THAANA LETTER HAA +0781;AL # THAANA LETTER SHAVIYANI +0782;AL # THAANA LETTER NOONU +0783;AL # THAANA LETTER RAA +0784;AL # THAANA LETTER BAA +0785;AL # THAANA LETTER LHAVIYANI +0786;AL # THAANA LETTER KAAFU +0787;AL # THAANA LETTER ALIFU +0788;AL # THAANA LETTER VAAVU +0789;AL # THAANA LETTER MEEMU +078A;AL # THAANA LETTER FAAFU +078B;AL # THAANA LETTER DHAALU +078C;AL # THAANA LETTER THAA +078D;AL # THAANA LETTER LAAMU +078E;AL # THAANA LETTER GAAFU +078F;AL # THAANA LETTER GNAVIYANI +0790;AL # THAANA LETTER SEENU +0791;AL # THAANA LETTER DAVIYANI +0792;AL # THAANA LETTER ZAVIYANI +0793;AL # THAANA LETTER TAVIYANI +0794;AL # THAANA LETTER YAA +0795;AL # THAANA LETTER PAVIYANI +0796;AL # THAANA LETTER JAVIYANI +0797;AL # THAANA LETTER CHAVIYANI +0798;AL # THAANA LETTER TTAA +0799;AL # THAANA LETTER HHAA +079A;AL # THAANA LETTER KHAA +079B;AL # THAANA LETTER THAALU +079C;AL # THAANA LETTER ZAA +079D;AL # THAANA LETTER SHEENU +079E;AL # THAANA LETTER SAADHU +079F;AL # THAANA LETTER DAADHU +07A0;AL # THAANA LETTER TO +07A1;AL # THAANA LETTER ZO +07A2;AL # THAANA LETTER AINU +07A3;AL # THAANA LETTER GHAINU +07A4;AL # THAANA LETTER QAAFU +07A5;AL # THAANA LETTER WAAVU +07A6;CM # THAANA ABAFILI +07A7;CM # THAANA AABAAFILI +07A8;CM # THAANA IBIFILI +07A9;CM # THAANA EEBEEFILI +07AA;CM # THAANA UBUFILI +07AB;CM # THAANA OOBOOFILI +07AC;CM # THAANA EBEFILI +07AD;CM # THAANA EYBEYFILI +07AE;CM # THAANA OBOFILI +07AF;CM # THAANA OABOAFILI +07B0;CM # THAANA SUKUN +07B1;AL # THAANA LETTER NAA +0901;CM # DEVANAGARI SIGN CANDRABINDU +0902;CM # DEVANAGARI SIGN ANUSVARA +0903;CM # DEVANAGARI SIGN VISARGA +0905;AL # DEVANAGARI LETTER A +0906;AL # DEVANAGARI LETTER AA +0907;AL # DEVANAGARI LETTER I +0908;AL # DEVANAGARI LETTER II +0909;AL # DEVANAGARI LETTER U +090A;AL # DEVANAGARI LETTER UU +090B;AL # DEVANAGARI LETTER VOCALIC R +090C;AL # DEVANAGARI LETTER VOCALIC L +090D;AL # DEVANAGARI LETTER CANDRA E +090E;AL # DEVANAGARI LETTER SHORT E +090F;AL # DEVANAGARI LETTER E +0910;AL # DEVANAGARI LETTER AI +0911;AL # DEVANAGARI LETTER CANDRA O +0912;AL # DEVANAGARI LETTER SHORT O +0913;AL # DEVANAGARI LETTER O +0914;AL # DEVANAGARI LETTER AU +0915;AL # DEVANAGARI LETTER KA +0916;AL # DEVANAGARI LETTER KHA +0917;AL # DEVANAGARI LETTER GA +0918;AL # DEVANAGARI LETTER GHA +0919;AL # DEVANAGARI LETTER NGA +091A;AL # DEVANAGARI LETTER CA +091B;AL # DEVANAGARI LETTER CHA +091C;AL # DEVANAGARI LETTER JA +091D;AL # DEVANAGARI LETTER JHA +091E;AL # DEVANAGARI LETTER NYA +091F;AL # DEVANAGARI LETTER TTA +0920;AL # DEVANAGARI LETTER TTHA +0921;AL # DEVANAGARI LETTER DDA +0922;AL # DEVANAGARI LETTER DDHA +0923;AL # DEVANAGARI LETTER NNA +0924;AL # DEVANAGARI LETTER TA +0925;AL # DEVANAGARI LETTER THA +0926;AL # DEVANAGARI LETTER DA +0927;AL # DEVANAGARI LETTER DHA +0928;AL # DEVANAGARI LETTER NA +0929;AL # DEVANAGARI LETTER NNNA +092A;AL # DEVANAGARI LETTER PA +092B;AL # DEVANAGARI LETTER PHA +092C;AL # DEVANAGARI LETTER BA +092D;AL # DEVANAGARI LETTER BHA +092E;AL # DEVANAGARI LETTER MA +092F;AL # DEVANAGARI LETTER YA +0930;AL # DEVANAGARI LETTER RA +0931;AL # DEVANAGARI LETTER RRA +0932;AL # DEVANAGARI LETTER LA +0933;AL # DEVANAGARI LETTER LLA +0934;AL # DEVANAGARI LETTER LLLA +0935;AL # DEVANAGARI LETTER VA +0936;AL # DEVANAGARI LETTER SHA +0937;AL # DEVANAGARI LETTER SSA +0938;AL # DEVANAGARI LETTER SA +0939;AL # DEVANAGARI LETTER HA +093C;CM # DEVANAGARI SIGN NUKTA +093D;AL # DEVANAGARI SIGN AVAGRAHA +093E;CM # DEVANAGARI VOWEL SIGN AA +093F;CM # DEVANAGARI VOWEL SIGN I +0940;CM # DEVANAGARI VOWEL SIGN II +0941;CM # DEVANAGARI VOWEL SIGN U +0942;CM # DEVANAGARI VOWEL SIGN UU +0943;CM # DEVANAGARI VOWEL SIGN VOCALIC R +0944;CM # DEVANAGARI VOWEL SIGN VOCALIC RR +0945;CM # DEVANAGARI VOWEL SIGN CANDRA E +0946;CM # DEVANAGARI VOWEL SIGN SHORT E +0947;CM # DEVANAGARI VOWEL SIGN E +0948;CM # DEVANAGARI VOWEL SIGN AI +0949;CM # DEVANAGARI VOWEL SIGN CANDRA O +094A;CM # DEVANAGARI VOWEL SIGN SHORT O +094B;CM # DEVANAGARI VOWEL SIGN O +094C;CM # DEVANAGARI VOWEL SIGN AU +094D;CM # DEVANAGARI SIGN VIRAMA +0950;AL # DEVANAGARI OM +0951;CM # DEVANAGARI STRESS SIGN UDATTA +0952;CM # DEVANAGARI STRESS SIGN ANUDATTA +0953;CM # DEVANAGARI GRAVE ACCENT +0954;CM # DEVANAGARI ACUTE ACCENT +0958;AL # DEVANAGARI LETTER QA +0959;AL # DEVANAGARI LETTER KHHA +095A;AL # DEVANAGARI LETTER GHHA +095B;AL # DEVANAGARI LETTER ZA +095C;AL # DEVANAGARI LETTER DDDHA +095D;AL # DEVANAGARI LETTER RHA +095E;AL # DEVANAGARI LETTER FA +095F;AL # DEVANAGARI LETTER YYA +0960;AL # DEVANAGARI LETTER VOCALIC RR +0961;AL # DEVANAGARI LETTER VOCALIC LL +0962;CM # DEVANAGARI VOWEL SIGN VOCALIC L +0963;CM # DEVANAGARI VOWEL SIGN VOCALIC LL +0964;AL # DEVANAGARI DANDA +0965;AL # DEVANAGARI DOUBLE DANDA +0966;NU # DEVANAGARI DIGIT ZERO +0967;NU # DEVANAGARI DIGIT ONE +0968;NU # DEVANAGARI DIGIT TWO +0969;NU # DEVANAGARI DIGIT THREE +096A;NU # DEVANAGARI DIGIT FOUR +096B;NU # DEVANAGARI DIGIT FIVE +096C;NU # DEVANAGARI DIGIT SIX +096D;NU # DEVANAGARI DIGIT SEVEN +096E;NU # DEVANAGARI DIGIT EIGHT +096F;NU # DEVANAGARI DIGIT NINE +0970;AL # DEVANAGARI ABBREVIATION SIGN +0981;CM # BENGALI SIGN CANDRABINDU +0982;CM # BENGALI SIGN ANUSVARA +0983;CM # BENGALI SIGN VISARGA +0985;AL # BENGALI LETTER A +0986;AL # BENGALI LETTER AA +0987;AL # BENGALI LETTER I +0988;AL # BENGALI LETTER II +0989;AL # BENGALI LETTER U +098A;AL # BENGALI LETTER UU +098B;AL # BENGALI LETTER VOCALIC R +098C;AL # BENGALI LETTER VOCALIC L +098F;AL # BENGALI LETTER E +0990;AL # BENGALI LETTER AI +0993;AL # BENGALI LETTER O +0994;AL # BENGALI LETTER AU +0995;AL # BENGALI LETTER KA +0996;AL # BENGALI LETTER KHA +0997;AL # BENGALI LETTER GA +0998;AL # BENGALI LETTER GHA +0999;AL # BENGALI LETTER NGA +099A;AL # BENGALI LETTER CA +099B;AL # BENGALI LETTER CHA +099C;AL # BENGALI LETTER JA +099D;AL # BENGALI LETTER JHA +099E;AL # BENGALI LETTER NYA +099F;AL # BENGALI LETTER TTA +09A0;AL # BENGALI LETTER TTHA +09A1;AL # BENGALI LETTER DDA +09A2;AL # BENGALI LETTER DDHA +09A3;AL # BENGALI LETTER NNA +09A4;AL # BENGALI LETTER TA +09A5;AL # BENGALI LETTER THA +09A6;AL # BENGALI LETTER DA +09A7;AL # BENGALI LETTER DHA +09A8;AL # BENGALI LETTER NA +09AA;AL # BENGALI LETTER PA +09AB;AL # BENGALI LETTER PHA +09AC;AL # BENGALI LETTER BA +09AD;AL # BENGALI LETTER BHA +09AE;AL # BENGALI LETTER MA +09AF;AL # BENGALI LETTER YA +09B0;AL # BENGALI LETTER RA +09B2;AL # BENGALI LETTER LA +09B6;AL # BENGALI LETTER SHA +09B7;AL # BENGALI LETTER SSA +09B8;AL # BENGALI LETTER SA +09B9;AL # BENGALI LETTER HA +09BC;CM # BENGALI SIGN NUKTA +09BE;CM # BENGALI VOWEL SIGN AA +09BF;CM # BENGALI VOWEL SIGN I +09C0;CM # BENGALI VOWEL SIGN II +09C1;CM # BENGALI VOWEL SIGN U +09C2;CM # BENGALI VOWEL SIGN UU +09C3;CM # BENGALI VOWEL SIGN VOCALIC R +09C4;CM # BENGALI VOWEL SIGN VOCALIC RR +09C7;CM # BENGALI VOWEL SIGN E +09C8;CM # BENGALI VOWEL SIGN AI +09CB;CM # BENGALI VOWEL SIGN O +09CC;CM # BENGALI VOWEL SIGN AU +09CD;CM # BENGALI SIGN VIRAMA +09D7;CM # BENGALI AU LENGTH MARK +09DC;AL # BENGALI LETTER RRA +09DD;AL # BENGALI LETTER RHA +09DF;AL # BENGALI LETTER YYA +09E0;AL # BENGALI LETTER VOCALIC RR +09E1;AL # BENGALI LETTER VOCALIC LL +09E2;CM # BENGALI VOWEL SIGN VOCALIC L +09E3;CM # BENGALI VOWEL SIGN VOCALIC LL +09E6;NU # BENGALI DIGIT ZERO +09E7;NU # BENGALI DIGIT ONE +09E8;NU # BENGALI DIGIT TWO +09E9;NU # BENGALI DIGIT THREE +09EA;NU # BENGALI DIGIT FOUR +09EB;NU # BENGALI DIGIT FIVE +09EC;NU # BENGALI DIGIT SIX +09ED;NU # BENGALI DIGIT SEVEN +09EE;NU # BENGALI DIGIT EIGHT +09EF;NU # BENGALI DIGIT NINE +09F0;AL # BENGALI LETTER RA WITH MIDDLE DIAGONAL +09F1;AL # BENGALI LETTER RA WITH LOWER DIAGONAL +09F2;PR # BENGALI RUPEE MARK +09F3;PR # BENGALI RUPEE SIGN +09F4;AL # BENGALI CURRENCY NUMERATOR ONE +09F5;AL # BENGALI CURRENCY NUMERATOR TWO +09F6;AL # BENGALI CURRENCY NUMERATOR THREE +09F7;AL # BENGALI CURRENCY NUMERATOR FOUR +09F8;AL # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR +09F9;AL # BENGALI CURRENCY DENOMINATOR SIXTEEN +09FA;AL # BENGALI ISSHAR +0A02;CM # GURMUKHI SIGN BINDI +0A05;AL # GURMUKHI LETTER A +0A06;AL # GURMUKHI LETTER AA +0A07;AL # GURMUKHI LETTER I +0A08;AL # GURMUKHI LETTER II +0A09;AL # GURMUKHI LETTER U +0A0A;AL # GURMUKHI LETTER UU +0A0F;AL # GURMUKHI LETTER EE +0A10;AL # GURMUKHI LETTER AI +0A13;AL # GURMUKHI LETTER OO +0A14;AL # GURMUKHI LETTER AU +0A15;AL # GURMUKHI LETTER KA +0A16;AL # GURMUKHI LETTER KHA +0A17;AL # GURMUKHI LETTER GA +0A18;AL # GURMUKHI LETTER GHA +0A19;AL # GURMUKHI LETTER NGA +0A1A;AL # GURMUKHI LETTER CA +0A1B;AL # GURMUKHI LETTER CHA +0A1C;AL # GURMUKHI LETTER JA +0A1D;AL # GURMUKHI LETTER JHA +0A1E;AL # GURMUKHI LETTER NYA +0A1F;AL # GURMUKHI LETTER TTA +0A20;AL # GURMUKHI LETTER TTHA +0A21;AL # GURMUKHI LETTER DDA +0A22;AL # GURMUKHI LETTER DDHA +0A23;AL # GURMUKHI LETTER NNA +0A24;AL # GURMUKHI LETTER TA +0A25;AL # GURMUKHI LETTER THA +0A26;AL # GURMUKHI LETTER DA +0A27;AL # GURMUKHI LETTER DHA +0A28;AL # GURMUKHI LETTER NA +0A2A;AL # GURMUKHI LETTER PA +0A2B;AL # GURMUKHI LETTER PHA +0A2C;AL # GURMUKHI LETTER BA +0A2D;AL # GURMUKHI LETTER BHA +0A2E;AL # GURMUKHI LETTER MA +0A2F;AL # GURMUKHI LETTER YA +0A30;AL # GURMUKHI LETTER RA +0A32;AL # GURMUKHI LETTER LA +0A33;AL # GURMUKHI LETTER LLA +0A35;AL # GURMUKHI LETTER VA +0A36;AL # GURMUKHI LETTER SHA +0A38;AL # GURMUKHI LETTER SA +0A39;AL # GURMUKHI LETTER HA +0A3C;CM # GURMUKHI SIGN NUKTA +0A3E;CM # GURMUKHI VOWEL SIGN AA +0A3F;CM # GURMUKHI VOWEL SIGN I +0A40;CM # GURMUKHI VOWEL SIGN II +0A41;CM # GURMUKHI VOWEL SIGN U +0A42;CM # GURMUKHI VOWEL SIGN UU +0A47;CM # GURMUKHI VOWEL SIGN EE +0A48;CM # GURMUKHI VOWEL SIGN AI +0A4B;CM # GURMUKHI VOWEL SIGN OO +0A4C;CM # GURMUKHI VOWEL SIGN AU +0A4D;CM # GURMUKHI SIGN VIRAMA +0A59;AL # GURMUKHI LETTER KHHA +0A5A;AL # GURMUKHI LETTER GHHA +0A5B;AL # GURMUKHI LETTER ZA +0A5C;AL # GURMUKHI LETTER RRA +0A5E;AL # GURMUKHI LETTER FA +0A66;NU # GURMUKHI DIGIT ZERO +0A67;NU # GURMUKHI DIGIT ONE +0A68;NU # GURMUKHI DIGIT TWO +0A69;NU # GURMUKHI DIGIT THREE +0A6A;NU # GURMUKHI DIGIT FOUR +0A6B;NU # GURMUKHI DIGIT FIVE +0A6C;NU # GURMUKHI DIGIT SIX +0A6D;NU # GURMUKHI DIGIT SEVEN +0A6E;NU # GURMUKHI DIGIT EIGHT +0A6F;NU # GURMUKHI DIGIT NINE +0A70;CM # GURMUKHI TIPPI +0A71;CM # GURMUKHI ADDAK +0A72;AL # GURMUKHI IRI +0A73;AL # GURMUKHI URA +0A74;AL # GURMUKHI EK ONKAR +0A81;CM # GUJARATI SIGN CANDRABINDU +0A82;CM # GUJARATI SIGN ANUSVARA +0A83;CM # GUJARATI SIGN VISARGA +0A85;AL # GUJARATI LETTER A +0A86;AL # GUJARATI LETTER AA +0A87;AL # GUJARATI LETTER I +0A88;AL # GUJARATI LETTER II +0A89;AL # GUJARATI LETTER U +0A8A;AL # GUJARATI LETTER UU +0A8B;AL # GUJARATI LETTER VOCALIC R +0A8D;AL # GUJARATI VOWEL CANDRA E +0A8F;AL # GUJARATI LETTER E +0A90;AL # GUJARATI LETTER AI +0A91;AL # GUJARATI VOWEL CANDRA O +0A93;AL # GUJARATI LETTER O +0A94;AL # GUJARATI LETTER AU +0A95;AL # GUJARATI LETTER KA +0A96;AL # GUJARATI LETTER KHA +0A97;AL # GUJARATI LETTER GA +0A98;AL # GUJARATI LETTER GHA +0A99;AL # GUJARATI LETTER NGA +0A9A;AL # GUJARATI LETTER CA +0A9B;AL # GUJARATI LETTER CHA +0A9C;AL # GUJARATI LETTER JA +0A9D;AL # GUJARATI LETTER JHA +0A9E;AL # GUJARATI LETTER NYA +0A9F;AL # GUJARATI LETTER TTA +0AA0;AL # GUJARATI LETTER TTHA +0AA1;AL # GUJARATI LETTER DDA +0AA2;AL # GUJARATI LETTER DDHA +0AA3;AL # GUJARATI LETTER NNA +0AA4;AL # GUJARATI LETTER TA +0AA5;AL # GUJARATI LETTER THA +0AA6;AL # GUJARATI LETTER DA +0AA7;AL # GUJARATI LETTER DHA +0AA8;AL # GUJARATI LETTER NA +0AAA;AL # GUJARATI LETTER PA +0AAB;AL # GUJARATI LETTER PHA +0AAC;AL # GUJARATI LETTER BA +0AAD;AL # GUJARATI LETTER BHA +0AAE;AL # GUJARATI LETTER MA +0AAF;AL # GUJARATI LETTER YA +0AB0;AL # GUJARATI LETTER RA +0AB2;AL # GUJARATI LETTER LA +0AB3;AL # GUJARATI LETTER LLA +0AB5;AL # GUJARATI LETTER VA +0AB6;AL # GUJARATI LETTER SHA +0AB7;AL # GUJARATI LETTER SSA +0AB8;AL # GUJARATI LETTER SA +0AB9;AL # GUJARATI LETTER HA +0ABC;CM # GUJARATI SIGN NUKTA +0ABD;AL # GUJARATI SIGN AVAGRAHA +0ABE;CM # GUJARATI VOWEL SIGN AA +0ABF;CM # GUJARATI VOWEL SIGN I +0AC0;CM # GUJARATI VOWEL SIGN II +0AC1;CM # GUJARATI VOWEL SIGN U +0AC2;CM # GUJARATI VOWEL SIGN UU +0AC3;CM # GUJARATI VOWEL SIGN VOCALIC R +0AC4;CM # GUJARATI VOWEL SIGN VOCALIC RR +0AC5;CM # GUJARATI VOWEL SIGN CANDRA E +0AC7;CM # GUJARATI VOWEL SIGN E +0AC8;CM # GUJARATI VOWEL SIGN AI +0AC9;CM # GUJARATI VOWEL SIGN CANDRA O +0ACB;CM # GUJARATI VOWEL SIGN O +0ACC;CM # GUJARATI VOWEL SIGN AU +0ACD;CM # GUJARATI SIGN VIRAMA +0AD0;AL # GUJARATI OM +0AE0;AL # GUJARATI LETTER VOCALIC RR +0AE6;NU # GUJARATI DIGIT ZERO +0AE7;NU # GUJARATI DIGIT ONE +0AE8;NU # GUJARATI DIGIT TWO +0AE9;NU # GUJARATI DIGIT THREE +0AEA;NU # GUJARATI DIGIT FOUR +0AEB;NU # GUJARATI DIGIT FIVE +0AEC;NU # GUJARATI DIGIT SIX +0AED;NU # GUJARATI DIGIT SEVEN +0AEE;NU # GUJARATI DIGIT EIGHT +0AEF;NU # GUJARATI DIGIT NINE +0B01;CM # ORIYA SIGN CANDRABINDU +0B02;CM # ORIYA SIGN ANUSVARA +0B03;CM # ORIYA SIGN VISARGA +0B05;AL # ORIYA LETTER A +0B06;AL # ORIYA LETTER AA +0B07;AL # ORIYA LETTER I +0B08;AL # ORIYA LETTER II +0B09;AL # ORIYA LETTER U +0B0A;AL # ORIYA LETTER UU +0B0B;AL # ORIYA LETTER VOCALIC R +0B0C;AL # ORIYA LETTER VOCALIC L +0B0F;AL # ORIYA LETTER E +0B10;AL # ORIYA LETTER AI +0B13;AL # ORIYA LETTER O +0B14;AL # ORIYA LETTER AU +0B15;AL # ORIYA LETTER KA +0B16;AL # ORIYA LETTER KHA +0B17;AL # ORIYA LETTER GA +0B18;AL # ORIYA LETTER GHA +0B19;AL # ORIYA LETTER NGA +0B1A;AL # ORIYA LETTER CA +0B1B;AL # ORIYA LETTER CHA +0B1C;AL # ORIYA LETTER JA +0B1D;AL # ORIYA LETTER JHA +0B1E;AL # ORIYA LETTER NYA +0B1F;AL # ORIYA LETTER TTA +0B20;AL # ORIYA LETTER TTHA +0B21;AL # ORIYA LETTER DDA +0B22;AL # ORIYA LETTER DDHA +0B23;AL # ORIYA LETTER NNA +0B24;AL # ORIYA LETTER TA +0B25;AL # ORIYA LETTER THA +0B26;AL # ORIYA LETTER DA +0B27;AL # ORIYA LETTER DHA +0B28;AL # ORIYA LETTER NA +0B2A;AL # ORIYA LETTER PA +0B2B;AL # ORIYA LETTER PHA +0B2C;AL # ORIYA LETTER BA +0B2D;AL # ORIYA LETTER BHA +0B2E;AL # ORIYA LETTER MA +0B2F;AL # ORIYA LETTER YA +0B30;AL # ORIYA LETTER RA +0B32;AL # ORIYA LETTER LA +0B33;AL # ORIYA LETTER LLA +0B36;AL # ORIYA LETTER SHA +0B37;AL # ORIYA LETTER SSA +0B38;AL # ORIYA LETTER SA +0B39;AL # ORIYA LETTER HA +0B3C;CM # ORIYA SIGN NUKTA +0B3D;AL # ORIYA SIGN AVAGRAHA +0B3E;CM # ORIYA VOWEL SIGN AA +0B3F;CM # ORIYA VOWEL SIGN I +0B40;CM # ORIYA VOWEL SIGN II +0B41;CM # ORIYA VOWEL SIGN U +0B42;CM # ORIYA VOWEL SIGN UU +0B43;CM # ORIYA VOWEL SIGN VOCALIC R +0B47;CM # ORIYA VOWEL SIGN E +0B48;CM # ORIYA VOWEL SIGN AI +0B4B;CM # ORIYA VOWEL SIGN O +0B4C;CM # ORIYA VOWEL SIGN AU +0B4D;CM # ORIYA SIGN VIRAMA +0B56;CM # ORIYA AI LENGTH MARK +0B57;CM # ORIYA AU LENGTH MARK +0B5C;AL # ORIYA LETTER RRA +0B5D;AL # ORIYA LETTER RHA +0B5F;AL # ORIYA LETTER YYA +0B60;AL # ORIYA LETTER VOCALIC RR +0B61;AL # ORIYA LETTER VOCALIC LL +0B66;NU # ORIYA DIGIT ZERO +0B67;NU # ORIYA DIGIT ONE +0B68;NU # ORIYA DIGIT TWO +0B69;NU # ORIYA DIGIT THREE +0B6A;NU # ORIYA DIGIT FOUR +0B6B;NU # ORIYA DIGIT FIVE +0B6C;NU # ORIYA DIGIT SIX +0B6D;NU # ORIYA DIGIT SEVEN +0B6E;NU # ORIYA DIGIT EIGHT +0B6F;NU # ORIYA DIGIT NINE +0B70;AL # ORIYA ISSHAR +0B82;CM # TAMIL SIGN ANUSVARA +0B83;AL # TAMIL SIGN VISARGA +0B85;AL # TAMIL LETTER A +0B86;AL # TAMIL LETTER AA +0B87;AL # TAMIL LETTER I +0B88;AL # TAMIL LETTER II +0B89;AL # TAMIL LETTER U +0B8A;AL # TAMIL LETTER UU +0B8E;AL # TAMIL LETTER E +0B8F;AL # TAMIL LETTER EE +0B90;AL # TAMIL LETTER AI +0B92;AL # TAMIL LETTER O +0B93;AL # TAMIL LETTER OO +0B94;AL # TAMIL LETTER AU +0B95;AL # TAMIL LETTER KA +0B99;AL # TAMIL LETTER NGA +0B9A;AL # TAMIL LETTER CA +0B9C;AL # TAMIL LETTER JA +0B9E;AL # TAMIL LETTER NYA +0B9F;AL # TAMIL LETTER TTA +0BA3;AL # TAMIL LETTER NNA +0BA4;AL # TAMIL LETTER TA +0BA8;AL # TAMIL LETTER NA +0BA9;AL # TAMIL LETTER NNNA +0BAA;AL # TAMIL LETTER PA +0BAE;AL # TAMIL LETTER MA +0BAF;AL # TAMIL LETTER YA +0BB0;AL # TAMIL LETTER RA +0BB1;AL # TAMIL LETTER RRA +0BB2;AL # TAMIL LETTER LA +0BB3;AL # TAMIL LETTER LLA +0BB4;AL # TAMIL LETTER LLLA +0BB5;AL # TAMIL LETTER VA +0BB7;AL # TAMIL LETTER SSA +0BB8;AL # TAMIL LETTER SA +0BB9;AL # TAMIL LETTER HA +0BBE;CM # TAMIL VOWEL SIGN AA +0BBF;CM # TAMIL VOWEL SIGN I +0BC0;CM # TAMIL VOWEL SIGN II +0BC1;CM # TAMIL VOWEL SIGN U +0BC2;CM # TAMIL VOWEL SIGN UU +0BC6;CM # TAMIL VOWEL SIGN E +0BC7;CM # TAMIL VOWEL SIGN EE +0BC8;CM # TAMIL VOWEL SIGN AI +0BCA;CM # TAMIL VOWEL SIGN O +0BCB;CM # TAMIL VOWEL SIGN OO +0BCC;CM # TAMIL VOWEL SIGN AU +0BCD;CM # TAMIL SIGN VIRAMA +0BD7;CM # TAMIL AU LENGTH MARK +0BE7;NU # TAMIL DIGIT ONE +0BE8;NU # TAMIL DIGIT TWO +0BE9;NU # TAMIL DIGIT THREE +0BEA;NU # TAMIL DIGIT FOUR +0BEB;NU # TAMIL DIGIT FIVE +0BEC;NU # TAMIL DIGIT SIX +0BED;NU # TAMIL DIGIT SEVEN +0BEE;NU # TAMIL DIGIT EIGHT +0BEF;NU # TAMIL DIGIT NINE +0BF0;AL # TAMIL NUMBER TEN +0BF1;AL # TAMIL NUMBER ONE HUNDRED +0BF2;AL # TAMIL NUMBER ONE THOUSAND +0C01;CM # TELUGU SIGN CANDRABINDU +0C02;CM # TELUGU SIGN ANUSVARA +0C03;CM # TELUGU SIGN VISARGA +0C05;AL # TELUGU LETTER A +0C06;AL # TELUGU LETTER AA +0C07;AL # TELUGU LETTER I +0C08;AL # TELUGU LETTER II +0C09;AL # TELUGU LETTER U +0C0A;AL # TELUGU LETTER UU +0C0B;AL # TELUGU LETTER VOCALIC R +0C0C;AL # TELUGU LETTER VOCALIC L +0C0E;AL # TELUGU LETTER E +0C0F;AL # TELUGU LETTER EE +0C10;AL # TELUGU LETTER AI +0C12;AL # TELUGU LETTER O +0C13;AL # TELUGU LETTER OO +0C14;AL # TELUGU LETTER AU +0C15;AL # TELUGU LETTER KA +0C16;AL # TELUGU LETTER KHA +0C17;AL # TELUGU LETTER GA +0C18;AL # TELUGU LETTER GHA +0C19;AL # TELUGU LETTER NGA +0C1A;AL # TELUGU LETTER CA +0C1B;AL # TELUGU LETTER CHA +0C1C;AL # TELUGU LETTER JA +0C1D;AL # TELUGU LETTER JHA +0C1E;AL # TELUGU LETTER NYA +0C1F;AL # TELUGU LETTER TTA +0C20;AL # TELUGU LETTER TTHA +0C21;AL # TELUGU LETTER DDA +0C22;AL # TELUGU LETTER DDHA +0C23;AL # TELUGU LETTER NNA +0C24;AL # TELUGU LETTER TA +0C25;AL # TELUGU LETTER THA +0C26;AL # TELUGU LETTER DA +0C27;AL # TELUGU LETTER DHA +0C28;AL # TELUGU LETTER NA +0C2A;AL # TELUGU LETTER PA +0C2B;AL # TELUGU LETTER PHA +0C2C;AL # TELUGU LETTER BA +0C2D;AL # TELUGU LETTER BHA +0C2E;AL # TELUGU LETTER MA +0C2F;AL # TELUGU LETTER YA +0C30;AL # TELUGU LETTER RA +0C31;AL # TELUGU LETTER RRA +0C32;AL # TELUGU LETTER LA +0C33;AL # TELUGU LETTER LLA +0C35;AL # TELUGU LETTER VA +0C36;AL # TELUGU LETTER SHA +0C37;AL # TELUGU LETTER SSA +0C38;AL # TELUGU LETTER SA +0C39;AL # TELUGU LETTER HA +0C3E;CM # TELUGU VOWEL SIGN AA +0C3F;CM # TELUGU VOWEL SIGN I +0C40;CM # TELUGU VOWEL SIGN II +0C41;CM # TELUGU VOWEL SIGN U +0C42;CM # TELUGU VOWEL SIGN UU +0C43;CM # TELUGU VOWEL SIGN VOCALIC R +0C44;CM # TELUGU VOWEL SIGN VOCALIC RR +0C46;CM # TELUGU VOWEL SIGN E +0C47;CM # TELUGU VOWEL SIGN EE +0C48;CM # TELUGU VOWEL SIGN AI +0C4A;CM # TELUGU VOWEL SIGN O +0C4B;CM # TELUGU VOWEL SIGN OO +0C4C;CM # TELUGU VOWEL SIGN AU +0C4D;CM # TELUGU SIGN VIRAMA +0C55;CM # TELUGU LENGTH MARK +0C56;CM # TELUGU AI LENGTH MARK +0C60;AL # TELUGU LETTER VOCALIC RR +0C61;AL # TELUGU LETTER VOCALIC LL +0C66;NU # TELUGU DIGIT ZERO +0C67;NU # TELUGU DIGIT ONE +0C68;NU # TELUGU DIGIT TWO +0C69;NU # TELUGU DIGIT THREE +0C6A;NU # TELUGU DIGIT FOUR +0C6B;NU # TELUGU DIGIT FIVE +0C6C;NU # TELUGU DIGIT SIX +0C6D;NU # TELUGU DIGIT SEVEN +0C6E;NU # TELUGU DIGIT EIGHT +0C6F;NU # TELUGU DIGIT NINE +0C82;CM # KANNADA SIGN ANUSVARA +0C83;CM # KANNADA SIGN VISARGA +0C85;AL # KANNADA LETTER A +0C86;AL # KANNADA LETTER AA +0C87;AL # KANNADA LETTER I +0C88;AL # KANNADA LETTER II +0C89;AL # KANNADA LETTER U +0C8A;AL # KANNADA LETTER UU +0C8B;AL # KANNADA LETTER VOCALIC R +0C8C;AL # KANNADA LETTER VOCALIC L +0C8E;AL # KANNADA LETTER E +0C8F;AL # KANNADA LETTER EE +0C90;AL # KANNADA LETTER AI +0C92;AL # KANNADA LETTER O +0C93;AL # KANNADA LETTER OO +0C94;AL # KANNADA LETTER AU +0C95;AL # KANNADA LETTER KA +0C96;AL # KANNADA LETTER KHA +0C97;AL # KANNADA LETTER GA +0C98;AL # KANNADA LETTER GHA +0C99;AL # KANNADA LETTER NGA +0C9A;AL # KANNADA LETTER CA +0C9B;AL # KANNADA LETTER CHA +0C9C;AL # KANNADA LETTER JA +0C9D;AL # KANNADA LETTER JHA +0C9E;AL # KANNADA LETTER NYA +0C9F;AL # KANNADA LETTER TTA +0CA0;AL # KANNADA LETTER TTHA +0CA1;AL # KANNADA LETTER DDA +0CA2;AL # KANNADA LETTER DDHA +0CA3;AL # KANNADA LETTER NNA +0CA4;AL # KANNADA LETTER TA +0CA5;AL # KANNADA LETTER THA +0CA6;AL # KANNADA LETTER DA +0CA7;AL # KANNADA LETTER DHA +0CA8;AL # KANNADA LETTER NA +0CAA;AL # KANNADA LETTER PA +0CAB;AL # KANNADA LETTER PHA +0CAC;AL # KANNADA LETTER BA +0CAD;AL # KANNADA LETTER BHA +0CAE;AL # KANNADA LETTER MA +0CAF;AL # KANNADA LETTER YA +0CB0;AL # KANNADA LETTER RA +0CB1;AL # KANNADA LETTER RRA +0CB2;AL # KANNADA LETTER LA +0CB3;AL # KANNADA LETTER LLA +0CB5;AL # KANNADA LETTER VA +0CB6;AL # KANNADA LETTER SHA +0CB7;AL # KANNADA LETTER SSA +0CB8;AL # KANNADA LETTER SA +0CB9;AL # KANNADA LETTER HA +0CBE;CM # KANNADA VOWEL SIGN AA +0CBF;CM # KANNADA VOWEL SIGN I +0CC0;CM # KANNADA VOWEL SIGN II +0CC1;CM # KANNADA VOWEL SIGN U +0CC2;CM # KANNADA VOWEL SIGN UU +0CC3;CM # KANNADA VOWEL SIGN VOCALIC R +0CC4;CM # KANNADA VOWEL SIGN VOCALIC RR +0CC6;CM # KANNADA VOWEL SIGN E +0CC7;CM # KANNADA VOWEL SIGN EE +0CC8;CM # KANNADA VOWEL SIGN AI +0CCA;CM # KANNADA VOWEL SIGN O +0CCB;CM # KANNADA VOWEL SIGN OO +0CCC;CM # KANNADA VOWEL SIGN AU +0CCD;CM # KANNADA SIGN VIRAMA +0CD5;CM # KANNADA LENGTH MARK +0CD6;CM # KANNADA AI LENGTH MARK +0CDE;AL # KANNADA LETTER FA +0CE0;AL # KANNADA LETTER VOCALIC RR +0CE1;AL # KANNADA LETTER VOCALIC LL +0CE6;NU # KANNADA DIGIT ZERO +0CE7;NU # KANNADA DIGIT ONE +0CE8;NU # KANNADA DIGIT TWO +0CE9;NU # KANNADA DIGIT THREE +0CEA;NU # KANNADA DIGIT FOUR +0CEB;NU # KANNADA DIGIT FIVE +0CEC;NU # KANNADA DIGIT SIX +0CED;NU # KANNADA DIGIT SEVEN +0CEE;NU # KANNADA DIGIT EIGHT +0CEF;NU # KANNADA DIGIT NINE +0D02;CM # MALAYALAM SIGN ANUSVARA +0D03;CM # MALAYALAM SIGN VISARGA +0D05;AL # MALAYALAM LETTER A +0D06;AL # MALAYALAM LETTER AA +0D07;AL # MALAYALAM LETTER I +0D08;AL # MALAYALAM LETTER II +0D09;AL # MALAYALAM LETTER U +0D0A;AL # MALAYALAM LETTER UU +0D0B;AL # MALAYALAM LETTER VOCALIC R +0D0C;AL # MALAYALAM LETTER VOCALIC L +0D0E;AL # MALAYALAM LETTER E +0D0F;AL # MALAYALAM LETTER EE +0D10;AL # MALAYALAM LETTER AI +0D12;AL # MALAYALAM LETTER O +0D13;AL # MALAYALAM LETTER OO +0D14;AL # MALAYALAM LETTER AU +0D15;AL # MALAYALAM LETTER KA +0D16;AL # MALAYALAM LETTER KHA +0D17;AL # MALAYALAM LETTER GA +0D18;AL # MALAYALAM LETTER GHA +0D19;AL # MALAYALAM LETTER NGA +0D1A;AL # MALAYALAM LETTER CA +0D1B;AL # MALAYALAM LETTER CHA +0D1C;AL # MALAYALAM LETTER JA +0D1D;AL # MALAYALAM LETTER JHA +0D1E;AL # MALAYALAM LETTER NYA +0D1F;AL # MALAYALAM LETTER TTA +0D20;AL # MALAYALAM LETTER TTHA +0D21;AL # MALAYALAM LETTER DDA +0D22;AL # MALAYALAM LETTER DDHA +0D23;AL # MALAYALAM LETTER NNA +0D24;AL # MALAYALAM LETTER TA +0D25;AL # MALAYALAM LETTER THA +0D26;AL # MALAYALAM LETTER DA +0D27;AL # MALAYALAM LETTER DHA +0D28;AL # MALAYALAM LETTER NA +0D2A;AL # MALAYALAM LETTER PA +0D2B;AL # MALAYALAM LETTER PHA +0D2C;AL # MALAYALAM LETTER BA +0D2D;AL # MALAYALAM LETTER BHA +0D2E;AL # MALAYALAM LETTER MA +0D2F;AL # MALAYALAM LETTER YA +0D30;AL # MALAYALAM LETTER RA +0D31;AL # MALAYALAM LETTER RRA +0D32;AL # MALAYALAM LETTER LA +0D33;AL # MALAYALAM LETTER LLA +0D34;AL # MALAYALAM LETTER LLLA +0D35;AL # MALAYALAM LETTER VA +0D36;AL # MALAYALAM LETTER SHA +0D37;AL # MALAYALAM LETTER SSA +0D38;AL # MALAYALAM LETTER SA +0D39;AL # MALAYALAM LETTER HA +0D3E;CM # MALAYALAM VOWEL SIGN AA +0D3F;CM # MALAYALAM VOWEL SIGN I +0D40;CM # MALAYALAM VOWEL SIGN II +0D41;CM # MALAYALAM VOWEL SIGN U +0D42;CM # MALAYALAM VOWEL SIGN UU +0D43;CM # MALAYALAM VOWEL SIGN VOCALIC R +0D46;CM # MALAYALAM VOWEL SIGN E +0D47;CM # MALAYALAM VOWEL SIGN EE +0D48;CM # MALAYALAM VOWEL SIGN AI +0D4A;CM # MALAYALAM VOWEL SIGN O +0D4B;CM # MALAYALAM VOWEL SIGN OO +0D4C;CM # MALAYALAM VOWEL SIGN AU +0D4D;CM # MALAYALAM SIGN VIRAMA +0D57;CM # MALAYALAM AU LENGTH MARK +0D60;AL # MALAYALAM LETTER VOCALIC RR +0D61;AL # MALAYALAM LETTER VOCALIC LL +0D66;NU # MALAYALAM DIGIT ZERO +0D67;NU # MALAYALAM DIGIT ONE +0D68;NU # MALAYALAM DIGIT TWO +0D69;NU # MALAYALAM DIGIT THREE +0D6A;NU # MALAYALAM DIGIT FOUR +0D6B;NU # MALAYALAM DIGIT FIVE +0D6C;NU # MALAYALAM DIGIT SIX +0D6D;NU # MALAYALAM DIGIT SEVEN +0D6E;NU # MALAYALAM DIGIT EIGHT +0D6F;NU # MALAYALAM DIGIT NINE +0D82;CM # SINHALA SIGN ANUSVARAYA +0D83;CM # SINHALA SIGN VISARGAYA +0D85;AL # SINHALA LETTER AYANNA +0D86;AL # SINHALA LETTER AAYANNA +0D87;AL # SINHALA LETTER AEYANNA +0D88;AL # SINHALA LETTER AEEYANNA +0D89;AL # SINHALA LETTER IYANNA +0D8A;AL # SINHALA LETTER IIYANNA +0D8B;AL # SINHALA LETTER UYANNA +0D8C;AL # SINHALA LETTER UUYANNA +0D8D;AL # SINHALA LETTER IRUYANNA +0D8E;AL # SINHALA LETTER IRUUYANNA +0D8F;AL # SINHALA LETTER ILUYANNA +0D90;AL # SINHALA LETTER ILUUYANNA +0D91;AL # SINHALA LETTER EYANNA +0D92;AL # SINHALA LETTER EEYANNA +0D93;AL # SINHALA LETTER AIYANNA +0D94;AL # SINHALA LETTER OYANNA +0D95;AL # SINHALA LETTER OOYANNA +0D96;AL # SINHALA LETTER AUYANNA +0D9A;AL # SINHALA LETTER ALPAPRAANA KAYANNA +0D9B;AL # SINHALA LETTER MAHAAPRAANA KAYANNA +0D9C;AL # SINHALA LETTER ALPAPRAANA GAYANNA +0D9D;AL # SINHALA LETTER MAHAAPRAANA GAYANNA +0D9E;AL # SINHALA LETTER KANTAJA NAASIKYAYA +0D9F;AL # SINHALA LETTER SANYAKA GAYANNA +0DA0;AL # SINHALA LETTER ALPAPRAANA CAYANNA +0DA1;AL # SINHALA LETTER MAHAAPRAANA CAYANNA +0DA2;AL # SINHALA LETTER ALPAPRAANA JAYANNA +0DA3;AL # SINHALA LETTER MAHAAPRAANA JAYANNA +0DA4;AL # SINHALA LETTER TAALUJA NAASIKYAYA +0DA5;AL # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA +0DA6;AL # SINHALA LETTER SANYAKA JAYANNA +0DA7;AL # SINHALA LETTER ALPAPRAANA TTAYANNA +0DA8;AL # SINHALA LETTER MAHAAPRAANA TTAYANNA +0DA9;AL # SINHALA LETTER ALPAPRAANA DDAYANNA +0DAA;AL # SINHALA LETTER MAHAAPRAANA DDAYANNA +0DAB;AL # SINHALA LETTER MUURDHAJA NAYANNA +0DAC;AL # SINHALA LETTER SANYAKA DDAYANNA +0DAD;AL # SINHALA LETTER ALPAPRAANA TAYANNA +0DAE;AL # SINHALA LETTER MAHAAPRAANA TAYANNA +0DAF;AL # SINHALA LETTER ALPAPRAANA DAYANNA +0DB0;AL # SINHALA LETTER MAHAAPRAANA DAYANNA +0DB1;AL # SINHALA LETTER DANTAJA NAYANNA +0DB3;AL # SINHALA LETTER SANYAKA DAYANNA +0DB4;AL # SINHALA LETTER ALPAPRAANA PAYANNA +0DB5;AL # SINHALA LETTER MAHAAPRAANA PAYANNA +0DB6;AL # SINHALA LETTER ALPAPRAANA BAYANNA +0DB7;AL # SINHALA LETTER MAHAAPRAANA BAYANNA +0DB8;AL # SINHALA LETTER MAYANNA +0DB9;AL # SINHALA LETTER AMBA BAYANNA +0DBA;AL # SINHALA LETTER YAYANNA +0DBB;AL # SINHALA LETTER RAYANNA +0DBD;AL # SINHALA LETTER DANTAJA LAYANNA +0DC0;AL # SINHALA LETTER VAYANNA +0DC1;AL # SINHALA LETTER TAALUJA SAYANNA +0DC2;AL # SINHALA LETTER MUURDHAJA SAYANNA +0DC3;AL # SINHALA LETTER DANTAJA SAYANNA +0DC4;AL # SINHALA LETTER HAYANNA +0DC5;AL # SINHALA LETTER MUURDHAJA LAYANNA +0DC6;AL # SINHALA LETTER FAYANNA +0DCA;CM # SINHALA SIGN AL-LAKUNA +0DCF;CM # SINHALA VOWEL SIGN AELA-PILLA +0DD0;CM # SINHALA VOWEL SIGN KETTI AEDA-PILLA +0DD1;CM # SINHALA VOWEL SIGN DIGA AEDA-PILLA +0DD2;CM # SINHALA VOWEL SIGN KETTI IS-PILLA +0DD3;CM # SINHALA VOWEL SIGN DIGA IS-PILLA +0DD4;CM # SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6;CM # SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8;CM # SINHALA VOWEL SIGN GAETTA-PILLA +0DD9;CM # SINHALA VOWEL SIGN KOMBUVA +0DDA;CM # SINHALA VOWEL SIGN DIGA KOMBUVA +0DDB;CM # SINHALA VOWEL SIGN KOMBU DEKA +0DDC;CM # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA +0DDD;CM # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA +0DDE;CM # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0DDF;CM # SINHALA VOWEL SIGN GAYANUKITTA +0DF2;CM # SINHALA VOWEL SIGN DIGA GAETTA-PILLA +0DF3;CM # SINHALA VOWEL SIGN DIGA GAYANUKITTA +0DF4;AL # SINHALA PUNCTUATION KUNDDALIYA +0E01;SA # THAI CHARACTER KO KAI +0E02;SA # THAI CHARACTER KHO KHAI +0E03;SA # THAI CHARACTER KHO KHUAT +0E04;SA # THAI CHARACTER KHO KHWAI +0E05;SA # THAI CHARACTER KHO KHON +0E06;SA # THAI CHARACTER KHO RAKHANG +0E07;SA # THAI CHARACTER NGO NGU +0E08;SA # THAI CHARACTER CHO CHAN +0E09;SA # THAI CHARACTER CHO CHING +0E0A;SA # THAI CHARACTER CHO CHANG +0E0B;SA # THAI CHARACTER SO SO +0E0C;SA # THAI CHARACTER CHO CHOE +0E0D;SA # THAI CHARACTER YO YING +0E0E;SA # THAI CHARACTER DO CHADA +0E0F;SA # THAI CHARACTER TO PATAK +0E10;SA # THAI CHARACTER THO THAN +0E11;SA # THAI CHARACTER THO NANGMONTHO +0E12;SA # THAI CHARACTER THO PHUTHAO +0E13;SA # THAI CHARACTER NO NEN +0E14;SA # THAI CHARACTER DO DEK +0E15;SA # THAI CHARACTER TO TAO +0E16;SA # THAI CHARACTER THO THUNG +0E17;SA # THAI CHARACTER THO THAHAN +0E18;SA # THAI CHARACTER THO THONG +0E19;SA # THAI CHARACTER NO NU +0E1A;SA # THAI CHARACTER BO BAIMAI +0E1B;SA # THAI CHARACTER PO PLA +0E1C;SA # THAI CHARACTER PHO PHUNG +0E1D;SA # THAI CHARACTER FO FA +0E1E;SA # THAI CHARACTER PHO PHAN +0E1F;SA # THAI CHARACTER FO FAN +0E20;SA # THAI CHARACTER PHO SAMPHAO +0E21;SA # THAI CHARACTER MO MA +0E22;SA # THAI CHARACTER YO YAK +0E23;SA # THAI CHARACTER RO RUA +0E24;SA # THAI CHARACTER RU +0E25;SA # THAI CHARACTER LO LING +0E26;SA # THAI CHARACTER LU +0E27;SA # THAI CHARACTER WO WAEN +0E28;SA # THAI CHARACTER SO SALA +0E29;SA # THAI CHARACTER SO RUSI +0E2A;SA # THAI CHARACTER SO SUA +0E2B;SA # THAI CHARACTER HO HIP +0E2C;SA # THAI CHARACTER LO CHULA +0E2D;SA # THAI CHARACTER O ANG +0E2E;SA # THAI CHARACTER HO NOKHUK +0E2F;SA # THAI CHARACTER PAIYANNOI +0E30;SA # THAI CHARACTER SARA A +0E31;CM # THAI CHARACTER MAI HAN-AKAT +0E32;SA # THAI CHARACTER SARA AA +0E33;SA # THAI CHARACTER SARA AM +0E34;CM # THAI CHARACTER SARA I +0E35;CM # THAI CHARACTER SARA II +0E36;CM # THAI CHARACTER SARA UE +0E37;CM # THAI CHARACTER SARA UEE +0E38;CM # THAI CHARACTER SARA U +0E39;CM # THAI CHARACTER SARA UU +0E3A;CM # THAI CHARACTER PHINTHU +0E3F;PR # THAI CURRENCY SYMBOL BAHT +0E40;SA # THAI CHARACTER SARA E +0E41;SA # THAI CHARACTER SARA AE +0E42;SA # THAI CHARACTER SARA O +0E43;SA # THAI CHARACTER SARA AI MAIMUAN +0E44;SA # THAI CHARACTER SARA AI MAIMALAI +0E45;SA # THAI CHARACTER LAKKHANGYAO +0E46;SA # THAI CHARACTER MAIYAMOK +0E47;CM # THAI CHARACTER MAITAIKHU +0E48;CM # THAI CHARACTER MAI EK +0E49;CM # THAI CHARACTER MAI THO +0E4A;CM # THAI CHARACTER MAI TRI +0E4B;CM # THAI CHARACTER MAI CHATTAWA +0E4C;CM # THAI CHARACTER THANTHAKHAT +0E4D;CM # THAI CHARACTER NIKHAHIT +0E4E;CM # THAI CHARACTER YAMAKKAN +0E4F;AL # THAI CHARACTER FONGMAN +0E50;NU # THAI DIGIT ZERO +0E51;NU # THAI DIGIT ONE +0E52;NU # THAI DIGIT TWO +0E53;NU # THAI DIGIT THREE +0E54;NU # THAI DIGIT FOUR +0E55;NU # THAI DIGIT FIVE +0E56;NU # THAI DIGIT SIX +0E57;NU # THAI DIGIT SEVEN +0E58;NU # THAI DIGIT EIGHT +0E59;NU # THAI DIGIT NINE +0E5A;NS # THAI CHARACTER ANGKHANKHU +0E5B;NS # THAI CHARACTER KHOMUT +0E81;SA # LAO LETTER KO +0E82;SA # LAO LETTER KHO SUNG +0E84;SA # LAO LETTER KHO TAM +0E87;SA # LAO LETTER NGO +0E88;SA # LAO LETTER CO +0E8A;SA # LAO LETTER SO TAM +0E8D;SA # LAO LETTER NYO +0E94;SA # LAO LETTER DO +0E95;SA # LAO LETTER TO +0E96;SA # LAO LETTER THO SUNG +0E97;SA # LAO LETTER THO TAM +0E99;SA # LAO LETTER NO +0E9A;SA # LAO LETTER BO +0E9B;SA # LAO LETTER PO +0E9C;SA # LAO LETTER PHO SUNG +0E9D;SA # LAO LETTER FO TAM +0E9E;SA # LAO LETTER PHO TAM +0E9F;SA # LAO LETTER FO SUNG +0EA1;SA # LAO LETTER MO +0EA2;SA # LAO LETTER YO +0EA3;SA # LAO LETTER LO LING +0EA5;SA # LAO LETTER LO LOOT +0EA7;SA # LAO LETTER WO +0EAA;SA # LAO LETTER SO SUNG +0EAB;SA # LAO LETTER HO SUNG +0EAD;SA # LAO LETTER O +0EAE;SA # LAO LETTER HO TAM +0EAF;SA # LAO ELLIPSIS +0EB0;SA # LAO VOWEL SIGN A +0EB1;CM # LAO VOWEL SIGN MAI KAN +0EB2;SA # LAO VOWEL SIGN AA +0EB3;SA # LAO VOWEL SIGN AM +0EB4;CM # LAO VOWEL SIGN I +0EB5;CM # LAO VOWEL SIGN II +0EB6;CM # LAO VOWEL SIGN Y +0EB7;CM # LAO VOWEL SIGN YY +0EB8;CM # LAO VOWEL SIGN U +0EB9;CM # LAO VOWEL SIGN UU +0EBB;CM # LAO VOWEL SIGN MAI KON +0EBC;CM # LAO SEMIVOWEL SIGN LO +0EBD;SA # LAO SEMIVOWEL SIGN NYO +0EC0;SA # LAO VOWEL SIGN E +0EC1;SA # LAO VOWEL SIGN EI +0EC2;SA # LAO VOWEL SIGN O +0EC3;SA # LAO VOWEL SIGN AY +0EC4;SA # LAO VOWEL SIGN AI +0EC6;SA # LAO KO LA +0EC8;CM # LAO TONE MAI EK +0EC9;CM # LAO TONE MAI THO +0ECA;CM # LAO TONE MAI TI +0ECB;CM # LAO TONE MAI CATAWA +0ECC;CM # LAO CANCELLATION MARK +0ECD;CM # LAO NIGGAHITA +0ED0;NU # LAO DIGIT ZERO +0ED1;NU # LAO DIGIT ONE +0ED2;NU # LAO DIGIT TWO +0ED3;NU # LAO DIGIT THREE +0ED4;NU # LAO DIGIT FOUR +0ED5;NU # LAO DIGIT FIVE +0ED6;NU # LAO DIGIT SIX +0ED7;NU # LAO DIGIT SEVEN +0ED8;NU # LAO DIGIT EIGHT +0ED9;NU # LAO DIGIT NINE +0EDC;SA # LAO HO NO +0EDD;SA # LAO HO MO +0F00;AL # TIBETAN SYLLABLE OM +0F01;AL # TIBETAN MARK GTER YIG MGO TRUNCATED A +0F02;AL # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA +0F03;AL # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA +0F04;AL # TIBETAN MARK INITIAL YIG MGO MDUN MA +0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA +0F06;AL # TIBETAN MARK CARET YIG MGO PHUR SHAD MA +0F07;AL # TIBETAN MARK YIG MGO TSHEG SHAD MA +0F08;AL # TIBETAN MARK SBRUL SHAD +0F09;AL # TIBETAN MARK BSKUR YIG MGO +0F0A;AL # TIBETAN MARK BKA- SHOG YIG MGO +0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG +0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR +0F0D;AL # TIBETAN MARK SHAD +0F0E;AL # TIBETAN MARK NYIS SHAD +0F0F;AL # TIBETAN MARK TSHEG SHAD +0F10;AL # TIBETAN MARK NYIS TSHEG SHAD +0F11;AL # TIBETAN MARK RIN CHEN SPUNGS SHAD +0F12;AL # TIBETAN MARK RGYA GRAM SHAD +0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN +0F14;AL # TIBETAN MARK GTER TSHEG +0F15;AL # TIBETAN LOGOTYPE SIGN CHAD RTAGS +0F16;AL # TIBETAN LOGOTYPE SIGN LHAG RTAGS +0F17;AL # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS +0F18;CM # TIBETAN ASTROLOGICAL SIGN -KHYUD PA +0F19;CM # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F1A;AL # TIBETAN SIGN RDEL DKAR GCIG +0F1B;AL # TIBETAN SIGN RDEL DKAR GNYIS +0F1C;AL # TIBETAN SIGN RDEL DKAR GSUM +0F1D;AL # TIBETAN SIGN RDEL NAG GCIG +0F1E;AL # TIBETAN SIGN RDEL NAG GNYIS +0F1F;AL # TIBETAN SIGN RDEL DKAR RDEL NAG +0F20;NU # TIBETAN DIGIT ZERO +0F21;NU # TIBETAN DIGIT ONE +0F22;NU # TIBETAN DIGIT TWO +0F23;NU # TIBETAN DIGIT THREE +0F24;NU # TIBETAN DIGIT FOUR +0F25;NU # TIBETAN DIGIT FIVE +0F26;NU # TIBETAN DIGIT SIX +0F27;NU # TIBETAN DIGIT SEVEN +0F28;NU # TIBETAN DIGIT EIGHT +0F29;NU # TIBETAN DIGIT NINE +0F2A;AL # TIBETAN DIGIT HALF ONE +0F2B;AL # TIBETAN DIGIT HALF TWO +0F2C;AL # TIBETAN DIGIT HALF THREE +0F2D;AL # TIBETAN DIGIT HALF FOUR +0F2E;AL # TIBETAN DIGIT HALF FIVE +0F2F;AL # TIBETAN DIGIT HALF SIX +0F30;AL # TIBETAN DIGIT HALF SEVEN +0F31;AL # TIBETAN DIGIT HALF EIGHT +0F32;AL # TIBETAN DIGIT HALF NINE +0F33;AL # TIBETAN DIGIT HALF ZERO +0F34;AL # TIBETAN MARK BSDUS RTAGS +0F35;CM # TIBETAN MARK NGAS BZUNG NYI ZLA +0F36;AL # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN +0F37;CM # TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F38;AL # TIBETAN MARK CHE MGO +0F39;CM # TIBETAN MARK TSA -PHRU +0F3A;OP # TIBETAN MARK GUG RTAGS GYON +0F3B;CL # TIBETAN MARK GUG RTAGS GYAS +0F3C;OP # TIBETAN MARK ANG KHANG GYON +0F3D;CL # TIBETAN MARK ANG KHANG GYAS +0F3E;CM # TIBETAN SIGN YAR TSHES +0F3F;CM # TIBETAN SIGN MAR TSHES +0F40;AL # TIBETAN LETTER KA +0F41;AL # TIBETAN LETTER KHA +0F42;AL # TIBETAN LETTER GA +0F43;AL # TIBETAN LETTER GHA +0F44;AL # TIBETAN LETTER NGA +0F45;AL # TIBETAN LETTER CA +0F46;AL # TIBETAN LETTER CHA +0F47;AL # TIBETAN LETTER JA +0F49;AL # TIBETAN LETTER NYA +0F4A;AL # TIBETAN LETTER TTA +0F4B;AL # TIBETAN LETTER TTHA +0F4C;AL # TIBETAN LETTER DDA +0F4D;AL # TIBETAN LETTER DDHA +0F4E;AL # TIBETAN LETTER NNA +0F4F;AL # TIBETAN LETTER TA +0F50;AL # TIBETAN LETTER THA +0F51;AL # TIBETAN LETTER DA +0F52;AL # TIBETAN LETTER DHA +0F53;AL # TIBETAN LETTER NA +0F54;AL # TIBETAN LETTER PA +0F55;AL # TIBETAN LETTER PHA +0F56;AL # TIBETAN LETTER BA +0F57;AL # TIBETAN LETTER BHA +0F58;AL # TIBETAN LETTER MA +0F59;AL # TIBETAN LETTER TSA +0F5A;AL # TIBETAN LETTER TSHA +0F5B;AL # TIBETAN LETTER DZA +0F5C;AL # TIBETAN LETTER DZHA +0F5D;AL # TIBETAN LETTER WA +0F5E;AL # TIBETAN LETTER ZHA +0F5F;AL # TIBETAN LETTER ZA +0F60;AL # TIBETAN LETTER -A +0F61;AL # TIBETAN LETTER YA +0F62;AL # TIBETAN LETTER RA +0F63;AL # TIBETAN LETTER LA +0F64;AL # TIBETAN LETTER SHA +0F65;AL # TIBETAN LETTER SSA +0F66;AL # TIBETAN LETTER SA +0F67;AL # TIBETAN LETTER HA +0F68;AL # TIBETAN LETTER A +0F69;AL # TIBETAN LETTER KSSA +0F6A;AL # TIBETAN LETTER FIXED-FORM RA +0F71;CM # TIBETAN VOWEL SIGN AA +0F72;CM # TIBETAN VOWEL SIGN I +0F73;CM # TIBETAN VOWEL SIGN II +0F74;CM # TIBETAN VOWEL SIGN U +0F75;CM # TIBETAN VOWEL SIGN UU +0F76;CM # TIBETAN VOWEL SIGN VOCALIC R +0F77;CM # TIBETAN VOWEL SIGN VOCALIC RR +0F78;CM # TIBETAN VOWEL SIGN VOCALIC L +0F79;CM # TIBETAN VOWEL SIGN VOCALIC LL +0F7A;CM # TIBETAN VOWEL SIGN E +0F7B;CM # TIBETAN VOWEL SIGN EE +0F7C;CM # TIBETAN VOWEL SIGN O +0F7D;CM # TIBETAN VOWEL SIGN OO +0F7E;CM # TIBETAN SIGN RJES SU NGA RO +0F7F;CM # TIBETAN SIGN RNAM BCAD +0F80;CM # TIBETAN VOWEL SIGN REVERSED I +0F81;CM # TIBETAN VOWEL SIGN REVERSED II +0F82;CM # TIBETAN SIGN NYI ZLA NAA DA +0F83;CM # TIBETAN SIGN SNA LDAN +0F84;CM # TIBETAN MARK HALANTA +0F85;AL # TIBETAN MARK PALUTA +0F86;CM # TIBETAN SIGN LCI RTAGS +0F87;CM # TIBETAN SIGN YANG RTAGS +0F88;AL # TIBETAN SIGN LCE TSA CAN +0F89;AL # TIBETAN SIGN MCHU CAN +0F8A;AL # TIBETAN SIGN GRU CAN RGYINGS +0F8B;AL # TIBETAN SIGN GRU MED RGYINGS +0F90;CM # TIBETAN SUBJOINED LETTER KA +0F91;CM # TIBETAN SUBJOINED LETTER KHA +0F92;CM # TIBETAN SUBJOINED LETTER GA +0F93;CM # TIBETAN SUBJOINED LETTER GHA +0F94;CM # TIBETAN SUBJOINED LETTER NGA +0F95;CM # TIBETAN SUBJOINED LETTER CA +0F96;CM # TIBETAN SUBJOINED LETTER CHA +0F97;CM # TIBETAN SUBJOINED LETTER JA +0F99;CM # TIBETAN SUBJOINED LETTER NYA +0F9A;CM # TIBETAN SUBJOINED LETTER TTA +0F9B;CM # TIBETAN SUBJOINED LETTER TTHA +0F9C;CM # TIBETAN SUBJOINED LETTER DDA +0F9D;CM # TIBETAN SUBJOINED LETTER DDHA +0F9E;CM # TIBETAN SUBJOINED LETTER NNA +0F9F;CM # TIBETAN SUBJOINED LETTER TA +0FA0;CM # TIBETAN SUBJOINED LETTER THA +0FA1;CM # TIBETAN SUBJOINED LETTER DA +0FA2;CM # TIBETAN SUBJOINED LETTER DHA +0FA3;CM # TIBETAN SUBJOINED LETTER NA +0FA4;CM # TIBETAN SUBJOINED LETTER PA +0FA5;CM # TIBETAN SUBJOINED LETTER PHA +0FA6;CM # TIBETAN SUBJOINED LETTER BA +0FA7;CM # TIBETAN SUBJOINED LETTER BHA +0FA8;CM # TIBETAN SUBJOINED LETTER MA +0FA9;CM # TIBETAN SUBJOINED LETTER TSA +0FAA;CM # TIBETAN SUBJOINED LETTER TSHA +0FAB;CM # TIBETAN SUBJOINED LETTER DZA +0FAC;CM # TIBETAN SUBJOINED LETTER DZHA +0FAD;CM # TIBETAN SUBJOINED LETTER WA +0FAE;CM # TIBETAN SUBJOINED LETTER ZHA +0FAF;CM # TIBETAN SUBJOINED LETTER ZA +0FB0;CM # TIBETAN SUBJOINED LETTER -A +0FB1;CM # TIBETAN SUBJOINED LETTER YA +0FB2;CM # TIBETAN SUBJOINED LETTER RA +0FB3;CM # TIBETAN SUBJOINED LETTER LA +0FB4;CM # TIBETAN SUBJOINED LETTER SHA +0FB5;CM # TIBETAN SUBJOINED LETTER SSA +0FB6;CM # TIBETAN SUBJOINED LETTER SA +0FB7;CM # TIBETAN SUBJOINED LETTER HA +0FB8;CM # TIBETAN SUBJOINED LETTER A +0FB9;CM # TIBETAN SUBJOINED LETTER KSSA +0FBA;CM # TIBETAN SUBJOINED LETTER FIXED-FORM WA +0FBB;CM # TIBETAN SUBJOINED LETTER FIXED-FORM YA +0FBC;CM # TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FBE;AL # TIBETAN KU RU KHA +0FBF;AL # TIBETAN KU RU KHA BZHI MIG CAN +0FC0;AL # TIBETAN CANTILLATION SIGN HEAVY BEAT +0FC1;AL # TIBETAN CANTILLATION SIGN LIGHT BEAT +0FC2;AL # TIBETAN CANTILLATION SIGN CANG TE-U +0FC3;AL # TIBETAN CANTILLATION SIGN SBUB -CHAL +0FC4;AL # TIBETAN SYMBOL DRIL BU +0FC5;AL # TIBETAN SYMBOL RDO RJE +0FC6;CM # TIBETAN SYMBOL PADMA GDAN +0FC7;AL # TIBETAN SYMBOL RDO RJE RGYA GRAM +0FC8;AL # TIBETAN SYMBOL PHUR PA +0FC9;AL # TIBETAN SYMBOL NOR BU +0FCA;AL # TIBETAN SYMBOL NOR BU NYIS -KHYIL +0FCB;AL # TIBETAN SYMBOL NOR BU GSUM -KHYIL +0FCC;AL # TIBETAN SYMBOL NOR BU BZHI -KHYIL +0FCF;AL # TIBETAN SIGN RDEL NAG GSUM +1000;SA # MYANMAR LETTER KA +1001;SA # MYANMAR LETTER KHA +1002;SA # MYANMAR LETTER GA +1003;SA # MYANMAR LETTER GHA +1004;SA # MYANMAR LETTER NGA +1005;SA # MYANMAR LETTER CA +1006;SA # MYANMAR LETTER CHA +1007;SA # MYANMAR LETTER JA +1008;SA # MYANMAR LETTER JHA +1009;SA # MYANMAR LETTER NYA +100A;SA # MYANMAR LETTER NNYA +100B;SA # MYANMAR LETTER TTA +100C;SA # MYANMAR LETTER TTHA +100D;SA # MYANMAR LETTER DDA +100E;SA # MYANMAR LETTER DDHA +100F;SA # MYANMAR LETTER NNA +1010;SA # MYANMAR LETTER TA +1011;SA # MYANMAR LETTER THA +1012;SA # MYANMAR LETTER DA +1013;SA # MYANMAR LETTER DHA +1014;SA # MYANMAR LETTER NA +1015;SA # MYANMAR LETTER PA +1016;SA # MYANMAR LETTER PHA +1017;SA # MYANMAR LETTER BA +1018;SA # MYANMAR LETTER BHA +1019;SA # MYANMAR LETTER MA +101A;SA # MYANMAR LETTER YA +101B;SA # MYANMAR LETTER RA +101C;SA # MYANMAR LETTER LA +101D;SA # MYANMAR LETTER WA +101E;SA # MYANMAR LETTER SA +101F;SA # MYANMAR LETTER HA +1020;SA # MYANMAR LETTER LLA +1021;SA # MYANMAR LETTER A +1023;SA # MYANMAR LETTER I +1024;SA # MYANMAR LETTER II +1025;SA # MYANMAR LETTER U +1026;SA # MYANMAR LETTER UU +1027;SA # MYANMAR LETTER E +1029;SA # MYANMAR LETTER O +102A;SA # MYANMAR LETTER AU +102C;CM # MYANMAR VOWEL SIGN AA +102D;CM # MYANMAR VOWEL SIGN I +102E;CM # MYANMAR VOWEL SIGN II +102F;CM # MYANMAR VOWEL SIGN U +1030;CM # MYANMAR VOWEL SIGN UU +1031;CM # MYANMAR VOWEL SIGN E +1032;CM # MYANMAR VOWEL SIGN AI +1036;CM # MYANMAR SIGN ANUSVARA +1037;CM # MYANMAR SIGN DOT BELOW +1038;CM # MYANMAR SIGN VISARGA +1039;CM # MYANMAR SIGN VIRAMA +1040;NU # MYANMAR DIGIT ZERO +1041;NU # MYANMAR DIGIT ONE +1042;NU # MYANMAR DIGIT TWO +1043;NU # MYANMAR DIGIT THREE +1044;NU # MYANMAR DIGIT FOUR +1045;NU # MYANMAR DIGIT FIVE +1046;NU # MYANMAR DIGIT SIX +1047;NU # MYANMAR DIGIT SEVEN +1048;NU # MYANMAR DIGIT EIGHT +1049;NU # MYANMAR DIGIT NINE +104A;AL # MYANMAR SIGN LITTLE SECTION +104B;AL # MYANMAR SIGN SECTION +104C;AL # MYANMAR SYMBOL LOCATIVE +104D;AL # MYANMAR SYMBOL COMPLETED +104E;AL # MYANMAR SYMBOL AFOREMENTIONED +104F;AL # MYANMAR SYMBOL GENITIVE +1050;SA # MYANMAR LETTER SHA +1051;SA # MYANMAR LETTER SSA +1052;SA # MYANMAR LETTER VOCALIC R +1053;SA # MYANMAR LETTER VOCALIC RR +1054;SA # MYANMAR LETTER VOCALIC L +1055;SA # MYANMAR LETTER VOCALIC LL +1056;CM # MYANMAR VOWEL SIGN VOCALIC R +1057;CM # MYANMAR VOWEL SIGN VOCALIC RR +1058;CM # MYANMAR VOWEL SIGN VOCALIC L +1059;CM # MYANMAR VOWEL SIGN VOCALIC LL +10A0;AL # GEORGIAN CAPITAL LETTER AN +10A1;AL # GEORGIAN CAPITAL LETTER BAN +10A2;AL # GEORGIAN CAPITAL LETTER GAN +10A3;AL # GEORGIAN CAPITAL LETTER DON +10A4;AL # GEORGIAN CAPITAL LETTER EN +10A5;AL # GEORGIAN CAPITAL LETTER VIN +10A6;AL # GEORGIAN CAPITAL LETTER ZEN +10A7;AL # GEORGIAN CAPITAL LETTER TAN +10A8;AL # GEORGIAN CAPITAL LETTER IN +10A9;AL # GEORGIAN CAPITAL LETTER KAN +10AA;AL # GEORGIAN CAPITAL LETTER LAS +10AB;AL # GEORGIAN CAPITAL LETTER MAN +10AC;AL # GEORGIAN CAPITAL LETTER NAR +10AD;AL # GEORGIAN CAPITAL LETTER ON +10AE;AL # GEORGIAN CAPITAL LETTER PAR +10AF;AL # GEORGIAN CAPITAL LETTER ZHAR +10B0;AL # GEORGIAN CAPITAL LETTER RAE +10B1;AL # GEORGIAN CAPITAL LETTER SAN +10B2;AL # GEORGIAN CAPITAL LETTER TAR +10B3;AL # GEORGIAN CAPITAL LETTER UN +10B4;AL # GEORGIAN CAPITAL LETTER PHAR +10B5;AL # GEORGIAN CAPITAL LETTER KHAR +10B6;AL # GEORGIAN CAPITAL LETTER GHAN +10B7;AL # GEORGIAN CAPITAL LETTER QAR +10B8;AL # GEORGIAN CAPITAL LETTER SHIN +10B9;AL # GEORGIAN CAPITAL LETTER CHIN +10BA;AL # GEORGIAN CAPITAL LETTER CAN +10BB;AL # GEORGIAN CAPITAL LETTER JIL +10BC;AL # GEORGIAN CAPITAL LETTER CIL +10BD;AL # GEORGIAN CAPITAL LETTER CHAR +10BE;AL # GEORGIAN CAPITAL LETTER XAN +10BF;AL # GEORGIAN CAPITAL LETTER JHAN +10C0;AL # GEORGIAN CAPITAL LETTER HAE +10C1;AL # GEORGIAN CAPITAL LETTER HE +10C2;AL # GEORGIAN CAPITAL LETTER HIE +10C3;AL # GEORGIAN CAPITAL LETTER WE +10C4;AL # GEORGIAN CAPITAL LETTER HAR +10C5;AL # GEORGIAN CAPITAL LETTER HOE +10D0;AL # GEORGIAN LETTER AN +10D1;AL # GEORGIAN LETTER BAN +10D2;AL # GEORGIAN LETTER GAN +10D3;AL # GEORGIAN LETTER DON +10D4;AL # GEORGIAN LETTER EN +10D5;AL # GEORGIAN LETTER VIN +10D6;AL # GEORGIAN LETTER ZEN +10D7;AL # GEORGIAN LETTER TAN +10D8;AL # GEORGIAN LETTER IN +10D9;AL # GEORGIAN LETTER KAN +10DA;AL # GEORGIAN LETTER LAS +10DB;AL # GEORGIAN LETTER MAN +10DC;AL # GEORGIAN LETTER NAR +10DD;AL # GEORGIAN LETTER ON +10DE;AL # GEORGIAN LETTER PAR +10DF;AL # GEORGIAN LETTER ZHAR +10E0;AL # GEORGIAN LETTER RAE +10E1;AL # GEORGIAN LETTER SAN +10E2;AL # GEORGIAN LETTER TAR +10E3;AL # GEORGIAN LETTER UN +10E4;AL # GEORGIAN LETTER PHAR +10E5;AL # GEORGIAN LETTER KHAR +10E6;AL # GEORGIAN LETTER GHAN +10E7;AL # GEORGIAN LETTER QAR +10E8;AL # GEORGIAN LETTER SHIN +10E9;AL # GEORGIAN LETTER CHIN +10EA;AL # GEORGIAN LETTER CAN +10EB;AL # GEORGIAN LETTER JIL +10EC;AL # GEORGIAN LETTER CIL +10ED;AL # GEORGIAN LETTER CHAR +10EE;AL # GEORGIAN LETTER XAN +10EF;AL # GEORGIAN LETTER JHAN +10F0;AL # GEORGIAN LETTER HAE +10F1;AL # GEORGIAN LETTER HE +10F2;AL # GEORGIAN LETTER HIE +10F3;AL # GEORGIAN LETTER WE +10F4;AL # GEORGIAN LETTER HAR +10F5;AL # GEORGIAN LETTER HOE +10F6;AL # GEORGIAN LETTER FI +10F7;AL # GEORGIAN LETTER YN +10F8;AL # GEORGIAN LETTER ELIFI +10FB;AL # GEORGIAN PARAGRAPH SEPARATOR +1100;ID # HANGUL CHOSEONG KIYEOK +1101;ID # HANGUL CHOSEONG SSANGKIYEOK +1102;ID # HANGUL CHOSEONG NIEUN +1103;ID # HANGUL CHOSEONG TIKEUT +1104;ID # HANGUL CHOSEONG SSANGTIKEUT +1105;ID # HANGUL CHOSEONG RIEUL +1106;ID # HANGUL CHOSEONG MIEUM +1107;ID # HANGUL CHOSEONG PIEUP +1108;ID # HANGUL CHOSEONG SSANGPIEUP +1109;ID # HANGUL CHOSEONG SIOS +110A;ID # HANGUL CHOSEONG SSANGSIOS +110B;ID # HANGUL CHOSEONG IEUNG +110C;ID # HANGUL CHOSEONG CIEUC +110D;ID # HANGUL CHOSEONG SSANGCIEUC +110E;ID # HANGUL CHOSEONG CHIEUCH +110F;ID # HANGUL CHOSEONG KHIEUKH +1110;ID # HANGUL CHOSEONG THIEUTH +1111;ID # HANGUL CHOSEONG PHIEUPH +1112;ID # HANGUL CHOSEONG HIEUH +1113;ID # HANGUL CHOSEONG NIEUN-KIYEOK +1114;ID # HANGUL CHOSEONG SSANGNIEUN +1115;ID # HANGUL CHOSEONG NIEUN-TIKEUT +1116;ID # HANGUL CHOSEONG NIEUN-PIEUP +1117;ID # HANGUL CHOSEONG TIKEUT-KIYEOK +1118;ID # HANGUL CHOSEONG RIEUL-NIEUN +1119;ID # HANGUL CHOSEONG SSANGRIEUL +111A;ID # HANGUL CHOSEONG RIEUL-HIEUH +111B;ID # HANGUL CHOSEONG KAPYEOUNRIEUL +111C;ID # HANGUL CHOSEONG MIEUM-PIEUP +111D;ID # HANGUL CHOSEONG KAPYEOUNMIEUM +111E;ID # HANGUL CHOSEONG PIEUP-KIYEOK +111F;ID # HANGUL CHOSEONG PIEUP-NIEUN +1120;ID # HANGUL CHOSEONG PIEUP-TIKEUT +1121;ID # HANGUL CHOSEONG PIEUP-SIOS +1122;ID # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK +1123;ID # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT +1124;ID # HANGUL CHOSEONG PIEUP-SIOS-PIEUP +1125;ID # HANGUL CHOSEONG PIEUP-SSANGSIOS +1126;ID # HANGUL CHOSEONG PIEUP-SIOS-CIEUC +1127;ID # HANGUL CHOSEONG PIEUP-CIEUC +1128;ID # HANGUL CHOSEONG PIEUP-CHIEUCH +1129;ID # HANGUL CHOSEONG PIEUP-THIEUTH +112A;ID # HANGUL CHOSEONG PIEUP-PHIEUPH +112B;ID # HANGUL CHOSEONG KAPYEOUNPIEUP +112C;ID # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP +112D;ID # HANGUL CHOSEONG SIOS-KIYEOK +112E;ID # HANGUL CHOSEONG SIOS-NIEUN +112F;ID # HANGUL CHOSEONG SIOS-TIKEUT +1130;ID # HANGUL CHOSEONG SIOS-RIEUL +1131;ID # HANGUL CHOSEONG SIOS-MIEUM +1132;ID # HANGUL CHOSEONG SIOS-PIEUP +1133;ID # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK +1134;ID # HANGUL CHOSEONG SIOS-SSANGSIOS +1135;ID # HANGUL CHOSEONG SIOS-IEUNG +1136;ID # HANGUL CHOSEONG SIOS-CIEUC +1137;ID # HANGUL CHOSEONG SIOS-CHIEUCH +1138;ID # HANGUL CHOSEONG SIOS-KHIEUKH +1139;ID # HANGUL CHOSEONG SIOS-THIEUTH +113A;ID # HANGUL CHOSEONG SIOS-PHIEUPH +113B;ID # HANGUL CHOSEONG SIOS-HIEUH +113C;ID # HANGUL CHOSEONG CHITUEUMSIOS +113D;ID # HANGUL CHOSEONG CHITUEUMSSANGSIOS +113E;ID # HANGUL CHOSEONG CEONGCHIEUMSIOS +113F;ID # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS +1140;ID # HANGUL CHOSEONG PANSIOS +1141;ID # HANGUL CHOSEONG IEUNG-KIYEOK +1142;ID # HANGUL CHOSEONG IEUNG-TIKEUT +1143;ID # HANGUL CHOSEONG IEUNG-MIEUM +1144;ID # HANGUL CHOSEONG IEUNG-PIEUP +1145;ID # HANGUL CHOSEONG IEUNG-SIOS +1146;ID # HANGUL CHOSEONG IEUNG-PANSIOS +1147;ID # HANGUL CHOSEONG SSANGIEUNG +1148;ID # HANGUL CHOSEONG IEUNG-CIEUC +1149;ID # HANGUL CHOSEONG IEUNG-CHIEUCH +114A;ID # HANGUL CHOSEONG IEUNG-THIEUTH +114B;ID # HANGUL CHOSEONG IEUNG-PHIEUPH +114C;ID # HANGUL CHOSEONG YESIEUNG +114D;ID # HANGUL CHOSEONG CIEUC-IEUNG +114E;ID # HANGUL CHOSEONG CHITUEUMCIEUC +114F;ID # HANGUL CHOSEONG CHITUEUMSSANGCIEUC +1150;ID # HANGUL CHOSEONG CEONGCHIEUMCIEUC +1151;ID # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC +1152;ID # HANGUL CHOSEONG CHIEUCH-KHIEUKH +1153;ID # HANGUL CHOSEONG CHIEUCH-HIEUH +1154;ID # HANGUL CHOSEONG CHITUEUMCHIEUCH +1155;ID # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH +1156;ID # HANGUL CHOSEONG PHIEUPH-PIEUP +1157;ID # HANGUL CHOSEONG KAPYEOUNPHIEUPH +1158;ID # HANGUL CHOSEONG SSANGHIEUH +1159;ID # HANGUL CHOSEONG YEORINHIEUH +115F;ID # HANGUL CHOSEONG FILLER +1160;CM # HANGUL JUNGSEONG FILLER +1161;CM # HANGUL JUNGSEONG A +1162;CM # HANGUL JUNGSEONG AE +1163;CM # HANGUL JUNGSEONG YA +1164;CM # HANGUL JUNGSEONG YAE +1165;CM # HANGUL JUNGSEONG EO +1166;CM # HANGUL JUNGSEONG E +1167;CM # HANGUL JUNGSEONG YEO +1168;CM # HANGUL JUNGSEONG YE +1169;CM # HANGUL JUNGSEONG O +116A;CM # HANGUL JUNGSEONG WA +116B;CM # HANGUL JUNGSEONG WAE +116C;CM # HANGUL JUNGSEONG OE +116D;CM # HANGUL JUNGSEONG YO +116E;CM # HANGUL JUNGSEONG U +116F;CM # HANGUL JUNGSEONG WEO +1170;CM # HANGUL JUNGSEONG WE +1171;CM # HANGUL JUNGSEONG WI +1172;CM # HANGUL JUNGSEONG YU +1173;CM # HANGUL JUNGSEONG EU +1174;CM # HANGUL JUNGSEONG YI +1175;CM # HANGUL JUNGSEONG I +1176;CM # HANGUL JUNGSEONG A-O +1177;CM # HANGUL JUNGSEONG A-U +1178;CM # HANGUL JUNGSEONG YA-O +1179;CM # HANGUL JUNGSEONG YA-YO +117A;CM # HANGUL JUNGSEONG EO-O +117B;CM # HANGUL JUNGSEONG EO-U +117C;CM # HANGUL JUNGSEONG EO-EU +117D;CM # HANGUL JUNGSEONG YEO-O +117E;CM # HANGUL JUNGSEONG YEO-U +117F;CM # HANGUL JUNGSEONG O-EO +1180;CM # HANGUL JUNGSEONG O-E +1181;CM # HANGUL JUNGSEONG O-YE +1182;CM # HANGUL JUNGSEONG O-O +1183;CM # HANGUL JUNGSEONG O-U +1184;CM # HANGUL JUNGSEONG YO-YA +1185;CM # HANGUL JUNGSEONG YO-YAE +1186;CM # HANGUL JUNGSEONG YO-YEO +1187;CM # HANGUL JUNGSEONG YO-O +1188;CM # HANGUL JUNGSEONG YO-I +1189;CM # HANGUL JUNGSEONG U-A +118A;CM # HANGUL JUNGSEONG U-AE +118B;CM # HANGUL JUNGSEONG U-EO-EU +118C;CM # HANGUL JUNGSEONG U-YE +118D;CM # HANGUL JUNGSEONG U-U +118E;CM # HANGUL JUNGSEONG YU-A +118F;CM # HANGUL JUNGSEONG YU-EO +1190;CM # HANGUL JUNGSEONG YU-E +1191;CM # HANGUL JUNGSEONG YU-YEO +1192;CM # HANGUL JUNGSEONG YU-YE +1193;CM # HANGUL JUNGSEONG YU-U +1194;CM # HANGUL JUNGSEONG YU-I +1195;CM # HANGUL JUNGSEONG EU-U +1196;CM # HANGUL JUNGSEONG EU-EU +1197;CM # HANGUL JUNGSEONG YI-U +1198;CM # HANGUL JUNGSEONG I-A +1199;CM # HANGUL JUNGSEONG I-YA +119A;CM # HANGUL JUNGSEONG I-O +119B;CM # HANGUL JUNGSEONG I-U +119C;CM # HANGUL JUNGSEONG I-EU +119D;CM # HANGUL JUNGSEONG I-ARAEA +119E;CM # HANGUL JUNGSEONG ARAEA +119F;CM # HANGUL JUNGSEONG ARAEA-EO +11A0;CM # HANGUL JUNGSEONG ARAEA-U +11A1;CM # HANGUL JUNGSEONG ARAEA-I +11A2;CM # HANGUL JUNGSEONG SSANGARAEA +11A8;CM # HANGUL JONGSEONG KIYEOK +11A9;CM # HANGUL JONGSEONG SSANGKIYEOK +11AA;CM # HANGUL JONGSEONG KIYEOK-SIOS +11AB;CM # HANGUL JONGSEONG NIEUN +11AC;CM # HANGUL JONGSEONG NIEUN-CIEUC +11AD;CM # HANGUL JONGSEONG NIEUN-HIEUH +11AE;CM # HANGUL JONGSEONG TIKEUT +11AF;CM # HANGUL JONGSEONG RIEUL +11B0;CM # HANGUL JONGSEONG RIEUL-KIYEOK +11B1;CM # HANGUL JONGSEONG RIEUL-MIEUM +11B2;CM # HANGUL JONGSEONG RIEUL-PIEUP +11B3;CM # HANGUL JONGSEONG RIEUL-SIOS +11B4;CM # HANGUL JONGSEONG RIEUL-THIEUTH +11B5;CM # HANGUL JONGSEONG RIEUL-PHIEUPH +11B6;CM # HANGUL JONGSEONG RIEUL-HIEUH +11B7;CM # HANGUL JONGSEONG MIEUM +11B8;CM # HANGUL JONGSEONG PIEUP +11B9;CM # HANGUL JONGSEONG PIEUP-SIOS +11BA;CM # HANGUL JONGSEONG SIOS +11BB;CM # HANGUL JONGSEONG SSANGSIOS +11BC;CM # HANGUL JONGSEONG IEUNG +11BD;CM # HANGUL JONGSEONG CIEUC +11BE;CM # HANGUL JONGSEONG CHIEUCH +11BF;CM # HANGUL JONGSEONG KHIEUKH +11C0;CM # HANGUL JONGSEONG THIEUTH +11C1;CM # HANGUL JONGSEONG PHIEUPH +11C2;CM # HANGUL JONGSEONG HIEUH +11C3;CM # HANGUL JONGSEONG KIYEOK-RIEUL +11C4;CM # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK +11C5;CM # HANGUL JONGSEONG NIEUN-KIYEOK +11C6;CM # HANGUL JONGSEONG NIEUN-TIKEUT +11C7;CM # HANGUL JONGSEONG NIEUN-SIOS +11C8;CM # HANGUL JONGSEONG NIEUN-PANSIOS +11C9;CM # HANGUL JONGSEONG NIEUN-THIEUTH +11CA;CM # HANGUL JONGSEONG TIKEUT-KIYEOK +11CB;CM # HANGUL JONGSEONG TIKEUT-RIEUL +11CC;CM # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS +11CD;CM # HANGUL JONGSEONG RIEUL-NIEUN +11CE;CM # HANGUL JONGSEONG RIEUL-TIKEUT +11CF;CM # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH +11D0;CM # HANGUL JONGSEONG SSANGRIEUL +11D1;CM # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK +11D2;CM # HANGUL JONGSEONG RIEUL-MIEUM-SIOS +11D3;CM # HANGUL JONGSEONG RIEUL-PIEUP-SIOS +11D4;CM # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH +11D5;CM # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP +11D6;CM # HANGUL JONGSEONG RIEUL-SSANGSIOS +11D7;CM # HANGUL JONGSEONG RIEUL-PANSIOS +11D8;CM # HANGUL JONGSEONG RIEUL-KHIEUKH +11D9;CM # HANGUL JONGSEONG RIEUL-YEORINHIEUH +11DA;CM # HANGUL JONGSEONG MIEUM-KIYEOK +11DB;CM # HANGUL JONGSEONG MIEUM-RIEUL +11DC;CM # HANGUL JONGSEONG MIEUM-PIEUP +11DD;CM # HANGUL JONGSEONG MIEUM-SIOS +11DE;CM # HANGUL JONGSEONG MIEUM-SSANGSIOS +11DF;CM # HANGUL JONGSEONG MIEUM-PANSIOS +11E0;CM # HANGUL JONGSEONG MIEUM-CHIEUCH +11E1;CM # HANGUL JONGSEONG MIEUM-HIEUH +11E2;CM # HANGUL JONGSEONG KAPYEOUNMIEUM +11E3;CM # HANGUL JONGSEONG PIEUP-RIEUL +11E4;CM # HANGUL JONGSEONG PIEUP-PHIEUPH +11E5;CM # HANGUL JONGSEONG PIEUP-HIEUH +11E6;CM # HANGUL JONGSEONG KAPYEOUNPIEUP +11E7;CM # HANGUL JONGSEONG SIOS-KIYEOK +11E8;CM # HANGUL JONGSEONG SIOS-TIKEUT +11E9;CM # HANGUL JONGSEONG SIOS-RIEUL +11EA;CM # HANGUL JONGSEONG SIOS-PIEUP +11EB;CM # HANGUL JONGSEONG PANSIOS +11EC;CM # HANGUL JONGSEONG IEUNG-KIYEOK +11ED;CM # HANGUL JONGSEONG IEUNG-SSANGKIYEOK +11EE;CM # HANGUL JONGSEONG SSANGIEUNG +11EF;CM # HANGUL JONGSEONG IEUNG-KHIEUKH +11F0;CM # HANGUL JONGSEONG YESIEUNG +11F1;CM # HANGUL JONGSEONG YESIEUNG-SIOS +11F2;CM # HANGUL JONGSEONG YESIEUNG-PANSIOS +11F3;CM # HANGUL JONGSEONG PHIEUPH-PIEUP +11F4;CM # HANGUL JONGSEONG KAPYEOUNPHIEUPH +11F5;CM # HANGUL JONGSEONG HIEUH-NIEUN +11F6;CM # HANGUL JONGSEONG HIEUH-RIEUL +11F7;CM # HANGUL JONGSEONG HIEUH-MIEUM +11F8;CM # HANGUL JONGSEONG HIEUH-PIEUP +11F9;CM # HANGUL JONGSEONG YEORINHIEUH +1200;AL # ETHIOPIC SYLLABLE HA +1201;AL # ETHIOPIC SYLLABLE HU +1202;AL # ETHIOPIC SYLLABLE HI +1203;AL # ETHIOPIC SYLLABLE HAA +1204;AL # ETHIOPIC SYLLABLE HEE +1205;AL # ETHIOPIC SYLLABLE HE +1206;AL # ETHIOPIC SYLLABLE HO +1208;AL # ETHIOPIC SYLLABLE LA +1209;AL # ETHIOPIC SYLLABLE LU +120A;AL # ETHIOPIC SYLLABLE LI +120B;AL # ETHIOPIC SYLLABLE LAA +120C;AL # ETHIOPIC SYLLABLE LEE +120D;AL # ETHIOPIC SYLLABLE LE +120E;AL # ETHIOPIC SYLLABLE LO +120F;AL # ETHIOPIC SYLLABLE LWA +1210;AL # ETHIOPIC SYLLABLE HHA +1211;AL # ETHIOPIC SYLLABLE HHU +1212;AL # ETHIOPIC SYLLABLE HHI +1213;AL # ETHIOPIC SYLLABLE HHAA +1214;AL # ETHIOPIC SYLLABLE HHEE +1215;AL # ETHIOPIC SYLLABLE HHE +1216;AL # ETHIOPIC SYLLABLE HHO +1217;AL # ETHIOPIC SYLLABLE HHWA +1218;AL # ETHIOPIC SYLLABLE MA +1219;AL # ETHIOPIC SYLLABLE MU +121A;AL # ETHIOPIC SYLLABLE MI +121B;AL # ETHIOPIC SYLLABLE MAA +121C;AL # ETHIOPIC SYLLABLE MEE +121D;AL # ETHIOPIC SYLLABLE ME +121E;AL # ETHIOPIC SYLLABLE MO +121F;AL # ETHIOPIC SYLLABLE MWA +1220;AL # ETHIOPIC SYLLABLE SZA +1221;AL # ETHIOPIC SYLLABLE SZU +1222;AL # ETHIOPIC SYLLABLE SZI +1223;AL # ETHIOPIC SYLLABLE SZAA +1224;AL # ETHIOPIC SYLLABLE SZEE +1225;AL # ETHIOPIC SYLLABLE SZE +1226;AL # ETHIOPIC SYLLABLE SZO +1227;AL # ETHIOPIC SYLLABLE SZWA +1228;AL # ETHIOPIC SYLLABLE RA +1229;AL # ETHIOPIC SYLLABLE RU +122A;AL # ETHIOPIC SYLLABLE RI +122B;AL # ETHIOPIC SYLLABLE RAA +122C;AL # ETHIOPIC SYLLABLE REE +122D;AL # ETHIOPIC SYLLABLE RE +122E;AL # ETHIOPIC SYLLABLE RO +122F;AL # ETHIOPIC SYLLABLE RWA +1230;AL # ETHIOPIC SYLLABLE SA +1231;AL # ETHIOPIC SYLLABLE SU +1232;AL # ETHIOPIC SYLLABLE SI +1233;AL # ETHIOPIC SYLLABLE SAA +1234;AL # ETHIOPIC SYLLABLE SEE +1235;AL # ETHIOPIC SYLLABLE SE +1236;AL # ETHIOPIC SYLLABLE SO +1237;AL # ETHIOPIC SYLLABLE SWA +1238;AL # ETHIOPIC SYLLABLE SHA +1239;AL # ETHIOPIC SYLLABLE SHU +123A;AL # ETHIOPIC SYLLABLE SHI +123B;AL # ETHIOPIC SYLLABLE SHAA +123C;AL # ETHIOPIC SYLLABLE SHEE +123D;AL # ETHIOPIC SYLLABLE SHE +123E;AL # ETHIOPIC SYLLABLE SHO +123F;AL # ETHIOPIC SYLLABLE SHWA +1240;AL # ETHIOPIC SYLLABLE QA +1241;AL # ETHIOPIC SYLLABLE QU +1242;AL # ETHIOPIC SYLLABLE QI +1243;AL # ETHIOPIC SYLLABLE QAA +1244;AL # ETHIOPIC SYLLABLE QEE +1245;AL # ETHIOPIC SYLLABLE QE +1246;AL # ETHIOPIC SYLLABLE QO +1248;AL # ETHIOPIC SYLLABLE QWA +124A;AL # ETHIOPIC SYLLABLE QWI +124B;AL # ETHIOPIC SYLLABLE QWAA +124C;AL # ETHIOPIC SYLLABLE QWEE +124D;AL # ETHIOPIC SYLLABLE QWE +1250;AL # ETHIOPIC SYLLABLE QHA +1251;AL # ETHIOPIC SYLLABLE QHU +1252;AL # ETHIOPIC SYLLABLE QHI +1253;AL # ETHIOPIC SYLLABLE QHAA +1254;AL # ETHIOPIC SYLLABLE QHEE +1255;AL # ETHIOPIC SYLLABLE QHE +1256;AL # ETHIOPIC SYLLABLE QHO +1258;AL # ETHIOPIC SYLLABLE QHWA +125A;AL # ETHIOPIC SYLLABLE QHWI +125B;AL # ETHIOPIC SYLLABLE QHWAA +125C;AL # ETHIOPIC SYLLABLE QHWEE +125D;AL # ETHIOPIC SYLLABLE QHWE +1260;AL # ETHIOPIC SYLLABLE BA +1261;AL # ETHIOPIC SYLLABLE BU +1262;AL # ETHIOPIC SYLLABLE BI +1263;AL # ETHIOPIC SYLLABLE BAA +1264;AL # ETHIOPIC SYLLABLE BEE +1265;AL # ETHIOPIC SYLLABLE BE +1266;AL # ETHIOPIC SYLLABLE BO +1267;AL # ETHIOPIC SYLLABLE BWA +1268;AL # ETHIOPIC SYLLABLE VA +1269;AL # ETHIOPIC SYLLABLE VU +126A;AL # ETHIOPIC SYLLABLE VI +126B;AL # ETHIOPIC SYLLABLE VAA +126C;AL # ETHIOPIC SYLLABLE VEE +126D;AL # ETHIOPIC SYLLABLE VE +126E;AL # ETHIOPIC SYLLABLE VO +126F;AL # ETHIOPIC SYLLABLE VWA +1270;AL # ETHIOPIC SYLLABLE TA +1271;AL # ETHIOPIC SYLLABLE TU +1272;AL # ETHIOPIC SYLLABLE TI +1273;AL # ETHIOPIC SYLLABLE TAA +1274;AL # ETHIOPIC SYLLABLE TEE +1275;AL # ETHIOPIC SYLLABLE TE +1276;AL # ETHIOPIC SYLLABLE TO +1277;AL # ETHIOPIC SYLLABLE TWA +1278;AL # ETHIOPIC SYLLABLE CA +1279;AL # ETHIOPIC SYLLABLE CU +127A;AL # ETHIOPIC SYLLABLE CI +127B;AL # ETHIOPIC SYLLABLE CAA +127C;AL # ETHIOPIC SYLLABLE CEE +127D;AL # ETHIOPIC SYLLABLE CE +127E;AL # ETHIOPIC SYLLABLE CO +127F;AL # ETHIOPIC SYLLABLE CWA +1280;AL # ETHIOPIC SYLLABLE XA +1281;AL # ETHIOPIC SYLLABLE XU +1282;AL # ETHIOPIC SYLLABLE XI +1283;AL # ETHIOPIC SYLLABLE XAA +1284;AL # ETHIOPIC SYLLABLE XEE +1285;AL # ETHIOPIC SYLLABLE XE +1286;AL # ETHIOPIC SYLLABLE XO +1288;AL # ETHIOPIC SYLLABLE XWA +128A;AL # ETHIOPIC SYLLABLE XWI +128B;AL # ETHIOPIC SYLLABLE XWAA +128C;AL # ETHIOPIC SYLLABLE XWEE +128D;AL # ETHIOPIC SYLLABLE XWE +1290;AL # ETHIOPIC SYLLABLE NA +1291;AL # ETHIOPIC SYLLABLE NU +1292;AL # ETHIOPIC SYLLABLE NI +1293;AL # ETHIOPIC SYLLABLE NAA +1294;AL # ETHIOPIC SYLLABLE NEE +1295;AL # ETHIOPIC SYLLABLE NE +1296;AL # ETHIOPIC SYLLABLE NO +1297;AL # ETHIOPIC SYLLABLE NWA +1298;AL # ETHIOPIC SYLLABLE NYA +1299;AL # ETHIOPIC SYLLABLE NYU +129A;AL # ETHIOPIC SYLLABLE NYI +129B;AL # ETHIOPIC SYLLABLE NYAA +129C;AL # ETHIOPIC SYLLABLE NYEE +129D;AL # ETHIOPIC SYLLABLE NYE +129E;AL # ETHIOPIC SYLLABLE NYO +129F;AL # ETHIOPIC SYLLABLE NYWA +12A0;AL # ETHIOPIC SYLLABLE GLOTTAL A +12A1;AL # ETHIOPIC SYLLABLE GLOTTAL U +12A2;AL # ETHIOPIC SYLLABLE GLOTTAL I +12A3;AL # ETHIOPIC SYLLABLE GLOTTAL AA +12A4;AL # ETHIOPIC SYLLABLE GLOTTAL EE +12A5;AL # ETHIOPIC SYLLABLE GLOTTAL E +12A6;AL # ETHIOPIC SYLLABLE GLOTTAL O +12A7;AL # ETHIOPIC SYLLABLE GLOTTAL WA +12A8;AL # ETHIOPIC SYLLABLE KA +12A9;AL # ETHIOPIC SYLLABLE KU +12AA;AL # ETHIOPIC SYLLABLE KI +12AB;AL # ETHIOPIC SYLLABLE KAA +12AC;AL # ETHIOPIC SYLLABLE KEE +12AD;AL # ETHIOPIC SYLLABLE KE +12AE;AL # ETHIOPIC SYLLABLE KO +12B0;AL # ETHIOPIC SYLLABLE KWA +12B2;AL # ETHIOPIC SYLLABLE KWI +12B3;AL # ETHIOPIC SYLLABLE KWAA +12B4;AL # ETHIOPIC SYLLABLE KWEE +12B5;AL # ETHIOPIC SYLLABLE KWE +12B8;AL # ETHIOPIC SYLLABLE KXA +12B9;AL # ETHIOPIC SYLLABLE KXU +12BA;AL # ETHIOPIC SYLLABLE KXI +12BB;AL # ETHIOPIC SYLLABLE KXAA +12BC;AL # ETHIOPIC SYLLABLE KXEE +12BD;AL # ETHIOPIC SYLLABLE KXE +12BE;AL # ETHIOPIC SYLLABLE KXO +12C0;AL # ETHIOPIC SYLLABLE KXWA +12C2;AL # ETHIOPIC SYLLABLE KXWI +12C3;AL # ETHIOPIC SYLLABLE KXWAA +12C4;AL # ETHIOPIC SYLLABLE KXWEE +12C5;AL # ETHIOPIC SYLLABLE KXWE +12C8;AL # ETHIOPIC SYLLABLE WA +12C9;AL # ETHIOPIC SYLLABLE WU +12CA;AL # ETHIOPIC SYLLABLE WI +12CB;AL # ETHIOPIC SYLLABLE WAA +12CC;AL # ETHIOPIC SYLLABLE WEE +12CD;AL # ETHIOPIC SYLLABLE WE +12CE;AL # ETHIOPIC SYLLABLE WO +12D0;AL # ETHIOPIC SYLLABLE PHARYNGEAL A +12D1;AL # ETHIOPIC SYLLABLE PHARYNGEAL U +12D2;AL # ETHIOPIC SYLLABLE PHARYNGEAL I +12D3;AL # ETHIOPIC SYLLABLE PHARYNGEAL AA +12D4;AL # ETHIOPIC SYLLABLE PHARYNGEAL EE +12D5;AL # ETHIOPIC SYLLABLE PHARYNGEAL E +12D6;AL # ETHIOPIC SYLLABLE PHARYNGEAL O +12D8;AL # ETHIOPIC SYLLABLE ZA +12D9;AL # ETHIOPIC SYLLABLE ZU +12DA;AL # ETHIOPIC SYLLABLE ZI +12DB;AL # ETHIOPIC SYLLABLE ZAA +12DC;AL # ETHIOPIC SYLLABLE ZEE +12DD;AL # ETHIOPIC SYLLABLE ZE +12DE;AL # ETHIOPIC SYLLABLE ZO +12DF;AL # ETHIOPIC SYLLABLE ZWA +12E0;AL # ETHIOPIC SYLLABLE ZHA +12E1;AL # ETHIOPIC SYLLABLE ZHU +12E2;AL # ETHIOPIC SYLLABLE ZHI +12E3;AL # ETHIOPIC SYLLABLE ZHAA +12E4;AL # ETHIOPIC SYLLABLE ZHEE +12E5;AL # ETHIOPIC SYLLABLE ZHE +12E6;AL # ETHIOPIC SYLLABLE ZHO +12E7;AL # ETHIOPIC SYLLABLE ZHWA +12E8;AL # ETHIOPIC SYLLABLE YA +12E9;AL # ETHIOPIC SYLLABLE YU +12EA;AL # ETHIOPIC SYLLABLE YI +12EB;AL # ETHIOPIC SYLLABLE YAA +12EC;AL # ETHIOPIC SYLLABLE YEE +12ED;AL # ETHIOPIC SYLLABLE YE +12EE;AL # ETHIOPIC SYLLABLE YO +12F0;AL # ETHIOPIC SYLLABLE DA +12F1;AL # ETHIOPIC SYLLABLE DU +12F2;AL # ETHIOPIC SYLLABLE DI +12F3;AL # ETHIOPIC SYLLABLE DAA +12F4;AL # ETHIOPIC SYLLABLE DEE +12F5;AL # ETHIOPIC SYLLABLE DE +12F6;AL # ETHIOPIC SYLLABLE DO +12F7;AL # ETHIOPIC SYLLABLE DWA +12F8;AL # ETHIOPIC SYLLABLE DDA +12F9;AL # ETHIOPIC SYLLABLE DDU +12FA;AL # ETHIOPIC SYLLABLE DDI +12FB;AL # ETHIOPIC SYLLABLE DDAA +12FC;AL # ETHIOPIC SYLLABLE DDEE +12FD;AL # ETHIOPIC SYLLABLE DDE +12FE;AL # ETHIOPIC SYLLABLE DDO +12FF;AL # ETHIOPIC SYLLABLE DDWA +1300;AL # ETHIOPIC SYLLABLE JA +1301;AL # ETHIOPIC SYLLABLE JU +1302;AL # ETHIOPIC SYLLABLE JI +1303;AL # ETHIOPIC SYLLABLE JAA +1304;AL # ETHIOPIC SYLLABLE JEE +1305;AL # ETHIOPIC SYLLABLE JE +1306;AL # ETHIOPIC SYLLABLE JO +1307;AL # ETHIOPIC SYLLABLE JWA +1308;AL # ETHIOPIC SYLLABLE GA +1309;AL # ETHIOPIC SYLLABLE GU +130A;AL # ETHIOPIC SYLLABLE GI +130B;AL # ETHIOPIC SYLLABLE GAA +130C;AL # ETHIOPIC SYLLABLE GEE +130D;AL # ETHIOPIC SYLLABLE GE +130E;AL # ETHIOPIC SYLLABLE GO +1310;AL # ETHIOPIC SYLLABLE GWA +1312;AL # ETHIOPIC SYLLABLE GWI +1313;AL # ETHIOPIC SYLLABLE GWAA +1314;AL # ETHIOPIC SYLLABLE GWEE +1315;AL # ETHIOPIC SYLLABLE GWE +1318;AL # ETHIOPIC SYLLABLE GGA +1319;AL # ETHIOPIC SYLLABLE GGU +131A;AL # ETHIOPIC SYLLABLE GGI +131B;AL # ETHIOPIC SYLLABLE GGAA +131C;AL # ETHIOPIC SYLLABLE GGEE +131D;AL # ETHIOPIC SYLLABLE GGE +131E;AL # ETHIOPIC SYLLABLE GGO +1320;AL # ETHIOPIC SYLLABLE THA +1321;AL # ETHIOPIC SYLLABLE THU +1322;AL # ETHIOPIC SYLLABLE THI +1323;AL # ETHIOPIC SYLLABLE THAA +1324;AL # ETHIOPIC SYLLABLE THEE +1325;AL # ETHIOPIC SYLLABLE THE +1326;AL # ETHIOPIC SYLLABLE THO +1327;AL # ETHIOPIC SYLLABLE THWA +1328;AL # ETHIOPIC SYLLABLE CHA +1329;AL # ETHIOPIC SYLLABLE CHU +132A;AL # ETHIOPIC SYLLABLE CHI +132B;AL # ETHIOPIC SYLLABLE CHAA +132C;AL # ETHIOPIC SYLLABLE CHEE +132D;AL # ETHIOPIC SYLLABLE CHE +132E;AL # ETHIOPIC SYLLABLE CHO +132F;AL # ETHIOPIC SYLLABLE CHWA +1330;AL # ETHIOPIC SYLLABLE PHA +1331;AL # ETHIOPIC SYLLABLE PHU +1332;AL # ETHIOPIC SYLLABLE PHI +1333;AL # ETHIOPIC SYLLABLE PHAA +1334;AL # ETHIOPIC SYLLABLE PHEE +1335;AL # ETHIOPIC SYLLABLE PHE +1336;AL # ETHIOPIC SYLLABLE PHO +1337;AL # ETHIOPIC SYLLABLE PHWA +1338;AL # ETHIOPIC SYLLABLE TSA +1339;AL # ETHIOPIC SYLLABLE TSU +133A;AL # ETHIOPIC SYLLABLE TSI +133B;AL # ETHIOPIC SYLLABLE TSAA +133C;AL # ETHIOPIC SYLLABLE TSEE +133D;AL # ETHIOPIC SYLLABLE TSE +133E;AL # ETHIOPIC SYLLABLE TSO +133F;AL # ETHIOPIC SYLLABLE TSWA +1340;AL # ETHIOPIC SYLLABLE TZA +1341;AL # ETHIOPIC SYLLABLE TZU +1342;AL # ETHIOPIC SYLLABLE TZI +1343;AL # ETHIOPIC SYLLABLE TZAA +1344;AL # ETHIOPIC SYLLABLE TZEE +1345;AL # ETHIOPIC SYLLABLE TZE +1346;AL # ETHIOPIC SYLLABLE TZO +1348;AL # ETHIOPIC SYLLABLE FA +1349;AL # ETHIOPIC SYLLABLE FU +134A;AL # ETHIOPIC SYLLABLE FI +134B;AL # ETHIOPIC SYLLABLE FAA +134C;AL # ETHIOPIC SYLLABLE FEE +134D;AL # ETHIOPIC SYLLABLE FE +134E;AL # ETHIOPIC SYLLABLE FO +134F;AL # ETHIOPIC SYLLABLE FWA +1350;AL # ETHIOPIC SYLLABLE PA +1351;AL # ETHIOPIC SYLLABLE PU +1352;AL # ETHIOPIC SYLLABLE PI +1353;AL # ETHIOPIC SYLLABLE PAA +1354;AL # ETHIOPIC SYLLABLE PEE +1355;AL # ETHIOPIC SYLLABLE PE +1356;AL # ETHIOPIC SYLLABLE PO +1357;AL # ETHIOPIC SYLLABLE PWA +1358;AL # ETHIOPIC SYLLABLE RYA +1359;AL # ETHIOPIC SYLLABLE MYA +135A;AL # ETHIOPIC SYLLABLE FYA +1361;BA # ETHIOPIC WORDSPACE +1362;AL # ETHIOPIC FULL STOP +1363;AL # ETHIOPIC COMMA +1364;AL # ETHIOPIC SEMICOLON +1365;AL # ETHIOPIC COLON +1366;AL # ETHIOPIC PREFACE COLON +1367;AL # ETHIOPIC QUESTION MARK +1368;AL # ETHIOPIC PARAGRAPH SEPARATOR +1369;NU # ETHIOPIC DIGIT ONE +136A;NU # ETHIOPIC DIGIT TWO +136B;NU # ETHIOPIC DIGIT THREE +136C;NU # ETHIOPIC DIGIT FOUR +136D;NU # ETHIOPIC DIGIT FIVE +136E;NU # ETHIOPIC DIGIT SIX +136F;NU # ETHIOPIC DIGIT SEVEN +1370;NU # ETHIOPIC DIGIT EIGHT +1371;NU # ETHIOPIC DIGIT NINE +1372;AL # ETHIOPIC NUMBER TEN +1373;AL # ETHIOPIC NUMBER TWENTY +1374;AL # ETHIOPIC NUMBER THIRTY +1375;AL # ETHIOPIC NUMBER FORTY +1376;AL # ETHIOPIC NUMBER FIFTY +1377;AL # ETHIOPIC NUMBER SIXTY +1378;AL # ETHIOPIC NUMBER SEVENTY +1379;AL # ETHIOPIC NUMBER EIGHTY +137A;AL # ETHIOPIC NUMBER NINETY +137B;AL # ETHIOPIC NUMBER HUNDRED +137C;AL # ETHIOPIC NUMBER TEN THOUSAND +13A0;AL # CHEROKEE LETTER A +13A1;AL # CHEROKEE LETTER E +13A2;AL # CHEROKEE LETTER I +13A3;AL # CHEROKEE LETTER O +13A4;AL # CHEROKEE LETTER U +13A5;AL # CHEROKEE LETTER V +13A6;AL # CHEROKEE LETTER GA +13A7;AL # CHEROKEE LETTER KA +13A8;AL # CHEROKEE LETTER GE +13A9;AL # CHEROKEE LETTER GI +13AA;AL # CHEROKEE LETTER GO +13AB;AL # CHEROKEE LETTER GU +13AC;AL # CHEROKEE LETTER GV +13AD;AL # CHEROKEE LETTER HA +13AE;AL # CHEROKEE LETTER HE +13AF;AL # CHEROKEE LETTER HI +13B0;AL # CHEROKEE LETTER HO +13B1;AL # CHEROKEE LETTER HU +13B2;AL # CHEROKEE LETTER HV +13B3;AL # CHEROKEE LETTER LA +13B4;AL # CHEROKEE LETTER LE +13B5;AL # CHEROKEE LETTER LI +13B6;AL # CHEROKEE LETTER LO +13B7;AL # CHEROKEE LETTER LU +13B8;AL # CHEROKEE LETTER LV +13B9;AL # CHEROKEE LETTER MA +13BA;AL # CHEROKEE LETTER ME +13BB;AL # CHEROKEE LETTER MI +13BC;AL # CHEROKEE LETTER MO +13BD;AL # CHEROKEE LETTER MU +13BE;AL # CHEROKEE LETTER NA +13BF;AL # CHEROKEE LETTER HNA +13C0;AL # CHEROKEE LETTER NAH +13C1;AL # CHEROKEE LETTER NE +13C2;AL # CHEROKEE LETTER NI +13C3;AL # CHEROKEE LETTER NO +13C4;AL # CHEROKEE LETTER NU +13C5;AL # CHEROKEE LETTER NV +13C6;AL # CHEROKEE LETTER QUA +13C7;AL # CHEROKEE LETTER QUE +13C8;AL # CHEROKEE LETTER QUI +13C9;AL # CHEROKEE LETTER QUO +13CA;AL # CHEROKEE LETTER QUU +13CB;AL # CHEROKEE LETTER QUV +13CC;AL # CHEROKEE LETTER SA +13CD;AL # CHEROKEE LETTER S +13CE;AL # CHEROKEE LETTER SE +13CF;AL # CHEROKEE LETTER SI +13D0;AL # CHEROKEE LETTER SO +13D1;AL # CHEROKEE LETTER SU +13D2;AL # CHEROKEE LETTER SV +13D3;AL # CHEROKEE LETTER DA +13D4;AL # CHEROKEE LETTER TA +13D5;AL # CHEROKEE LETTER DE +13D6;AL # CHEROKEE LETTER TE +13D7;AL # CHEROKEE LETTER DI +13D8;AL # CHEROKEE LETTER TI +13D9;AL # CHEROKEE LETTER DO +13DA;AL # CHEROKEE LETTER DU +13DB;AL # CHEROKEE LETTER DV +13DC;AL # CHEROKEE LETTER DLA +13DD;AL # CHEROKEE LETTER TLA +13DE;AL # CHEROKEE LETTER TLE +13DF;AL # CHEROKEE LETTER TLI +13E0;AL # CHEROKEE LETTER TLO +13E1;AL # CHEROKEE LETTER TLU +13E2;AL # CHEROKEE LETTER TLV +13E3;AL # CHEROKEE LETTER TSA +13E4;AL # CHEROKEE LETTER TSE +13E5;AL # CHEROKEE LETTER TSI +13E6;AL # CHEROKEE LETTER TSO +13E7;AL # CHEROKEE LETTER TSU +13E8;AL # CHEROKEE LETTER TSV +13E9;AL # CHEROKEE LETTER WA +13EA;AL # CHEROKEE LETTER WE +13EB;AL # CHEROKEE LETTER WI +13EC;AL # CHEROKEE LETTER WO +13ED;AL # CHEROKEE LETTER WU +13EE;AL # CHEROKEE LETTER WV +13EF;AL # CHEROKEE LETTER YA +13F0;AL # CHEROKEE LETTER YE +13F1;AL # CHEROKEE LETTER YI +13F2;AL # CHEROKEE LETTER YO +13F3;AL # CHEROKEE LETTER YU +13F4;AL # CHEROKEE LETTER YV +1401;AL # CANADIAN SYLLABICS E +1402;AL # CANADIAN SYLLABICS AAI +1403;AL # CANADIAN SYLLABICS I +1404;AL # CANADIAN SYLLABICS II +1405;AL # CANADIAN SYLLABICS O +1406;AL # CANADIAN SYLLABICS OO +1407;AL # CANADIAN SYLLABICS Y-CREE OO +1408;AL # CANADIAN SYLLABICS CARRIER EE +1409;AL # CANADIAN SYLLABICS CARRIER I +140A;AL # CANADIAN SYLLABICS A +140B;AL # CANADIAN SYLLABICS AA +140C;AL # CANADIAN SYLLABICS WE +140D;AL # CANADIAN SYLLABICS WEST-CREE WE +140E;AL # CANADIAN SYLLABICS WI +140F;AL # CANADIAN SYLLABICS WEST-CREE WI +1410;AL # CANADIAN SYLLABICS WII +1411;AL # CANADIAN SYLLABICS WEST-CREE WII +1412;AL # CANADIAN SYLLABICS WO +1413;AL # CANADIAN SYLLABICS WEST-CREE WO +1414;AL # CANADIAN SYLLABICS WOO +1415;AL # CANADIAN SYLLABICS WEST-CREE WOO +1416;AL # CANADIAN SYLLABICS NASKAPI WOO +1417;AL # CANADIAN SYLLABICS WA +1418;AL # CANADIAN SYLLABICS WEST-CREE WA +1419;AL # CANADIAN SYLLABICS WAA +141A;AL # CANADIAN SYLLABICS WEST-CREE WAA +141B;AL # CANADIAN SYLLABICS NASKAPI WAA +141C;AL # CANADIAN SYLLABICS AI +141D;AL # CANADIAN SYLLABICS Y-CREE W +141E;AL # CANADIAN SYLLABICS GLOTTAL STOP +141F;AL # CANADIAN SYLLABICS FINAL ACUTE +1420;AL # CANADIAN SYLLABICS FINAL GRAVE +1421;AL # CANADIAN SYLLABICS FINAL BOTTOM HALF RING +1422;AL # CANADIAN SYLLABICS FINAL TOP HALF RING +1423;AL # CANADIAN SYLLABICS FINAL RIGHT HALF RING +1424;AL # CANADIAN SYLLABICS FINAL RING +1425;AL # CANADIAN SYLLABICS FINAL DOUBLE ACUTE +1426;AL # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES +1427;AL # CANADIAN SYLLABICS FINAL MIDDLE DOT +1428;AL # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE +1429;AL # CANADIAN SYLLABICS FINAL PLUS +142A;AL # CANADIAN SYLLABICS FINAL DOWN TACK +142B;AL # CANADIAN SYLLABICS EN +142C;AL # CANADIAN SYLLABICS IN +142D;AL # CANADIAN SYLLABICS ON +142E;AL # CANADIAN SYLLABICS AN +142F;AL # CANADIAN SYLLABICS PE +1430;AL # CANADIAN SYLLABICS PAAI +1431;AL # CANADIAN SYLLABICS PI +1432;AL # CANADIAN SYLLABICS PII +1433;AL # CANADIAN SYLLABICS PO +1434;AL # CANADIAN SYLLABICS POO +1435;AL # CANADIAN SYLLABICS Y-CREE POO +1436;AL # CANADIAN SYLLABICS CARRIER HEE +1437;AL # CANADIAN SYLLABICS CARRIER HI +1438;AL # CANADIAN SYLLABICS PA +1439;AL # CANADIAN SYLLABICS PAA +143A;AL # CANADIAN SYLLABICS PWE +143B;AL # CANADIAN SYLLABICS WEST-CREE PWE +143C;AL # CANADIAN SYLLABICS PWI +143D;AL # CANADIAN SYLLABICS WEST-CREE PWI +143E;AL # CANADIAN SYLLABICS PWII +143F;AL # CANADIAN SYLLABICS WEST-CREE PWII +1440;AL # CANADIAN SYLLABICS PWO +1441;AL # CANADIAN SYLLABICS WEST-CREE PWO +1442;AL # CANADIAN SYLLABICS PWOO +1443;AL # CANADIAN SYLLABICS WEST-CREE PWOO +1444;AL # CANADIAN SYLLABICS PWA +1445;AL # CANADIAN SYLLABICS WEST-CREE PWA +1446;AL # CANADIAN SYLLABICS PWAA +1447;AL # CANADIAN SYLLABICS WEST-CREE PWAA +1448;AL # CANADIAN SYLLABICS Y-CREE PWAA +1449;AL # CANADIAN SYLLABICS P +144A;AL # CANADIAN SYLLABICS WEST-CREE P +144B;AL # CANADIAN SYLLABICS CARRIER H +144C;AL # CANADIAN SYLLABICS TE +144D;AL # CANADIAN SYLLABICS TAAI +144E;AL # CANADIAN SYLLABICS TI +144F;AL # CANADIAN SYLLABICS TII +1450;AL # CANADIAN SYLLABICS TO +1451;AL # CANADIAN SYLLABICS TOO +1452;AL # CANADIAN SYLLABICS Y-CREE TOO +1453;AL # CANADIAN SYLLABICS CARRIER DEE +1454;AL # CANADIAN SYLLABICS CARRIER DI +1455;AL # CANADIAN SYLLABICS TA +1456;AL # CANADIAN SYLLABICS TAA +1457;AL # CANADIAN SYLLABICS TWE +1458;AL # CANADIAN SYLLABICS WEST-CREE TWE +1459;AL # CANADIAN SYLLABICS TWI +145A;AL # CANADIAN SYLLABICS WEST-CREE TWI +145B;AL # CANADIAN SYLLABICS TWII +145C;AL # CANADIAN SYLLABICS WEST-CREE TWII +145D;AL # CANADIAN SYLLABICS TWO +145E;AL # CANADIAN SYLLABICS WEST-CREE TWO +145F;AL # CANADIAN SYLLABICS TWOO +1460;AL # CANADIAN SYLLABICS WEST-CREE TWOO +1461;AL # CANADIAN SYLLABICS TWA +1462;AL # CANADIAN SYLLABICS WEST-CREE TWA +1463;AL # CANADIAN SYLLABICS TWAA +1464;AL # CANADIAN SYLLABICS WEST-CREE TWAA +1465;AL # CANADIAN SYLLABICS NASKAPI TWAA +1466;AL # CANADIAN SYLLABICS T +1467;AL # CANADIAN SYLLABICS TTE +1468;AL # CANADIAN SYLLABICS TTI +1469;AL # CANADIAN SYLLABICS TTO +146A;AL # CANADIAN SYLLABICS TTA +146B;AL # CANADIAN SYLLABICS KE +146C;AL # CANADIAN SYLLABICS KAAI +146D;AL # CANADIAN SYLLABICS KI +146E;AL # CANADIAN SYLLABICS KII +146F;AL # CANADIAN SYLLABICS KO +1470;AL # CANADIAN SYLLABICS KOO +1471;AL # CANADIAN SYLLABICS Y-CREE KOO +1472;AL # CANADIAN SYLLABICS KA +1473;AL # CANADIAN SYLLABICS KAA +1474;AL # CANADIAN SYLLABICS KWE +1475;AL # CANADIAN SYLLABICS WEST-CREE KWE +1476;AL # CANADIAN SYLLABICS KWI +1477;AL # CANADIAN SYLLABICS WEST-CREE KWI +1478;AL # CANADIAN SYLLABICS KWII +1479;AL # CANADIAN SYLLABICS WEST-CREE KWII +147A;AL # CANADIAN SYLLABICS KWO +147B;AL # CANADIAN SYLLABICS WEST-CREE KWO +147C;AL # CANADIAN SYLLABICS KWOO +147D;AL # CANADIAN SYLLABICS WEST-CREE KWOO +147E;AL # CANADIAN SYLLABICS KWA +147F;AL # CANADIAN SYLLABICS WEST-CREE KWA +1480;AL # CANADIAN SYLLABICS KWAA +1481;AL # CANADIAN SYLLABICS WEST-CREE KWAA +1482;AL # CANADIAN SYLLABICS NASKAPI KWAA +1483;AL # CANADIAN SYLLABICS K +1484;AL # CANADIAN SYLLABICS KW +1485;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KEH +1486;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KIH +1487;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KOH +1488;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KAH +1489;AL # CANADIAN SYLLABICS CE +148A;AL # CANADIAN SYLLABICS CAAI +148B;AL # CANADIAN SYLLABICS CI +148C;AL # CANADIAN SYLLABICS CII +148D;AL # CANADIAN SYLLABICS CO +148E;AL # CANADIAN SYLLABICS COO +148F;AL # CANADIAN SYLLABICS Y-CREE COO +1490;AL # CANADIAN SYLLABICS CA +1491;AL # CANADIAN SYLLABICS CAA +1492;AL # CANADIAN SYLLABICS CWE +1493;AL # CANADIAN SYLLABICS WEST-CREE CWE +1494;AL # CANADIAN SYLLABICS CWI +1495;AL # CANADIAN SYLLABICS WEST-CREE CWI +1496;AL # CANADIAN SYLLABICS CWII +1497;AL # CANADIAN SYLLABICS WEST-CREE CWII +1498;AL # CANADIAN SYLLABICS CWO +1499;AL # CANADIAN SYLLABICS WEST-CREE CWO +149A;AL # CANADIAN SYLLABICS CWOO +149B;AL # CANADIAN SYLLABICS WEST-CREE CWOO +149C;AL # CANADIAN SYLLABICS CWA +149D;AL # CANADIAN SYLLABICS WEST-CREE CWA +149E;AL # CANADIAN SYLLABICS CWAA +149F;AL # CANADIAN SYLLABICS WEST-CREE CWAA +14A0;AL # CANADIAN SYLLABICS NASKAPI CWAA +14A1;AL # CANADIAN SYLLABICS C +14A2;AL # CANADIAN SYLLABICS SAYISI TH +14A3;AL # CANADIAN SYLLABICS ME +14A4;AL # CANADIAN SYLLABICS MAAI +14A5;AL # CANADIAN SYLLABICS MI +14A6;AL # CANADIAN SYLLABICS MII +14A7;AL # CANADIAN SYLLABICS MO +14A8;AL # CANADIAN SYLLABICS MOO +14A9;AL # CANADIAN SYLLABICS Y-CREE MOO +14AA;AL # CANADIAN SYLLABICS MA +14AB;AL # CANADIAN SYLLABICS MAA +14AC;AL # CANADIAN SYLLABICS MWE +14AD;AL # CANADIAN SYLLABICS WEST-CREE MWE +14AE;AL # CANADIAN SYLLABICS MWI +14AF;AL # CANADIAN SYLLABICS WEST-CREE MWI +14B0;AL # CANADIAN SYLLABICS MWII +14B1;AL # CANADIAN SYLLABICS WEST-CREE MWII +14B2;AL # CANADIAN SYLLABICS MWO +14B3;AL # CANADIAN SYLLABICS WEST-CREE MWO +14B4;AL # CANADIAN SYLLABICS MWOO +14B5;AL # CANADIAN SYLLABICS WEST-CREE MWOO +14B6;AL # CANADIAN SYLLABICS MWA +14B7;AL # CANADIAN SYLLABICS WEST-CREE MWA +14B8;AL # CANADIAN SYLLABICS MWAA +14B9;AL # CANADIAN SYLLABICS WEST-CREE MWAA +14BA;AL # CANADIAN SYLLABICS NASKAPI MWAA +14BB;AL # CANADIAN SYLLABICS M +14BC;AL # CANADIAN SYLLABICS WEST-CREE M +14BD;AL # CANADIAN SYLLABICS MH +14BE;AL # CANADIAN SYLLABICS ATHAPASCAN M +14BF;AL # CANADIAN SYLLABICS SAYISI M +14C0;AL # CANADIAN SYLLABICS NE +14C1;AL # CANADIAN SYLLABICS NAAI +14C2;AL # CANADIAN SYLLABICS NI +14C3;AL # CANADIAN SYLLABICS NII +14C4;AL # CANADIAN SYLLABICS NO +14C5;AL # CANADIAN SYLLABICS NOO +14C6;AL # CANADIAN SYLLABICS Y-CREE NOO +14C7;AL # CANADIAN SYLLABICS NA +14C8;AL # CANADIAN SYLLABICS NAA +14C9;AL # CANADIAN SYLLABICS NWE +14CA;AL # CANADIAN SYLLABICS WEST-CREE NWE +14CB;AL # CANADIAN SYLLABICS NWA +14CC;AL # CANADIAN SYLLABICS WEST-CREE NWA +14CD;AL # CANADIAN SYLLABICS NWAA +14CE;AL # CANADIAN SYLLABICS WEST-CREE NWAA +14CF;AL # CANADIAN SYLLABICS NASKAPI NWAA +14D0;AL # CANADIAN SYLLABICS N +14D1;AL # CANADIAN SYLLABICS CARRIER NG +14D2;AL # CANADIAN SYLLABICS NH +14D3;AL # CANADIAN SYLLABICS LE +14D4;AL # CANADIAN SYLLABICS LAAI +14D5;AL # CANADIAN SYLLABICS LI +14D6;AL # CANADIAN SYLLABICS LII +14D7;AL # CANADIAN SYLLABICS LO +14D8;AL # CANADIAN SYLLABICS LOO +14D9;AL # CANADIAN SYLLABICS Y-CREE LOO +14DA;AL # CANADIAN SYLLABICS LA +14DB;AL # CANADIAN SYLLABICS LAA +14DC;AL # CANADIAN SYLLABICS LWE +14DD;AL # CANADIAN SYLLABICS WEST-CREE LWE +14DE;AL # CANADIAN SYLLABICS LWI +14DF;AL # CANADIAN SYLLABICS WEST-CREE LWI +14E0;AL # CANADIAN SYLLABICS LWII +14E1;AL # CANADIAN SYLLABICS WEST-CREE LWII +14E2;AL # CANADIAN SYLLABICS LWO +14E3;AL # CANADIAN SYLLABICS WEST-CREE LWO +14E4;AL # CANADIAN SYLLABICS LWOO +14E5;AL # CANADIAN SYLLABICS WEST-CREE LWOO +14E6;AL # CANADIAN SYLLABICS LWA +14E7;AL # CANADIAN SYLLABICS WEST-CREE LWA +14E8;AL # CANADIAN SYLLABICS LWAA +14E9;AL # CANADIAN SYLLABICS WEST-CREE LWAA +14EA;AL # CANADIAN SYLLABICS L +14EB;AL # CANADIAN SYLLABICS WEST-CREE L +14EC;AL # CANADIAN SYLLABICS MEDIAL L +14ED;AL # CANADIAN SYLLABICS SE +14EE;AL # CANADIAN SYLLABICS SAAI +14EF;AL # CANADIAN SYLLABICS SI +14F0;AL # CANADIAN SYLLABICS SII +14F1;AL # CANADIAN SYLLABICS SO +14F2;AL # CANADIAN SYLLABICS SOO +14F3;AL # CANADIAN SYLLABICS Y-CREE SOO +14F4;AL # CANADIAN SYLLABICS SA +14F5;AL # CANADIAN SYLLABICS SAA +14F6;AL # CANADIAN SYLLABICS SWE +14F7;AL # CANADIAN SYLLABICS WEST-CREE SWE +14F8;AL # CANADIAN SYLLABICS SWI +14F9;AL # CANADIAN SYLLABICS WEST-CREE SWI +14FA;AL # CANADIAN SYLLABICS SWII +14FB;AL # CANADIAN SYLLABICS WEST-CREE SWII +14FC;AL # CANADIAN SYLLABICS SWO +14FD;AL # CANADIAN SYLLABICS WEST-CREE SWO +14FE;AL # CANADIAN SYLLABICS SWOO +14FF;AL # CANADIAN SYLLABICS WEST-CREE SWOO +1500;AL # CANADIAN SYLLABICS SWA +1501;AL # CANADIAN SYLLABICS WEST-CREE SWA +1502;AL # CANADIAN SYLLABICS SWAA +1503;AL # CANADIAN SYLLABICS WEST-CREE SWAA +1504;AL # CANADIAN SYLLABICS NASKAPI SWAA +1505;AL # CANADIAN SYLLABICS S +1506;AL # CANADIAN SYLLABICS ATHAPASCAN S +1507;AL # CANADIAN SYLLABICS SW +1508;AL # CANADIAN SYLLABICS BLACKFOOT S +1509;AL # CANADIAN SYLLABICS MOOSE-CREE SK +150A;AL # CANADIAN SYLLABICS NASKAPI SKW +150B;AL # CANADIAN SYLLABICS NASKAPI S-W +150C;AL # CANADIAN SYLLABICS NASKAPI SPWA +150D;AL # CANADIAN SYLLABICS NASKAPI STWA +150E;AL # CANADIAN SYLLABICS NASKAPI SKWA +150F;AL # CANADIAN SYLLABICS NASKAPI SCWA +1510;AL # CANADIAN SYLLABICS SHE +1511;AL # CANADIAN SYLLABICS SHI +1512;AL # CANADIAN SYLLABICS SHII +1513;AL # CANADIAN SYLLABICS SHO +1514;AL # CANADIAN SYLLABICS SHOO +1515;AL # CANADIAN SYLLABICS SHA +1516;AL # CANADIAN SYLLABICS SHAA +1517;AL # CANADIAN SYLLABICS SHWE +1518;AL # CANADIAN SYLLABICS WEST-CREE SHWE +1519;AL # CANADIAN SYLLABICS SHWI +151A;AL # CANADIAN SYLLABICS WEST-CREE SHWI +151B;AL # CANADIAN SYLLABICS SHWII +151C;AL # CANADIAN SYLLABICS WEST-CREE SHWII +151D;AL # CANADIAN SYLLABICS SHWO +151E;AL # CANADIAN SYLLABICS WEST-CREE SHWO +151F;AL # CANADIAN SYLLABICS SHWOO +1520;AL # CANADIAN SYLLABICS WEST-CREE SHWOO +1521;AL # CANADIAN SYLLABICS SHWA +1522;AL # CANADIAN SYLLABICS WEST-CREE SHWA +1523;AL # CANADIAN SYLLABICS SHWAA +1524;AL # CANADIAN SYLLABICS WEST-CREE SHWAA +1525;AL # CANADIAN SYLLABICS SH +1526;AL # CANADIAN SYLLABICS YE +1527;AL # CANADIAN SYLLABICS YAAI +1528;AL # CANADIAN SYLLABICS YI +1529;AL # CANADIAN SYLLABICS YII +152A;AL # CANADIAN SYLLABICS YO +152B;AL # CANADIAN SYLLABICS YOO +152C;AL # CANADIAN SYLLABICS Y-CREE YOO +152D;AL # CANADIAN SYLLABICS YA +152E;AL # CANADIAN SYLLABICS YAA +152F;AL # CANADIAN SYLLABICS YWE +1530;AL # CANADIAN SYLLABICS WEST-CREE YWE +1531;AL # CANADIAN SYLLABICS YWI +1532;AL # CANADIAN SYLLABICS WEST-CREE YWI +1533;AL # CANADIAN SYLLABICS YWII +1534;AL # CANADIAN SYLLABICS WEST-CREE YWII +1535;AL # CANADIAN SYLLABICS YWO +1536;AL # CANADIAN SYLLABICS WEST-CREE YWO +1537;AL # CANADIAN SYLLABICS YWOO +1538;AL # CANADIAN SYLLABICS WEST-CREE YWOO +1539;AL # CANADIAN SYLLABICS YWA +153A;AL # CANADIAN SYLLABICS WEST-CREE YWA +153B;AL # CANADIAN SYLLABICS YWAA +153C;AL # CANADIAN SYLLABICS WEST-CREE YWAA +153D;AL # CANADIAN SYLLABICS NASKAPI YWAA +153E;AL # CANADIAN SYLLABICS Y +153F;AL # CANADIAN SYLLABICS BIBLE-CREE Y +1540;AL # CANADIAN SYLLABICS WEST-CREE Y +1541;AL # CANADIAN SYLLABICS SAYISI YI +1542;AL # CANADIAN SYLLABICS RE +1543;AL # CANADIAN SYLLABICS R-CREE RE +1544;AL # CANADIAN SYLLABICS WEST-CREE LE +1545;AL # CANADIAN SYLLABICS RAAI +1546;AL # CANADIAN SYLLABICS RI +1547;AL # CANADIAN SYLLABICS RII +1548;AL # CANADIAN SYLLABICS RO +1549;AL # CANADIAN SYLLABICS ROO +154A;AL # CANADIAN SYLLABICS WEST-CREE LO +154B;AL # CANADIAN SYLLABICS RA +154C;AL # CANADIAN SYLLABICS RAA +154D;AL # CANADIAN SYLLABICS WEST-CREE LA +154E;AL # CANADIAN SYLLABICS RWAA +154F;AL # CANADIAN SYLLABICS WEST-CREE RWAA +1550;AL # CANADIAN SYLLABICS R +1551;AL # CANADIAN SYLLABICS WEST-CREE R +1552;AL # CANADIAN SYLLABICS MEDIAL R +1553;AL # CANADIAN SYLLABICS FE +1554;AL # CANADIAN SYLLABICS FAAI +1555;AL # CANADIAN SYLLABICS FI +1556;AL # CANADIAN SYLLABICS FII +1557;AL # CANADIAN SYLLABICS FO +1558;AL # CANADIAN SYLLABICS FOO +1559;AL # CANADIAN SYLLABICS FA +155A;AL # CANADIAN SYLLABICS FAA +155B;AL # CANADIAN SYLLABICS FWAA +155C;AL # CANADIAN SYLLABICS WEST-CREE FWAA +155D;AL # CANADIAN SYLLABICS F +155E;AL # CANADIAN SYLLABICS THE +155F;AL # CANADIAN SYLLABICS N-CREE THE +1560;AL # CANADIAN SYLLABICS THI +1561;AL # CANADIAN SYLLABICS N-CREE THI +1562;AL # CANADIAN SYLLABICS THII +1563;AL # CANADIAN SYLLABICS N-CREE THII +1564;AL # CANADIAN SYLLABICS THO +1565;AL # CANADIAN SYLLABICS THOO +1566;AL # CANADIAN SYLLABICS THA +1567;AL # CANADIAN SYLLABICS THAA +1568;AL # CANADIAN SYLLABICS THWAA +1569;AL # CANADIAN SYLLABICS WEST-CREE THWAA +156A;AL # CANADIAN SYLLABICS TH +156B;AL # CANADIAN SYLLABICS TTHE +156C;AL # CANADIAN SYLLABICS TTHI +156D;AL # CANADIAN SYLLABICS TTHO +156E;AL # CANADIAN SYLLABICS TTHA +156F;AL # CANADIAN SYLLABICS TTH +1570;AL # CANADIAN SYLLABICS TYE +1571;AL # CANADIAN SYLLABICS TYI +1572;AL # CANADIAN SYLLABICS TYO +1573;AL # CANADIAN SYLLABICS TYA +1574;AL # CANADIAN SYLLABICS NUNAVIK HE +1575;AL # CANADIAN SYLLABICS NUNAVIK HI +1576;AL # CANADIAN SYLLABICS NUNAVIK HII +1577;AL # CANADIAN SYLLABICS NUNAVIK HO +1578;AL # CANADIAN SYLLABICS NUNAVIK HOO +1579;AL # CANADIAN SYLLABICS NUNAVIK HA +157A;AL # CANADIAN SYLLABICS NUNAVIK HAA +157B;AL # CANADIAN SYLLABICS NUNAVIK H +157C;AL # CANADIAN SYLLABICS NUNAVUT H +157D;AL # CANADIAN SYLLABICS HK +157E;AL # CANADIAN SYLLABICS QAAI +157F;AL # CANADIAN SYLLABICS QI +1580;AL # CANADIAN SYLLABICS QII +1581;AL # CANADIAN SYLLABICS QO +1582;AL # CANADIAN SYLLABICS QOO +1583;AL # CANADIAN SYLLABICS QA +1584;AL # CANADIAN SYLLABICS QAA +1585;AL # CANADIAN SYLLABICS Q +1586;AL # CANADIAN SYLLABICS TLHE +1587;AL # CANADIAN SYLLABICS TLHI +1588;AL # CANADIAN SYLLABICS TLHO +1589;AL # CANADIAN SYLLABICS TLHA +158A;AL # CANADIAN SYLLABICS WEST-CREE RE +158B;AL # CANADIAN SYLLABICS WEST-CREE RI +158C;AL # CANADIAN SYLLABICS WEST-CREE RO +158D;AL # CANADIAN SYLLABICS WEST-CREE RA +158E;AL # CANADIAN SYLLABICS NGAAI +158F;AL # CANADIAN SYLLABICS NGI +1590;AL # CANADIAN SYLLABICS NGII +1591;AL # CANADIAN SYLLABICS NGO +1592;AL # CANADIAN SYLLABICS NGOO +1593;AL # CANADIAN SYLLABICS NGA +1594;AL # CANADIAN SYLLABICS NGAA +1595;AL # CANADIAN SYLLABICS NG +1596;AL # CANADIAN SYLLABICS NNG +1597;AL # CANADIAN SYLLABICS SAYISI SHE +1598;AL # CANADIAN SYLLABICS SAYISI SHI +1599;AL # CANADIAN SYLLABICS SAYISI SHO +159A;AL # CANADIAN SYLLABICS SAYISI SHA +159B;AL # CANADIAN SYLLABICS WOODS-CREE THE +159C;AL # CANADIAN SYLLABICS WOODS-CREE THI +159D;AL # CANADIAN SYLLABICS WOODS-CREE THO +159E;AL # CANADIAN SYLLABICS WOODS-CREE THA +159F;AL # CANADIAN SYLLABICS WOODS-CREE TH +15A0;AL # CANADIAN SYLLABICS LHI +15A1;AL # CANADIAN SYLLABICS LHII +15A2;AL # CANADIAN SYLLABICS LHO +15A3;AL # CANADIAN SYLLABICS LHOO +15A4;AL # CANADIAN SYLLABICS LHA +15A5;AL # CANADIAN SYLLABICS LHAA +15A6;AL # CANADIAN SYLLABICS LH +15A7;AL # CANADIAN SYLLABICS TH-CREE THE +15A8;AL # CANADIAN SYLLABICS TH-CREE THI +15A9;AL # CANADIAN SYLLABICS TH-CREE THII +15AA;AL # CANADIAN SYLLABICS TH-CREE THO +15AB;AL # CANADIAN SYLLABICS TH-CREE THOO +15AC;AL # CANADIAN SYLLABICS TH-CREE THA +15AD;AL # CANADIAN SYLLABICS TH-CREE THAA +15AE;AL # CANADIAN SYLLABICS TH-CREE TH +15AF;AL # CANADIAN SYLLABICS AIVILIK B +15B0;AL # CANADIAN SYLLABICS BLACKFOOT E +15B1;AL # CANADIAN SYLLABICS BLACKFOOT I +15B2;AL # CANADIAN SYLLABICS BLACKFOOT O +15B3;AL # CANADIAN SYLLABICS BLACKFOOT A +15B4;AL # CANADIAN SYLLABICS BLACKFOOT WE +15B5;AL # CANADIAN SYLLABICS BLACKFOOT WI +15B6;AL # CANADIAN SYLLABICS BLACKFOOT WO +15B7;AL # CANADIAN SYLLABICS BLACKFOOT WA +15B8;AL # CANADIAN SYLLABICS BLACKFOOT NE +15B9;AL # CANADIAN SYLLABICS BLACKFOOT NI +15BA;AL # CANADIAN SYLLABICS BLACKFOOT NO +15BB;AL # CANADIAN SYLLABICS BLACKFOOT NA +15BC;AL # CANADIAN SYLLABICS BLACKFOOT KE +15BD;AL # CANADIAN SYLLABICS BLACKFOOT KI +15BE;AL # CANADIAN SYLLABICS BLACKFOOT KO +15BF;AL # CANADIAN SYLLABICS BLACKFOOT KA +15C0;AL # CANADIAN SYLLABICS SAYISI HE +15C1;AL # CANADIAN SYLLABICS SAYISI HI +15C2;AL # CANADIAN SYLLABICS SAYISI HO +15C3;AL # CANADIAN SYLLABICS SAYISI HA +15C4;AL # CANADIAN SYLLABICS CARRIER GHU +15C5;AL # CANADIAN SYLLABICS CARRIER GHO +15C6;AL # CANADIAN SYLLABICS CARRIER GHE +15C7;AL # CANADIAN SYLLABICS CARRIER GHEE +15C8;AL # CANADIAN SYLLABICS CARRIER GHI +15C9;AL # CANADIAN SYLLABICS CARRIER GHA +15CA;AL # CANADIAN SYLLABICS CARRIER RU +15CB;AL # CANADIAN SYLLABICS CARRIER RO +15CC;AL # CANADIAN SYLLABICS CARRIER RE +15CD;AL # CANADIAN SYLLABICS CARRIER REE +15CE;AL # CANADIAN SYLLABICS CARRIER RI +15CF;AL # CANADIAN SYLLABICS CARRIER RA +15D0;AL # CANADIAN SYLLABICS CARRIER WU +15D1;AL # CANADIAN SYLLABICS CARRIER WO +15D2;AL # CANADIAN SYLLABICS CARRIER WE +15D3;AL # CANADIAN SYLLABICS CARRIER WEE +15D4;AL # CANADIAN SYLLABICS CARRIER WI +15D5;AL # CANADIAN SYLLABICS CARRIER WA +15D6;AL # CANADIAN SYLLABICS CARRIER HWU +15D7;AL # CANADIAN SYLLABICS CARRIER HWO +15D8;AL # CANADIAN SYLLABICS CARRIER HWE +15D9;AL # CANADIAN SYLLABICS CARRIER HWEE +15DA;AL # CANADIAN SYLLABICS CARRIER HWI +15DB;AL # CANADIAN SYLLABICS CARRIER HWA +15DC;AL # CANADIAN SYLLABICS CARRIER THU +15DD;AL # CANADIAN SYLLABICS CARRIER THO +15DE;AL # CANADIAN SYLLABICS CARRIER THE +15DF;AL # CANADIAN SYLLABICS CARRIER THEE +15E0;AL # CANADIAN SYLLABICS CARRIER THI +15E1;AL # CANADIAN SYLLABICS CARRIER THA +15E2;AL # CANADIAN SYLLABICS CARRIER TTU +15E3;AL # CANADIAN SYLLABICS CARRIER TTO +15E4;AL # CANADIAN SYLLABICS CARRIER TTE +15E5;AL # CANADIAN SYLLABICS CARRIER TTEE +15E6;AL # CANADIAN SYLLABICS CARRIER TTI +15E7;AL # CANADIAN SYLLABICS CARRIER TTA +15E8;AL # CANADIAN SYLLABICS CARRIER PU +15E9;AL # CANADIAN SYLLABICS CARRIER PO +15EA;AL # CANADIAN SYLLABICS CARRIER PE +15EB;AL # CANADIAN SYLLABICS CARRIER PEE +15EC;AL # CANADIAN SYLLABICS CARRIER PI +15ED;AL # CANADIAN SYLLABICS CARRIER PA +15EE;AL # CANADIAN SYLLABICS CARRIER P +15EF;AL # CANADIAN SYLLABICS CARRIER GU +15F0;AL # CANADIAN SYLLABICS CARRIER GO +15F1;AL # CANADIAN SYLLABICS CARRIER GE +15F2;AL # CANADIAN SYLLABICS CARRIER GEE +15F3;AL # CANADIAN SYLLABICS CARRIER GI +15F4;AL # CANADIAN SYLLABICS CARRIER GA +15F5;AL # CANADIAN SYLLABICS CARRIER KHU +15F6;AL # CANADIAN SYLLABICS CARRIER KHO +15F7;AL # CANADIAN SYLLABICS CARRIER KHE +15F8;AL # CANADIAN SYLLABICS CARRIER KHEE +15F9;AL # CANADIAN SYLLABICS CARRIER KHI +15FA;AL # CANADIAN SYLLABICS CARRIER KHA +15FB;AL # CANADIAN SYLLABICS CARRIER KKU +15FC;AL # CANADIAN SYLLABICS CARRIER KKO +15FD;AL # CANADIAN SYLLABICS CARRIER KKE +15FE;AL # CANADIAN SYLLABICS CARRIER KKEE +15FF;AL # CANADIAN SYLLABICS CARRIER KKI +1600;AL # CANADIAN SYLLABICS CARRIER KKA +1601;AL # CANADIAN SYLLABICS CARRIER KK +1602;AL # CANADIAN SYLLABICS CARRIER NU +1603;AL # CANADIAN SYLLABICS CARRIER NO +1604;AL # CANADIAN SYLLABICS CARRIER NE +1605;AL # CANADIAN SYLLABICS CARRIER NEE +1606;AL # CANADIAN SYLLABICS CARRIER NI +1607;AL # CANADIAN SYLLABICS CARRIER NA +1608;AL # CANADIAN SYLLABICS CARRIER MU +1609;AL # CANADIAN SYLLABICS CARRIER MO +160A;AL # CANADIAN SYLLABICS CARRIER ME +160B;AL # CANADIAN SYLLABICS CARRIER MEE +160C;AL # CANADIAN SYLLABICS CARRIER MI +160D;AL # CANADIAN SYLLABICS CARRIER MA +160E;AL # CANADIAN SYLLABICS CARRIER YU +160F;AL # CANADIAN SYLLABICS CARRIER YO +1610;AL # CANADIAN SYLLABICS CARRIER YE +1611;AL # CANADIAN SYLLABICS CARRIER YEE +1612;AL # CANADIAN SYLLABICS CARRIER YI +1613;AL # CANADIAN SYLLABICS CARRIER YA +1614;AL # CANADIAN SYLLABICS CARRIER JU +1615;AL # CANADIAN SYLLABICS SAYISI JU +1616;AL # CANADIAN SYLLABICS CARRIER JO +1617;AL # CANADIAN SYLLABICS CARRIER JE +1618;AL # CANADIAN SYLLABICS CARRIER JEE +1619;AL # CANADIAN SYLLABICS CARRIER JI +161A;AL # CANADIAN SYLLABICS SAYISI JI +161B;AL # CANADIAN SYLLABICS CARRIER JA +161C;AL # CANADIAN SYLLABICS CARRIER JJU +161D;AL # CANADIAN SYLLABICS CARRIER JJO +161E;AL # CANADIAN SYLLABICS CARRIER JJE +161F;AL # CANADIAN SYLLABICS CARRIER JJEE +1620;AL # CANADIAN SYLLABICS CARRIER JJI +1621;AL # CANADIAN SYLLABICS CARRIER JJA +1622;AL # CANADIAN SYLLABICS CARRIER LU +1623;AL # CANADIAN SYLLABICS CARRIER LO +1624;AL # CANADIAN SYLLABICS CARRIER LE +1625;AL # CANADIAN SYLLABICS CARRIER LEE +1626;AL # CANADIAN SYLLABICS CARRIER LI +1627;AL # CANADIAN SYLLABICS CARRIER LA +1628;AL # CANADIAN SYLLABICS CARRIER DLU +1629;AL # CANADIAN SYLLABICS CARRIER DLO +162A;AL # CANADIAN SYLLABICS CARRIER DLE +162B;AL # CANADIAN SYLLABICS CARRIER DLEE +162C;AL # CANADIAN SYLLABICS CARRIER DLI +162D;AL # CANADIAN SYLLABICS CARRIER DLA +162E;AL # CANADIAN SYLLABICS CARRIER LHU +162F;AL # CANADIAN SYLLABICS CARRIER LHO +1630;AL # CANADIAN SYLLABICS CARRIER LHE +1631;AL # CANADIAN SYLLABICS CARRIER LHEE +1632;AL # CANADIAN SYLLABICS CARRIER LHI +1633;AL # CANADIAN SYLLABICS CARRIER LHA +1634;AL # CANADIAN SYLLABICS CARRIER TLHU +1635;AL # CANADIAN SYLLABICS CARRIER TLHO +1636;AL # CANADIAN SYLLABICS CARRIER TLHE +1637;AL # CANADIAN SYLLABICS CARRIER TLHEE +1638;AL # CANADIAN SYLLABICS CARRIER TLHI +1639;AL # CANADIAN SYLLABICS CARRIER TLHA +163A;AL # CANADIAN SYLLABICS CARRIER TLU +163B;AL # CANADIAN SYLLABICS CARRIER TLO +163C;AL # CANADIAN SYLLABICS CARRIER TLE +163D;AL # CANADIAN SYLLABICS CARRIER TLEE +163E;AL # CANADIAN SYLLABICS CARRIER TLI +163F;AL # CANADIAN SYLLABICS CARRIER TLA +1640;AL # CANADIAN SYLLABICS CARRIER ZU +1641;AL # CANADIAN SYLLABICS CARRIER ZO +1642;AL # CANADIAN SYLLABICS CARRIER ZE +1643;AL # CANADIAN SYLLABICS CARRIER ZEE +1644;AL # CANADIAN SYLLABICS CARRIER ZI +1645;AL # CANADIAN SYLLABICS CARRIER ZA +1646;AL # CANADIAN SYLLABICS CARRIER Z +1647;AL # CANADIAN SYLLABICS CARRIER INITIAL Z +1648;AL # CANADIAN SYLLABICS CARRIER DZU +1649;AL # CANADIAN SYLLABICS CARRIER DZO +164A;AL # CANADIAN SYLLABICS CARRIER DZE +164B;AL # CANADIAN SYLLABICS CARRIER DZEE +164C;AL # CANADIAN SYLLABICS CARRIER DZI +164D;AL # CANADIAN SYLLABICS CARRIER DZA +164E;AL # CANADIAN SYLLABICS CARRIER SU +164F;AL # CANADIAN SYLLABICS CARRIER SO +1650;AL # CANADIAN SYLLABICS CARRIER SE +1651;AL # CANADIAN SYLLABICS CARRIER SEE +1652;AL # CANADIAN SYLLABICS CARRIER SI +1653;AL # CANADIAN SYLLABICS CARRIER SA +1654;AL # CANADIAN SYLLABICS CARRIER SHU +1655;AL # CANADIAN SYLLABICS CARRIER SHO +1656;AL # CANADIAN SYLLABICS CARRIER SHE +1657;AL # CANADIAN SYLLABICS CARRIER SHEE +1658;AL # CANADIAN SYLLABICS CARRIER SHI +1659;AL # CANADIAN SYLLABICS CARRIER SHA +165A;AL # CANADIAN SYLLABICS CARRIER SH +165B;AL # CANADIAN SYLLABICS CARRIER TSU +165C;AL # CANADIAN SYLLABICS CARRIER TSO +165D;AL # CANADIAN SYLLABICS CARRIER TSE +165E;AL # CANADIAN SYLLABICS CARRIER TSEE +165F;AL # CANADIAN SYLLABICS CARRIER TSI +1660;AL # CANADIAN SYLLABICS CARRIER TSA +1661;AL # CANADIAN SYLLABICS CARRIER CHU +1662;AL # CANADIAN SYLLABICS CARRIER CHO +1663;AL # CANADIAN SYLLABICS CARRIER CHE +1664;AL # CANADIAN SYLLABICS CARRIER CHEE +1665;AL # CANADIAN SYLLABICS CARRIER CHI +1666;AL # CANADIAN SYLLABICS CARRIER CHA +1667;AL # CANADIAN SYLLABICS CARRIER TTSU +1668;AL # CANADIAN SYLLABICS CARRIER TTSO +1669;AL # CANADIAN SYLLABICS CARRIER TTSE +166A;AL # CANADIAN SYLLABICS CARRIER TTSEE +166B;AL # CANADIAN SYLLABICS CARRIER TTSI +166C;AL # CANADIAN SYLLABICS CARRIER TTSA +166D;AL # CANADIAN SYLLABICS CHI SIGN +166E;AL # CANADIAN SYLLABICS FULL STOP +166F;AL # CANADIAN SYLLABICS QAI +1670;AL # CANADIAN SYLLABICS NGAI +1671;AL # CANADIAN SYLLABICS NNGI +1672;AL # CANADIAN SYLLABICS NNGII +1673;AL # CANADIAN SYLLABICS NNGO +1674;AL # CANADIAN SYLLABICS NNGOO +1675;AL # CANADIAN SYLLABICS NNGA +1676;AL # CANADIAN SYLLABICS NNGAA +1680;BA # OGHAM SPACE MARK +1681;AL # OGHAM LETTER BEITH +1682;AL # OGHAM LETTER LUIS +1683;AL # OGHAM LETTER FEARN +1684;AL # OGHAM LETTER SAIL +1685;AL # OGHAM LETTER NION +1686;AL # OGHAM LETTER UATH +1687;AL # OGHAM LETTER DAIR +1688;AL # OGHAM LETTER TINNE +1689;AL # OGHAM LETTER COLL +168A;AL # OGHAM LETTER CEIRT +168B;AL # OGHAM LETTER MUIN +168C;AL # OGHAM LETTER GORT +168D;AL # OGHAM LETTER NGEADAL +168E;AL # OGHAM LETTER STRAIF +168F;AL # OGHAM LETTER RUIS +1690;AL # OGHAM LETTER AILM +1691;AL # OGHAM LETTER ONN +1692;AL # OGHAM LETTER UR +1693;AL # OGHAM LETTER EADHADH +1694;AL # OGHAM LETTER IODHADH +1695;AL # OGHAM LETTER EABHADH +1696;AL # OGHAM LETTER OR +1697;AL # OGHAM LETTER UILLEANN +1698;AL # OGHAM LETTER IFIN +1699;AL # OGHAM LETTER EAMHANCHOLL +169A;AL # OGHAM LETTER PEITH +169B;OP # OGHAM FEATHER MARK +169C;CL # OGHAM REVERSED FEATHER MARK +16A0;AL # RUNIC LETTER FEHU FEOH FE F +16A1;AL # RUNIC LETTER V +16A2;AL # RUNIC LETTER URUZ UR U +16A3;AL # RUNIC LETTER YR +16A4;AL # RUNIC LETTER Y +16A5;AL # RUNIC LETTER W +16A6;AL # RUNIC LETTER THURISAZ THURS THORN +16A7;AL # RUNIC LETTER ETH +16A8;AL # RUNIC LETTER ANSUZ A +16A9;AL # RUNIC LETTER OS O +16AA;AL # RUNIC LETTER AC A +16AB;AL # RUNIC LETTER AESC +16AC;AL # RUNIC LETTER LONG-BRANCH-OSS O +16AD;AL # RUNIC LETTER SHORT-TWIG-OSS O +16AE;AL # RUNIC LETTER O +16AF;AL # RUNIC LETTER OE +16B0;AL # RUNIC LETTER ON +16B1;AL # RUNIC LETTER RAIDO RAD REID R +16B2;AL # RUNIC LETTER KAUNA +16B3;AL # RUNIC LETTER CEN +16B4;AL # RUNIC LETTER KAUN K +16B5;AL # RUNIC LETTER G +16B6;AL # RUNIC LETTER ENG +16B7;AL # RUNIC LETTER GEBO GYFU G +16B8;AL # RUNIC LETTER GAR +16B9;AL # RUNIC LETTER WUNJO WYNN W +16BA;AL # RUNIC LETTER HAGLAZ H +16BB;AL # RUNIC LETTER HAEGL H +16BC;AL # RUNIC LETTER LONG-BRANCH-HAGALL H +16BD;AL # RUNIC LETTER SHORT-TWIG-HAGALL H +16BE;AL # RUNIC LETTER NAUDIZ NYD NAUD N +16BF;AL # RUNIC LETTER SHORT-TWIG-NAUD N +16C0;AL # RUNIC LETTER DOTTED-N +16C1;AL # RUNIC LETTER ISAZ IS ISS I +16C2;AL # RUNIC LETTER E +16C3;AL # RUNIC LETTER JERAN J +16C4;AL # RUNIC LETTER GER +16C5;AL # RUNIC LETTER LONG-BRANCH-AR AE +16C6;AL # RUNIC LETTER SHORT-TWIG-AR A +16C7;AL # RUNIC LETTER IWAZ EOH +16C8;AL # RUNIC LETTER PERTHO PEORTH P +16C9;AL # RUNIC LETTER ALGIZ EOLHX +16CA;AL # RUNIC LETTER SOWILO S +16CB;AL # RUNIC LETTER SIGEL LONG-BRANCH-SOL S +16CC;AL # RUNIC LETTER SHORT-TWIG-SOL S +16CD;AL # RUNIC LETTER C +16CE;AL # RUNIC LETTER Z +16CF;AL # RUNIC LETTER TIWAZ TIR TYR T +16D0;AL # RUNIC LETTER SHORT-TWIG-TYR T +16D1;AL # RUNIC LETTER D +16D2;AL # RUNIC LETTER BERKANAN BEORC BJARKAN B +16D3;AL # RUNIC LETTER SHORT-TWIG-BJARKAN B +16D4;AL # RUNIC LETTER DOTTED-P +16D5;AL # RUNIC LETTER OPEN-P +16D6;AL # RUNIC LETTER EHWAZ EH E +16D7;AL # RUNIC LETTER MANNAZ MAN M +16D8;AL # RUNIC LETTER LONG-BRANCH-MADR M +16D9;AL # RUNIC LETTER SHORT-TWIG-MADR M +16DA;AL # RUNIC LETTER LAUKAZ LAGU LOGR L +16DB;AL # RUNIC LETTER DOTTED-L +16DC;AL # RUNIC LETTER INGWAZ +16DD;AL # RUNIC LETTER ING +16DE;AL # RUNIC LETTER DAGAZ DAEG D +16DF;AL # RUNIC LETTER OTHALAN ETHEL O +16E0;AL # RUNIC LETTER EAR +16E1;AL # RUNIC LETTER IOR +16E2;AL # RUNIC LETTER CWEORTH +16E3;AL # RUNIC LETTER CALC +16E4;AL # RUNIC LETTER CEALC +16E5;AL # RUNIC LETTER STAN +16E6;AL # RUNIC LETTER LONG-BRANCH-YR +16E7;AL # RUNIC LETTER SHORT-TWIG-YR +16E8;AL # RUNIC LETTER ICELANDIC-YR +16E9;AL # RUNIC LETTER Q +16EA;AL # RUNIC LETTER X +16EB;AL # RUNIC SINGLE PUNCTUATION +16EC;AL # RUNIC MULTIPLE PUNCTUATION +16ED;AL # RUNIC CROSS PUNCTUATION +16EE;AL # RUNIC ARLAUG SYMBOL +16EF;AL # RUNIC TVIMADUR SYMBOL +16F0;AL # RUNIC BELGTHOR SYMBOL +1700;AL # TAGALOG LETTER A +1701;AL # TAGALOG LETTER I +1702;AL # TAGALOG LETTER U +1703;AL # TAGALOG LETTER KA +1704;AL # TAGALOG LETTER GA +1705;AL # TAGALOG LETTER NGA +1706;AL # TAGALOG LETTER TA +1707;AL # TAGALOG LETTER DA +1708;AL # TAGALOG LETTER NA +1709;AL # TAGALOG LETTER PA +170A;AL # TAGALOG LETTER BA +170B;AL # TAGALOG LETTER MA +170C;AL # TAGALOG LETTER YA +170E;AL # TAGALOG LETTER LA +170F;AL # TAGALOG LETTER WA +1710;AL # TAGALOG LETTER SA +1711;AL # TAGALOG LETTER HA +1712;CM # TAGALOG VOWEL SIGN I +1713;CM # TAGALOG VOWEL SIGN U +1714;CM # TAGALOG SIGN VIRAMA +1720;AL # HANUNOO LETTER A +1721;AL # HANUNOO LETTER I +1722;AL # HANUNOO LETTER U +1723;AL # HANUNOO LETTER KA +1724;AL # HANUNOO LETTER GA +1725;AL # HANUNOO LETTER NGA +1726;AL # HANUNOO LETTER TA +1727;AL # HANUNOO LETTER DA +1728;AL # HANUNOO LETTER NA +1729;AL # HANUNOO LETTER PA +172A;AL # HANUNOO LETTER BA +172B;AL # HANUNOO LETTER MA +172C;AL # HANUNOO LETTER YA +172D;AL # HANUNOO LETTER RA +172E;AL # HANUNOO LETTER LA +172F;AL # HANUNOO LETTER WA +1730;AL # HANUNOO LETTER SA +1731;AL # HANUNOO LETTER HA +1732;CM # HANUNOO VOWEL SIGN I +1733;CM # HANUNOO VOWEL SIGN U +1734;CM # HANUNOO SIGN PAMUDPOD +1735;AL # PHILIPPINE SINGLE PUNCTUATION +1736;AL # PHILIPPINE DOUBLE PUNCTUATION +1740;AL # BUHID LETTER A +1741;AL # BUHID LETTER I +1742;AL # BUHID LETTER U +1743;AL # BUHID LETTER KA +1744;AL # BUHID LETTER GA +1745;AL # BUHID LETTER NGA +1746;AL # BUHID LETTER TA +1747;AL # BUHID LETTER DA +1748;AL # BUHID LETTER NA +1749;AL # BUHID LETTER PA +174A;AL # BUHID LETTER BA +174B;AL # BUHID LETTER MA +174C;AL # BUHID LETTER YA +174D;AL # BUHID LETTER RA +174E;AL # BUHID LETTER LA +174F;AL # BUHID LETTER WA +1750;AL # BUHID LETTER SA +1751;AL # BUHID LETTER HA +1752;CM # BUHID VOWEL SIGN I +1753;CM # BUHID VOWEL SIGN U +1760;AL # TAGBANWA LETTER A +1761;AL # TAGBANWA LETTER I +1762;AL # TAGBANWA LETTER U +1763;AL # TAGBANWA LETTER KA +1764;AL # TAGBANWA LETTER GA +1765;AL # TAGBANWA LETTER NGA +1766;AL # TAGBANWA LETTER TA +1767;AL # TAGBANWA LETTER DA +1768;AL # TAGBANWA LETTER NA +1769;AL # TAGBANWA LETTER PA +176A;AL # TAGBANWA LETTER BA +176B;AL # TAGBANWA LETTER MA +176C;AL # TAGBANWA LETTER YA +176E;AL # TAGBANWA LETTER LA +176F;AL # TAGBANWA LETTER WA +1770;AL # TAGBANWA LETTER SA +1772;CM # TAGBANWA VOWEL SIGN I +1773;CM # TAGBANWA VOWEL SIGN U +1780;SA # KHMER LETTER KA +1781;SA # KHMER LETTER KHA +1782;SA # KHMER LETTER KO +1783;SA # KHMER LETTER KHO +1784;SA # KHMER LETTER NGO +1785;SA # KHMER LETTER CA +1786;SA # KHMER LETTER CHA +1787;SA # KHMER LETTER CO +1788;SA # KHMER LETTER CHO +1789;SA # KHMER LETTER NYO +178A;SA # KHMER LETTER DA +178B;SA # KHMER LETTER TTHA +178C;SA # KHMER LETTER DO +178D;SA # KHMER LETTER TTHO +178E;SA # KHMER LETTER NNO +178F;SA # KHMER LETTER TA +1790;SA # KHMER LETTER THA +1791;SA # KHMER LETTER TO +1792;SA # KHMER LETTER THO +1793;SA # KHMER LETTER NO +1794;SA # KHMER LETTER BA +1795;SA # KHMER LETTER PHA +1796;SA # KHMER LETTER PO +1797;SA # KHMER LETTER PHO +1798;SA # KHMER LETTER MO +1799;SA # KHMER LETTER YO +179A;SA # KHMER LETTER RO +179B;SA # KHMER LETTER LO +179C;SA # KHMER LETTER VO +179D;SA # KHMER LETTER SHA +179E;SA # KHMER LETTER SSO +179F;SA # KHMER LETTER SA +17A0;SA # KHMER LETTER HA +17A1;SA # KHMER LETTER LA +17A2;SA # KHMER LETTER QA +17A3;SA # KHMER INDEPENDENT VOWEL QAQ +17A4;SA # KHMER INDEPENDENT VOWEL QAA +17A5;SA # KHMER INDEPENDENT VOWEL QI +17A6;SA # KHMER INDEPENDENT VOWEL QII +17A7;SA # KHMER INDEPENDENT VOWEL QU +17A8;SA # KHMER INDEPENDENT VOWEL QUK +17A9;SA # KHMER INDEPENDENT VOWEL QUU +17AA;SA # KHMER INDEPENDENT VOWEL QUUV +17AB;SA # KHMER INDEPENDENT VOWEL RY +17AC;SA # KHMER INDEPENDENT VOWEL RYY +17AD;SA # KHMER INDEPENDENT VOWEL LY +17AE;SA # KHMER INDEPENDENT VOWEL LYY +17AF;SA # KHMER INDEPENDENT VOWEL QE +17B0;SA # KHMER INDEPENDENT VOWEL QAI +17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE +17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO +17B3;SA # KHMER INDEPENDENT VOWEL QAU +17B4;CM # KHMER VOWEL INHERENT AQ +17B5;CM # KHMER VOWEL INHERENT AA +17B6;CM # KHMER VOWEL SIGN AA +17B7;CM # KHMER VOWEL SIGN I +17B8;CM # KHMER VOWEL SIGN II +17B9;CM # KHMER VOWEL SIGN Y +17BA;CM # KHMER VOWEL SIGN YY +17BB;CM # KHMER VOWEL SIGN U +17BC;CM # KHMER VOWEL SIGN UU +17BD;CM # KHMER VOWEL SIGN UA +17BE;CM # KHMER VOWEL SIGN OE +17BF;CM # KHMER VOWEL SIGN YA +17C0;CM # KHMER VOWEL SIGN IE +17C1;CM # KHMER VOWEL SIGN E +17C2;CM # KHMER VOWEL SIGN AE +17C3;CM # KHMER VOWEL SIGN AI +17C4;CM # KHMER VOWEL SIGN OO +17C5;CM # KHMER VOWEL SIGN AU +17C6;CM # KHMER SIGN NIKAHIT +17C7;CM # KHMER SIGN REAHMUK +17C8;CM # KHMER SIGN YUUKALEAPINTU +17C9;CM # KHMER SIGN MUUSIKATOAN +17CA;CM # KHMER SIGN TRIISAP +17CB;CM # KHMER SIGN BANTOC +17CC;CM # KHMER SIGN ROBAT +17CD;CM # KHMER SIGN TOANDAKHIAT +17CE;CM # KHMER SIGN KAKABAT +17CF;CM # KHMER SIGN AHSDA +17D0;CM # KHMER SIGN SAMYOK SANNYA +17D1;CM # KHMER SIGN VIRIAM +17D2;CM # KHMER SIGN COENG +17D3;CM # KHMER SIGN BATHAMASAT +17D4;NS # KHMER SIGN KHAN +17D5;BA # KHMER SIGN BARIYOOSAN +17D6;NS # KHMER SIGN CAMNUC PII KUUH +17D7;NS # KHMER SIGN LEK TOO +17D8;NS # KHMER SIGN BEYYAL +17D9;NS # KHMER SIGN PHNAEK MUAN +17DA;NS # KHMER SIGN KOOMUUT +17DB;PR # KHMER CURRENCY SYMBOL RIEL +17DC;AL # KHMER SIGN AVAKRAHASANYA +17E0;NU # KHMER DIGIT ZERO +17E1;NU # KHMER DIGIT ONE +17E2;NU # KHMER DIGIT TWO +17E3;NU # KHMER DIGIT THREE +17E4;NU # KHMER DIGIT FOUR +17E5;NU # KHMER DIGIT FIVE +17E6;NU # KHMER DIGIT SIX +17E7;NU # KHMER DIGIT SEVEN +17E8;NU # KHMER DIGIT EIGHT +17E9;NU # KHMER DIGIT NINE +1800;AL # MONGOLIAN BIRGA +1801;AL # MONGOLIAN ELLIPSIS +1802;AL # MONGOLIAN COMMA +1803;AL # MONGOLIAN FULL STOP +1804;AL # MONGOLIAN COLON +1805;AL # MONGOLIAN FOUR DOTS +1806;BB # MONGOLIAN TODO SOFT HYPHEN +1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER +1808;AL # MONGOLIAN MANCHU COMMA +1809;AL # MONGOLIAN MANCHU FULL STOP +180A;AL # MONGOLIAN NIRUGU +180B;CM # MONGOLIAN FREE VARIATION SELECTOR ONE +180C;CM # MONGOLIAN FREE VARIATION SELECTOR TWO +180D;CM # MONGOLIAN FREE VARIATION SELECTOR THREE +180E;CM # MONGOLIAN VOWEL SEPARATOR +1810;NU # MONGOLIAN DIGIT ZERO +1811;NU # MONGOLIAN DIGIT ONE +1812;NU # MONGOLIAN DIGIT TWO +1813;NU # MONGOLIAN DIGIT THREE +1814;NU # MONGOLIAN DIGIT FOUR +1815;NU # MONGOLIAN DIGIT FIVE +1816;NU # MONGOLIAN DIGIT SIX +1817;NU # MONGOLIAN DIGIT SEVEN +1818;NU # MONGOLIAN DIGIT EIGHT +1819;NU # MONGOLIAN DIGIT NINE +1820;AL # MONGOLIAN LETTER A +1821;AL # MONGOLIAN LETTER E +1822;AL # MONGOLIAN LETTER I +1823;AL # MONGOLIAN LETTER O +1824;AL # MONGOLIAN LETTER U +1825;AL # MONGOLIAN LETTER OE +1826;AL # MONGOLIAN LETTER UE +1827;AL # MONGOLIAN LETTER EE +1828;AL # MONGOLIAN LETTER NA +1829;AL # MONGOLIAN LETTER ANG +182A;AL # MONGOLIAN LETTER BA +182B;AL # MONGOLIAN LETTER PA +182C;AL # MONGOLIAN LETTER QA +182D;AL # MONGOLIAN LETTER GA +182E;AL # MONGOLIAN LETTER MA +182F;AL # MONGOLIAN LETTER LA +1830;AL # MONGOLIAN LETTER SA +1831;AL # MONGOLIAN LETTER SHA +1832;AL # MONGOLIAN LETTER TA +1833;AL # MONGOLIAN LETTER DA +1834;AL # MONGOLIAN LETTER CHA +1835;AL # MONGOLIAN LETTER JA +1836;AL # MONGOLIAN LETTER YA +1837;AL # MONGOLIAN LETTER RA +1838;AL # MONGOLIAN LETTER WA +1839;AL # MONGOLIAN LETTER FA +183A;AL # MONGOLIAN LETTER KA +183B;AL # MONGOLIAN LETTER KHA +183C;AL # MONGOLIAN LETTER TSA +183D;AL # MONGOLIAN LETTER ZA +183E;AL # MONGOLIAN LETTER HAA +183F;AL # MONGOLIAN LETTER ZRA +1840;AL # MONGOLIAN LETTER LHA +1841;AL # MONGOLIAN LETTER ZHI +1842;AL # MONGOLIAN LETTER CHI +1843;AL # MONGOLIAN LETTER TODO LONG VOWEL SIGN +1844;AL # MONGOLIAN LETTER TODO E +1845;AL # MONGOLIAN LETTER TODO I +1846;AL # MONGOLIAN LETTER TODO O +1847;AL # MONGOLIAN LETTER TODO U +1848;AL # MONGOLIAN LETTER TODO OE +1849;AL # MONGOLIAN LETTER TODO UE +184A;AL # MONGOLIAN LETTER TODO ANG +184B;AL # MONGOLIAN LETTER TODO BA +184C;AL # MONGOLIAN LETTER TODO PA +184D;AL # MONGOLIAN LETTER TODO QA +184E;AL # MONGOLIAN LETTER TODO GA +184F;AL # MONGOLIAN LETTER TODO MA +1850;AL # MONGOLIAN LETTER TODO TA +1851;AL # MONGOLIAN LETTER TODO DA +1852;AL # MONGOLIAN LETTER TODO CHA +1853;AL # MONGOLIAN LETTER TODO JA +1854;AL # MONGOLIAN LETTER TODO TSA +1855;AL # MONGOLIAN LETTER TODO YA +1856;AL # MONGOLIAN LETTER TODO WA +1857;AL # MONGOLIAN LETTER TODO KA +1858;AL # MONGOLIAN LETTER TODO GAA +1859;AL # MONGOLIAN LETTER TODO HAA +185A;AL # MONGOLIAN LETTER TODO JIA +185B;AL # MONGOLIAN LETTER TODO NIA +185C;AL # MONGOLIAN LETTER TODO DZA +185D;AL # MONGOLIAN LETTER SIBE E +185E;AL # MONGOLIAN LETTER SIBE I +185F;AL # MONGOLIAN LETTER SIBE IY +1860;AL # MONGOLIAN LETTER SIBE UE +1861;AL # MONGOLIAN LETTER SIBE U +1862;AL # MONGOLIAN LETTER SIBE ANG +1863;AL # MONGOLIAN LETTER SIBE KA +1864;AL # MONGOLIAN LETTER SIBE GA +1865;AL # MONGOLIAN LETTER SIBE HA +1866;AL # MONGOLIAN LETTER SIBE PA +1867;AL # MONGOLIAN LETTER SIBE SHA +1868;AL # MONGOLIAN LETTER SIBE TA +1869;AL # MONGOLIAN LETTER SIBE DA +186A;AL # MONGOLIAN LETTER SIBE JA +186B;AL # MONGOLIAN LETTER SIBE FA +186C;AL # MONGOLIAN LETTER SIBE GAA +186D;AL # MONGOLIAN LETTER SIBE HAA +186E;AL # MONGOLIAN LETTER SIBE TSA +186F;AL # MONGOLIAN LETTER SIBE ZA +1870;AL # MONGOLIAN LETTER SIBE RAA +1871;AL # MONGOLIAN LETTER SIBE CHA +1872;AL # MONGOLIAN LETTER SIBE ZHA +1873;AL # MONGOLIAN LETTER MANCHU I +1874;AL # MONGOLIAN LETTER MANCHU KA +1875;AL # MONGOLIAN LETTER MANCHU RA +1876;AL # MONGOLIAN LETTER MANCHU FA +1877;AL # MONGOLIAN LETTER MANCHU ZHA +1880;AL # MONGOLIAN LETTER ALI GALI ANUSVARA ONE +1881;AL # MONGOLIAN LETTER ALI GALI VISARGA ONE +1882;AL # MONGOLIAN LETTER ALI GALI DAMARU +1883;AL # MONGOLIAN LETTER ALI GALI UBADAMA +1884;AL # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA +1885;AL # MONGOLIAN LETTER ALI GALI BALUDA +1886;AL # MONGOLIAN LETTER ALI GALI THREE BALUDA +1887;AL # MONGOLIAN LETTER ALI GALI A +1888;AL # MONGOLIAN LETTER ALI GALI I +1889;AL # MONGOLIAN LETTER ALI GALI KA +188A;AL # MONGOLIAN LETTER ALI GALI NGA +188B;AL # MONGOLIAN LETTER ALI GALI CA +188C;AL # MONGOLIAN LETTER ALI GALI TTA +188D;AL # MONGOLIAN LETTER ALI GALI TTHA +188E;AL # MONGOLIAN LETTER ALI GALI DDA +188F;AL # MONGOLIAN LETTER ALI GALI NNA +1890;AL # MONGOLIAN LETTER ALI GALI TA +1891;AL # MONGOLIAN LETTER ALI GALI DA +1892;AL # MONGOLIAN LETTER ALI GALI PA +1893;AL # MONGOLIAN LETTER ALI GALI PHA +1894;AL # MONGOLIAN LETTER ALI GALI SSA +1895;AL # MONGOLIAN LETTER ALI GALI ZHA +1896;AL # MONGOLIAN LETTER ALI GALI ZA +1897;AL # MONGOLIAN LETTER ALI GALI AH +1898;AL # MONGOLIAN LETTER TODO ALI GALI TA +1899;AL # MONGOLIAN LETTER TODO ALI GALI ZHA +189A;AL # MONGOLIAN LETTER MANCHU ALI GALI GHA +189B;AL # MONGOLIAN LETTER MANCHU ALI GALI NGA +189C;AL # MONGOLIAN LETTER MANCHU ALI GALI CA +189D;AL # MONGOLIAN LETTER MANCHU ALI GALI JHA +189E;AL # MONGOLIAN LETTER MANCHU ALI GALI TTA +189F;AL # MONGOLIAN LETTER MANCHU ALI GALI DDHA +18A0;AL # MONGOLIAN LETTER MANCHU ALI GALI TA +18A1;AL # MONGOLIAN LETTER MANCHU ALI GALI DHA +18A2;AL # MONGOLIAN LETTER MANCHU ALI GALI SSA +18A3;AL # MONGOLIAN LETTER MANCHU ALI GALI CYA +18A4;AL # MONGOLIAN LETTER MANCHU ALI GALI ZHA +18A5;AL # MONGOLIAN LETTER MANCHU ALI GALI ZA +18A6;AL # MONGOLIAN LETTER ALI GALI HALF U +18A7;AL # MONGOLIAN LETTER ALI GALI HALF YA +18A8;AL # MONGOLIAN LETTER MANCHU ALI GALI BHA +18A9;CM # MONGOLIAN LETTER ALI GALI DAGALGA +1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW +1E01;AL # LATIN SMALL LETTER A WITH RING BELOW +1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE +1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE +1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW +1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW +1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW +1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW +1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE +1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE +1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW +1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW +1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW +1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW +1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA +1E11;AL # LATIN SMALL LETTER D WITH CEDILLA +1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW +1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW +1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE +1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE +1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW +1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW +1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW +1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW +1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE +1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE +1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE +1E20;AL # LATIN CAPITAL LETTER G WITH MACRON +1E21;AL # LATIN SMALL LETTER G WITH MACRON +1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE +1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE +1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW +1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW +1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS +1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS +1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA +1E29;AL # LATIN SMALL LETTER H WITH CEDILLA +1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW +1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW +1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW +1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW +1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE +1E31;AL # LATIN SMALL LETTER K WITH ACUTE +1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW +1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW +1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW +1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW +1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW +1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW +1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW +1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW +1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW +1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW +1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE +1E3F;AL # LATIN SMALL LETTER M WITH ACUTE +1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE +1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE +1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW +1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW +1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE +1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE +1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW +1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW +1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW +1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW +1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW +1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW +1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE +1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE +1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE +1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE +1E55;AL # LATIN SMALL LETTER P WITH ACUTE +1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE +1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE +1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE +1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE +1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW +1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW +1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW +1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW +1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE +1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE +1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW +1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW +1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE +1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE +1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW +1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW +1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW +1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW +1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW +1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW +1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW +1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW +1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW +1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW +1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW +1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW +1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE +1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE +1E7D;AL # LATIN SMALL LETTER V WITH TILDE +1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW +1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW +1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE +1E81;AL # LATIN SMALL LETTER W WITH GRAVE +1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE +1E83;AL # LATIN SMALL LETTER W WITH ACUTE +1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS +1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS +1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE +1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE +1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW +1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW +1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE +1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE +1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS +1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS +1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE +1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE +1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX +1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW +1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW +1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW +1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW +1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW +1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS +1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE +1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE +1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING +1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW +1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW +1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE +1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE +1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE +1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE +1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE +1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW +1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW +1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE +1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE +1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE +1EBD;AL # LATIN SMALL LETTER E WITH TILDE +1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE +1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE +1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW +1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW +1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW +1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW +1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE +1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE +1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE +1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE +1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE +1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE +1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW +1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW +1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE +1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE +1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE +1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE +1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE +1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE +1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW +1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE +1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE +1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW +1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW +1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE +1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE +1EF9;AL # LATIN SMALL LETTER Y WITH TILDE +1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI +1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA +1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA +1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA +1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA +1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA +1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI +1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA +1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI +1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA +1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA +1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA +1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA +1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI +1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA +1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20;AL # GREEK SMALL LETTER ETA WITH PSILI +1F21;AL # GREEK SMALL LETTER ETA WITH DASIA +1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA +1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA +1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA +1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA +1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI +1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI +1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA +1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI +1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA +1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA +1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA +1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA +1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA +1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI +1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI +1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA +1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI +1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA +1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA +1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA +1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA +1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI +1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA +1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI +1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA +1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA +1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA +1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI +1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA +1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA +1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA +1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA +1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA +1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI +1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI +1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA +1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA +1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA +1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA +1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA +1F74;AL # GREEK SMALL LETTER ETA WITH VARIA +1F75;AL # GREEK SMALL LETTER ETA WITH OXIA +1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA +1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA +1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA +1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA +1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA +1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA +1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA +1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA +1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY +1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON +1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY +1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON +1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA +1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBD;AL # GREEK KORONIS +1FBE;AL # GREEK PROSGEGRAMMENI +1FBF;AL # GREEK PSILI +1FC0;AL # GREEK PERISPOMENI +1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI +1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI +1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA +1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA +1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA +1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD;AL # GREEK PSILI AND VARIA +1FCE;AL # GREEK PSILI AND OXIA +1FCF;AL # GREEK PSILI AND PERISPOMENI +1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY +1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON +1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI +1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY +1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON +1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA +1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD;AL # GREEK DASIA AND VARIA +1FDE;AL # GREEK DASIA AND OXIA +1FDF;AL # GREEK DASIA AND PERISPOMENI +1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY +1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON +1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI +1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA +1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY +1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON +1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA +1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA +1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA +1FED;AL # GREEK DIALYTIKA AND VARIA +1FEE;AL # GREEK DIALYTIKA AND OXIA +1FEF;AL # GREEK VARIA +1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA +1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA +1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFD;AL # GREEK OXIA +1FFE;AL # GREEK DASIA +2000;BA # EN QUAD +2001;BA # EM QUAD +2002;BA # EN SPACE +2003;BA # EM SPACE +2004;BA # THREE-PER-EM SPACE +2005;BA # FOUR-PER-EM SPACE +2006;BA # SIX-PER-EM SPACE +2007;GL # FIGURE SPACE +2008;BA # PUNCTUATION SPACE +2009;BA # THIN SPACE +200A;BA # HAIR SPACE +200B;ZW # ZERO WIDTH SPACE +200C;CM # ZERO WIDTH NON-JOINER +200D;CM # ZERO WIDTH JOINER +200E;CM # LEFT-TO-RIGHT MARK +200F;CM # RIGHT-TO-LEFT MARK +2010;BA # HYPHEN +2011;GL # NON-BREAKING HYPHEN +2012;BA # FIGURE DASH +2013;BA # EN DASH +2014;B2 # EM DASH +2015;AI # HORIZONTAL BAR +2016;AI # DOUBLE VERTICAL LINE +2017;AL # DOUBLE LOW LINE +2018;QU # LEFT SINGLE QUOTATION MARK +2019;QU # RIGHT SINGLE QUOTATION MARK +201A;OP # SINGLE LOW-9 QUOTATION MARK +201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK +201C;QU # LEFT DOUBLE QUOTATION MARK +201D;QU # RIGHT DOUBLE QUOTATION MARK +201E;OP # DOUBLE LOW-9 QUOTATION MARK +201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK +2020;AI # DAGGER +2021;AI # DOUBLE DAGGER +2022;AL # BULLET +2023;AL # TRIANGULAR BULLET +2024;IN # ONE DOT LEADER +2025;IN # TWO DOT LEADER +2026;IN # HORIZONTAL ELLIPSIS +2027;BA # HYPHENATION POINT +2028;BK # LINE SEPARATOR +2029;BK # PARAGRAPH SEPARATOR +202A;CM # LEFT-TO-RIGHT EMBEDDING +202B;CM # RIGHT-TO-LEFT EMBEDDING +202C;CM # POP DIRECTIONAL FORMATTING +202D;CM # LEFT-TO-RIGHT OVERRIDE +202E;CM # RIGHT-TO-LEFT OVERRIDE +202F;GL # NARROW NO-BREAK SPACE +2030;PO # PER MILLE SIGN +2031;PO # PER TEN THOUSAND SIGN +2032;PO # PRIME +2033;PO # DOUBLE PRIME +2034;PO # TRIPLE PRIME +2035;PO # REVERSED PRIME +2036;PO # REVERSED DOUBLE PRIME +2037;PO # REVERSED TRIPLE PRIME +2038;AL # CARET +2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +203B;AI # REFERENCE MARK +203C;NS # DOUBLE EXCLAMATION MARK +203D;AL # INTERROBANG +203E;AL # OVERLINE +203F;AL # UNDERTIE +2040;AL # CHARACTER TIE +2041;AL # CARET INSERTION POINT +2042;AL # ASTERISM +2043;AL # HYPHEN BULLET +2044;NS # FRACTION SLASH +2045;OP # LEFT SQUARE BRACKET WITH QUILL +2046;CL # RIGHT SQUARE BRACKET WITH QUILL +2047;AL # DOUBLE QUESTION MARK +2048;AL # QUESTION EXCLAMATION MARK +2049;AL # EXCLAMATION QUESTION MARK +204A;AL # TIRONIAN SIGN ET +204B;AL # REVERSED PILCROW SIGN +204C;AL # BLACK LEFTWARDS BULLET +204D;AL # BLACK RIGHTWARDS BULLET +204E;AL # LOW ASTERISK +204F;AL # REVERSED SEMICOLON +2050;AL # CLOSE UP +2051;AL # TWO ASTERISKS ALIGNED VERTICALLY +2052;AL # COMMERCIAL MINUS SIGN +2057;AL # QUADRUPLE PRIME +205F;BA # MEDIUM MATHEMATICAL SPACE +2060;GL # WORD JOINER +2061;AL # FUNCTION APPLICATION +2062;AL # INVISIBLE TIMES +2063;AL # INVISIBLE SEPARATOR +206A;CM # INHIBIT SYMMETRIC SWAPPING +206B;CM # ACTIVATE SYMMETRIC SWAPPING +206C;CM # INHIBIT ARABIC FORM SHAPING +206D;CM # ACTIVATE ARABIC FORM SHAPING +206E;CM # NATIONAL DIGIT SHAPES +206F;CM # NOMINAL DIGIT SHAPES +2070;AL # SUPERSCRIPT ZERO +2071;AL # SUPERSCRIPT LATIN SMALL LETTER I +2074;AI # SUPERSCRIPT FOUR +2075;AL # SUPERSCRIPT FIVE +2076;AL # SUPERSCRIPT SIX +2077;AL # SUPERSCRIPT SEVEN +2078;AL # SUPERSCRIPT EIGHT +2079;AL # SUPERSCRIPT NINE +207A;AL # SUPERSCRIPT PLUS SIGN +207B;AL # SUPERSCRIPT MINUS +207C;AL # SUPERSCRIPT EQUALS SIGN +207D;OP # SUPERSCRIPT LEFT PARENTHESIS +207E;CL # SUPERSCRIPT RIGHT PARENTHESIS +207F;AI # SUPERSCRIPT LATIN SMALL LETTER N +2080;AL # SUBSCRIPT ZERO +2081;AI # SUBSCRIPT ONE +2082;AI # SUBSCRIPT TWO +2083;AI # SUBSCRIPT THREE +2084;AI # SUBSCRIPT FOUR +2085;AL # SUBSCRIPT FIVE +2086;AL # SUBSCRIPT SIX +2087;AL # SUBSCRIPT SEVEN +2088;AL # SUBSCRIPT EIGHT +2089;AL # SUBSCRIPT NINE +208A;AL # SUBSCRIPT PLUS SIGN +208B;AL # SUBSCRIPT MINUS +208C;AL # SUBSCRIPT EQUALS SIGN +208D;OP # SUBSCRIPT LEFT PARENTHESIS +208E;CL # SUBSCRIPT RIGHT PARENTHESIS +20A0;PR # EURO-CURRENCY SIGN +20A1;PR # COLON SIGN +20A2;PR # CRUZEIRO SIGN +20A3;PR # FRENCH FRANC SIGN +20A4;PR # LIRA SIGN +20A5;PR # MILL SIGN +20A6;PR # NAIRA SIGN +20A7;PO # PESETA SIGN +20A8;PR # RUPEE SIGN +20A9;PR # WON SIGN +20AA;PR # NEW SHEQEL SIGN +20AB;PR # DONG SIGN +20AC;PR # EURO SIGN +20AD;PR # KIP SIGN +20AE;PR # TUGRIK SIGN +20AF;PR # DRACHMA SIGN +20B0;PR # GERMAN PENNY SIGN +20B1;PR # PESO SIGN +20D0;CM # COMBINING LEFT HARPOON ABOVE +20D1;CM # COMBINING RIGHT HARPOON ABOVE +20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY +20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY +20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE +20D5;CM # COMBINING CLOCKWISE ARROW ABOVE +20D6;CM # COMBINING LEFT ARROW ABOVE +20D7;CM # COMBINING RIGHT ARROW ABOVE +20D8;CM # COMBINING RING OVERLAY +20D9;CM # COMBINING CLOCKWISE RING OVERLAY +20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY +20DB;CM # COMBINING THREE DOTS ABOVE +20DC;CM # COMBINING FOUR DOTS ABOVE +20DD;CM # COMBINING ENCLOSING CIRCLE +20DE;CM # COMBINING ENCLOSING SQUARE +20DF;CM # COMBINING ENCLOSING DIAMOND +20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH +20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE +20E2;CM # COMBINING ENCLOSING SCREEN +20E3;CM # COMBINING ENCLOSING KEYCAP +20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE +20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY +20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY +20E7;CM # COMBINING ANNUITY SYMBOL +20E8;CM # COMBINING TRIPLE UNDERDOT +20E9;CM # COMBINING WIDE BRIDGE ABOVE +20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY +2100;AL # ACCOUNT OF +2101;AL # ADDRESSED TO THE SUBJECT +2102;AL # DOUBLE-STRUCK CAPITAL C +2103;PO # DEGREE CELSIUS +2104;AL # CENTRE LINE SYMBOL +2105;AI # CARE OF +2106;AL # CADA UNA +2107;AL # EULER CONSTANT +2108;AL # SCRUPLE +2109;PO # DEGREE FAHRENHEIT +210A;AL # SCRIPT SMALL G +210B;AL # SCRIPT CAPITAL H +210C;AL # BLACK-LETTER CAPITAL H +210D;AL # DOUBLE-STRUCK CAPITAL H +210E;AL # PLANCK CONSTANT +210F;AL # PLANCK CONSTANT OVER TWO PI +2110;AL # SCRIPT CAPITAL I +2111;AL # BLACK-LETTER CAPITAL I +2112;AL # SCRIPT CAPITAL L +2113;AI # SCRIPT SMALL L +2114;AL # L B BAR SYMBOL +2115;AL # DOUBLE-STRUCK CAPITAL N +2116;PR # NUMERO SIGN +2117;AL # SOUND RECORDING COPYRIGHT +2118;AL # SCRIPT CAPITAL P +2119;AL # DOUBLE-STRUCK CAPITAL P +211A;AL # DOUBLE-STRUCK CAPITAL Q +211B;AL # SCRIPT CAPITAL R +211C;AL # BLACK-LETTER CAPITAL R +211D;AL # DOUBLE-STRUCK CAPITAL R +211E;AL # PRESCRIPTION TAKE +211F;AL # RESPONSE +2120;AL # SERVICE MARK +2121;AI # TELEPHONE SIGN +2122;AI # TRADE MARK SIGN +2123;AL # VERSICLE +2124;AL # DOUBLE-STRUCK CAPITAL Z +2125;AL # OUNCE SIGN +2126;PO # OHM SIGN +2127;AL # INVERTED OHM SIGN +2128;AL # BLACK-LETTER CAPITAL Z +2129;AL # TURNED GREEK SMALL LETTER IOTA +212A;AL # KELVIN SIGN +212B;AI # ANGSTROM SIGN +212C;AL # SCRIPT CAPITAL B +212D;AL # BLACK-LETTER CAPITAL C +212E;AL # ESTIMATED SYMBOL +212F;AL # SCRIPT SMALL E +2130;AL # SCRIPT CAPITAL E +2131;AL # SCRIPT CAPITAL F +2132;AL # TURNED CAPITAL F +2133;AL # SCRIPT CAPITAL M +2134;AL # SCRIPT SMALL O +2135;AL # ALEF SYMBOL +2136;AL # BET SYMBOL +2137;AL # GIMEL SYMBOL +2138;AL # DALET SYMBOL +2139;AL # INFORMATION SOURCE +213A;AL # ROTATED CAPITAL Q +213D;AL # DOUBLE-STRUCK SMALL GAMMA +213E;AL # DOUBLE-STRUCK CAPITAL GAMMA +213F;AL # DOUBLE-STRUCK CAPITAL PI +2140;AI # DOUBLE-STRUCK N-ARY SUMMATION +2141;AL # TURNED SANS-SERIF CAPITAL G +2142;AL # TURNED SANS-SERIF CAPITAL L +2143;AL # REVERSED SANS-SERIF CAPITAL L +2144;AL # TURNED SANS-SERIF CAPITAL Y +2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D +2146;AL # DOUBLE-STRUCK ITALIC SMALL D +2147;AL # DOUBLE-STRUCK ITALIC SMALL E +2148;AL # DOUBLE-STRUCK ITALIC SMALL I +2149;AL # DOUBLE-STRUCK ITALIC SMALL J +214A;AL # PROPERTY LINE +214B;AL # TURNED AMPERSAND +2153;AL # VULGAR FRACTION ONE THIRD +2154;AI # VULGAR FRACTION TWO THIRDS +2155;AI # VULGAR FRACTION ONE FIFTH +2156;AL # VULGAR FRACTION TWO FIFTHS +2157;AL # VULGAR FRACTION THREE FIFTHS +2158;AL # VULGAR FRACTION FOUR FIFTHS +2159;AL # VULGAR FRACTION ONE SIXTH +215A;AL # VULGAR FRACTION FIVE SIXTHS +215B;AI # VULGAR FRACTION ONE EIGHTH +215C;AL # VULGAR FRACTION THREE EIGHTHS +215D;AL # VULGAR FRACTION FIVE EIGHTHS +215E;AI # VULGAR FRACTION SEVEN EIGHTHS +215F;AL # FRACTION NUMERATOR ONE +2160;AI # ROMAN NUMERAL ONE +2161;AI # ROMAN NUMERAL TWO +2162;AI # ROMAN NUMERAL THREE +2163;AI # ROMAN NUMERAL FOUR +2164;AI # ROMAN NUMERAL FIVE +2165;AI # ROMAN NUMERAL SIX +2166;AI # ROMAN NUMERAL SEVEN +2167;AI # ROMAN NUMERAL EIGHT +2168;AI # ROMAN NUMERAL NINE +2169;AI # ROMAN NUMERAL TEN +216A;AI # ROMAN NUMERAL ELEVEN +216B;AI # ROMAN NUMERAL TWELVE +216C;AL # ROMAN NUMERAL FIFTY +216D;AL # ROMAN NUMERAL ONE HUNDRED +216E;AL # ROMAN NUMERAL FIVE HUNDRED +216F;AL # ROMAN NUMERAL ONE THOUSAND +2170;AI # SMALL ROMAN NUMERAL ONE +2171;AI # SMALL ROMAN NUMERAL TWO +2172;AI # SMALL ROMAN NUMERAL THREE +2173;AI # SMALL ROMAN NUMERAL FOUR +2174;AI # SMALL ROMAN NUMERAL FIVE +2175;AI # SMALL ROMAN NUMERAL SIX +2176;AI # SMALL ROMAN NUMERAL SEVEN +2177;AI # SMALL ROMAN NUMERAL EIGHT +2178;AI # SMALL ROMAN NUMERAL NINE +2179;AI # SMALL ROMAN NUMERAL TEN +217A;AL # SMALL ROMAN NUMERAL ELEVEN +217B;AL # SMALL ROMAN NUMERAL TWELVE +217C;AL # SMALL ROMAN NUMERAL FIFTY +217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED +217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED +217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND +2180;AL # ROMAN NUMERAL ONE THOUSAND C D +2181;AL # ROMAN NUMERAL FIVE THOUSAND +2182;AL # ROMAN NUMERAL TEN THOUSAND +2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED +2190;AI # LEFTWARDS ARROW +2191;AI # UPWARDS ARROW +2192;AI # RIGHTWARDS ARROW +2193;AI # DOWNWARDS ARROW +2194;AI # LEFT RIGHT ARROW +2195;AI # UP DOWN ARROW +2196;AI # NORTH WEST ARROW +2197;AI # NORTH EAST ARROW +2198;AI # SOUTH EAST ARROW +2199;AI # SOUTH WEST ARROW +219A;AL # LEFTWARDS ARROW WITH STROKE +219B;AL # RIGHTWARDS ARROW WITH STROKE +219C;AL # LEFTWARDS WAVE ARROW +219D;AL # RIGHTWARDS WAVE ARROW +219E;AL # LEFTWARDS TWO HEADED ARROW +219F;AL # UPWARDS TWO HEADED ARROW +21A0;AL # RIGHTWARDS TWO HEADED ARROW +21A1;AL # DOWNWARDS TWO HEADED ARROW +21A2;AL # LEFTWARDS ARROW WITH TAIL +21A3;AL # RIGHTWARDS ARROW WITH TAIL +21A4;AL # LEFTWARDS ARROW FROM BAR +21A5;AL # UPWARDS ARROW FROM BAR +21A6;AL # RIGHTWARDS ARROW FROM BAR +21A7;AL # DOWNWARDS ARROW FROM BAR +21A8;AL # UP DOWN ARROW WITH BASE +21A9;AL # LEFTWARDS ARROW WITH HOOK +21AA;AL # RIGHTWARDS ARROW WITH HOOK +21AB;AL # LEFTWARDS ARROW WITH LOOP +21AC;AL # RIGHTWARDS ARROW WITH LOOP +21AD;AL # LEFT RIGHT WAVE ARROW +21AE;AL # LEFT RIGHT ARROW WITH STROKE +21AF;AL # DOWNWARDS ZIGZAG ARROW +21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS +21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS +21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS +21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS +21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS +21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS +21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW +21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW +21B8;AL # NORTH WEST ARROW TO LONG BAR +21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR +21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW +21BB;AL # CLOCKWISE OPEN CIRCLE ARROW +21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS +21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS +21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS +21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS +21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS +21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS +21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS +21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS +21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW +21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW +21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW +21C7;AL # LEFTWARDS PAIRED ARROWS +21C8;AL # UPWARDS PAIRED ARROWS +21C9;AL # RIGHTWARDS PAIRED ARROWS +21CA;AL # DOWNWARDS PAIRED ARROWS +21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON +21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON +21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE +21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE +21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE +21D0;AL # LEFTWARDS DOUBLE ARROW +21D1;AL # UPWARDS DOUBLE ARROW +21D2;AI # RIGHTWARDS DOUBLE ARROW +21D3;AL # DOWNWARDS DOUBLE ARROW +21D4;AI # LEFT RIGHT DOUBLE ARROW +21D5;AL # UP DOWN DOUBLE ARROW +21D6;AL # NORTH WEST DOUBLE ARROW +21D7;AL # NORTH EAST DOUBLE ARROW +21D8;AL # SOUTH EAST DOUBLE ARROW +21D9;AL # SOUTH WEST DOUBLE ARROW +21DA;AL # LEFTWARDS TRIPLE ARROW +21DB;AL # RIGHTWARDS TRIPLE ARROW +21DC;AL # LEFTWARDS SQUIGGLE ARROW +21DD;AL # RIGHTWARDS SQUIGGLE ARROW +21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE +21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE +21E0;AL # LEFTWARDS DASHED ARROW +21E1;AL # UPWARDS DASHED ARROW +21E2;AL # RIGHTWARDS DASHED ARROW +21E3;AL # DOWNWARDS DASHED ARROW +21E4;AL # LEFTWARDS ARROW TO BAR +21E5;AL # RIGHTWARDS ARROW TO BAR +21E6;AL # LEFTWARDS WHITE ARROW +21E7;AL # UPWARDS WHITE ARROW +21E8;AL # RIGHTWARDS WHITE ARROW +21E9;AL # DOWNWARDS WHITE ARROW +21EA;AL # UPWARDS WHITE ARROW FROM BAR +21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL +21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR +21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR +21EE;AL # UPWARDS WHITE DOUBLE ARROW +21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL +21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL +21F1;AL # NORTH WEST ARROW TO CORNER +21F2;AL # SOUTH EAST ARROW TO CORNER +21F3;AL # UP DOWN WHITE ARROW +21F4;AL # RIGHT ARROW WITH SMALL CIRCLE +21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW +21F6;AL # THREE RIGHTWARDS ARROWS +21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE +21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE +21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE +21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE +21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE +21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE +21FD;AL # LEFTWARDS OPEN-HEADED ARROW +21FE;AL # RIGHTWARDS OPEN-HEADED ARROW +21FF;AL # LEFT RIGHT OPEN-HEADED ARROW +2200;AI # FOR ALL +2201;AL # COMPLEMENT +2202;AI # PARTIAL DIFFERENTIAL +2203;AI # THERE EXISTS +2204;AL # THERE DOES NOT EXIST +2205;AL # EMPTY SET +2206;AL # INCREMENT +2207;AI # NABLA +2208;AI # ELEMENT OF +2209;AL # NOT AN ELEMENT OF +220A;AL # SMALL ELEMENT OF +220B;AI # CONTAINS AS MEMBER +220C;AL # DOES NOT CONTAIN AS MEMBER +220D;AL # SMALL CONTAINS AS MEMBER +220E;AL # END OF PROOF +220F;AI # N-ARY PRODUCT +2210;AL # N-ARY COPRODUCT +2211;AI # N-ARY SUMMATION +2212;PR # MINUS SIGN +2213;PR # MINUS-OR-PLUS SIGN +2214;AL # DOT PLUS +2215;AI # DIVISION SLASH +2216;AL # SET MINUS +2217;AL # ASTERISK OPERATOR +2218;AL # RING OPERATOR +2219;AL # BULLET OPERATOR +221A;AI # SQUARE ROOT +221B;AL # CUBE ROOT +221C;AL # FOURTH ROOT +221D;AI # PROPORTIONAL TO +221E;AI # INFINITY +221F;AI # RIGHT ANGLE +2220;AI # ANGLE +2221;AL # MEASURED ANGLE +2222;AL # SPHERICAL ANGLE +2223;AI # DIVIDES +2224;AL # DOES NOT DIVIDE +2225;AI # PARALLEL TO +2226;AL # NOT PARALLEL TO +2227;AI # LOGICAL AND +2228;AI # LOGICAL OR +2229;AI # INTERSECTION +222A;AI # UNION +222B;AI # INTEGRAL +222C;AI # DOUBLE INTEGRAL +222D;AL # TRIPLE INTEGRAL +222E;AI # CONTOUR INTEGRAL +222F;AL # SURFACE INTEGRAL +2230;AL # VOLUME INTEGRAL +2231;AL # CLOCKWISE INTEGRAL +2232;AL # CLOCKWISE CONTOUR INTEGRAL +2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL +2234;AI # THEREFORE +2235;AI # BECAUSE +2236;AI # RATIO +2237;AI # PROPORTION +2238;AL # DOT MINUS +2239;AL # EXCESS +223A;AL # GEOMETRIC PROPORTION +223B;AL # HOMOTHETIC +223C;AI # TILDE OPERATOR +223D;AI # REVERSED TILDE +223E;AL # INVERTED LAZY S +223F;AL # SINE WAVE +2240;AL # WREATH PRODUCT +2241;AL # NOT TILDE +2242;AL # MINUS TILDE +2243;AL # ASYMPTOTICALLY EQUAL TO +2244;AL # NOT ASYMPTOTICALLY EQUAL TO +2245;AL # APPROXIMATELY EQUAL TO +2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2248;AI # ALMOST EQUAL TO +2249;AL # NOT ALMOST EQUAL TO +224A;AL # ALMOST EQUAL OR EQUAL TO +224B;AL # TRIPLE TILDE +224C;AI # ALL EQUAL TO +224D;AL # EQUIVALENT TO +224E;AL # GEOMETRICALLY EQUIVALENT TO +224F;AL # DIFFERENCE BETWEEN +2250;AL # APPROACHES THE LIMIT +2251;AL # GEOMETRICALLY EQUAL TO +2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF +2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO +2254;AL # COLON EQUALS +2255;AL # EQUALS COLON +2256;AL # RING IN EQUAL TO +2257;AL # RING EQUAL TO +2258;AL # CORRESPONDS TO +2259;AL # ESTIMATES +225A;AL # EQUIANGULAR TO +225B;AL # STAR EQUALS +225C;AL # DELTA EQUAL TO +225D;AL # EQUAL TO BY DEFINITION +225E;AL # MEASURED BY +225F;AL # QUESTIONED EQUAL TO +2260;AI # NOT EQUAL TO +2261;AI # IDENTICAL TO +2262;AL # NOT IDENTICAL TO +2263;AL # STRICTLY EQUIVALENT TO +2264;AI # LESS-THAN OR EQUAL TO +2265;AI # GREATER-THAN OR EQUAL TO +2266;AI # LESS-THAN OVER EQUAL TO +2267;AI # GREATER-THAN OVER EQUAL TO +2268;AL # LESS-THAN BUT NOT EQUAL TO +2269;AL # GREATER-THAN BUT NOT EQUAL TO +226A;AI # MUCH LESS-THAN +226B;AI # MUCH GREATER-THAN +226C;AL # BETWEEN +226D;AL # NOT EQUIVALENT TO +226E;AI # NOT LESS-THAN +226F;AI # NOT GREATER-THAN +2270;AL # NEITHER LESS-THAN NOR EQUAL TO +2271;AL # NEITHER GREATER-THAN NOR EQUAL TO +2272;AL # LESS-THAN OR EQUIVALENT TO +2273;AL # GREATER-THAN OR EQUIVALENT TO +2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO +2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO +2276;AL # LESS-THAN OR GREATER-THAN +2277;AL # GREATER-THAN OR LESS-THAN +2278;AL # NEITHER LESS-THAN NOR GREATER-THAN +2279;AL # NEITHER GREATER-THAN NOR LESS-THAN +227A;AL # PRECEDES +227B;AL # SUCCEEDS +227C;AL # PRECEDES OR EQUAL TO +227D;AL # SUCCEEDS OR EQUAL TO +227E;AL # PRECEDES OR EQUIVALENT TO +227F;AL # SUCCEEDS OR EQUIVALENT TO +2280;AL # DOES NOT PRECEDE +2281;AL # DOES NOT SUCCEED +2282;AI # SUBSET OF +2283;AI # SUPERSET OF +2284;AL # NOT A SUBSET OF +2285;AL # NOT A SUPERSET OF +2286;AI # SUBSET OF OR EQUAL TO +2287;AI # SUPERSET OF OR EQUAL TO +2288;AL # NEITHER A SUBSET OF NOR EQUAL TO +2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO +228A;AL # SUBSET OF WITH NOT EQUAL TO +228B;AL # SUPERSET OF WITH NOT EQUAL TO +228C;AL # MULTISET +228D;AL # MULTISET MULTIPLICATION +228E;AL # MULTISET UNION +228F;AL # SQUARE IMAGE OF +2290;AL # SQUARE ORIGINAL OF +2291;AL # SQUARE IMAGE OF OR EQUAL TO +2292;AL # SQUARE ORIGINAL OF OR EQUAL TO +2293;AL # SQUARE CAP +2294;AL # SQUARE CUP +2295;AI # CIRCLED PLUS +2296;AL # CIRCLED MINUS +2297;AL # CIRCLED TIMES +2298;AL # CIRCLED DIVISION SLASH +2299;AI # CIRCLED DOT OPERATOR +229A;AL # CIRCLED RING OPERATOR +229B;AL # CIRCLED ASTERISK OPERATOR +229C;AL # CIRCLED EQUALS +229D;AL # CIRCLED DASH +229E;AL # SQUARED PLUS +229F;AL # SQUARED MINUS +22A0;AL # SQUARED TIMES +22A1;AL # SQUARED DOT OPERATOR +22A2;AL # RIGHT TACK +22A3;AL # LEFT TACK +22A4;AL # DOWN TACK +22A5;AI # UP TACK +22A6;AL # ASSERTION +22A7;AL # MODELS +22A8;AL # TRUE +22A9;AL # FORCES +22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE +22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22AC;AL # DOES NOT PROVE +22AD;AL # NOT TRUE +22AE;AL # DOES NOT FORCE +22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22B0;AL # PRECEDES UNDER RELATION +22B1;AL # SUCCEEDS UNDER RELATION +22B2;AL # NORMAL SUBGROUP OF +22B3;AL # CONTAINS AS NORMAL SUBGROUP +22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO +22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +22B6;AL # ORIGINAL OF +22B7;AL # IMAGE OF +22B8;AL # MULTIMAP +22B9;AL # HERMITIAN CONJUGATE MATRIX +22BA;AL # INTERCALATE +22BB;AL # XOR +22BC;AL # NAND +22BD;AL # NOR +22BE;AL # RIGHT ANGLE WITH ARC +22BF;AI # RIGHT TRIANGLE +22C0;AL # N-ARY LOGICAL AND +22C1;AL # N-ARY LOGICAL OR +22C2;AL # N-ARY INTERSECTION +22C3;AL # N-ARY UNION +22C4;AL # DIAMOND OPERATOR +22C5;AL # DOT OPERATOR +22C6;AL # STAR OPERATOR +22C7;AL # DIVISION TIMES +22C8;AL # BOWTIE +22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +22CB;AL # LEFT SEMIDIRECT PRODUCT +22CC;AL # RIGHT SEMIDIRECT PRODUCT +22CD;AL # REVERSED TILDE EQUALS +22CE;AL # CURLY LOGICAL OR +22CF;AL # CURLY LOGICAL AND +22D0;AL # DOUBLE SUBSET +22D1;AL # DOUBLE SUPERSET +22D2;AL # DOUBLE INTERSECTION +22D3;AL # DOUBLE UNION +22D4;AL # PITCHFORK +22D5;AL # EQUAL AND PARALLEL TO +22D6;AL # LESS-THAN WITH DOT +22D7;AL # GREATER-THAN WITH DOT +22D8;AL # VERY MUCH LESS-THAN +22D9;AL # VERY MUCH GREATER-THAN +22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN +22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN +22DC;AL # EQUAL TO OR LESS-THAN +22DD;AL # EQUAL TO OR GREATER-THAN +22DE;AL # EQUAL TO OR PRECEDES +22DF;AL # EQUAL TO OR SUCCEEDS +22E0;AL # DOES NOT PRECEDE OR EQUAL +22E1;AL # DOES NOT SUCCEED OR EQUAL +22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO +22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO +22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO +22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO +22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO +22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO +22E8;AL # PRECEDES BUT NOT EQUIVALENT TO +22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO +22EA;AL # NOT NORMAL SUBGROUP OF +22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP +22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO +22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +22EE;AL # VERTICAL ELLIPSIS +22EF;AL # MIDLINE HORIZONTAL ELLIPSIS +22F0;AL # UP RIGHT DIAGONAL ELLIPSIS +22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS +22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F5;AL # ELEMENT OF WITH DOT ABOVE +22F6;AL # ELEMENT OF WITH OVERBAR +22F7;AL # SMALL ELEMENT OF WITH OVERBAR +22F8;AL # ELEMENT OF WITH UNDERBAR +22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES +22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE +22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD;AL # CONTAINS WITH OVERBAR +22FE;AL # SMALL CONTAINS WITH OVERBAR +22FF;AL # Z NOTATION BAG MEMBERSHIP +2300;AL # DIAMETER SIGN +2301;AL # ELECTRIC ARROW +2302;AL # HOUSE +2303;AL # UP ARROWHEAD +2304;AL # DOWN ARROWHEAD +2305;AL # PROJECTIVE +2306;AL # PERSPECTIVE +2307;AL # WAVY LINE +2308;AL # LEFT CEILING +2309;AL # RIGHT CEILING +230A;AL # LEFT FLOOR +230B;AL # RIGHT FLOOR +230C;AL # BOTTOM RIGHT CROP +230D;AL # BOTTOM LEFT CROP +230E;AL # TOP RIGHT CROP +230F;AL # TOP LEFT CROP +2310;AL # REVERSED NOT SIGN +2311;AL # SQUARE LOZENGE +2312;AI # ARC +2313;AL # SEGMENT +2314;AL # SECTOR +2315;AL # TELEPHONE RECORDER +2316;AL # POSITION INDICATOR +2317;AL # VIEWDATA SQUARE +2318;AL # PLACE OF INTEREST SIGN +2319;AL # TURNED NOT SIGN +231A;AL # WATCH +231B;AL # HOURGLASS +231C;AL # TOP LEFT CORNER +231D;AL # TOP RIGHT CORNER +231E;AL # BOTTOM LEFT CORNER +231F;AL # BOTTOM RIGHT CORNER +2320;AL # TOP HALF INTEGRAL +2321;AL # BOTTOM HALF INTEGRAL +2322;AL # FROWN +2323;AL # SMILE +2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS +2325;AL # OPTION KEY +2326;AL # ERASE TO THE RIGHT +2327;AL # X IN A RECTANGLE BOX +2328;AL # KEYBOARD +2329;OP # LEFT-POINTING ANGLE BRACKET +232A;CL # RIGHT-POINTING ANGLE BRACKET +232B;AL # ERASE TO THE LEFT +232C;AL # BENZENE RING +232D;AL # CYLINDRICITY +232E;AL # ALL AROUND-PROFILE +232F;AL # SYMMETRY +2330;AL # TOTAL RUNOUT +2331;AL # DIMENSION ORIGIN +2332;AL # CONICAL TAPER +2333;AL # SLOPE +2334;AL # COUNTERBORE +2335;AL # COUNTERSINK +2336;AL # APL FUNCTIONAL SYMBOL I-BEAM +2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD +2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL +2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE +233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND +233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT +233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE +233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE +233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT +233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR +2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR +2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH +2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH +2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN +2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN +2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE +2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE +2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW +2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW +2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH +234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR +234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE +234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET +234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA +234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT +234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE +2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW +2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR +2352;AL # APL FUNCTIONAL SYMBOL DEL STILE +2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET +2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL +2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT +2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE +2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW +2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR +2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR +235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR +235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR +235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR +235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT +235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD +235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR +2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON +2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS +2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS +2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS +2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS +2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS +2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE +2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE +2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS +2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS +236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR +236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE +236C;AL # APL FUNCTIONAL SYMBOL ZILDE +236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE +236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR +236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL +2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION +2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE +2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE +2373;AL # APL FUNCTIONAL SYMBOL IOTA +2374;AL # APL FUNCTIONAL SYMBOL RHO +2375;AL # APL FUNCTIONAL SYMBOL OMEGA +2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR +2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR +2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR +2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR +237A;AL # APL FUNCTIONAL SYMBOL ALPHA +237B;AL # NOT CHECK MARK +237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW +237D;AL # SHOULDERED OPEN BOX +237E;AL # BELL SYMBOL +237F;AL # VERTICAL LINE WITH MIDDLE DOT +2380;AL # INSERTION SYMBOL +2381;AL # CONTINUOUS UNDERLINE SYMBOL +2382;AL # DISCONTINUOUS UNDERLINE SYMBOL +2383;AL # EMPHASIS SYMBOL +2384;AL # COMPOSITION SYMBOL +2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE +2386;AL # ENTER SYMBOL +2387;AL # ALTERNATIVE KEY SYMBOL +2388;AL # HELM SYMBOL +2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH +238A;AL # CIRCLED TRIANGLE DOWN +238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW +238C;AL # UNDO SYMBOL +238D;AL # MONOSTABLE SYMBOL +238E;AL # HYSTERESIS SYMBOL +238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL +2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL +2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL +2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL +2393;AL # DIRECT CURRENT SYMBOL FORM TWO +2394;AL # SOFTWARE-FUNCTION SYMBOL +2395;AL # APL FUNCTIONAL SYMBOL QUAD +2396;AL # DECIMAL SEPARATOR KEY SYMBOL +2397;AL # PREVIOUS PAGE +2398;AL # NEXT PAGE +2399;AL # PRINT SCREEN SYMBOL +239A;AL # CLEAR SCREEN SYMBOL +239B;AL # LEFT PARENTHESIS UPPER HOOK +239C;AL # LEFT PARENTHESIS EXTENSION +239D;AL # LEFT PARENTHESIS LOWER HOOK +239E;AL # RIGHT PARENTHESIS UPPER HOOK +239F;AL # RIGHT PARENTHESIS EXTENSION +23A0;AL # RIGHT PARENTHESIS LOWER HOOK +23A1;AL # LEFT SQUARE BRACKET UPPER CORNER +23A2;AL # LEFT SQUARE BRACKET EXTENSION +23A3;AL # LEFT SQUARE BRACKET LOWER CORNER +23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER +23A5;AL # RIGHT SQUARE BRACKET EXTENSION +23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER +23A7;AL # LEFT CURLY BRACKET UPPER HOOK +23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE +23A9;AL # LEFT CURLY BRACKET LOWER HOOK +23AA;AL # CURLY BRACKET EXTENSION +23AB;AL # RIGHT CURLY BRACKET UPPER HOOK +23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE +23AD;AL # RIGHT CURLY BRACKET LOWER HOOK +23AE;AL # INTEGRAL EXTENSION +23AF;AL # HORIZONTAL LINE EXTENSION +23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION +23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION +23B2;AL # SUMMATION TOP +23B3;AL # SUMMATION BOTTOM +23B4;OP # TOP SQUARE BRACKET +23B5;CL # BOTTOM SQUARE BRACKET +23B6;QU # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET +23B7;AL # RADICAL SYMBOL BOTTOM +23B8;AL # LEFT VERTICAL BOX LINE +23B9;AL # RIGHT VERTICAL BOX LINE +23BA;AL # HORIZONTAL SCAN LINE-1 +23BB;AL # HORIZONTAL SCAN LINE-3 +23BC;AL # HORIZONTAL SCAN LINE-7 +23BD;AL # HORIZONTAL SCAN LINE-9 +23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT +23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT +23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE +23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE +23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE +23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE +23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE +23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE +23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE +23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE +23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE +23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL +23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL +23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT +23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT +23CD;AL # SQUARE FOOT +23CE;AL # RETURN SYMBOL +2400;AL # SYMBOL FOR NULL +2401;AL # SYMBOL FOR START OF HEADING +2402;AL # SYMBOL FOR START OF TEXT +2403;AL # SYMBOL FOR END OF TEXT +2404;AL # SYMBOL FOR END OF TRANSMISSION +2405;AL # SYMBOL FOR ENQUIRY +2406;AL # SYMBOL FOR ACKNOWLEDGE +2407;AL # SYMBOL FOR BELL +2408;AL # SYMBOL FOR BACKSPACE +2409;AL # SYMBOL FOR HORIZONTAL TABULATION +240A;AL # SYMBOL FOR LINE FEED +240B;AL # SYMBOL FOR VERTICAL TABULATION +240C;AL # SYMBOL FOR FORM FEED +240D;AL # SYMBOL FOR CARRIAGE RETURN +240E;AL # SYMBOL FOR SHIFT OUT +240F;AL # SYMBOL FOR SHIFT IN +2410;AL # SYMBOL FOR DATA LINK ESCAPE +2411;AL # SYMBOL FOR DEVICE CONTROL ONE +2412;AL # SYMBOL FOR DEVICE CONTROL TWO +2413;AL # SYMBOL FOR DEVICE CONTROL THREE +2414;AL # SYMBOL FOR DEVICE CONTROL FOUR +2415;AL # SYMBOL FOR NEGATIVE ACKNOWLEDGE +2416;AL # SYMBOL FOR SYNCHRONOUS IDLE +2417;AL # SYMBOL FOR END OF TRANSMISSION BLOCK +2418;AL # SYMBOL FOR CANCEL +2419;AL # SYMBOL FOR END OF MEDIUM +241A;AL # SYMBOL FOR SUBSTITUTE +241B;AL # SYMBOL FOR ESCAPE +241C;AL # SYMBOL FOR FILE SEPARATOR +241D;AL # SYMBOL FOR GROUP SEPARATOR +241E;AL # SYMBOL FOR RECORD SEPARATOR +241F;AL # SYMBOL FOR UNIT SEPARATOR +2420;AL # SYMBOL FOR SPACE +2421;AL # SYMBOL FOR DELETE +2422;AL # BLANK SYMBOL +2423;AL # OPEN BOX +2424;AL # SYMBOL FOR NEWLINE +2425;AL # SYMBOL FOR DELETE FORM TWO +2426;AL # SYMBOL FOR SUBSTITUTE FORM TWO +2440;AL # OCR HOOK +2441;AL # OCR CHAIR +2442;AL # OCR FORK +2443;AL # OCR INVERTED FORK +2444;AL # OCR BELT BUCKLE +2445;AL # OCR BOW TIE +2446;AL # OCR BRANCH BANK IDENTIFICATION +2447;AL # OCR AMOUNT OF CHECK +2448;AL # OCR DASH +2449;AL # OCR CUSTOMER ACCOUNT NUMBER +244A;AL # OCR DOUBLE BACKSLASH +2460;AI # CIRCLED DIGIT ONE +2461;AI # CIRCLED DIGIT TWO +2462;AI # CIRCLED DIGIT THREE +2463;AI # CIRCLED DIGIT FOUR +2464;AI # CIRCLED DIGIT FIVE +2465;AI # CIRCLED DIGIT SIX +2466;AI # CIRCLED DIGIT SEVEN +2467;AI # CIRCLED DIGIT EIGHT +2468;AI # CIRCLED DIGIT NINE +2469;AI # CIRCLED NUMBER TEN +246A;AI # CIRCLED NUMBER ELEVEN +246B;AI # CIRCLED NUMBER TWELVE +246C;AI # CIRCLED NUMBER THIRTEEN +246D;AI # CIRCLED NUMBER FOURTEEN +246E;AI # CIRCLED NUMBER FIFTEEN +246F;AI # CIRCLED NUMBER SIXTEEN +2470;AI # CIRCLED NUMBER SEVENTEEN +2471;AI # CIRCLED NUMBER EIGHTEEN +2472;AI # CIRCLED NUMBER NINETEEN +2473;AI # CIRCLED NUMBER TWENTY +2474;AI # PARENTHESIZED DIGIT ONE +2475;AI # PARENTHESIZED DIGIT TWO +2476;AI # PARENTHESIZED DIGIT THREE +2477;AI # PARENTHESIZED DIGIT FOUR +2478;AI # PARENTHESIZED DIGIT FIVE +2479;AI # PARENTHESIZED DIGIT SIX +247A;AI # PARENTHESIZED DIGIT SEVEN +247B;AI # PARENTHESIZED DIGIT EIGHT +247C;AI # PARENTHESIZED DIGIT NINE +247D;AI # PARENTHESIZED NUMBER TEN +247E;AI # PARENTHESIZED NUMBER ELEVEN +247F;AI # PARENTHESIZED NUMBER TWELVE +2480;AI # PARENTHESIZED NUMBER THIRTEEN +2481;AI # PARENTHESIZED NUMBER FOURTEEN +2482;AI # PARENTHESIZED NUMBER FIFTEEN +2483;AI # PARENTHESIZED NUMBER SIXTEEN +2484;AI # PARENTHESIZED NUMBER SEVENTEEN +2485;AI # PARENTHESIZED NUMBER EIGHTEEN +2486;AI # PARENTHESIZED NUMBER NINETEEN +2487;AI # PARENTHESIZED NUMBER TWENTY +2488;AI # DIGIT ONE FULL STOP +2489;AI # DIGIT TWO FULL STOP +248A;AI # DIGIT THREE FULL STOP +248B;AI # DIGIT FOUR FULL STOP +248C;AI # DIGIT FIVE FULL STOP +248D;AI # DIGIT SIX FULL STOP +248E;AI # DIGIT SEVEN FULL STOP +248F;AI # DIGIT EIGHT FULL STOP +2490;AI # DIGIT NINE FULL STOP +2491;AI # NUMBER TEN FULL STOP +2492;AI # NUMBER ELEVEN FULL STOP +2493;AI # NUMBER TWELVE FULL STOP +2494;AI # NUMBER THIRTEEN FULL STOP +2495;AI # NUMBER FOURTEEN FULL STOP +2496;AI # NUMBER FIFTEEN FULL STOP +2497;AI # NUMBER SIXTEEN FULL STOP +2498;AI # NUMBER SEVENTEEN FULL STOP +2499;AI # NUMBER EIGHTEEN FULL STOP +249A;AI # NUMBER NINETEEN FULL STOP +249B;AI # NUMBER TWENTY FULL STOP +249C;AI # PARENTHESIZED LATIN SMALL LETTER A +249D;AI # PARENTHESIZED LATIN SMALL LETTER B +249E;AI # PARENTHESIZED LATIN SMALL LETTER C +249F;AI # PARENTHESIZED LATIN SMALL LETTER D +24A0;AI # PARENTHESIZED LATIN SMALL LETTER E +24A1;AI # PARENTHESIZED LATIN SMALL LETTER F +24A2;AI # PARENTHESIZED LATIN SMALL LETTER G +24A3;AI # PARENTHESIZED LATIN SMALL LETTER H +24A4;AI # PARENTHESIZED LATIN SMALL LETTER I +24A5;AI # PARENTHESIZED LATIN SMALL LETTER J +24A6;AI # PARENTHESIZED LATIN SMALL LETTER K +24A7;AI # PARENTHESIZED LATIN SMALL LETTER L +24A8;AI # PARENTHESIZED LATIN SMALL LETTER M +24A9;AI # PARENTHESIZED LATIN SMALL LETTER N +24AA;AI # PARENTHESIZED LATIN SMALL LETTER O +24AB;AI # PARENTHESIZED LATIN SMALL LETTER P +24AC;AI # PARENTHESIZED LATIN SMALL LETTER Q +24AD;AI # PARENTHESIZED LATIN SMALL LETTER R +24AE;AI # PARENTHESIZED LATIN SMALL LETTER S +24AF;AI # PARENTHESIZED LATIN SMALL LETTER T +24B0;AI # PARENTHESIZED LATIN SMALL LETTER U +24B1;AI # PARENTHESIZED LATIN SMALL LETTER V +24B2;AI # PARENTHESIZED LATIN SMALL LETTER W +24B3;AI # PARENTHESIZED LATIN SMALL LETTER X +24B4;AI # PARENTHESIZED LATIN SMALL LETTER Y +24B5;AI # PARENTHESIZED LATIN SMALL LETTER Z +24B6;AI # CIRCLED LATIN CAPITAL LETTER A +24B7;AI # CIRCLED LATIN CAPITAL LETTER B +24B8;AI # CIRCLED LATIN CAPITAL LETTER C +24B9;AI # CIRCLED LATIN CAPITAL LETTER D +24BA;AI # CIRCLED LATIN CAPITAL LETTER E +24BB;AI # CIRCLED LATIN CAPITAL LETTER F +24BC;AI # CIRCLED LATIN CAPITAL LETTER G +24BD;AI # CIRCLED LATIN CAPITAL LETTER H +24BE;AI # CIRCLED LATIN CAPITAL LETTER I +24BF;AI # CIRCLED LATIN CAPITAL LETTER J +24C0;AL # CIRCLED LATIN CAPITAL LETTER K +24C1;AL # CIRCLED LATIN CAPITAL LETTER L +24C2;AL # CIRCLED LATIN CAPITAL LETTER M +24C3;AL # CIRCLED LATIN CAPITAL LETTER N +24C4;AL # CIRCLED LATIN CAPITAL LETTER O +24C5;AL # CIRCLED LATIN CAPITAL LETTER P +24C6;AL # CIRCLED LATIN CAPITAL LETTER Q +24C7;AL # CIRCLED LATIN CAPITAL LETTER R +24C8;AL # CIRCLED LATIN CAPITAL LETTER S +24C9;AL # CIRCLED LATIN CAPITAL LETTER T +24CA;AL # CIRCLED LATIN CAPITAL LETTER U +24CB;AL # CIRCLED LATIN CAPITAL LETTER V +24CC;AL # CIRCLED LATIN CAPITAL LETTER W +24CD;AL # CIRCLED LATIN CAPITAL LETTER X +24CE;AL # CIRCLED LATIN CAPITAL LETTER Y +24CF;AL # CIRCLED LATIN CAPITAL LETTER Z +24D0;AI # CIRCLED LATIN SMALL LETTER A +24D1;AI # CIRCLED LATIN SMALL LETTER B +24D2;AI # CIRCLED LATIN SMALL LETTER C +24D3;AI # CIRCLED LATIN SMALL LETTER D +24D4;AI # CIRCLED LATIN SMALL LETTER E +24D5;AI # CIRCLED LATIN SMALL LETTER F +24D6;AI # CIRCLED LATIN SMALL LETTER G +24D7;AI # CIRCLED LATIN SMALL LETTER H +24D8;AI # CIRCLED LATIN SMALL LETTER I +24D9;AI # CIRCLED LATIN SMALL LETTER J +24DA;AI # CIRCLED LATIN SMALL LETTER K +24DB;AI # CIRCLED LATIN SMALL LETTER L +24DC;AI # CIRCLED LATIN SMALL LETTER M +24DD;AI # CIRCLED LATIN SMALL LETTER N +24DE;AI # CIRCLED LATIN SMALL LETTER O +24DF;AI # CIRCLED LATIN SMALL LETTER P +24E0;AI # CIRCLED LATIN SMALL LETTER Q +24E1;AI # CIRCLED LATIN SMALL LETTER R +24E2;AI # CIRCLED LATIN SMALL LETTER S +24E3;AI # CIRCLED LATIN SMALL LETTER T +24E4;AI # CIRCLED LATIN SMALL LETTER U +24E5;AI # CIRCLED LATIN SMALL LETTER V +24E6;AI # CIRCLED LATIN SMALL LETTER W +24E7;AI # CIRCLED LATIN SMALL LETTER X +24E8;AI # CIRCLED LATIN SMALL LETTER Y +24E9;AI # CIRCLED LATIN SMALL LETTER Z +24EA;AL # CIRCLED DIGIT ZERO +24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN +24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE +24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN +24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN +24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN +24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN +24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN +24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN +24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN +24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY +24F5;AI # DOUBLE CIRCLED DIGIT ONE +24F6;AI # DOUBLE CIRCLED DIGIT TWO +24F7;AI # DOUBLE CIRCLED DIGIT THREE +24F8;AI # DOUBLE CIRCLED DIGIT FOUR +24F9;AI # DOUBLE CIRCLED DIGIT FIVE +24FA;AI # DOUBLE CIRCLED DIGIT SIX +24FB;AI # DOUBLE CIRCLED DIGIT SEVEN +24FC;AI # DOUBLE CIRCLED DIGIT EIGHT +24FD;AI # DOUBLE CIRCLED DIGIT NINE +24FE;AI # DOUBLE CIRCLED NUMBER TEN +2500;AI # BOX DRAWINGS LIGHT HORIZONTAL +2501;AI # BOX DRAWINGS HEAVY HORIZONTAL +2502;AI # BOX DRAWINGS LIGHT VERTICAL +2503;AI # BOX DRAWINGS HEAVY VERTICAL +2504;AI # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL +2505;AI # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL +2506;AI # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL +2507;AI # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL +2508;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL +2509;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL +250A;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL +250B;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL +250C;AI # BOX DRAWINGS LIGHT DOWN AND RIGHT +250D;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY +250E;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT +250F;AI # BOX DRAWINGS HEAVY DOWN AND RIGHT +2510;AI # BOX DRAWINGS LIGHT DOWN AND LEFT +2511;AI # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY +2512;AI # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT +2513;AI # BOX DRAWINGS HEAVY DOWN AND LEFT +2514;AI # BOX DRAWINGS LIGHT UP AND RIGHT +2515;AI # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY +2516;AI # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT +2517;AI # BOX DRAWINGS HEAVY UP AND RIGHT +2518;AI # BOX DRAWINGS LIGHT UP AND LEFT +2519;AI # BOX DRAWINGS UP LIGHT AND LEFT HEAVY +251A;AI # BOX DRAWINGS UP HEAVY AND LEFT LIGHT +251B;AI # BOX DRAWINGS HEAVY UP AND LEFT +251C;AI # BOX DRAWINGS LIGHT VERTICAL AND RIGHT +251D;AI # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY +251E;AI # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT +251F;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT +2520;AI # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT +2521;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY +2522;AI # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY +2523;AI # BOX DRAWINGS HEAVY VERTICAL AND RIGHT +2524;AI # BOX DRAWINGS LIGHT VERTICAL AND LEFT +2525;AI # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY +2526;AI # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT +2527;AI # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT +2528;AI # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT +2529;AI # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY +252A;AI # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY +252B;AI # BOX DRAWINGS HEAVY VERTICAL AND LEFT +252C;AI # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +252D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT +252E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT +252F;AI # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY +2530;AI # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT +2531;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY +2532;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY +2533;AI # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL +2534;AI # BOX DRAWINGS LIGHT UP AND HORIZONTAL +2535;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT +2536;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT +2537;AI # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY +2538;AI # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT +2539;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY +253A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY +253B;AI # BOX DRAWINGS HEAVY UP AND HORIZONTAL +253C;AI # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +253D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT +253E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT +253F;AI # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY +2540;AI # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT +2541;AI # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT +2542;AI # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT +2543;AI # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT +2544;AI # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT +2545;AI # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT +2546;AI # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT +2547;AI # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY +2548;AI # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY +2549;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY +254A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY +254B;AI # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL +254C;AL # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL +254D;AL # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL +254E;AL # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL +254F;AL # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL +2550;AI # BOX DRAWINGS DOUBLE HORIZONTAL +2551;AI # BOX DRAWINGS DOUBLE VERTICAL +2552;AI # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +2553;AI # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +2554;AI # BOX DRAWINGS DOUBLE DOWN AND RIGHT +2555;AI # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +2556;AI # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +2557;AI # BOX DRAWINGS DOUBLE DOWN AND LEFT +2558;AI # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +2559;AI # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +255A;AI # BOX DRAWINGS DOUBLE UP AND RIGHT +255B;AI # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +255C;AI # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +255D;AI # BOX DRAWINGS DOUBLE UP AND LEFT +255E;AI # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +255F;AI # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +2560;AI # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +2561;AI # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +2562;AI # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +2563;AI # BOX DRAWINGS DOUBLE VERTICAL AND LEFT +2564;AI # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +2565;AI # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +2566;AI # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +2567;AI # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +2568;AI # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +2569;AI # BOX DRAWINGS DOUBLE UP AND HORIZONTAL +256A;AI # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +256B;AI # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +256C;AI # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +256D;AI # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT +256E;AI # BOX DRAWINGS LIGHT ARC DOWN AND LEFT +256F;AI # BOX DRAWINGS LIGHT ARC UP AND LEFT +2570;AI # BOX DRAWINGS LIGHT ARC UP AND RIGHT +2571;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT +2572;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT +2573;AI # BOX DRAWINGS LIGHT DIAGONAL CROSS +2574;AI # BOX DRAWINGS LIGHT LEFT +2575;AL # BOX DRAWINGS LIGHT UP +2576;AL # BOX DRAWINGS LIGHT RIGHT +2577;AL # BOX DRAWINGS LIGHT DOWN +2578;AL # BOX DRAWINGS HEAVY LEFT +2579;AL # BOX DRAWINGS HEAVY UP +257A;AL # BOX DRAWINGS HEAVY RIGHT +257B;AL # BOX DRAWINGS HEAVY DOWN +257C;AL # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT +257D;AL # BOX DRAWINGS LIGHT UP AND HEAVY DOWN +257E;AL # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT +257F;AL # BOX DRAWINGS HEAVY UP AND LIGHT DOWN +2580;AI # UPPER HALF BLOCK +2581;AI # LOWER ONE EIGHTH BLOCK +2582;AI # LOWER ONE QUARTER BLOCK +2583;AI # LOWER THREE EIGHTHS BLOCK +2584;AI # LOWER HALF BLOCK +2585;AI # LOWER FIVE EIGHTHS BLOCK +2586;AI # LOWER THREE QUARTERS BLOCK +2587;AI # LOWER SEVEN EIGHTHS BLOCK +2588;AI # FULL BLOCK +2589;AI # LEFT SEVEN EIGHTHS BLOCK +258A;AI # LEFT THREE QUARTERS BLOCK +258B;AI # LEFT FIVE EIGHTHS BLOCK +258C;AI # LEFT HALF BLOCK +258D;AI # LEFT THREE EIGHTHS BLOCK +258E;AI # LEFT ONE QUARTER BLOCK +258F;AI # LEFT ONE EIGHTH BLOCK +2590;AL # RIGHT HALF BLOCK +2591;AL # LIGHT SHADE +2592;AI # MEDIUM SHADE +2593;AI # DARK SHADE +2594;AI # UPPER ONE EIGHTH BLOCK +2595;AI # RIGHT ONE EIGHTH BLOCK +2596;AL # QUADRANT LOWER LEFT +2597;AL # QUADRANT LOWER RIGHT +2598;AL # QUADRANT UPPER LEFT +2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT +259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT +259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT +259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT +259D;AL # QUADRANT UPPER RIGHT +259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT +259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT +25A0;AI # BLACK SQUARE +25A1;AI # WHITE SQUARE +25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS +25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE +25A4;AI # SQUARE WITH HORIZONTAL FILL +25A5;AI # SQUARE WITH VERTICAL FILL +25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL +25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL +25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL +25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL +25AA;AL # BLACK SMALL SQUARE +25AB;AL # WHITE SMALL SQUARE +25AC;AL # BLACK RECTANGLE +25AD;AL # WHITE RECTANGLE +25AE;AL # BLACK VERTICAL RECTANGLE +25AF;AL # WHITE VERTICAL RECTANGLE +25B0;AL # BLACK PARALLELOGRAM +25B1;AL # WHITE PARALLELOGRAM +25B2;AI # BLACK UP-POINTING TRIANGLE +25B3;AI # WHITE UP-POINTING TRIANGLE +25B4;AL # BLACK UP-POINTING SMALL TRIANGLE +25B5;AL # WHITE UP-POINTING SMALL TRIANGLE +25B6;AI # BLACK RIGHT-POINTING TRIANGLE +25B7;AI # WHITE RIGHT-POINTING TRIANGLE +25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE +25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE +25BA;AL # BLACK RIGHT-POINTING POINTER +25BB;AL # WHITE RIGHT-POINTING POINTER +25BC;AI # BLACK DOWN-POINTING TRIANGLE +25BD;AI # WHITE DOWN-POINTING TRIANGLE +25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE +25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE +25C0;AI # BLACK LEFT-POINTING TRIANGLE +25C1;AI # WHITE LEFT-POINTING TRIANGLE +25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE +25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE +25C4;AL # BLACK LEFT-POINTING POINTER +25C5;AL # WHITE LEFT-POINTING POINTER +25C6;AI # BLACK DIAMOND +25C7;AI # WHITE DIAMOND +25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND +25C9;AL # FISHEYE +25CA;AL # LOZENGE +25CB;AI # WHITE CIRCLE +25CC;AL # DOTTED CIRCLE +25CD;AL # CIRCLE WITH VERTICAL FILL +25CE;AI # BULLSEYE +25CF;AI # BLACK CIRCLE +25D0;AI # CIRCLE WITH LEFT HALF BLACK +25D1;AI # CIRCLE WITH RIGHT HALF BLACK +25D2;AL # CIRCLE WITH LOWER HALF BLACK +25D3;AL # CIRCLE WITH UPPER HALF BLACK +25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK +25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK +25D6;AL # LEFT HALF BLACK CIRCLE +25D7;AL # RIGHT HALF BLACK CIRCLE +25D8;AL # INVERSE BULLET +25D9;AL # INVERSE WHITE CIRCLE +25DA;AL # UPPER HALF INVERSE WHITE CIRCLE +25DB;AL # LOWER HALF INVERSE WHITE CIRCLE +25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC +25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC +25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC +25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC +25E0;AL # UPPER HALF CIRCLE +25E1;AL # LOWER HALF CIRCLE +25E2;AI # BLACK LOWER RIGHT TRIANGLE +25E3;AI # BLACK LOWER LEFT TRIANGLE +25E4;AI # BLACK UPPER LEFT TRIANGLE +25E5;AI # BLACK UPPER RIGHT TRIANGLE +25E6;AL # WHITE BULLET +25E7;AL # SQUARE WITH LEFT HALF BLACK +25E8;AL # SQUARE WITH RIGHT HALF BLACK +25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK +25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK +25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE +25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT +25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK +25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK +25EF;AI # LARGE CIRCLE +25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT +25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT +25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT +25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT +25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT +25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT +25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT +25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT +25F8;AL # UPPER LEFT TRIANGLE +25F9;AL # UPPER RIGHT TRIANGLE +25FA;AL # LOWER LEFT TRIANGLE +25FB;AL # WHITE MEDIUM SQUARE +25FC;AL # BLACK MEDIUM SQUARE +25FD;AL # WHITE MEDIUM SMALL SQUARE +25FE;AL # BLACK MEDIUM SMALL SQUARE +25FF;AL # LOWER RIGHT TRIANGLE +2600;AL # BLACK SUN WITH RAYS +2601;AL # CLOUD +2602;AL # UMBRELLA +2603;AL # SNOWMAN +2604;AL # COMET +2605;AI # BLACK STAR +2606;AI # WHITE STAR +2607;AL # LIGHTNING +2608;AL # THUNDERSTORM +2609;AI # SUN +260A;AL # ASCENDING NODE +260B;AL # DESCENDING NODE +260C;AL # CONJUNCTION +260D;AL # OPPOSITION +260E;AI # BLACK TELEPHONE +260F;AI # WHITE TELEPHONE +2610;AL # BALLOT BOX +2611;AL # BALLOT BOX WITH CHECK +2612;AL # BALLOT BOX WITH X +2613;AL # SALTIRE +2616;AI # WHITE SHOGI PIECE +2617;AI # BLACK SHOGI PIECE +2619;AL # REVERSED ROTATED FLORAL HEART BULLET +261A;AL # BLACK LEFT POINTING INDEX +261B;AL # BLACK RIGHT POINTING INDEX +261C;AI # WHITE LEFT POINTING INDEX +261D;AL # WHITE UP POINTING INDEX +261E;AI # WHITE RIGHT POINTING INDEX +261F;AL # WHITE DOWN POINTING INDEX +2620;AL # SKULL AND CROSSBONES +2621;AL # CAUTION SIGN +2622;AL # RADIOACTIVE SIGN +2623;AL # BIOHAZARD SIGN +2624;AL # CADUCEUS +2625;AL # ANKH +2626;AL # ORTHODOX CROSS +2627;AL # CHI RHO +2628;AL # CROSS OF LORRAINE +2629;AL # CROSS OF JERUSALEM +262A;AL # STAR AND CRESCENT +262B;AL # FARSI SYMBOL +262C;AL # ADI SHAKTI +262D;AL # HAMMER AND SICKLE +262E;AL # PEACE SYMBOL +262F;AL # YIN YANG +2630;AL # TRIGRAM FOR HEAVEN +2631;AL # TRIGRAM FOR LAKE +2632;AL # TRIGRAM FOR FIRE +2633;AL # TRIGRAM FOR THUNDER +2634;AL # TRIGRAM FOR WIND +2635;AL # TRIGRAM FOR WATER +2636;AL # TRIGRAM FOR MOUNTAIN +2637;AL # TRIGRAM FOR EARTH +2638;AL # WHEEL OF DHARMA +2639;AL # WHITE FROWNING FACE +263A;AL # WHITE SMILING FACE +263B;AL # BLACK SMILING FACE +263C;AL # WHITE SUN WITH RAYS +263D;AL # FIRST QUARTER MOON +263E;AL # LAST QUARTER MOON +263F;AL # MERCURY +2640;AI # FEMALE SIGN +2641;AL # EARTH +2642;AI # MALE SIGN +2643;AL # JUPITER +2644;AL # SATURN +2645;AL # URANUS +2646;AL # NEPTUNE +2647;AL # PLUTO +2648;AL # ARIES +2649;AL # TAURUS +264A;AL # GEMINI +264B;AL # CANCER +264C;AL # LEO +264D;AL # VIRGO +264E;AL # LIBRA +264F;AL # SCORPIUS +2650;AL # SAGITTARIUS +2651;AL # CAPRICORN +2652;AL # AQUARIUS +2653;AL # PISCES +2654;AL # WHITE CHESS KING +2655;AL # WHITE CHESS QUEEN +2656;AL # WHITE CHESS ROOK +2657;AL # WHITE CHESS BISHOP +2658;AL # WHITE CHESS KNIGHT +2659;AL # WHITE CHESS PAWN +265A;AL # BLACK CHESS KING +265B;AL # BLACK CHESS QUEEN +265C;AL # BLACK CHESS ROOK +265D;AL # BLACK CHESS BISHOP +265E;AL # BLACK CHESS KNIGHT +265F;AL # BLACK CHESS PAWN +2660;AI # BLACK SPADE SUIT +2661;AI # WHITE HEART SUIT +2662;AL # WHITE DIAMOND SUIT +2663;AI # BLACK CLUB SUIT +2664;AI # WHITE SPADE SUIT +2665;AI # BLACK HEART SUIT +2666;AL # BLACK DIAMOND SUIT +2667;AI # WHITE CLUB SUIT +2668;AI # HOT SPRINGS +2669;AI # QUARTER NOTE +266A;AI # EIGHTH NOTE +266B;AL # BEAMED EIGHTH NOTES +266C;AI # BEAMED SIXTEENTH NOTES +266D;AI # MUSIC FLAT SIGN +266E;AL # MUSIC NATURAL SIGN +266F;AI # MUSIC SHARP SIGN +2670;AL # WEST SYRIAC CROSS +2671;AL # EAST SYRIAC CROSS +2672;AL # UNIVERSAL RECYCLING SYMBOL +2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS +2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS +2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS +2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS +2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS +2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS +2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS +267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS +267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL +267C;AL # RECYCLED PAPER SYMBOL +267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL +2680;AL # DIE FACE-1 +2681;AL # DIE FACE-2 +2682;AL # DIE FACE-3 +2683;AL # DIE FACE-4 +2684;AL # DIE FACE-5 +2685;AL # DIE FACE-6 +2686;AL # WHITE CIRCLE WITH DOT RIGHT +2687;AL # WHITE CIRCLE WITH TWO DOTS +2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT +2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS +2701;AL # UPPER BLADE SCISSORS +2702;AL # BLACK SCISSORS +2703;AL # LOWER BLADE SCISSORS +2704;AL # WHITE SCISSORS +2706;AL # TELEPHONE LOCATION SIGN +2707;AL # TAPE DRIVE +2708;AL # AIRPLANE +2709;AL # ENVELOPE +270C;AL # VICTORY HAND +270D;AL # WRITING HAND +270E;AL # LOWER RIGHT PENCIL +270F;AL # PENCIL +2710;AL # UPPER RIGHT PENCIL +2711;AL # WHITE NIB +2712;AL # BLACK NIB +2713;AL # CHECK MARK +2714;AL # HEAVY CHECK MARK +2715;AL # MULTIPLICATION X +2716;AL # HEAVY MULTIPLICATION X +2717;AL # BALLOT X +2718;AL # HEAVY BALLOT X +2719;AL # OUTLINED GREEK CROSS +271A;AL # HEAVY GREEK CROSS +271B;AL # OPEN CENTRE CROSS +271C;AL # HEAVY OPEN CENTRE CROSS +271D;AL # LATIN CROSS +271E;AL # SHADOWED WHITE LATIN CROSS +271F;AL # OUTLINED LATIN CROSS +2720;AL # MALTESE CROSS +2721;AL # STAR OF DAVID +2722;AL # FOUR TEARDROP-SPOKED ASTERISK +2723;AL # FOUR BALLOON-SPOKED ASTERISK +2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK +2725;AL # FOUR CLUB-SPOKED ASTERISK +2726;AL # BLACK FOUR POINTED STAR +2727;AL # WHITE FOUR POINTED STAR +2729;AL # STRESS OUTLINED WHITE STAR +272A;AL # CIRCLED WHITE STAR +272B;AL # OPEN CENTRE BLACK STAR +272C;AL # BLACK CENTRE WHITE STAR +272D;AL # OUTLINED BLACK STAR +272E;AL # HEAVY OUTLINED BLACK STAR +272F;AL # PINWHEEL STAR +2730;AL # SHADOWED WHITE STAR +2731;AL # HEAVY ASTERISK +2732;AL # OPEN CENTRE ASTERISK +2733;AL # EIGHT SPOKED ASTERISK +2734;AL # EIGHT POINTED BLACK STAR +2735;AL # EIGHT POINTED PINWHEEL STAR +2736;AL # SIX POINTED BLACK STAR +2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR +2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR +2739;AL # TWELVE POINTED BLACK STAR +273A;AL # SIXTEEN POINTED ASTERISK +273B;AL # TEARDROP-SPOKED ASTERISK +273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK +273D;AL # HEAVY TEARDROP-SPOKED ASTERISK +273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE +273F;AL # BLACK FLORETTE +2740;AL # WHITE FLORETTE +2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE +2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR +2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK +2744;AL # SNOWFLAKE +2745;AL # TIGHT TRIFOLIATE SNOWFLAKE +2746;AL # HEAVY CHEVRON SNOWFLAKE +2747;AL # SPARKLE +2748;AL # HEAVY SPARKLE +2749;AL # BALLOON-SPOKED ASTERISK +274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK +274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK +274D;AL # SHADOWED WHITE CIRCLE +274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE +2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE +2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE +2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE +2756;AL # BLACK DIAMOND MINUS WHITE X +2758;AL # LIGHT VERTICAL BAR +2759;AL # MEDIUM VERTICAL BAR +275A;AL # HEAVY VERTICAL BAR +275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT +275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT +275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT +275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT +2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT +2762;EX # HEAVY EXCLAMATION MARK ORNAMENT +2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT +2764;AL # HEAVY BLACK HEART +2765;AL # ROTATED HEAVY BLACK HEART BULLET +2766;AL # FLORAL HEART +2767;AL # ROTATED FLORAL HEART BULLET +2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT +2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT +2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT +2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT +2776;AL # DINGBAT NEGATIVE CIRCLED DIGIT ONE +2777;AL # DINGBAT NEGATIVE CIRCLED DIGIT TWO +2778;AL # DINGBAT NEGATIVE CIRCLED DIGIT THREE +2779;AL # DINGBAT NEGATIVE CIRCLED DIGIT FOUR +277A;AL # DINGBAT NEGATIVE CIRCLED DIGIT FIVE +277B;AL # DINGBAT NEGATIVE CIRCLED DIGIT SIX +277C;AL # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN +277D;AL # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT +277E;AL # DINGBAT NEGATIVE CIRCLED DIGIT NINE +277F;AL # DINGBAT NEGATIVE CIRCLED NUMBER TEN +2780;AL # DINGBAT CIRCLED SANS-SERIF DIGIT ONE +2781;AL # DINGBAT CIRCLED SANS-SERIF DIGIT TWO +2782;AL # DINGBAT CIRCLED SANS-SERIF DIGIT THREE +2783;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR +2784;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE +2785;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SIX +2786;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN +2787;AL # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT +2788;AL # DINGBAT CIRCLED SANS-SERIF DIGIT NINE +2789;AL # DINGBAT CIRCLED SANS-SERIF NUMBER TEN +278A;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE +278B;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO +278C;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE +278D;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR +278E;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE +278F;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX +2790;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN +2791;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT +2792;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE +2793;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN +2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW +2798;AL # HEAVY SOUTH EAST ARROW +2799;AL # HEAVY RIGHTWARDS ARROW +279A;AL # HEAVY NORTH EAST ARROW +279B;AL # DRAFTING POINT RIGHTWARDS ARROW +279C;AL # HEAVY ROUND-TIPPED RIGHTWARDS ARROW +279D;AL # TRIANGLE-HEADED RIGHTWARDS ARROW +279E;AL # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW +279F;AL # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW +27A0;AL # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW +27A1;AL # BLACK RIGHTWARDS ARROW +27A2;AL # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD +27A3;AL # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD +27A4;AL # BLACK RIGHTWARDS ARROWHEAD +27A5;AL # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW +27A6;AL # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW +27A7;AL # SQUAT BLACK RIGHTWARDS ARROW +27A8;AL # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW +27A9;AL # RIGHT-SHADED WHITE RIGHTWARDS ARROW +27AA;AL # LEFT-SHADED WHITE RIGHTWARDS ARROW +27AB;AL # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW +27AC;AL # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW +27AD;AL # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27AE;AL # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27AF;AL # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27B1;AL # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27B2;AL # CIRCLED HEAVY WHITE RIGHTWARDS ARROW +27B3;AL # WHITE-FEATHERED RIGHTWARDS ARROW +27B4;AL # BLACK-FEATHERED SOUTH EAST ARROW +27B5;AL # BLACK-FEATHERED RIGHTWARDS ARROW +27B6;AL # BLACK-FEATHERED NORTH EAST ARROW +27B7;AL # HEAVY BLACK-FEATHERED SOUTH EAST ARROW +27B8;AL # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW +27B9;AL # HEAVY BLACK-FEATHERED NORTH EAST ARROW +27BA;AL # TEARDROP-BARBED RIGHTWARDS ARROW +27BB;AL # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW +27BC;AL # WEDGE-TAILED RIGHTWARDS ARROW +27BD;AL # HEAVY WEDGE-TAILED RIGHTWARDS ARROW +27BE;AL # OPEN-OUTLINED RIGHTWARDS ARROW +27D0;AL # WHITE DIAMOND WITH CENTRED DOT +27D1;AL # AND WITH DOT +27D2;AL # ELEMENT OF OPENING UPWARDS +27D3;AL # LOWER RIGHT CORNER WITH DOT +27D4;AL # UPPER LEFT CORNER WITH DOT +27D5;AL # LEFT OUTER JOIN +27D6;AL # RIGHT OUTER JOIN +27D7;AL # FULL OUTER JOIN +27D8;AL # LARGE UP TACK +27D9;AL # LARGE DOWN TACK +27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE +27DB;AL # LEFT AND RIGHT TACK +27DC;AL # LEFT MULTIMAP +27DD;AL # LONG RIGHT TACK +27DE;AL # LONG LEFT TACK +27DF;AL # UP TACK WITH CIRCLE ABOVE +27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE +27E1;AL # WHITE CONCAVE-SIDED DIAMOND +27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK +27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK +27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET +27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET +27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +27F0;AL # UPWARDS QUADRUPLE ARROW +27F1;AL # DOWNWARDS QUADRUPLE ARROW +27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW +27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW +27F4;AL # RIGHT ARROW WITH CIRCLED PLUS +27F5;AL # LONG LEFTWARDS ARROW +27F6;AL # LONG RIGHTWARDS ARROW +27F7;AL # LONG LEFT RIGHT ARROW +27F8;AL # LONG LEFTWARDS DOUBLE ARROW +27F9;AL # LONG RIGHTWARDS DOUBLE ARROW +27FA;AL # LONG LEFT RIGHT DOUBLE ARROW +27FB;AL # LONG LEFTWARDS ARROW FROM BAR +27FC;AL # LONG RIGHTWARDS ARROW FROM BAR +27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR +27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR +27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW +2800;AL # BRAILLE PATTERN BLANK +2801;AL # BRAILLE PATTERN DOTS-1 +2802;AL # BRAILLE PATTERN DOTS-2 +2803;AL # BRAILLE PATTERN DOTS-12 +2804;AL # BRAILLE PATTERN DOTS-3 +2805;AL # BRAILLE PATTERN DOTS-13 +2806;AL # BRAILLE PATTERN DOTS-23 +2807;AL # BRAILLE PATTERN DOTS-123 +2808;AL # BRAILLE PATTERN DOTS-4 +2809;AL # BRAILLE PATTERN DOTS-14 +280A;AL # BRAILLE PATTERN DOTS-24 +280B;AL # BRAILLE PATTERN DOTS-124 +280C;AL # BRAILLE PATTERN DOTS-34 +280D;AL # BRAILLE PATTERN DOTS-134 +280E;AL # BRAILLE PATTERN DOTS-234 +280F;AL # BRAILLE PATTERN DOTS-1234 +2810;AL # BRAILLE PATTERN DOTS-5 +2811;AL # BRAILLE PATTERN DOTS-15 +2812;AL # BRAILLE PATTERN DOTS-25 +2813;AL # BRAILLE PATTERN DOTS-125 +2814;AL # BRAILLE PATTERN DOTS-35 +2815;AL # BRAILLE PATTERN DOTS-135 +2816;AL # BRAILLE PATTERN DOTS-235 +2817;AL # BRAILLE PATTERN DOTS-1235 +2818;AL # BRAILLE PATTERN DOTS-45 +2819;AL # BRAILLE PATTERN DOTS-145 +281A;AL # BRAILLE PATTERN DOTS-245 +281B;AL # BRAILLE PATTERN DOTS-1245 +281C;AL # BRAILLE PATTERN DOTS-345 +281D;AL # BRAILLE PATTERN DOTS-1345 +281E;AL # BRAILLE PATTERN DOTS-2345 +281F;AL # BRAILLE PATTERN DOTS-12345 +2820;AL # BRAILLE PATTERN DOTS-6 +2821;AL # BRAILLE PATTERN DOTS-16 +2822;AL # BRAILLE PATTERN DOTS-26 +2823;AL # BRAILLE PATTERN DOTS-126 +2824;AL # BRAILLE PATTERN DOTS-36 +2825;AL # BRAILLE PATTERN DOTS-136 +2826;AL # BRAILLE PATTERN DOTS-236 +2827;AL # BRAILLE PATTERN DOTS-1236 +2828;AL # BRAILLE PATTERN DOTS-46 +2829;AL # BRAILLE PATTERN DOTS-146 +282A;AL # BRAILLE PATTERN DOTS-246 +282B;AL # BRAILLE PATTERN DOTS-1246 +282C;AL # BRAILLE PATTERN DOTS-346 +282D;AL # BRAILLE PATTERN DOTS-1346 +282E;AL # BRAILLE PATTERN DOTS-2346 +282F;AL # BRAILLE PATTERN DOTS-12346 +2830;AL # BRAILLE PATTERN DOTS-56 +2831;AL # BRAILLE PATTERN DOTS-156 +2832;AL # BRAILLE PATTERN DOTS-256 +2833;AL # BRAILLE PATTERN DOTS-1256 +2834;AL # BRAILLE PATTERN DOTS-356 +2835;AL # BRAILLE PATTERN DOTS-1356 +2836;AL # BRAILLE PATTERN DOTS-2356 +2837;AL # BRAILLE PATTERN DOTS-12356 +2838;AL # BRAILLE PATTERN DOTS-456 +2839;AL # BRAILLE PATTERN DOTS-1456 +283A;AL # BRAILLE PATTERN DOTS-2456 +283B;AL # BRAILLE PATTERN DOTS-12456 +283C;AL # BRAILLE PATTERN DOTS-3456 +283D;AL # BRAILLE PATTERN DOTS-13456 +283E;AL # BRAILLE PATTERN DOTS-23456 +283F;AL # BRAILLE PATTERN DOTS-123456 +2840;AL # BRAILLE PATTERN DOTS-7 +2841;AL # BRAILLE PATTERN DOTS-17 +2842;AL # BRAILLE PATTERN DOTS-27 +2843;AL # BRAILLE PATTERN DOTS-127 +2844;AL # BRAILLE PATTERN DOTS-37 +2845;AL # BRAILLE PATTERN DOTS-137 +2846;AL # BRAILLE PATTERN DOTS-237 +2847;AL # BRAILLE PATTERN DOTS-1237 +2848;AL # BRAILLE PATTERN DOTS-47 +2849;AL # BRAILLE PATTERN DOTS-147 +284A;AL # BRAILLE PATTERN DOTS-247 +284B;AL # BRAILLE PATTERN DOTS-1247 +284C;AL # BRAILLE PATTERN DOTS-347 +284D;AL # BRAILLE PATTERN DOTS-1347 +284E;AL # BRAILLE PATTERN DOTS-2347 +284F;AL # BRAILLE PATTERN DOTS-12347 +2850;AL # BRAILLE PATTERN DOTS-57 +2851;AL # BRAILLE PATTERN DOTS-157 +2852;AL # BRAILLE PATTERN DOTS-257 +2853;AL # BRAILLE PATTERN DOTS-1257 +2854;AL # BRAILLE PATTERN DOTS-357 +2855;AL # BRAILLE PATTERN DOTS-1357 +2856;AL # BRAILLE PATTERN DOTS-2357 +2857;AL # BRAILLE PATTERN DOTS-12357 +2858;AL # BRAILLE PATTERN DOTS-457 +2859;AL # BRAILLE PATTERN DOTS-1457 +285A;AL # BRAILLE PATTERN DOTS-2457 +285B;AL # BRAILLE PATTERN DOTS-12457 +285C;AL # BRAILLE PATTERN DOTS-3457 +285D;AL # BRAILLE PATTERN DOTS-13457 +285E;AL # BRAILLE PATTERN DOTS-23457 +285F;AL # BRAILLE PATTERN DOTS-123457 +2860;AL # BRAILLE PATTERN DOTS-67 +2861;AL # BRAILLE PATTERN DOTS-167 +2862;AL # BRAILLE PATTERN DOTS-267 +2863;AL # BRAILLE PATTERN DOTS-1267 +2864;AL # BRAILLE PATTERN DOTS-367 +2865;AL # BRAILLE PATTERN DOTS-1367 +2866;AL # BRAILLE PATTERN DOTS-2367 +2867;AL # BRAILLE PATTERN DOTS-12367 +2868;AL # BRAILLE PATTERN DOTS-467 +2869;AL # BRAILLE PATTERN DOTS-1467 +286A;AL # BRAILLE PATTERN DOTS-2467 +286B;AL # BRAILLE PATTERN DOTS-12467 +286C;AL # BRAILLE PATTERN DOTS-3467 +286D;AL # BRAILLE PATTERN DOTS-13467 +286E;AL # BRAILLE PATTERN DOTS-23467 +286F;AL # BRAILLE PATTERN DOTS-123467 +2870;AL # BRAILLE PATTERN DOTS-567 +2871;AL # BRAILLE PATTERN DOTS-1567 +2872;AL # BRAILLE PATTERN DOTS-2567 +2873;AL # BRAILLE PATTERN DOTS-12567 +2874;AL # BRAILLE PATTERN DOTS-3567 +2875;AL # BRAILLE PATTERN DOTS-13567 +2876;AL # BRAILLE PATTERN DOTS-23567 +2877;AL # BRAILLE PATTERN DOTS-123567 +2878;AL # BRAILLE PATTERN DOTS-4567 +2879;AL # BRAILLE PATTERN DOTS-14567 +287A;AL # BRAILLE PATTERN DOTS-24567 +287B;AL # BRAILLE PATTERN DOTS-124567 +287C;AL # BRAILLE PATTERN DOTS-34567 +287D;AL # BRAILLE PATTERN DOTS-134567 +287E;AL # BRAILLE PATTERN DOTS-234567 +287F;AL # BRAILLE PATTERN DOTS-1234567 +2880;AL # BRAILLE PATTERN DOTS-8 +2881;AL # BRAILLE PATTERN DOTS-18 +2882;AL # BRAILLE PATTERN DOTS-28 +2883;AL # BRAILLE PATTERN DOTS-128 +2884;AL # BRAILLE PATTERN DOTS-38 +2885;AL # BRAILLE PATTERN DOTS-138 +2886;AL # BRAILLE PATTERN DOTS-238 +2887;AL # BRAILLE PATTERN DOTS-1238 +2888;AL # BRAILLE PATTERN DOTS-48 +2889;AL # BRAILLE PATTERN DOTS-148 +288A;AL # BRAILLE PATTERN DOTS-248 +288B;AL # BRAILLE PATTERN DOTS-1248 +288C;AL # BRAILLE PATTERN DOTS-348 +288D;AL # BRAILLE PATTERN DOTS-1348 +288E;AL # BRAILLE PATTERN DOTS-2348 +288F;AL # BRAILLE PATTERN DOTS-12348 +2890;AL # BRAILLE PATTERN DOTS-58 +2891;AL # BRAILLE PATTERN DOTS-158 +2892;AL # BRAILLE PATTERN DOTS-258 +2893;AL # BRAILLE PATTERN DOTS-1258 +2894;AL # BRAILLE PATTERN DOTS-358 +2895;AL # BRAILLE PATTERN DOTS-1358 +2896;AL # BRAILLE PATTERN DOTS-2358 +2897;AL # BRAILLE PATTERN DOTS-12358 +2898;AL # BRAILLE PATTERN DOTS-458 +2899;AL # BRAILLE PATTERN DOTS-1458 +289A;AL # BRAILLE PATTERN DOTS-2458 +289B;AL # BRAILLE PATTERN DOTS-12458 +289C;AL # BRAILLE PATTERN DOTS-3458 +289D;AL # BRAILLE PATTERN DOTS-13458 +289E;AL # BRAILLE PATTERN DOTS-23458 +289F;AL # BRAILLE PATTERN DOTS-123458 +28A0;AL # BRAILLE PATTERN DOTS-68 +28A1;AL # BRAILLE PATTERN DOTS-168 +28A2;AL # BRAILLE PATTERN DOTS-268 +28A3;AL # BRAILLE PATTERN DOTS-1268 +28A4;AL # BRAILLE PATTERN DOTS-368 +28A5;AL # BRAILLE PATTERN DOTS-1368 +28A6;AL # BRAILLE PATTERN DOTS-2368 +28A7;AL # BRAILLE PATTERN DOTS-12368 +28A8;AL # BRAILLE PATTERN DOTS-468 +28A9;AL # BRAILLE PATTERN DOTS-1468 +28AA;AL # BRAILLE PATTERN DOTS-2468 +28AB;AL # BRAILLE PATTERN DOTS-12468 +28AC;AL # BRAILLE PATTERN DOTS-3468 +28AD;AL # BRAILLE PATTERN DOTS-13468 +28AE;AL # BRAILLE PATTERN DOTS-23468 +28AF;AL # BRAILLE PATTERN DOTS-123468 +28B0;AL # BRAILLE PATTERN DOTS-568 +28B1;AL # BRAILLE PATTERN DOTS-1568 +28B2;AL # BRAILLE PATTERN DOTS-2568 +28B3;AL # BRAILLE PATTERN DOTS-12568 +28B4;AL # BRAILLE PATTERN DOTS-3568 +28B5;AL # BRAILLE PATTERN DOTS-13568 +28B6;AL # BRAILLE PATTERN DOTS-23568 +28B7;AL # BRAILLE PATTERN DOTS-123568 +28B8;AL # BRAILLE PATTERN DOTS-4568 +28B9;AL # BRAILLE PATTERN DOTS-14568 +28BA;AL # BRAILLE PATTERN DOTS-24568 +28BB;AL # BRAILLE PATTERN DOTS-124568 +28BC;AL # BRAILLE PATTERN DOTS-34568 +28BD;AL # BRAILLE PATTERN DOTS-134568 +28BE;AL # BRAILLE PATTERN DOTS-234568 +28BF;AL # BRAILLE PATTERN DOTS-1234568 +28C0;AL # BRAILLE PATTERN DOTS-78 +28C1;AL # BRAILLE PATTERN DOTS-178 +28C2;AL # BRAILLE PATTERN DOTS-278 +28C3;AL # BRAILLE PATTERN DOTS-1278 +28C4;AL # BRAILLE PATTERN DOTS-378 +28C5;AL # BRAILLE PATTERN DOTS-1378 +28C6;AL # BRAILLE PATTERN DOTS-2378 +28C7;AL # BRAILLE PATTERN DOTS-12378 +28C8;AL # BRAILLE PATTERN DOTS-478 +28C9;AL # BRAILLE PATTERN DOTS-1478 +28CA;AL # BRAILLE PATTERN DOTS-2478 +28CB;AL # BRAILLE PATTERN DOTS-12478 +28CC;AL # BRAILLE PATTERN DOTS-3478 +28CD;AL # BRAILLE PATTERN DOTS-13478 +28CE;AL # BRAILLE PATTERN DOTS-23478 +28CF;AL # BRAILLE PATTERN DOTS-123478 +28D0;AL # BRAILLE PATTERN DOTS-578 +28D1;AL # BRAILLE PATTERN DOTS-1578 +28D2;AL # BRAILLE PATTERN DOTS-2578 +28D3;AL # BRAILLE PATTERN DOTS-12578 +28D4;AL # BRAILLE PATTERN DOTS-3578 +28D5;AL # BRAILLE PATTERN DOTS-13578 +28D6;AL # BRAILLE PATTERN DOTS-23578 +28D7;AL # BRAILLE PATTERN DOTS-123578 +28D8;AL # BRAILLE PATTERN DOTS-4578 +28D9;AL # BRAILLE PATTERN DOTS-14578 +28DA;AL # BRAILLE PATTERN DOTS-24578 +28DB;AL # BRAILLE PATTERN DOTS-124578 +28DC;AL # BRAILLE PATTERN DOTS-34578 +28DD;AL # BRAILLE PATTERN DOTS-134578 +28DE;AL # BRAILLE PATTERN DOTS-234578 +28DF;AL # BRAILLE PATTERN DOTS-1234578 +28E0;AL # BRAILLE PATTERN DOTS-678 +28E1;AL # BRAILLE PATTERN DOTS-1678 +28E2;AL # BRAILLE PATTERN DOTS-2678 +28E3;AL # BRAILLE PATTERN DOTS-12678 +28E4;AL # BRAILLE PATTERN DOTS-3678 +28E5;AL # BRAILLE PATTERN DOTS-13678 +28E6;AL # BRAILLE PATTERN DOTS-23678 +28E7;AL # BRAILLE PATTERN DOTS-123678 +28E8;AL # BRAILLE PATTERN DOTS-4678 +28E9;AL # BRAILLE PATTERN DOTS-14678 +28EA;AL # BRAILLE PATTERN DOTS-24678 +28EB;AL # BRAILLE PATTERN DOTS-124678 +28EC;AL # BRAILLE PATTERN DOTS-34678 +28ED;AL # BRAILLE PATTERN DOTS-134678 +28EE;AL # BRAILLE PATTERN DOTS-234678 +28EF;AL # BRAILLE PATTERN DOTS-1234678 +28F0;AL # BRAILLE PATTERN DOTS-5678 +28F1;AL # BRAILLE PATTERN DOTS-15678 +28F2;AL # BRAILLE PATTERN DOTS-25678 +28F3;AL # BRAILLE PATTERN DOTS-125678 +28F4;AL # BRAILLE PATTERN DOTS-35678 +28F5;AL # BRAILLE PATTERN DOTS-135678 +28F6;AL # BRAILLE PATTERN DOTS-235678 +28F7;AL # BRAILLE PATTERN DOTS-1235678 +28F8;AL # BRAILLE PATTERN DOTS-45678 +28F9;AL # BRAILLE PATTERN DOTS-145678 +28FA;AL # BRAILLE PATTERN DOTS-245678 +28FB;AL # BRAILLE PATTERN DOTS-1245678 +28FC;AL # BRAILLE PATTERN DOTS-345678 +28FD;AL # BRAILLE PATTERN DOTS-1345678 +28FE;AL # BRAILLE PATTERN DOTS-2345678 +28FF;AL # BRAILLE PATTERN DOTS-12345678 +2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE +2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE +2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE +2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE +2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE +2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR +2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR +2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR +2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE +2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE +290A;AL # UPWARDS TRIPLE ARROW +290B;AL # DOWNWARDS TRIPLE ARROW +290C;AL # LEFTWARDS DOUBLE DASH ARROW +290D;AL # RIGHTWARDS DOUBLE DASH ARROW +290E;AL # LEFTWARDS TRIPLE DASH ARROW +290F;AL # RIGHTWARDS TRIPLE DASH ARROW +2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW +2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM +2912;AL # UPWARDS ARROW TO BAR +2913;AL # DOWNWARDS ARROW TO BAR +2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE +2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL +2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE +2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +2919;AL # LEFTWARDS ARROW-TAIL +291A;AL # RIGHTWARDS ARROW-TAIL +291B;AL # LEFTWARDS DOUBLE ARROW-TAIL +291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL +291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND +291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND +291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND +2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND +2921;AL # NORTH WEST AND SOUTH EAST ARROW +2922;AL # NORTH EAST AND SOUTH WEST ARROW +2923;AL # NORTH WEST ARROW WITH HOOK +2924;AL # NORTH EAST ARROW WITH HOOK +2925;AL # SOUTH EAST ARROW WITH HOOK +2926;AL # SOUTH WEST ARROW WITH HOOK +2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW +2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW +2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW +292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW +292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL +292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL +292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW +292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW +292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW +2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW +2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW +2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW +2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT +2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS +2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS +2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS +2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS +2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW +2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW +293A;AL # TOP ARC ANTICLOCKWISE ARROW +293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW +293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS +293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS +293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW +293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW +2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW +2941;AL # CLOCKWISE CLOSED CIRCLE ARROW +2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW +2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW +2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW +2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW +2946;AL # LEFTWARDS ARROW WITH PLUS BELOW +2947;AL # RIGHTWARDS ARROW THROUGH X +2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE +2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE +294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON +294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON +294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON +294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON +294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON +294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON +2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON +2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON +2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR +2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR +2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR +2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR +2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR +2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR +2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR +2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR +295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR +295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR +295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR +295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR +295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR +295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR +2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR +2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR +2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN +2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP +2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP +2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN +296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD +2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW +2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW +2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR +2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR +2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO +2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW +2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN +2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW +2979;AL # SUBSET ABOVE RIGHTWARDS ARROW +297A;AL # LEFTWARDS ARROW THROUGH SUBSET +297B;AL # SUPERSET ABOVE LEFTWARDS ARROW +297C;AL # LEFT FISH TAIL +297D;AL # RIGHT FISH TAIL +297E;AL # UP FISH TAIL +297F;AL # DOWN FISH TAIL +2980;AL # TRIPLE VERTICAL BAR DELIMITER +2981;AL # Z NOTATION SPOT +2982;AL # Z NOTATION TYPE COLON +2983;OP # LEFT WHITE CURLY BRACKET +2984;CL # RIGHT WHITE CURLY BRACKET +2985;OP # LEFT WHITE PARENTHESIS +2986;CL # RIGHT WHITE PARENTHESIS +2987;OP # Z NOTATION LEFT IMAGE BRACKET +2988;CL # Z NOTATION RIGHT IMAGE BRACKET +2989;OP # Z NOTATION LEFT BINDING BRACKET +298A;CL # Z NOTATION RIGHT BINDING BRACKET +298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR +298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR +298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991;OP # LEFT ANGLE BRACKET WITH DOT +2992;CL # RIGHT ANGLE BRACKET WITH DOT +2993;OP # LEFT ARC LESS-THAN BRACKET +2994;CL # RIGHT ARC GREATER-THAN BRACKET +2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997;OP # LEFT BLACK TORTOISE SHELL BRACKET +2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET +2999;AL # DOTTED FENCE +299A;AL # VERTICAL ZIGZAG LINE +299B;AL # MEASURED ANGLE OPENING LEFT +299C;AL # RIGHT ANGLE VARIANT WITH SQUARE +299D;AL # MEASURED RIGHT ANGLE WITH DOT +299E;AL # ANGLE WITH S INSIDE +299F;AL # ACUTE ANGLE +29A0;AL # SPHERICAL ANGLE OPENING LEFT +29A1;AL # SPHERICAL ANGLE OPENING UP +29A2;AL # TURNED ANGLE +29A3;AL # REVERSED ANGLE +29A4;AL # ANGLE WITH UNDERBAR +29A5;AL # REVERSED ANGLE WITH UNDERBAR +29A6;AL # OBLIQUE ANGLE OPENING UP +29A7;AL # OBLIQUE ANGLE OPENING DOWN +29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +29B0;AL # REVERSED EMPTY SET +29B1;AL # EMPTY SET WITH OVERBAR +29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE +29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE +29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE +29B5;AL # CIRCLE WITH HORIZONTAL BAR +29B6;AL # CIRCLED VERTICAL BAR +29B7;AL # CIRCLED PARALLEL +29B8;AL # CIRCLED REVERSE SOLIDUS +29B9;AL # CIRCLED PERPENDICULAR +29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR +29BB;AL # CIRCLE WITH SUPERIMPOSED X +29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN +29BD;AL # UP ARROW THROUGH CIRCLE +29BE;AL # CIRCLED WHITE BULLET +29BF;AL # CIRCLED BULLET +29C0;AL # CIRCLED LESS-THAN +29C1;AL # CIRCLED GREATER-THAN +29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT +29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +29C4;AL # SQUARED RISING DIAGONAL SLASH +29C5;AL # SQUARED FALLING DIAGONAL SLASH +29C6;AL # SQUARED ASTERISK +29C7;AL # SQUARED SMALL CIRCLE +29C8;AL # SQUARED SQUARE +29C9;AL # TWO JOINED SQUARES +29CA;AL # TRIANGLE WITH DOT ABOVE +29CB;AL # TRIANGLE WITH UNDERBAR +29CC;AL # S IN TRIANGLE +29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM +29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE +29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1;AL # BOWTIE WITH LEFT HALF BLACK +29D2;AL # BOWTIE WITH RIGHT HALF BLACK +29D3;AL # BLACK BOWTIE +29D4;AL # TIMES WITH LEFT HALF BLACK +29D5;AL # TIMES WITH RIGHT HALF BLACK +29D6;AL # WHITE HOURGLASS +29D7;AL # BLACK HOURGLASS +29D8;OP # LEFT WIGGLY FENCE +29D9;CL # RIGHT WIGGLY FENCE +29DA;OP # LEFT DOUBLE WIGGLY FENCE +29DB;CL # RIGHT DOUBLE WIGGLY FENCE +29DC;AL # INCOMPLETE INFINITY +29DD;AL # TIE OVER INFINITY +29DE;AL # INFINITY NEGATED WITH VERTICAL BAR +29DF;AL # DOUBLE-ENDED MULTIMAP +29E0;AL # SQUARE WITH CONTOURED OUTLINE +29E1;AL # INCREASES AS +29E2;AL # SHUFFLE PRODUCT +29E3;AL # EQUALS SIGN AND SLANTED PARALLEL +29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +29E5;AL # IDENTICAL TO AND SLANTED PARALLEL +29E6;AL # GLEICH STARK +29E7;AL # THERMODYNAMIC +29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +29EA;AL # BLACK DIAMOND WITH DOWN ARROW +29EB;AL # BLACK LOZENGE +29EC;AL # WHITE CIRCLE WITH DOWN ARROW +29ED;AL # BLACK CIRCLE WITH DOWN ARROW +29EE;AL # ERROR-BARRED WHITE SQUARE +29EF;AL # ERROR-BARRED BLACK SQUARE +29F0;AL # ERROR-BARRED WHITE DIAMOND +29F1;AL # ERROR-BARRED BLACK DIAMOND +29F2;AL # ERROR-BARRED WHITE CIRCLE +29F3;AL # ERROR-BARRED BLACK CIRCLE +29F4;AL # RULE-DELAYED +29F5;AL # REVERSE SOLIDUS OPERATOR +29F6;AL # SOLIDUS WITH OVERBAR +29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE +29F8;AL # BIG SOLIDUS +29F9;AL # BIG REVERSE SOLIDUS +29FA;AL # DOUBLE PLUS +29FB;AL # TRIPLE PLUS +29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET +29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET +29FE;AL # TINY +29FF;AL # MINY +2A00;AL # N-ARY CIRCLED DOT OPERATOR +2A01;AL # N-ARY CIRCLED PLUS OPERATOR +2A02;AL # N-ARY CIRCLED TIMES OPERATOR +2A03;AL # N-ARY UNION OPERATOR WITH DOT +2A04;AL # N-ARY UNION OPERATOR WITH PLUS +2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR +2A06;AL # N-ARY SQUARE UNION OPERATOR +2A07;AL # TWO LOGICAL AND OPERATOR +2A08;AL # TWO LOGICAL OR OPERATOR +2A09;AL # N-ARY TIMES OPERATOR +2A0A;AL # MODULO TWO SUM +2A0B;AL # SUMMATION WITH INTEGRAL +2A0C;AL # QUADRUPLE INTEGRAL OPERATOR +2A0D;AL # FINITE PART INTEGRAL +2A0E;AL # INTEGRAL WITH DOUBLE STROKE +2A0F;AL # INTEGRAL AVERAGE WITH SLASH +2A10;AL # CIRCULATION FUNCTION +2A11;AL # ANTICLOCKWISE INTEGRATION +2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE +2A15;AL # INTEGRAL AROUND A POINT OPERATOR +2A16;AL # QUATERNION INTEGRAL OPERATOR +2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +2A18;AL # INTEGRAL WITH TIMES SIGN +2A19;AL # INTEGRAL WITH INTERSECTION +2A1A;AL # INTEGRAL WITH UNION +2A1B;AL # INTEGRAL WITH OVERBAR +2A1C;AL # INTEGRAL WITH UNDERBAR +2A1D;AL # JOIN +2A1E;AL # LARGE LEFT TRIANGLE OPERATOR +2A1F;AL # Z NOTATION SCHEMA COMPOSITION +2A20;AL # Z NOTATION SCHEMA PIPING +2A21;AL # Z NOTATION SCHEMA PROJECTION +2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE +2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE +2A24;AL # PLUS SIGN WITH TILDE ABOVE +2A25;AL # PLUS SIGN WITH DOT BELOW +2A26;AL # PLUS SIGN WITH TILDE BELOW +2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO +2A28;AL # PLUS SIGN WITH BLACK TRIANGLE +2A29;AL # MINUS SIGN WITH COMMA ABOVE +2A2A;AL # MINUS SIGN WITH DOT BELOW +2A2B;AL # MINUS SIGN WITH FALLING DOTS +2A2C;AL # MINUS SIGN WITH RISING DOTS +2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE +2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE +2A2F;AL # VECTOR OR CROSS PRODUCT +2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE +2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR +2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED +2A33;AL # SMASH PRODUCT +2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT +2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE +2A38;AL # CIRCLED DIVISION SIGN +2A39;AL # PLUS SIGN IN TRIANGLE +2A3A;AL # MINUS SIGN IN TRIANGLE +2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE +2A3C;AL # INTERIOR PRODUCT +2A3D;AL # RIGHTHAND INTERIOR PRODUCT +2A3E;AL # Z NOTATION RELATIONAL COMPOSITION +2A3F;AL # AMALGAMATION OR COPRODUCT +2A40;AL # INTERSECTION WITH DOT +2A41;AL # UNION WITH MINUS SIGN +2A42;AL # UNION WITH OVERBAR +2A43;AL # INTERSECTION WITH OVERBAR +2A44;AL # INTERSECTION WITH LOGICAL AND +2A45;AL # UNION WITH LOGICAL OR +2A46;AL # UNION ABOVE INTERSECTION +2A47;AL # INTERSECTION ABOVE UNION +2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION +2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION +2A4A;AL # UNION BESIDE AND JOINED WITH UNION +2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION +2A4C;AL # CLOSED UNION WITH SERIFS +2A4D;AL # CLOSED INTERSECTION WITH SERIFS +2A4E;AL # DOUBLE SQUARE INTERSECTION +2A4F;AL # DOUBLE SQUARE UNION +2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT +2A51;AL # LOGICAL AND WITH DOT ABOVE +2A52;AL # LOGICAL OR WITH DOT ABOVE +2A53;AL # DOUBLE LOGICAL AND +2A54;AL # DOUBLE LOGICAL OR +2A55;AL # TWO INTERSECTING LOGICAL AND +2A56;AL # TWO INTERSECTING LOGICAL OR +2A57;AL # SLOPING LARGE OR +2A58;AL # SLOPING LARGE AND +2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND +2A5A;AL # LOGICAL AND WITH MIDDLE STEM +2A5B;AL # LOGICAL OR WITH MIDDLE STEM +2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH +2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH +2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR +2A5F;AL # LOGICAL AND WITH UNDERBAR +2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR +2A61;AL # SMALL VEE WITH UNDERBAR +2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR +2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR +2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION +2A65;AL # Z NOTATION RANGE ANTIRESTRICTION +2A66;AL # EQUALS SIGN WITH DOT BELOW +2A67;AL # IDENTICAL WITH DOT ABOVE +2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE +2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE +2A6A;AL # TILDE OPERATOR WITH DOT ABOVE +2A6B;AL # TILDE OPERATOR WITH RISING DOTS +2A6C;AL # SIMILAR MINUS SIMILAR +2A6D;AL # CONGRUENT WITH DOT ABOVE +2A6E;AL # EQUALS WITH ASTERISK +2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO +2A71;AL # EQUALS SIGN ABOVE PLUS SIGN +2A72;AL # PLUS SIGN ABOVE EQUALS SIGN +2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR +2A74;AL # DOUBLE COLON EQUAL +2A75;AL # TWO CONSECUTIVE EQUALS SIGNS +2A76;AL # THREE CONSECUTIVE EQUALS SIGNS +2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW +2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE +2A79;AL # LESS-THAN WITH CIRCLE INSIDE +2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE +2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE +2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE +2A7D;AL # LESS-THAN OR SLANTED EQUAL TO +2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO +2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A85;AL # LESS-THAN OR APPROXIMATE +2A86;AL # GREATER-THAN OR APPROXIMATE +2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO +2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +2A89;AL # LESS-THAN AND NOT APPROXIMATE +2A8A;AL # GREATER-THAN AND NOT APPROXIMATE +2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL +2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL +2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95;AL # SLANTED EQUAL TO OR LESS-THAN +2A96;AL # SLANTED EQUAL TO OR GREATER-THAN +2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2A9D;AL # SIMILAR OR LESS-THAN +2A9E;AL # SIMILAR OR GREATER-THAN +2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +2AA1;AL # DOUBLE NESTED LESS-THAN +2AA2;AL # DOUBLE NESTED GREATER-THAN +2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR +2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN +2AA5;AL # GREATER-THAN BESIDE LESS-THAN +2AA6;AL # LESS-THAN CLOSED BY CURVE +2AA7;AL # GREATER-THAN CLOSED BY CURVE +2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA;AL # SMALLER THAN +2AAB;AL # LARGER THAN +2AAC;AL # SMALLER THAN OR EQUAL TO +2AAD;AL # LARGER THAN OR EQUAL TO +2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE +2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +2AB3;AL # PRECEDES ABOVE EQUALS SIGN +2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN +2AB5;AL # PRECEDES ABOVE NOT EQUAL TO +2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO +2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO +2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO +2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO +2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO +2ABB;AL # DOUBLE PRECEDES +2ABC;AL # DOUBLE SUCCEEDS +2ABD;AL # SUBSET WITH DOT +2ABE;AL # SUPERSET WITH DOT +2ABF;AL # SUBSET WITH PLUS SIGN BELOW +2AC0;AL # SUPERSET WITH PLUS SIGN BELOW +2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5;AL # SUBSET OF ABOVE EQUALS SIGN +2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN +2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR +2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR +2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO +2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO +2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO +2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO +2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR +2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR +2ACF;AL # CLOSED SUBSET +2AD0;AL # CLOSED SUPERSET +2AD1;AL # CLOSED SUBSET OR EQUAL TO +2AD2;AL # CLOSED SUPERSET OR EQUAL TO +2AD3;AL # SUBSET ABOVE SUPERSET +2AD4;AL # SUPERSET ABOVE SUBSET +2AD5;AL # SUBSET ABOVE SUBSET +2AD6;AL # SUPERSET ABOVE SUPERSET +2AD7;AL # SUPERSET BESIDE SUBSET +2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET +2AD9;AL # ELEMENT OF OPENING DOWNWARDS +2ADA;AL # PITCHFORK WITH TEE TOP +2ADB;AL # TRANSVERSAL INTERSECTION +2ADC;AL # FORKING +2ADD;AL # NONFORKING +2ADE;AL # SHORT LEFT TACK +2ADF;AL # SHORT DOWN TACK +2AE0;AL # SHORT UP TACK +2AE1;AL # PERPENDICULAR WITH S +2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE +2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +2AE7;AL # SHORT DOWN TACK WITH OVERBAR +2AE8;AL # SHORT UP TACK WITH UNDERBAR +2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK +2AEA;AL # DOUBLE DOWN TACK +2AEB;AL # DOUBLE UP TACK +2AEC;AL # DOUBLE STROKE NOT SIGN +2AED;AL # REVERSED DOUBLE STROKE NOT SIGN +2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE +2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW +2AF1;AL # DOWN TACK WITH CIRCLE BELOW +2AF2;AL # PARALLEL WITH HORIZONTAL STROKE +2AF3;AL # PARALLEL WITH TILDE OPERATOR +2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION +2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE +2AF6;AL # TRIPLE COLON OPERATOR +2AF7;AL # TRIPLE NESTED LESS-THAN +2AF8;AL # TRIPLE NESTED GREATER-THAN +2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +2AFB;AL # TRIPLE SOLIDUS BINARY RELATION +2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR +2AFD;AL # DOUBLE SOLIDUS OPERATOR +2AFE;AL # WHITE VERTICAL BAR +2AFF;AL # N-ARY WHITE VERTICAL BAR +2E80;ID # CJK RADICAL REPEAT +2E81;ID # CJK RADICAL CLIFF +2E82;ID # CJK RADICAL SECOND ONE +2E83;ID # CJK RADICAL SECOND TWO +2E84;ID # CJK RADICAL SECOND THREE +2E85;ID # CJK RADICAL PERSON +2E86;ID # CJK RADICAL BOX +2E87;ID # CJK RADICAL TABLE +2E88;ID # CJK RADICAL KNIFE ONE +2E89;ID # CJK RADICAL KNIFE TWO +2E8A;ID # CJK RADICAL DIVINATION +2E8B;ID # CJK RADICAL SEAL +2E8C;ID # CJK RADICAL SMALL ONE +2E8D;ID # CJK RADICAL SMALL TWO +2E8E;ID # CJK RADICAL LAME ONE +2E8F;ID # CJK RADICAL LAME TWO +2E90;ID # CJK RADICAL LAME THREE +2E91;ID # CJK RADICAL LAME FOUR +2E92;ID # CJK RADICAL SNAKE +2E93;ID # CJK RADICAL THREAD +2E94;ID # CJK RADICAL SNOUT ONE +2E95;ID # CJK RADICAL SNOUT TWO +2E96;ID # CJK RADICAL HEART ONE +2E97;ID # CJK RADICAL HEART TWO +2E98;ID # CJK RADICAL HAND +2E99;ID # CJK RADICAL RAP +2E9B;ID # CJK RADICAL CHOKE +2E9C;ID # CJK RADICAL SUN +2E9D;ID # CJK RADICAL MOON +2E9E;ID # CJK RADICAL DEATH +2E9F;ID # CJK RADICAL MOTHER +2EA0;ID # CJK RADICAL CIVILIAN +2EA1;ID # CJK RADICAL WATER ONE +2EA2;ID # CJK RADICAL WATER TWO +2EA3;ID # CJK RADICAL FIRE +2EA4;ID # CJK RADICAL PAW ONE +2EA5;ID # CJK RADICAL PAW TWO +2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK +2EA7;ID # CJK RADICAL COW +2EA8;ID # CJK RADICAL DOG +2EA9;ID # CJK RADICAL JADE +2EAA;ID # CJK RADICAL BOLT OF CLOTH +2EAB;ID # CJK RADICAL EYE +2EAC;ID # CJK RADICAL SPIRIT ONE +2EAD;ID # CJK RADICAL SPIRIT TWO +2EAE;ID # CJK RADICAL BAMBOO +2EAF;ID # CJK RADICAL SILK +2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK +2EB1;ID # CJK RADICAL NET ONE +2EB2;ID # CJK RADICAL NET TWO +2EB3;ID # CJK RADICAL NET THREE +2EB4;ID # CJK RADICAL NET FOUR +2EB5;ID # CJK RADICAL MESH +2EB6;ID # CJK RADICAL SHEEP +2EB7;ID # CJK RADICAL RAM +2EB8;ID # CJK RADICAL EWE +2EB9;ID # CJK RADICAL OLD +2EBA;ID # CJK RADICAL BRUSH ONE +2EBB;ID # CJK RADICAL BRUSH TWO +2EBC;ID # CJK RADICAL MEAT +2EBD;ID # CJK RADICAL MORTAR +2EBE;ID # CJK RADICAL GRASS ONE +2EBF;ID # CJK RADICAL GRASS TWO +2EC0;ID # CJK RADICAL GRASS THREE +2EC1;ID # CJK RADICAL TIGER +2EC2;ID # CJK RADICAL CLOTHES +2EC3;ID # CJK RADICAL WEST ONE +2EC4;ID # CJK RADICAL WEST TWO +2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE +2EC6;ID # CJK RADICAL SIMPLIFIED HORN +2EC7;ID # CJK RADICAL HORN +2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH +2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL +2ECA;ID # CJK RADICAL FOOT +2ECB;ID # CJK RADICAL C-SIMPLIFIED CART +2ECC;ID # CJK RADICAL SIMPLIFIED WALK +2ECD;ID # CJK RADICAL WALK ONE +2ECE;ID # CJK RADICAL WALK TWO +2ECF;ID # CJK RADICAL CITY +2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD +2ED1;ID # CJK RADICAL LONG ONE +2ED2;ID # CJK RADICAL LONG TWO +2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG +2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE +2ED5;ID # CJK RADICAL MOUND ONE +2ED6;ID # CJK RADICAL MOUND TWO +2ED7;ID # CJK RADICAL RAIN +2ED8;ID # CJK RADICAL BLUE +2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER +2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF +2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND +2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY +2EDD;ID # CJK RADICAL EAT ONE +2EDE;ID # CJK RADICAL EAT TWO +2EDF;ID # CJK RADICAL EAT THREE +2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT +2EE1;ID # CJK RADICAL HEAD +2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE +2EE3;ID # CJK RADICAL BONE +2EE4;ID # CJK RADICAL GHOST +2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH +2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD +2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT +2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT +2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW +2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG +2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN +2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN +2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH +2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH +2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON +2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON +2EF1;ID # CJK RADICAL TURTLE +2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE +2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE +2F00;ID # KANGXI RADICAL ONE +2F01;ID # KANGXI RADICAL LINE +2F02;ID # KANGXI RADICAL DOT +2F03;ID # KANGXI RADICAL SLASH +2F04;ID # KANGXI RADICAL SECOND +2F05;ID # KANGXI RADICAL HOOK +2F06;ID # KANGXI RADICAL TWO +2F07;ID # KANGXI RADICAL LID +2F08;ID # KANGXI RADICAL MAN +2F09;ID # KANGXI RADICAL LEGS +2F0A;ID # KANGXI RADICAL ENTER +2F0B;ID # KANGXI RADICAL EIGHT +2F0C;ID # KANGXI RADICAL DOWN BOX +2F0D;ID # KANGXI RADICAL COVER +2F0E;ID # KANGXI RADICAL ICE +2F0F;ID # KANGXI RADICAL TABLE +2F10;ID # KANGXI RADICAL OPEN BOX +2F11;ID # KANGXI RADICAL KNIFE +2F12;ID # KANGXI RADICAL POWER +2F13;ID # KANGXI RADICAL WRAP +2F14;ID # KANGXI RADICAL SPOON +2F15;ID # KANGXI RADICAL RIGHT OPEN BOX +2F16;ID # KANGXI RADICAL HIDING ENCLOSURE +2F17;ID # KANGXI RADICAL TEN +2F18;ID # KANGXI RADICAL DIVINATION +2F19;ID # KANGXI RADICAL SEAL +2F1A;ID # KANGXI RADICAL CLIFF +2F1B;ID # KANGXI RADICAL PRIVATE +2F1C;ID # KANGXI RADICAL AGAIN +2F1D;ID # KANGXI RADICAL MOUTH +2F1E;ID # KANGXI RADICAL ENCLOSURE +2F1F;ID # KANGXI RADICAL EARTH +2F20;ID # KANGXI RADICAL SCHOLAR +2F21;ID # KANGXI RADICAL GO +2F22;ID # KANGXI RADICAL GO SLOWLY +2F23;ID # KANGXI RADICAL EVENING +2F24;ID # KANGXI RADICAL BIG +2F25;ID # KANGXI RADICAL WOMAN +2F26;ID # KANGXI RADICAL CHILD +2F27;ID # KANGXI RADICAL ROOF +2F28;ID # KANGXI RADICAL INCH +2F29;ID # KANGXI RADICAL SMALL +2F2A;ID # KANGXI RADICAL LAME +2F2B;ID # KANGXI RADICAL CORPSE +2F2C;ID # KANGXI RADICAL SPROUT +2F2D;ID # KANGXI RADICAL MOUNTAIN +2F2E;ID # KANGXI RADICAL RIVER +2F2F;ID # KANGXI RADICAL WORK +2F30;ID # KANGXI RADICAL ONESELF +2F31;ID # KANGXI RADICAL TURBAN +2F32;ID # KANGXI RADICAL DRY +2F33;ID # KANGXI RADICAL SHORT THREAD +2F34;ID # KANGXI RADICAL DOTTED CLIFF +2F35;ID # KANGXI RADICAL LONG STRIDE +2F36;ID # KANGXI RADICAL TWO HANDS +2F37;ID # KANGXI RADICAL SHOOT +2F38;ID # KANGXI RADICAL BOW +2F39;ID # KANGXI RADICAL SNOUT +2F3A;ID # KANGXI RADICAL BRISTLE +2F3B;ID # KANGXI RADICAL STEP +2F3C;ID # KANGXI RADICAL HEART +2F3D;ID # KANGXI RADICAL HALBERD +2F3E;ID # KANGXI RADICAL DOOR +2F3F;ID # KANGXI RADICAL HAND +2F40;ID # KANGXI RADICAL BRANCH +2F41;ID # KANGXI RADICAL RAP +2F42;ID # KANGXI RADICAL SCRIPT +2F43;ID # KANGXI RADICAL DIPPER +2F44;ID # KANGXI RADICAL AXE +2F45;ID # KANGXI RADICAL SQUARE +2F46;ID # KANGXI RADICAL NOT +2F47;ID # KANGXI RADICAL SUN +2F48;ID # KANGXI RADICAL SAY +2F49;ID # KANGXI RADICAL MOON +2F4A;ID # KANGXI RADICAL TREE +2F4B;ID # KANGXI RADICAL LACK +2F4C;ID # KANGXI RADICAL STOP +2F4D;ID # KANGXI RADICAL DEATH +2F4E;ID # KANGXI RADICAL WEAPON +2F4F;ID # KANGXI RADICAL DO NOT +2F50;ID # KANGXI RADICAL COMPARE +2F51;ID # KANGXI RADICAL FUR +2F52;ID # KANGXI RADICAL CLAN +2F53;ID # KANGXI RADICAL STEAM +2F54;ID # KANGXI RADICAL WATER +2F55;ID # KANGXI RADICAL FIRE +2F56;ID # KANGXI RADICAL CLAW +2F57;ID # KANGXI RADICAL FATHER +2F58;ID # KANGXI RADICAL DOUBLE X +2F59;ID # KANGXI RADICAL HALF TREE TRUNK +2F5A;ID # KANGXI RADICAL SLICE +2F5B;ID # KANGXI RADICAL FANG +2F5C;ID # KANGXI RADICAL COW +2F5D;ID # KANGXI RADICAL DOG +2F5E;ID # KANGXI RADICAL PROFOUND +2F5F;ID # KANGXI RADICAL JADE +2F60;ID # KANGXI RADICAL MELON +2F61;ID # KANGXI RADICAL TILE +2F62;ID # KANGXI RADICAL SWEET +2F63;ID # KANGXI RADICAL LIFE +2F64;ID # KANGXI RADICAL USE +2F65;ID # KANGXI RADICAL FIELD +2F66;ID # KANGXI RADICAL BOLT OF CLOTH +2F67;ID # KANGXI RADICAL SICKNESS +2F68;ID # KANGXI RADICAL DOTTED TENT +2F69;ID # KANGXI RADICAL WHITE +2F6A;ID # KANGXI RADICAL SKIN +2F6B;ID # KANGXI RADICAL DISH +2F6C;ID # KANGXI RADICAL EYE +2F6D;ID # KANGXI RADICAL SPEAR +2F6E;ID # KANGXI RADICAL ARROW +2F6F;ID # KANGXI RADICAL STONE +2F70;ID # KANGXI RADICAL SPIRIT +2F71;ID # KANGXI RADICAL TRACK +2F72;ID # KANGXI RADICAL GRAIN +2F73;ID # KANGXI RADICAL CAVE +2F74;ID # KANGXI RADICAL STAND +2F75;ID # KANGXI RADICAL BAMBOO +2F76;ID # KANGXI RADICAL RICE +2F77;ID # KANGXI RADICAL SILK +2F78;ID # KANGXI RADICAL JAR +2F79;ID # KANGXI RADICAL NET +2F7A;ID # KANGXI RADICAL SHEEP +2F7B;ID # KANGXI RADICAL FEATHER +2F7C;ID # KANGXI RADICAL OLD +2F7D;ID # KANGXI RADICAL AND +2F7E;ID # KANGXI RADICAL PLOW +2F7F;ID # KANGXI RADICAL EAR +2F80;ID # KANGXI RADICAL BRUSH +2F81;ID # KANGXI RADICAL MEAT +2F82;ID # KANGXI RADICAL MINISTER +2F83;ID # KANGXI RADICAL SELF +2F84;ID # KANGXI RADICAL ARRIVE +2F85;ID # KANGXI RADICAL MORTAR +2F86;ID # KANGXI RADICAL TONGUE +2F87;ID # KANGXI RADICAL OPPOSE +2F88;ID # KANGXI RADICAL BOAT +2F89;ID # KANGXI RADICAL STOPPING +2F8A;ID # KANGXI RADICAL COLOR +2F8B;ID # KANGXI RADICAL GRASS +2F8C;ID # KANGXI RADICAL TIGER +2F8D;ID # KANGXI RADICAL INSECT +2F8E;ID # KANGXI RADICAL BLOOD +2F8F;ID # KANGXI RADICAL WALK ENCLOSURE +2F90;ID # KANGXI RADICAL CLOTHES +2F91;ID # KANGXI RADICAL WEST +2F92;ID # KANGXI RADICAL SEE +2F93;ID # KANGXI RADICAL HORN +2F94;ID # KANGXI RADICAL SPEECH +2F95;ID # KANGXI RADICAL VALLEY +2F96;ID # KANGXI RADICAL BEAN +2F97;ID # KANGXI RADICAL PIG +2F98;ID # KANGXI RADICAL BADGER +2F99;ID # KANGXI RADICAL SHELL +2F9A;ID # KANGXI RADICAL RED +2F9B;ID # KANGXI RADICAL RUN +2F9C;ID # KANGXI RADICAL FOOT +2F9D;ID # KANGXI RADICAL BODY +2F9E;ID # KANGXI RADICAL CART +2F9F;ID # KANGXI RADICAL BITTER +2FA0;ID # KANGXI RADICAL MORNING +2FA1;ID # KANGXI RADICAL WALK +2FA2;ID # KANGXI RADICAL CITY +2FA3;ID # KANGXI RADICAL WINE +2FA4;ID # KANGXI RADICAL DISTINGUISH +2FA5;ID # KANGXI RADICAL VILLAGE +2FA6;ID # KANGXI RADICAL GOLD +2FA7;ID # KANGXI RADICAL LONG +2FA8;ID # KANGXI RADICAL GATE +2FA9;ID # KANGXI RADICAL MOUND +2FAA;ID # KANGXI RADICAL SLAVE +2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD +2FAC;ID # KANGXI RADICAL RAIN +2FAD;ID # KANGXI RADICAL BLUE +2FAE;ID # KANGXI RADICAL WRONG +2FAF;ID # KANGXI RADICAL FACE +2FB0;ID # KANGXI RADICAL LEATHER +2FB1;ID # KANGXI RADICAL TANNED LEATHER +2FB2;ID # KANGXI RADICAL LEEK +2FB3;ID # KANGXI RADICAL SOUND +2FB4;ID # KANGXI RADICAL LEAF +2FB5;ID # KANGXI RADICAL WIND +2FB6;ID # KANGXI RADICAL FLY +2FB7;ID # KANGXI RADICAL EAT +2FB8;ID # KANGXI RADICAL HEAD +2FB9;ID # KANGXI RADICAL FRAGRANT +2FBA;ID # KANGXI RADICAL HORSE +2FBB;ID # KANGXI RADICAL BONE +2FBC;ID # KANGXI RADICAL TALL +2FBD;ID # KANGXI RADICAL HAIR +2FBE;ID # KANGXI RADICAL FIGHT +2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE +2FC0;ID # KANGXI RADICAL CAULDRON +2FC1;ID # KANGXI RADICAL GHOST +2FC2;ID # KANGXI RADICAL FISH +2FC3;ID # KANGXI RADICAL BIRD +2FC4;ID # KANGXI RADICAL SALT +2FC5;ID # KANGXI RADICAL DEER +2FC6;ID # KANGXI RADICAL WHEAT +2FC7;ID # KANGXI RADICAL HEMP +2FC8;ID # KANGXI RADICAL YELLOW +2FC9;ID # KANGXI RADICAL MILLET +2FCA;ID # KANGXI RADICAL BLACK +2FCB;ID # KANGXI RADICAL EMBROIDERY +2FCC;ID # KANGXI RADICAL FROG +2FCD;ID # KANGXI RADICAL TRIPOD +2FCE;ID # KANGXI RADICAL DRUM +2FCF;ID # KANGXI RADICAL RAT +2FD0;ID # KANGXI RADICAL NOSE +2FD1;ID # KANGXI RADICAL EVEN +2FD2;ID # KANGXI RADICAL TOOTH +2FD3;ID # KANGXI RADICAL DRAGON +2FD4;ID # KANGXI RADICAL TURTLE +2FD5;ID # KANGXI RADICAL FLUTE +2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT +2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW +2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT +2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW +2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND +2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE +2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW +2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT +2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT +2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT +2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT +2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID +3000;ID # IDEOGRAPHIC SPACE +3001;CL # IDEOGRAPHIC COMMA +3002;CL # IDEOGRAPHIC FULL STOP +3003;ID # DITTO MARK +3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL +3005;NS # IDEOGRAPHIC ITERATION MARK +3006;ID # IDEOGRAPHIC CLOSING MARK +3007;ID # IDEOGRAPHIC NUMBER ZERO +3008;OP # LEFT ANGLE BRACKET +3009;CL # RIGHT ANGLE BRACKET +300A;OP # LEFT DOUBLE ANGLE BRACKET +300B;CL # RIGHT DOUBLE ANGLE BRACKET +300C;OP # LEFT CORNER BRACKET +300D;CL # RIGHT CORNER BRACKET +300E;OP # LEFT WHITE CORNER BRACKET +300F;CL # RIGHT WHITE CORNER BRACKET +3010;OP # LEFT BLACK LENTICULAR BRACKET +3011;CL # RIGHT BLACK LENTICULAR BRACKET +3012;ID # POSTAL MARK +3013;ID # GETA MARK +3014;OP # LEFT TORTOISE SHELL BRACKET +3015;CL # RIGHT TORTOISE SHELL BRACKET +3016;OP # LEFT WHITE LENTICULAR BRACKET +3017;CL # RIGHT WHITE LENTICULAR BRACKET +3018;OP # LEFT WHITE TORTOISE SHELL BRACKET +3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET +301A;OP # LEFT WHITE SQUARE BRACKET +301B;CL # RIGHT WHITE SQUARE BRACKET +301C;NS # WAVE DASH +301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK +301E;CL # DOUBLE PRIME QUOTATION MARK +301F;CL # LOW DOUBLE PRIME QUOTATION MARK +3020;ID # POSTAL MARK FACE +3021;ID # HANGZHOU NUMERAL ONE +3022;ID # HANGZHOU NUMERAL TWO +3023;ID # HANGZHOU NUMERAL THREE +3024;ID # HANGZHOU NUMERAL FOUR +3025;ID # HANGZHOU NUMERAL FIVE +3026;ID # HANGZHOU NUMERAL SIX +3027;ID # HANGZHOU NUMERAL SEVEN +3028;ID # HANGZHOU NUMERAL EIGHT +3029;ID # HANGZHOU NUMERAL NINE +302A;CM # IDEOGRAPHIC LEVEL TONE MARK +302B;CM # IDEOGRAPHIC RISING TONE MARK +302C;CM # IDEOGRAPHIC DEPARTING TONE MARK +302D;CM # IDEOGRAPHIC ENTERING TONE MARK +302E;CM # HANGUL SINGLE DOT TONE MARK +302F;CM # HANGUL DOUBLE DOT TONE MARK +3030;ID # WAVY DASH +3031;ID # VERTICAL KANA REPEAT MARK +3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK +3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF +3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF +3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF +3036;ID # CIRCLED POSTAL MARK +3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL +3038;ID # HANGZHOU NUMERAL TEN +3039;ID # HANGZHOU NUMERAL TWENTY +303A;ID # HANGZHOU NUMERAL THIRTY +303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK +303C;NS # MASU MARK +303D;ID # PART ALTERNATION MARK +303E;ID # IDEOGRAPHIC VARIATION INDICATOR +303F;ID # IDEOGRAPHIC HALF FILL SPACE +3041;NS # HIRAGANA LETTER SMALL A +3042;ID # HIRAGANA LETTER A +3043;NS # HIRAGANA LETTER SMALL I +3044;ID # HIRAGANA LETTER I +3045;NS # HIRAGANA LETTER SMALL U +3046;ID # HIRAGANA LETTER U +3047;NS # HIRAGANA LETTER SMALL E +3048;ID # HIRAGANA LETTER E +3049;NS # HIRAGANA LETTER SMALL O +304A;ID # HIRAGANA LETTER O +304B;ID # HIRAGANA LETTER KA +304C;ID # HIRAGANA LETTER GA +304D;ID # HIRAGANA LETTER KI +304E;ID # HIRAGANA LETTER GI +304F;ID # HIRAGANA LETTER KU +3050;ID # HIRAGANA LETTER GU +3051;ID # HIRAGANA LETTER KE +3052;ID # HIRAGANA LETTER GE +3053;ID # HIRAGANA LETTER KO +3054;ID # HIRAGANA LETTER GO +3055;ID # HIRAGANA LETTER SA +3056;ID # HIRAGANA LETTER ZA +3057;ID # HIRAGANA LETTER SI +3058;ID # HIRAGANA LETTER ZI +3059;ID # HIRAGANA LETTER SU +305A;ID # HIRAGANA LETTER ZU +305B;ID # HIRAGANA LETTER SE +305C;ID # HIRAGANA LETTER ZE +305D;ID # HIRAGANA LETTER SO +305E;ID # HIRAGANA LETTER ZO +305F;ID # HIRAGANA LETTER TA +3060;ID # HIRAGANA LETTER DA +3061;ID # HIRAGANA LETTER TI +3062;ID # HIRAGANA LETTER DI +3063;NS # HIRAGANA LETTER SMALL TU +3064;ID # HIRAGANA LETTER TU +3065;ID # HIRAGANA LETTER DU +3066;ID # HIRAGANA LETTER TE +3067;ID # HIRAGANA LETTER DE +3068;ID # HIRAGANA LETTER TO +3069;ID # HIRAGANA LETTER DO +306A;ID # HIRAGANA LETTER NA +306B;ID # HIRAGANA LETTER NI +306C;ID # HIRAGANA LETTER NU +306D;ID # HIRAGANA LETTER NE +306E;ID # HIRAGANA LETTER NO +306F;ID # HIRAGANA LETTER HA +3070;ID # HIRAGANA LETTER BA +3071;ID # HIRAGANA LETTER PA +3072;ID # HIRAGANA LETTER HI +3073;ID # HIRAGANA LETTER BI +3074;ID # HIRAGANA LETTER PI +3075;ID # HIRAGANA LETTER HU +3076;ID # HIRAGANA LETTER BU +3077;ID # HIRAGANA LETTER PU +3078;ID # HIRAGANA LETTER HE +3079;ID # HIRAGANA LETTER BE +307A;ID # HIRAGANA LETTER PE +307B;ID # HIRAGANA LETTER HO +307C;ID # HIRAGANA LETTER BO +307D;ID # HIRAGANA LETTER PO +307E;ID # HIRAGANA LETTER MA +307F;ID # HIRAGANA LETTER MI +3080;ID # HIRAGANA LETTER MU +3081;ID # HIRAGANA LETTER ME +3082;ID # HIRAGANA LETTER MO +3083;NS # HIRAGANA LETTER SMALL YA +3084;ID # HIRAGANA LETTER YA +3085;NS # HIRAGANA LETTER SMALL YU +3086;ID # HIRAGANA LETTER YU +3087;NS # HIRAGANA LETTER SMALL YO +3088;ID # HIRAGANA LETTER YO +3089;ID # HIRAGANA LETTER RA +308A;ID # HIRAGANA LETTER RI +308B;ID # HIRAGANA LETTER RU +308C;ID # HIRAGANA LETTER RE +308D;ID # HIRAGANA LETTER RO +308E;NS # HIRAGANA LETTER SMALL WA +308F;ID # HIRAGANA LETTER WA +3090;ID # HIRAGANA LETTER WI +3091;ID # HIRAGANA LETTER WE +3092;ID # HIRAGANA LETTER WO +3093;ID # HIRAGANA LETTER N +3094;ID # HIRAGANA LETTER VU +3095;NS # HIRAGANA LETTER SMALL KA +3096;NS # HIRAGANA LETTER SMALL KE +3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK +309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK +309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309D;NS # HIRAGANA ITERATION MARK +309E;NS # HIRAGANA VOICED ITERATION MARK +309F;ID # HIRAGANA DIGRAPH YORI +30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN +30A1;NS # KATAKANA LETTER SMALL A +30A2;ID # KATAKANA LETTER A +30A3;NS # KATAKANA LETTER SMALL I +30A4;ID # KATAKANA LETTER I +30A5;NS # KATAKANA LETTER SMALL U +30A6;ID # KATAKANA LETTER U +30A7;NS # KATAKANA LETTER SMALL E +30A8;ID # KATAKANA LETTER E +30A9;NS # KATAKANA LETTER SMALL O +30AA;ID # KATAKANA LETTER O +30AB;ID # KATAKANA LETTER KA +30AC;ID # KATAKANA LETTER GA +30AD;ID # KATAKANA LETTER KI +30AE;ID # KATAKANA LETTER GI +30AF;ID # KATAKANA LETTER KU +30B0;ID # KATAKANA LETTER GU +30B1;ID # KATAKANA LETTER KE +30B2;ID # KATAKANA LETTER GE +30B3;ID # KATAKANA LETTER KO +30B4;ID # KATAKANA LETTER GO +30B5;ID # KATAKANA LETTER SA +30B6;ID # KATAKANA LETTER ZA +30B7;ID # KATAKANA LETTER SI +30B8;ID # KATAKANA LETTER ZI +30B9;ID # KATAKANA LETTER SU +30BA;ID # KATAKANA LETTER ZU +30BB;ID # KATAKANA LETTER SE +30BC;ID # KATAKANA LETTER ZE +30BD;ID # KATAKANA LETTER SO +30BE;ID # KATAKANA LETTER ZO +30BF;ID # KATAKANA LETTER TA +30C0;ID # KATAKANA LETTER DA +30C1;ID # KATAKANA LETTER TI +30C2;ID # KATAKANA LETTER DI +30C3;NS # KATAKANA LETTER SMALL TU +30C4;ID # KATAKANA LETTER TU +30C5;ID # KATAKANA LETTER DU +30C6;ID # KATAKANA LETTER TE +30C7;ID # KATAKANA LETTER DE +30C8;ID # KATAKANA LETTER TO +30C9;ID # KATAKANA LETTER DO +30CA;ID # KATAKANA LETTER NA +30CB;ID # KATAKANA LETTER NI +30CC;ID # KATAKANA LETTER NU +30CD;ID # KATAKANA LETTER NE +30CE;ID # KATAKANA LETTER NO +30CF;ID # KATAKANA LETTER HA +30D0;ID # KATAKANA LETTER BA +30D1;ID # KATAKANA LETTER PA +30D2;ID # KATAKANA LETTER HI +30D3;ID # KATAKANA LETTER BI +30D4;ID # KATAKANA LETTER PI +30D5;ID # KATAKANA LETTER HU +30D6;ID # KATAKANA LETTER BU +30D7;ID # KATAKANA LETTER PU +30D8;ID # KATAKANA LETTER HE +30D9;ID # KATAKANA LETTER BE +30DA;ID # KATAKANA LETTER PE +30DB;ID # KATAKANA LETTER HO +30DC;ID # KATAKANA LETTER BO +30DD;ID # KATAKANA LETTER PO +30DE;ID # KATAKANA LETTER MA +30DF;ID # KATAKANA LETTER MI +30E0;ID # KATAKANA LETTER MU +30E1;ID # KATAKANA LETTER ME +30E2;ID # KATAKANA LETTER MO +30E3;NS # KATAKANA LETTER SMALL YA +30E4;ID # KATAKANA LETTER YA +30E5;NS # KATAKANA LETTER SMALL YU +30E6;ID # KATAKANA LETTER YU +30E7;NS # KATAKANA LETTER SMALL YO +30E8;ID # KATAKANA LETTER YO +30E9;ID # KATAKANA LETTER RA +30EA;ID # KATAKANA LETTER RI +30EB;ID # KATAKANA LETTER RU +30EC;ID # KATAKANA LETTER RE +30ED;ID # KATAKANA LETTER RO +30EE;NS # KATAKANA LETTER SMALL WA +30EF;ID # KATAKANA LETTER WA +30F0;ID # KATAKANA LETTER WI +30F1;ID # KATAKANA LETTER WE +30F2;ID # KATAKANA LETTER WO +30F3;ID # KATAKANA LETTER N +30F4;ID # KATAKANA LETTER VU +30F5;NS # KATAKANA LETTER SMALL KA +30F6;NS # KATAKANA LETTER SMALL KE +30F7;ID # KATAKANA LETTER VA +30F8;ID # KATAKANA LETTER VI +30F9;ID # KATAKANA LETTER VE +30FA;ID # KATAKANA LETTER VO +30FB;NS # KATAKANA MIDDLE DOT +30FC;ID # KATAKANA-HIRAGANA PROLONGED SOUND MARK +30FD;NS # KATAKANA ITERATION MARK +30FE;ID # KATAKANA VOICED ITERATION MARK +30FF;ID # KATAKANA DIGRAPH KOTO +3105;ID # BOPOMOFO LETTER B +3106;ID # BOPOMOFO LETTER P +3107;ID # BOPOMOFO LETTER M +3108;ID # BOPOMOFO LETTER F +3109;ID # BOPOMOFO LETTER D +310A;ID # BOPOMOFO LETTER T +310B;ID # BOPOMOFO LETTER N +310C;ID # BOPOMOFO LETTER L +310D;ID # BOPOMOFO LETTER G +310E;ID # BOPOMOFO LETTER K +310F;ID # BOPOMOFO LETTER H +3110;ID # BOPOMOFO LETTER J +3111;ID # BOPOMOFO LETTER Q +3112;ID # BOPOMOFO LETTER X +3113;ID # BOPOMOFO LETTER ZH +3114;ID # BOPOMOFO LETTER CH +3115;ID # BOPOMOFO LETTER SH +3116;ID # BOPOMOFO LETTER R +3117;ID # BOPOMOFO LETTER Z +3118;ID # BOPOMOFO LETTER C +3119;ID # BOPOMOFO LETTER S +311A;ID # BOPOMOFO LETTER A +311B;ID # BOPOMOFO LETTER O +311C;ID # BOPOMOFO LETTER E +311D;ID # BOPOMOFO LETTER EH +311E;ID # BOPOMOFO LETTER AI +311F;ID # BOPOMOFO LETTER EI +3120;ID # BOPOMOFO LETTER AU +3121;ID # BOPOMOFO LETTER OU +3122;ID # BOPOMOFO LETTER AN +3123;ID # BOPOMOFO LETTER EN +3124;ID # BOPOMOFO LETTER ANG +3125;ID # BOPOMOFO LETTER ENG +3126;ID # BOPOMOFO LETTER ER +3127;ID # BOPOMOFO LETTER I +3128;ID # BOPOMOFO LETTER U +3129;ID # BOPOMOFO LETTER IU +312A;ID # BOPOMOFO LETTER V +312B;ID # BOPOMOFO LETTER NG +312C;ID # BOPOMOFO LETTER GN +3131;ID # HANGUL LETTER KIYEOK +3132;ID # HANGUL LETTER SSANGKIYEOK +3133;ID # HANGUL LETTER KIYEOK-SIOS +3134;ID # HANGUL LETTER NIEUN +3135;ID # HANGUL LETTER NIEUN-CIEUC +3136;ID # HANGUL LETTER NIEUN-HIEUH +3137;ID # HANGUL LETTER TIKEUT +3138;ID # HANGUL LETTER SSANGTIKEUT +3139;ID # HANGUL LETTER RIEUL +313A;ID # HANGUL LETTER RIEUL-KIYEOK +313B;ID # HANGUL LETTER RIEUL-MIEUM +313C;ID # HANGUL LETTER RIEUL-PIEUP +313D;ID # HANGUL LETTER RIEUL-SIOS +313E;ID # HANGUL LETTER RIEUL-THIEUTH +313F;ID # HANGUL LETTER RIEUL-PHIEUPH +3140;ID # HANGUL LETTER RIEUL-HIEUH +3141;ID # HANGUL LETTER MIEUM +3142;ID # HANGUL LETTER PIEUP +3143;ID # HANGUL LETTER SSANGPIEUP +3144;ID # HANGUL LETTER PIEUP-SIOS +3145;ID # HANGUL LETTER SIOS +3146;ID # HANGUL LETTER SSANGSIOS +3147;ID # HANGUL LETTER IEUNG +3148;ID # HANGUL LETTER CIEUC +3149;ID # HANGUL LETTER SSANGCIEUC +314A;ID # HANGUL LETTER CHIEUCH +314B;ID # HANGUL LETTER KHIEUKH +314C;ID # HANGUL LETTER THIEUTH +314D;ID # HANGUL LETTER PHIEUPH +314E;ID # HANGUL LETTER HIEUH +314F;ID # HANGUL LETTER A +3150;ID # HANGUL LETTER AE +3151;ID # HANGUL LETTER YA +3152;ID # HANGUL LETTER YAE +3153;ID # HANGUL LETTER EO +3154;ID # HANGUL LETTER E +3155;ID # HANGUL LETTER YEO +3156;ID # HANGUL LETTER YE +3157;ID # HANGUL LETTER O +3158;ID # HANGUL LETTER WA +3159;ID # HANGUL LETTER WAE +315A;ID # HANGUL LETTER OE +315B;ID # HANGUL LETTER YO +315C;ID # HANGUL LETTER U +315D;ID # HANGUL LETTER WEO +315E;ID # HANGUL LETTER WE +315F;ID # HANGUL LETTER WI +3160;ID # HANGUL LETTER YU +3161;ID # HANGUL LETTER EU +3162;ID # HANGUL LETTER YI +3163;ID # HANGUL LETTER I +3164;ID # HANGUL FILLER +3165;ID # HANGUL LETTER SSANGNIEUN +3166;ID # HANGUL LETTER NIEUN-TIKEUT +3167;ID # HANGUL LETTER NIEUN-SIOS +3168;ID # HANGUL LETTER NIEUN-PANSIOS +3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS +316A;ID # HANGUL LETTER RIEUL-TIKEUT +316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS +316C;ID # HANGUL LETTER RIEUL-PANSIOS +316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH +316E;ID # HANGUL LETTER MIEUM-PIEUP +316F;ID # HANGUL LETTER MIEUM-SIOS +3170;ID # HANGUL LETTER MIEUM-PANSIOS +3171;ID # HANGUL LETTER KAPYEOUNMIEUM +3172;ID # HANGUL LETTER PIEUP-KIYEOK +3173;ID # HANGUL LETTER PIEUP-TIKEUT +3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK +3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT +3176;ID # HANGUL LETTER PIEUP-CIEUC +3177;ID # HANGUL LETTER PIEUP-THIEUTH +3178;ID # HANGUL LETTER KAPYEOUNPIEUP +3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP +317A;ID # HANGUL LETTER SIOS-KIYEOK +317B;ID # HANGUL LETTER SIOS-NIEUN +317C;ID # HANGUL LETTER SIOS-TIKEUT +317D;ID # HANGUL LETTER SIOS-PIEUP +317E;ID # HANGUL LETTER SIOS-CIEUC +317F;ID # HANGUL LETTER PANSIOS +3180;ID # HANGUL LETTER SSANGIEUNG +3181;ID # HANGUL LETTER YESIEUNG +3182;ID # HANGUL LETTER YESIEUNG-SIOS +3183;ID # HANGUL LETTER YESIEUNG-PANSIOS +3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH +3185;ID # HANGUL LETTER SSANGHIEUH +3186;ID # HANGUL LETTER YEORINHIEUH +3187;ID # HANGUL LETTER YO-YA +3188;ID # HANGUL LETTER YO-YAE +3189;ID # HANGUL LETTER YO-I +318A;ID # HANGUL LETTER YU-YEO +318B;ID # HANGUL LETTER YU-YE +318C;ID # HANGUL LETTER YU-I +318D;ID # HANGUL LETTER ARAEA +318E;ID # HANGUL LETTER ARAEAE +3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK +3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK +3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK +3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK +3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK +3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK +3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK +3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK +3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK +3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK +319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK +319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK +319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK +319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK +319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK +319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK +31A0;ID # BOPOMOFO LETTER BU +31A1;ID # BOPOMOFO LETTER ZI +31A2;ID # BOPOMOFO LETTER JI +31A3;ID # BOPOMOFO LETTER GU +31A4;ID # BOPOMOFO LETTER EE +31A5;ID # BOPOMOFO LETTER ENN +31A6;ID # BOPOMOFO LETTER OO +31A7;ID # BOPOMOFO LETTER ONN +31A8;ID # BOPOMOFO LETTER IR +31A9;ID # BOPOMOFO LETTER ANN +31AA;ID # BOPOMOFO LETTER INN +31AB;ID # BOPOMOFO LETTER UNN +31AC;ID # BOPOMOFO LETTER IM +31AD;ID # BOPOMOFO LETTER NGG +31AE;ID # BOPOMOFO LETTER AINN +31AF;ID # BOPOMOFO LETTER AUNN +31B0;ID # BOPOMOFO LETTER AM +31B1;ID # BOPOMOFO LETTER OM +31B2;ID # BOPOMOFO LETTER ONG +31B3;ID # BOPOMOFO LETTER INNN +31B4;ID # BOPOMOFO FINAL LETTER P +31B5;ID # BOPOMOFO FINAL LETTER T +31B6;ID # BOPOMOFO FINAL LETTER K +31B7;ID # BOPOMOFO FINAL LETTER H +31F0;NS # KATAKANA LETTER SMALL KU +31F1;NS # KATAKANA LETTER SMALL SI +31F2;NS # KATAKANA LETTER SMALL SU +31F3;NS # KATAKANA LETTER SMALL TO +31F4;NS # KATAKANA LETTER SMALL NU +31F5;NS # KATAKANA LETTER SMALL HA +31F6;NS # KATAKANA LETTER SMALL HI +31F7;NS # KATAKANA LETTER SMALL HU +31F8;NS # KATAKANA LETTER SMALL HE +31F9;NS # KATAKANA LETTER SMALL HO +31FA;NS # KATAKANA LETTER SMALL MU +31FB;NS # KATAKANA LETTER SMALL RA +31FC;NS # KATAKANA LETTER SMALL RI +31FD;NS # KATAKANA LETTER SMALL RU +31FE;NS # KATAKANA LETTER SMALL RE +31FF;NS # KATAKANA LETTER SMALL RO +3200;ID # PARENTHESIZED HANGUL KIYEOK +3201;ID # PARENTHESIZED HANGUL NIEUN +3202;ID # PARENTHESIZED HANGUL TIKEUT +3203;ID # PARENTHESIZED HANGUL RIEUL +3204;ID # PARENTHESIZED HANGUL MIEUM +3205;ID # PARENTHESIZED HANGUL PIEUP +3206;ID # PARENTHESIZED HANGUL SIOS +3207;ID # PARENTHESIZED HANGUL IEUNG +3208;ID # PARENTHESIZED HANGUL CIEUC +3209;ID # PARENTHESIZED HANGUL CHIEUCH +320A;ID # PARENTHESIZED HANGUL KHIEUKH +320B;ID # PARENTHESIZED HANGUL THIEUTH +320C;ID # PARENTHESIZED HANGUL PHIEUPH +320D;ID # PARENTHESIZED HANGUL HIEUH +320E;ID # PARENTHESIZED HANGUL KIYEOK A +320F;ID # PARENTHESIZED HANGUL NIEUN A +3210;ID # PARENTHESIZED HANGUL TIKEUT A +3211;ID # PARENTHESIZED HANGUL RIEUL A +3212;ID # PARENTHESIZED HANGUL MIEUM A +3213;ID # PARENTHESIZED HANGUL PIEUP A +3214;ID # PARENTHESIZED HANGUL SIOS A +3215;ID # PARENTHESIZED HANGUL IEUNG A +3216;ID # PARENTHESIZED HANGUL CIEUC A +3217;ID # PARENTHESIZED HANGUL CHIEUCH A +3218;ID # PARENTHESIZED HANGUL KHIEUKH A +3219;ID # PARENTHESIZED HANGUL THIEUTH A +321A;ID # PARENTHESIZED HANGUL PHIEUPH A +321B;ID # PARENTHESIZED HANGUL HIEUH A +321C;ID # PARENTHESIZED HANGUL CIEUC U +3220;ID # PARENTHESIZED IDEOGRAPH ONE +3221;ID # PARENTHESIZED IDEOGRAPH TWO +3222;ID # PARENTHESIZED IDEOGRAPH THREE +3223;ID # PARENTHESIZED IDEOGRAPH FOUR +3224;ID # PARENTHESIZED IDEOGRAPH FIVE +3225;ID # PARENTHESIZED IDEOGRAPH SIX +3226;ID # PARENTHESIZED IDEOGRAPH SEVEN +3227;ID # PARENTHESIZED IDEOGRAPH EIGHT +3228;ID # PARENTHESIZED IDEOGRAPH NINE +3229;ID # PARENTHESIZED IDEOGRAPH TEN +322A;ID # PARENTHESIZED IDEOGRAPH MOON +322B;ID # PARENTHESIZED IDEOGRAPH FIRE +322C;ID # PARENTHESIZED IDEOGRAPH WATER +322D;ID # PARENTHESIZED IDEOGRAPH WOOD +322E;ID # PARENTHESIZED IDEOGRAPH METAL +322F;ID # PARENTHESIZED IDEOGRAPH EARTH +3230;ID # PARENTHESIZED IDEOGRAPH SUN +3231;ID # PARENTHESIZED IDEOGRAPH STOCK +3232;ID # PARENTHESIZED IDEOGRAPH HAVE +3233;ID # PARENTHESIZED IDEOGRAPH SOCIETY +3234;ID # PARENTHESIZED IDEOGRAPH NAME +3235;ID # PARENTHESIZED IDEOGRAPH SPECIAL +3236;ID # PARENTHESIZED IDEOGRAPH FINANCIAL +3237;ID # PARENTHESIZED IDEOGRAPH CONGRATULATION +3238;ID # PARENTHESIZED IDEOGRAPH LABOR +3239;ID # PARENTHESIZED IDEOGRAPH REPRESENT +323A;ID # PARENTHESIZED IDEOGRAPH CALL +323B;ID # PARENTHESIZED IDEOGRAPH STUDY +323C;ID # PARENTHESIZED IDEOGRAPH SUPERVISE +323D;ID # PARENTHESIZED IDEOGRAPH ENTERPRISE +323E;ID # PARENTHESIZED IDEOGRAPH RESOURCE +323F;ID # PARENTHESIZED IDEOGRAPH ALLIANCE +3240;ID # PARENTHESIZED IDEOGRAPH FESTIVAL +3241;ID # PARENTHESIZED IDEOGRAPH REST +3242;ID # PARENTHESIZED IDEOGRAPH SELF +3243;ID # PARENTHESIZED IDEOGRAPH REACH +3251;ID # CIRCLED NUMBER TWENTY ONE +3252;ID # CIRCLED NUMBER TWENTY TWO +3253;ID # CIRCLED NUMBER TWENTY THREE +3254;ID # CIRCLED NUMBER TWENTY FOUR +3255;ID # CIRCLED NUMBER TWENTY FIVE +3256;ID # CIRCLED NUMBER TWENTY SIX +3257;ID # CIRCLED NUMBER TWENTY SEVEN +3258;ID # CIRCLED NUMBER TWENTY EIGHT +3259;ID # CIRCLED NUMBER TWENTY NINE +325A;ID # CIRCLED NUMBER THIRTY +325B;ID # CIRCLED NUMBER THIRTY ONE +325C;ID # CIRCLED NUMBER THIRTY TWO +325D;ID # CIRCLED NUMBER THIRTY THREE +325E;ID # CIRCLED NUMBER THIRTY FOUR +325F;ID # CIRCLED NUMBER THIRTY FIVE +3260;ID # CIRCLED HANGUL KIYEOK +3261;ID # CIRCLED HANGUL NIEUN +3262;ID # CIRCLED HANGUL TIKEUT +3263;ID # CIRCLED HANGUL RIEUL +3264;ID # CIRCLED HANGUL MIEUM +3265;ID # CIRCLED HANGUL PIEUP +3266;ID # CIRCLED HANGUL SIOS +3267;ID # CIRCLED HANGUL IEUNG +3268;ID # CIRCLED HANGUL CIEUC +3269;ID # CIRCLED HANGUL CHIEUCH +326A;ID # CIRCLED HANGUL KHIEUKH +326B;ID # CIRCLED HANGUL THIEUTH +326C;ID # CIRCLED HANGUL PHIEUPH +326D;ID # CIRCLED HANGUL HIEUH +326E;ID # CIRCLED HANGUL KIYEOK A +326F;ID # CIRCLED HANGUL NIEUN A +3270;ID # CIRCLED HANGUL TIKEUT A +3271;ID # CIRCLED HANGUL RIEUL A +3272;ID # CIRCLED HANGUL MIEUM A +3273;ID # CIRCLED HANGUL PIEUP A +3274;ID # CIRCLED HANGUL SIOS A +3275;ID # CIRCLED HANGUL IEUNG A +3276;ID # CIRCLED HANGUL CIEUC A +3277;ID # CIRCLED HANGUL CHIEUCH A +3278;ID # CIRCLED HANGUL KHIEUKH A +3279;ID # CIRCLED HANGUL THIEUTH A +327A;ID # CIRCLED HANGUL PHIEUPH A +327B;ID # CIRCLED HANGUL HIEUH A +327F;ID # KOREAN STANDARD SYMBOL +3280;ID # CIRCLED IDEOGRAPH ONE +3281;ID # CIRCLED IDEOGRAPH TWO +3282;ID # CIRCLED IDEOGRAPH THREE +3283;ID # CIRCLED IDEOGRAPH FOUR +3284;ID # CIRCLED IDEOGRAPH FIVE +3285;ID # CIRCLED IDEOGRAPH SIX +3286;ID # CIRCLED IDEOGRAPH SEVEN +3287;ID # CIRCLED IDEOGRAPH EIGHT +3288;ID # CIRCLED IDEOGRAPH NINE +3289;ID # CIRCLED IDEOGRAPH TEN +328A;ID # CIRCLED IDEOGRAPH MOON +328B;ID # CIRCLED IDEOGRAPH FIRE +328C;ID # CIRCLED IDEOGRAPH WATER +328D;ID # CIRCLED IDEOGRAPH WOOD +328E;ID # CIRCLED IDEOGRAPH METAL +328F;ID # CIRCLED IDEOGRAPH EARTH +3290;ID # CIRCLED IDEOGRAPH SUN +3291;ID # CIRCLED IDEOGRAPH STOCK +3292;ID # CIRCLED IDEOGRAPH HAVE +3293;ID # CIRCLED IDEOGRAPH SOCIETY +3294;ID # CIRCLED IDEOGRAPH NAME +3295;ID # CIRCLED IDEOGRAPH SPECIAL +3296;ID # CIRCLED IDEOGRAPH FINANCIAL +3297;ID # CIRCLED IDEOGRAPH CONGRATULATION +3298;ID # CIRCLED IDEOGRAPH LABOR +3299;ID # CIRCLED IDEOGRAPH SECRET +329A;ID # CIRCLED IDEOGRAPH MALE +329B;ID # CIRCLED IDEOGRAPH FEMALE +329C;ID # CIRCLED IDEOGRAPH SUITABLE +329D;ID # CIRCLED IDEOGRAPH EXCELLENT +329E;ID # CIRCLED IDEOGRAPH PRINT +329F;ID # CIRCLED IDEOGRAPH ATTENTION +32A0;ID # CIRCLED IDEOGRAPH ITEM +32A1;ID # CIRCLED IDEOGRAPH REST +32A2;ID # CIRCLED IDEOGRAPH COPY +32A3;ID # CIRCLED IDEOGRAPH CORRECT +32A4;ID # CIRCLED IDEOGRAPH HIGH +32A5;ID # CIRCLED IDEOGRAPH CENTRE +32A6;ID # CIRCLED IDEOGRAPH LOW +32A7;ID # CIRCLED IDEOGRAPH LEFT +32A8;ID # CIRCLED IDEOGRAPH RIGHT +32A9;ID # CIRCLED IDEOGRAPH MEDICINE +32AA;ID # CIRCLED IDEOGRAPH RELIGION +32AB;ID # CIRCLED IDEOGRAPH STUDY +32AC;ID # CIRCLED IDEOGRAPH SUPERVISE +32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE +32AE;ID # CIRCLED IDEOGRAPH RESOURCE +32AF;ID # CIRCLED IDEOGRAPH ALLIANCE +32B0;ID # CIRCLED IDEOGRAPH NIGHT +32B1;ID # CIRCLED NUMBER THIRTY SIX +32B2;ID # CIRCLED NUMBER THIRTY SEVEN +32B3;ID # CIRCLED NUMBER THIRTY EIGHT +32B4;ID # CIRCLED NUMBER THIRTY NINE +32B5;ID # CIRCLED NUMBER FORTY +32B6;ID # CIRCLED NUMBER FORTY ONE +32B7;ID # CIRCLED NUMBER FORTY TWO +32B8;ID # CIRCLED NUMBER FORTY THREE +32B9;ID # CIRCLED NUMBER FORTY FOUR +32BA;ID # CIRCLED NUMBER FORTY FIVE +32BB;ID # CIRCLED NUMBER FORTY SIX +32BC;ID # CIRCLED NUMBER FORTY SEVEN +32BD;ID # CIRCLED NUMBER FORTY EIGHT +32BE;ID # CIRCLED NUMBER FORTY NINE +32BF;ID # CIRCLED NUMBER FIFTY +32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY +32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY +32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH +32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL +32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY +32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE +32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY +32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST +32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER +32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER +32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER +32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER +32D0;ID # CIRCLED KATAKANA A +32D1;ID # CIRCLED KATAKANA I +32D2;ID # CIRCLED KATAKANA U +32D3;ID # CIRCLED KATAKANA E +32D4;ID # CIRCLED KATAKANA O +32D5;ID # CIRCLED KATAKANA KA +32D6;ID # CIRCLED KATAKANA KI +32D7;ID # CIRCLED KATAKANA KU +32D8;ID # CIRCLED KATAKANA KE +32D9;ID # CIRCLED KATAKANA KO +32DA;ID # CIRCLED KATAKANA SA +32DB;ID # CIRCLED KATAKANA SI +32DC;ID # CIRCLED KATAKANA SU +32DD;ID # CIRCLED KATAKANA SE +32DE;ID # CIRCLED KATAKANA SO +32DF;ID # CIRCLED KATAKANA TA +32E0;ID # CIRCLED KATAKANA TI +32E1;ID # CIRCLED KATAKANA TU +32E2;ID # CIRCLED KATAKANA TE +32E3;ID # CIRCLED KATAKANA TO +32E4;ID # CIRCLED KATAKANA NA +32E5;ID # CIRCLED KATAKANA NI +32E6;ID # CIRCLED KATAKANA NU +32E7;ID # CIRCLED KATAKANA NE +32E8;ID # CIRCLED KATAKANA NO +32E9;ID # CIRCLED KATAKANA HA +32EA;ID # CIRCLED KATAKANA HI +32EB;ID # CIRCLED KATAKANA HU +32EC;ID # CIRCLED KATAKANA HE +32ED;ID # CIRCLED KATAKANA HO +32EE;ID # CIRCLED KATAKANA MA +32EF;ID # CIRCLED KATAKANA MI +32F0;ID # CIRCLED KATAKANA MU +32F1;ID # CIRCLED KATAKANA ME +32F2;ID # CIRCLED KATAKANA MO +32F3;ID # CIRCLED KATAKANA YA +32F4;ID # CIRCLED KATAKANA YU +32F5;ID # CIRCLED KATAKANA YO +32F6;ID # CIRCLED KATAKANA RA +32F7;ID # CIRCLED KATAKANA RI +32F8;ID # CIRCLED KATAKANA RU +32F9;ID # CIRCLED KATAKANA RE +32FA;ID # CIRCLED KATAKANA RO +32FB;ID # CIRCLED KATAKANA WA +32FC;ID # CIRCLED KATAKANA WI +32FD;ID # CIRCLED KATAKANA WE +32FE;ID # CIRCLED KATAKANA WO +3300;ID # SQUARE APAATO +3301;ID # SQUARE ARUHUA +3302;ID # SQUARE ANPEA +3303;ID # SQUARE AARU +3304;ID # SQUARE ININGU +3305;ID # SQUARE INTI +3306;ID # SQUARE UON +3307;ID # SQUARE ESUKUUDO +3308;ID # SQUARE EEKAA +3309;ID # SQUARE ONSU +330A;ID # SQUARE OOMU +330B;ID # SQUARE KAIRI +330C;ID # SQUARE KARATTO +330D;ID # SQUARE KARORII +330E;ID # SQUARE GARON +330F;ID # SQUARE GANMA +3310;ID # SQUARE GIGA +3311;ID # SQUARE GINII +3312;ID # SQUARE KYURII +3313;ID # SQUARE GIRUDAA +3314;ID # SQUARE KIRO +3315;ID # SQUARE KIROGURAMU +3316;ID # SQUARE KIROMEETORU +3317;ID # SQUARE KIROWATTO +3318;ID # SQUARE GURAMU +3319;ID # SQUARE GURAMUTON +331A;ID # SQUARE KURUZEIRO +331B;ID # SQUARE KUROONE +331C;ID # SQUARE KEESU +331D;ID # SQUARE KORUNA +331E;ID # SQUARE KOOPO +331F;ID # SQUARE SAIKURU +3320;ID # SQUARE SANTIIMU +3321;ID # SQUARE SIRINGU +3322;ID # SQUARE SENTI +3323;ID # SQUARE SENTO +3324;ID # SQUARE DAASU +3325;ID # SQUARE DESI +3326;ID # SQUARE DORU +3327;ID # SQUARE TON +3328;ID # SQUARE NANO +3329;ID # SQUARE NOTTO +332A;ID # SQUARE HAITU +332B;ID # SQUARE PAASENTO +332C;ID # SQUARE PAATU +332D;ID # SQUARE BAARERU +332E;ID # SQUARE PIASUTORU +332F;ID # SQUARE PIKURU +3330;ID # SQUARE PIKO +3331;ID # SQUARE BIRU +3332;ID # SQUARE HUARADDO +3333;ID # SQUARE HUIITO +3334;ID # SQUARE BUSSYERU +3335;ID # SQUARE HURAN +3336;ID # SQUARE HEKUTAARU +3337;ID # SQUARE PESO +3338;ID # SQUARE PENIHI +3339;ID # SQUARE HERUTU +333A;ID # SQUARE PENSU +333B;ID # SQUARE PEEZI +333C;ID # SQUARE BEETA +333D;ID # SQUARE POINTO +333E;ID # SQUARE BORUTO +333F;ID # SQUARE HON +3340;ID # SQUARE PONDO +3341;ID # SQUARE HOORU +3342;ID # SQUARE HOON +3343;ID # SQUARE MAIKURO +3344;ID # SQUARE MAIRU +3345;ID # SQUARE MAHHA +3346;ID # SQUARE MARUKU +3347;ID # SQUARE MANSYON +3348;ID # SQUARE MIKURON +3349;ID # SQUARE MIRI +334A;ID # SQUARE MIRIBAARU +334B;ID # SQUARE MEGA +334C;ID # SQUARE MEGATON +334D;ID # SQUARE MEETORU +334E;ID # SQUARE YAADO +334F;ID # SQUARE YAARU +3350;ID # SQUARE YUAN +3351;ID # SQUARE RITTORU +3352;ID # SQUARE RIRA +3353;ID # SQUARE RUPII +3354;ID # SQUARE RUUBURU +3355;ID # SQUARE REMU +3356;ID # SQUARE RENTOGEN +3357;ID # SQUARE WATTO +3358;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO +3359;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE +335A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO +335B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE +335C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR +335D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE +335E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX +335F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN +3360;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT +3361;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE +3362;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN +3363;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN +3364;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE +3365;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN +3366;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN +3367;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN +3368;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN +3369;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN +336A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN +336B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN +336C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY +336D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE +336E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO +336F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE +3370;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR +3371;ID # SQUARE HPA +3372;ID # SQUARE DA +3373;ID # SQUARE AU +3374;ID # SQUARE BAR +3375;ID # SQUARE OV +3376;ID # SQUARE PC +337B;ID # SQUARE ERA NAME HEISEI +337C;ID # SQUARE ERA NAME SYOUWA +337D;ID # SQUARE ERA NAME TAISYOU +337E;ID # SQUARE ERA NAME MEIZI +337F;ID # SQUARE CORPORATION +3380;ID # SQUARE PA AMPS +3381;ID # SQUARE NA +3382;ID # SQUARE MU A +3383;ID # SQUARE MA +3384;ID # SQUARE KA +3385;ID # SQUARE KB +3386;ID # SQUARE MB +3387;ID # SQUARE GB +3388;ID # SQUARE CAL +3389;ID # SQUARE KCAL +338A;ID # SQUARE PF +338B;ID # SQUARE NF +338C;ID # SQUARE MU F +338D;ID # SQUARE MU G +338E;ID # SQUARE MG +338F;ID # SQUARE KG +3390;ID # SQUARE HZ +3391;ID # SQUARE KHZ +3392;ID # SQUARE MHZ +3393;ID # SQUARE GHZ +3394;ID # SQUARE THZ +3395;ID # SQUARE MU L +3396;ID # SQUARE ML +3397;ID # SQUARE DL +3398;ID # SQUARE KL +3399;ID # SQUARE FM +339A;ID # SQUARE NM +339B;ID # SQUARE MU M +339C;ID # SQUARE MM +339D;ID # SQUARE CM +339E;ID # SQUARE KM +339F;ID # SQUARE MM SQUARED +33A0;ID # SQUARE CM SQUARED +33A1;ID # SQUARE M SQUARED +33A2;ID # SQUARE KM SQUARED +33A3;ID # SQUARE MM CUBED +33A4;ID # SQUARE CM CUBED +33A5;ID # SQUARE M CUBED +33A6;ID # SQUARE KM CUBED +33A7;ID # SQUARE M OVER S +33A8;ID # SQUARE M OVER S SQUARED +33A9;ID # SQUARE PA +33AA;ID # SQUARE KPA +33AB;ID # SQUARE MPA +33AC;ID # SQUARE GPA +33AD;ID # SQUARE RAD +33AE;ID # SQUARE RAD OVER S +33AF;ID # SQUARE RAD OVER S SQUARED +33B0;ID # SQUARE PS +33B1;ID # SQUARE NS +33B2;ID # SQUARE MU S +33B3;ID # SQUARE MS +33B4;ID # SQUARE PV +33B5;ID # SQUARE NV +33B6;ID # SQUARE MU V +33B7;ID # SQUARE MV +33B8;ID # SQUARE KV +33B9;ID # SQUARE MV MEGA +33BA;ID # SQUARE PW +33BB;ID # SQUARE NW +33BC;ID # SQUARE MU W +33BD;ID # SQUARE MW +33BE;ID # SQUARE KW +33BF;ID # SQUARE MW MEGA +33C0;ID # SQUARE K OHM +33C1;ID # SQUARE M OHM +33C2;ID # SQUARE AM +33C3;ID # SQUARE BQ +33C4;ID # SQUARE CC +33C5;ID # SQUARE CD +33C6;ID # SQUARE C OVER KG +33C7;ID # SQUARE CO +33C8;ID # SQUARE DB +33C9;ID # SQUARE GY +33CA;ID # SQUARE HA +33CB;ID # SQUARE HP +33CC;ID # SQUARE IN +33CD;ID # SQUARE KK +33CE;ID # SQUARE KM CAPITAL +33CF;ID # SQUARE KT +33D0;ID # SQUARE LM +33D1;ID # SQUARE LN +33D2;ID # SQUARE LOG +33D3;ID # SQUARE LX +33D4;ID # SQUARE MB SMALL +33D5;ID # SQUARE MIL +33D6;ID # SQUARE MOL +33D7;ID # SQUARE PH +33D8;ID # SQUARE PM +33D9;ID # SQUARE PPM +33DA;ID # SQUARE PR +33DB;ID # SQUARE SR +33DC;ID # SQUARE SV +33DD;ID # SQUARE WB +33E0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE +33E1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO +33E2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE +33E3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR +33E4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE +33E5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX +33E6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN +33E7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT +33E8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE +33E9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN +33EA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN +33EB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE +33EC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN +33ED;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN +33EE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN +33EF;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN +33F0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN +33F1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN +33F2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN +33F3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY +33F4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE +33F5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO +33F6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE +33F7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR +33F8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE +33F9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX +33FA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN +33FB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT +33FC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE +33FD;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY +33FE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE +3400..4DB5;ID # .. +4E00..9FA5;ID # .. +A000;ID # YI SYLLABLE IT +A001;ID # YI SYLLABLE IX +A002;ID # YI SYLLABLE I +A003;ID # YI SYLLABLE IP +A004;ID # YI SYLLABLE IET +A005;ID # YI SYLLABLE IEX +A006;ID # YI SYLLABLE IE +A007;ID # YI SYLLABLE IEP +A008;ID # YI SYLLABLE AT +A009;ID # YI SYLLABLE AX +A00A;ID # YI SYLLABLE A +A00B;ID # YI SYLLABLE AP +A00C;ID # YI SYLLABLE UOX +A00D;ID # YI SYLLABLE UO +A00E;ID # YI SYLLABLE UOP +A00F;ID # YI SYLLABLE OT +A010;ID # YI SYLLABLE OX +A011;ID # YI SYLLABLE O +A012;ID # YI SYLLABLE OP +A013;ID # YI SYLLABLE EX +A014;ID # YI SYLLABLE E +A015;ID # YI SYLLABLE WU +A016;ID # YI SYLLABLE BIT +A017;ID # YI SYLLABLE BIX +A018;ID # YI SYLLABLE BI +A019;ID # YI SYLLABLE BIP +A01A;ID # YI SYLLABLE BIET +A01B;ID # YI SYLLABLE BIEX +A01C;ID # YI SYLLABLE BIE +A01D;ID # YI SYLLABLE BIEP +A01E;ID # YI SYLLABLE BAT +A01F;ID # YI SYLLABLE BAX +A020;ID # YI SYLLABLE BA +A021;ID # YI SYLLABLE BAP +A022;ID # YI SYLLABLE BUOX +A023;ID # YI SYLLABLE BUO +A024;ID # YI SYLLABLE BUOP +A025;ID # YI SYLLABLE BOT +A026;ID # YI SYLLABLE BOX +A027;ID # YI SYLLABLE BO +A028;ID # YI SYLLABLE BOP +A029;ID # YI SYLLABLE BEX +A02A;ID # YI SYLLABLE BE +A02B;ID # YI SYLLABLE BEP +A02C;ID # YI SYLLABLE BUT +A02D;ID # YI SYLLABLE BUX +A02E;ID # YI SYLLABLE BU +A02F;ID # YI SYLLABLE BUP +A030;ID # YI SYLLABLE BURX +A031;ID # YI SYLLABLE BUR +A032;ID # YI SYLLABLE BYT +A033;ID # YI SYLLABLE BYX +A034;ID # YI SYLLABLE BY +A035;ID # YI SYLLABLE BYP +A036;ID # YI SYLLABLE BYRX +A037;ID # YI SYLLABLE BYR +A038;ID # YI SYLLABLE PIT +A039;ID # YI SYLLABLE PIX +A03A;ID # YI SYLLABLE PI +A03B;ID # YI SYLLABLE PIP +A03C;ID # YI SYLLABLE PIEX +A03D;ID # YI SYLLABLE PIE +A03E;ID # YI SYLLABLE PIEP +A03F;ID # YI SYLLABLE PAT +A040;ID # YI SYLLABLE PAX +A041;ID # YI SYLLABLE PA +A042;ID # YI SYLLABLE PAP +A043;ID # YI SYLLABLE PUOX +A044;ID # YI SYLLABLE PUO +A045;ID # YI SYLLABLE PUOP +A046;ID # YI SYLLABLE POT +A047;ID # YI SYLLABLE POX +A048;ID # YI SYLLABLE PO +A049;ID # YI SYLLABLE POP +A04A;ID # YI SYLLABLE PUT +A04B;ID # YI SYLLABLE PUX +A04C;ID # YI SYLLABLE PU +A04D;ID # YI SYLLABLE PUP +A04E;ID # YI SYLLABLE PURX +A04F;ID # YI SYLLABLE PUR +A050;ID # YI SYLLABLE PYT +A051;ID # YI SYLLABLE PYX +A052;ID # YI SYLLABLE PY +A053;ID # YI SYLLABLE PYP +A054;ID # YI SYLLABLE PYRX +A055;ID # YI SYLLABLE PYR +A056;ID # YI SYLLABLE BBIT +A057;ID # YI SYLLABLE BBIX +A058;ID # YI SYLLABLE BBI +A059;ID # YI SYLLABLE BBIP +A05A;ID # YI SYLLABLE BBIET +A05B;ID # YI SYLLABLE BBIEX +A05C;ID # YI SYLLABLE BBIE +A05D;ID # YI SYLLABLE BBIEP +A05E;ID # YI SYLLABLE BBAT +A05F;ID # YI SYLLABLE BBAX +A060;ID # YI SYLLABLE BBA +A061;ID # YI SYLLABLE BBAP +A062;ID # YI SYLLABLE BBUOX +A063;ID # YI SYLLABLE BBUO +A064;ID # YI SYLLABLE BBUOP +A065;ID # YI SYLLABLE BBOT +A066;ID # YI SYLLABLE BBOX +A067;ID # YI SYLLABLE BBO +A068;ID # YI SYLLABLE BBOP +A069;ID # YI SYLLABLE BBEX +A06A;ID # YI SYLLABLE BBE +A06B;ID # YI SYLLABLE BBEP +A06C;ID # YI SYLLABLE BBUT +A06D;ID # YI SYLLABLE BBUX +A06E;ID # YI SYLLABLE BBU +A06F;ID # YI SYLLABLE BBUP +A070;ID # YI SYLLABLE BBURX +A071;ID # YI SYLLABLE BBUR +A072;ID # YI SYLLABLE BBYT +A073;ID # YI SYLLABLE BBYX +A074;ID # YI SYLLABLE BBY +A075;ID # YI SYLLABLE BBYP +A076;ID # YI SYLLABLE NBIT +A077;ID # YI SYLLABLE NBIX +A078;ID # YI SYLLABLE NBI +A079;ID # YI SYLLABLE NBIP +A07A;ID # YI SYLLABLE NBIEX +A07B;ID # YI SYLLABLE NBIE +A07C;ID # YI SYLLABLE NBIEP +A07D;ID # YI SYLLABLE NBAT +A07E;ID # YI SYLLABLE NBAX +A07F;ID # YI SYLLABLE NBA +A080;ID # YI SYLLABLE NBAP +A081;ID # YI SYLLABLE NBOT +A082;ID # YI SYLLABLE NBOX +A083;ID # YI SYLLABLE NBO +A084;ID # YI SYLLABLE NBOP +A085;ID # YI SYLLABLE NBUT +A086;ID # YI SYLLABLE NBUX +A087;ID # YI SYLLABLE NBU +A088;ID # YI SYLLABLE NBUP +A089;ID # YI SYLLABLE NBURX +A08A;ID # YI SYLLABLE NBUR +A08B;ID # YI SYLLABLE NBYT +A08C;ID # YI SYLLABLE NBYX +A08D;ID # YI SYLLABLE NBY +A08E;ID # YI SYLLABLE NBYP +A08F;ID # YI SYLLABLE NBYRX +A090;ID # YI SYLLABLE NBYR +A091;ID # YI SYLLABLE HMIT +A092;ID # YI SYLLABLE HMIX +A093;ID # YI SYLLABLE HMI +A094;ID # YI SYLLABLE HMIP +A095;ID # YI SYLLABLE HMIEX +A096;ID # YI SYLLABLE HMIE +A097;ID # YI SYLLABLE HMIEP +A098;ID # YI SYLLABLE HMAT +A099;ID # YI SYLLABLE HMAX +A09A;ID # YI SYLLABLE HMA +A09B;ID # YI SYLLABLE HMAP +A09C;ID # YI SYLLABLE HMUOX +A09D;ID # YI SYLLABLE HMUO +A09E;ID # YI SYLLABLE HMUOP +A09F;ID # YI SYLLABLE HMOT +A0A0;ID # YI SYLLABLE HMOX +A0A1;ID # YI SYLLABLE HMO +A0A2;ID # YI SYLLABLE HMOP +A0A3;ID # YI SYLLABLE HMUT +A0A4;ID # YI SYLLABLE HMUX +A0A5;ID # YI SYLLABLE HMU +A0A6;ID # YI SYLLABLE HMUP +A0A7;ID # YI SYLLABLE HMURX +A0A8;ID # YI SYLLABLE HMUR +A0A9;ID # YI SYLLABLE HMYX +A0AA;ID # YI SYLLABLE HMY +A0AB;ID # YI SYLLABLE HMYP +A0AC;ID # YI SYLLABLE HMYRX +A0AD;ID # YI SYLLABLE HMYR +A0AE;ID # YI SYLLABLE MIT +A0AF;ID # YI SYLLABLE MIX +A0B0;ID # YI SYLLABLE MI +A0B1;ID # YI SYLLABLE MIP +A0B2;ID # YI SYLLABLE MIEX +A0B3;ID # YI SYLLABLE MIE +A0B4;ID # YI SYLLABLE MIEP +A0B5;ID # YI SYLLABLE MAT +A0B6;ID # YI SYLLABLE MAX +A0B7;ID # YI SYLLABLE MA +A0B8;ID # YI SYLLABLE MAP +A0B9;ID # YI SYLLABLE MUOT +A0BA;ID # YI SYLLABLE MUOX +A0BB;ID # YI SYLLABLE MUO +A0BC;ID # YI SYLLABLE MUOP +A0BD;ID # YI SYLLABLE MOT +A0BE;ID # YI SYLLABLE MOX +A0BF;ID # YI SYLLABLE MO +A0C0;ID # YI SYLLABLE MOP +A0C1;ID # YI SYLLABLE MEX +A0C2;ID # YI SYLLABLE ME +A0C3;ID # YI SYLLABLE MUT +A0C4;ID # YI SYLLABLE MUX +A0C5;ID # YI SYLLABLE MU +A0C6;ID # YI SYLLABLE MUP +A0C7;ID # YI SYLLABLE MURX +A0C8;ID # YI SYLLABLE MUR +A0C9;ID # YI SYLLABLE MYT +A0CA;ID # YI SYLLABLE MYX +A0CB;ID # YI SYLLABLE MY +A0CC;ID # YI SYLLABLE MYP +A0CD;ID # YI SYLLABLE FIT +A0CE;ID # YI SYLLABLE FIX +A0CF;ID # YI SYLLABLE FI +A0D0;ID # YI SYLLABLE FIP +A0D1;ID # YI SYLLABLE FAT +A0D2;ID # YI SYLLABLE FAX +A0D3;ID # YI SYLLABLE FA +A0D4;ID # YI SYLLABLE FAP +A0D5;ID # YI SYLLABLE FOX +A0D6;ID # YI SYLLABLE FO +A0D7;ID # YI SYLLABLE FOP +A0D8;ID # YI SYLLABLE FUT +A0D9;ID # YI SYLLABLE FUX +A0DA;ID # YI SYLLABLE FU +A0DB;ID # YI SYLLABLE FUP +A0DC;ID # YI SYLLABLE FURX +A0DD;ID # YI SYLLABLE FUR +A0DE;ID # YI SYLLABLE FYT +A0DF;ID # YI SYLLABLE FYX +A0E0;ID # YI SYLLABLE FY +A0E1;ID # YI SYLLABLE FYP +A0E2;ID # YI SYLLABLE VIT +A0E3;ID # YI SYLLABLE VIX +A0E4;ID # YI SYLLABLE VI +A0E5;ID # YI SYLLABLE VIP +A0E6;ID # YI SYLLABLE VIET +A0E7;ID # YI SYLLABLE VIEX +A0E8;ID # YI SYLLABLE VIE +A0E9;ID # YI SYLLABLE VIEP +A0EA;ID # YI SYLLABLE VAT +A0EB;ID # YI SYLLABLE VAX +A0EC;ID # YI SYLLABLE VA +A0ED;ID # YI SYLLABLE VAP +A0EE;ID # YI SYLLABLE VOT +A0EF;ID # YI SYLLABLE VOX +A0F0;ID # YI SYLLABLE VO +A0F1;ID # YI SYLLABLE VOP +A0F2;ID # YI SYLLABLE VEX +A0F3;ID # YI SYLLABLE VEP +A0F4;ID # YI SYLLABLE VUT +A0F5;ID # YI SYLLABLE VUX +A0F6;ID # YI SYLLABLE VU +A0F7;ID # YI SYLLABLE VUP +A0F8;ID # YI SYLLABLE VURX +A0F9;ID # YI SYLLABLE VUR +A0FA;ID # YI SYLLABLE VYT +A0FB;ID # YI SYLLABLE VYX +A0FC;ID # YI SYLLABLE VY +A0FD;ID # YI SYLLABLE VYP +A0FE;ID # YI SYLLABLE VYRX +A0FF;ID # YI SYLLABLE VYR +A100;ID # YI SYLLABLE DIT +A101;ID # YI SYLLABLE DIX +A102;ID # YI SYLLABLE DI +A103;ID # YI SYLLABLE DIP +A104;ID # YI SYLLABLE DIEX +A105;ID # YI SYLLABLE DIE +A106;ID # YI SYLLABLE DIEP +A107;ID # YI SYLLABLE DAT +A108;ID # YI SYLLABLE DAX +A109;ID # YI SYLLABLE DA +A10A;ID # YI SYLLABLE DAP +A10B;ID # YI SYLLABLE DUOX +A10C;ID # YI SYLLABLE DUO +A10D;ID # YI SYLLABLE DOT +A10E;ID # YI SYLLABLE DOX +A10F;ID # YI SYLLABLE DO +A110;ID # YI SYLLABLE DOP +A111;ID # YI SYLLABLE DEX +A112;ID # YI SYLLABLE DE +A113;ID # YI SYLLABLE DEP +A114;ID # YI SYLLABLE DUT +A115;ID # YI SYLLABLE DUX +A116;ID # YI SYLLABLE DU +A117;ID # YI SYLLABLE DUP +A118;ID # YI SYLLABLE DURX +A119;ID # YI SYLLABLE DUR +A11A;ID # YI SYLLABLE TIT +A11B;ID # YI SYLLABLE TIX +A11C;ID # YI SYLLABLE TI +A11D;ID # YI SYLLABLE TIP +A11E;ID # YI SYLLABLE TIEX +A11F;ID # YI SYLLABLE TIE +A120;ID # YI SYLLABLE TIEP +A121;ID # YI SYLLABLE TAT +A122;ID # YI SYLLABLE TAX +A123;ID # YI SYLLABLE TA +A124;ID # YI SYLLABLE TAP +A125;ID # YI SYLLABLE TUOT +A126;ID # YI SYLLABLE TUOX +A127;ID # YI SYLLABLE TUO +A128;ID # YI SYLLABLE TUOP +A129;ID # YI SYLLABLE TOT +A12A;ID # YI SYLLABLE TOX +A12B;ID # YI SYLLABLE TO +A12C;ID # YI SYLLABLE TOP +A12D;ID # YI SYLLABLE TEX +A12E;ID # YI SYLLABLE TE +A12F;ID # YI SYLLABLE TEP +A130;ID # YI SYLLABLE TUT +A131;ID # YI SYLLABLE TUX +A132;ID # YI SYLLABLE TU +A133;ID # YI SYLLABLE TUP +A134;ID # YI SYLLABLE TURX +A135;ID # YI SYLLABLE TUR +A136;ID # YI SYLLABLE DDIT +A137;ID # YI SYLLABLE DDIX +A138;ID # YI SYLLABLE DDI +A139;ID # YI SYLLABLE DDIP +A13A;ID # YI SYLLABLE DDIEX +A13B;ID # YI SYLLABLE DDIE +A13C;ID # YI SYLLABLE DDIEP +A13D;ID # YI SYLLABLE DDAT +A13E;ID # YI SYLLABLE DDAX +A13F;ID # YI SYLLABLE DDA +A140;ID # YI SYLLABLE DDAP +A141;ID # YI SYLLABLE DDUOX +A142;ID # YI SYLLABLE DDUO +A143;ID # YI SYLLABLE DDUOP +A144;ID # YI SYLLABLE DDOT +A145;ID # YI SYLLABLE DDOX +A146;ID # YI SYLLABLE DDO +A147;ID # YI SYLLABLE DDOP +A148;ID # YI SYLLABLE DDEX +A149;ID # YI SYLLABLE DDE +A14A;ID # YI SYLLABLE DDEP +A14B;ID # YI SYLLABLE DDUT +A14C;ID # YI SYLLABLE DDUX +A14D;ID # YI SYLLABLE DDU +A14E;ID # YI SYLLABLE DDUP +A14F;ID # YI SYLLABLE DDURX +A150;ID # YI SYLLABLE DDUR +A151;ID # YI SYLLABLE NDIT +A152;ID # YI SYLLABLE NDIX +A153;ID # YI SYLLABLE NDI +A154;ID # YI SYLLABLE NDIP +A155;ID # YI SYLLABLE NDIEX +A156;ID # YI SYLLABLE NDIE +A157;ID # YI SYLLABLE NDAT +A158;ID # YI SYLLABLE NDAX +A159;ID # YI SYLLABLE NDA +A15A;ID # YI SYLLABLE NDAP +A15B;ID # YI SYLLABLE NDOT +A15C;ID # YI SYLLABLE NDOX +A15D;ID # YI SYLLABLE NDO +A15E;ID # YI SYLLABLE NDOP +A15F;ID # YI SYLLABLE NDEX +A160;ID # YI SYLLABLE NDE +A161;ID # YI SYLLABLE NDEP +A162;ID # YI SYLLABLE NDUT +A163;ID # YI SYLLABLE NDUX +A164;ID # YI SYLLABLE NDU +A165;ID # YI SYLLABLE NDUP +A166;ID # YI SYLLABLE NDURX +A167;ID # YI SYLLABLE NDUR +A168;ID # YI SYLLABLE HNIT +A169;ID # YI SYLLABLE HNIX +A16A;ID # YI SYLLABLE HNI +A16B;ID # YI SYLLABLE HNIP +A16C;ID # YI SYLLABLE HNIET +A16D;ID # YI SYLLABLE HNIEX +A16E;ID # YI SYLLABLE HNIE +A16F;ID # YI SYLLABLE HNIEP +A170;ID # YI SYLLABLE HNAT +A171;ID # YI SYLLABLE HNAX +A172;ID # YI SYLLABLE HNA +A173;ID # YI SYLLABLE HNAP +A174;ID # YI SYLLABLE HNUOX +A175;ID # YI SYLLABLE HNUO +A176;ID # YI SYLLABLE HNOT +A177;ID # YI SYLLABLE HNOX +A178;ID # YI SYLLABLE HNOP +A179;ID # YI SYLLABLE HNEX +A17A;ID # YI SYLLABLE HNE +A17B;ID # YI SYLLABLE HNEP +A17C;ID # YI SYLLABLE HNUT +A17D;ID # YI SYLLABLE NIT +A17E;ID # YI SYLLABLE NIX +A17F;ID # YI SYLLABLE NI +A180;ID # YI SYLLABLE NIP +A181;ID # YI SYLLABLE NIEX +A182;ID # YI SYLLABLE NIE +A183;ID # YI SYLLABLE NIEP +A184;ID # YI SYLLABLE NAX +A185;ID # YI SYLLABLE NA +A186;ID # YI SYLLABLE NAP +A187;ID # YI SYLLABLE NUOX +A188;ID # YI SYLLABLE NUO +A189;ID # YI SYLLABLE NUOP +A18A;ID # YI SYLLABLE NOT +A18B;ID # YI SYLLABLE NOX +A18C;ID # YI SYLLABLE NO +A18D;ID # YI SYLLABLE NOP +A18E;ID # YI SYLLABLE NEX +A18F;ID # YI SYLLABLE NE +A190;ID # YI SYLLABLE NEP +A191;ID # YI SYLLABLE NUT +A192;ID # YI SYLLABLE NUX +A193;ID # YI SYLLABLE NU +A194;ID # YI SYLLABLE NUP +A195;ID # YI SYLLABLE NURX +A196;ID # YI SYLLABLE NUR +A197;ID # YI SYLLABLE HLIT +A198;ID # YI SYLLABLE HLIX +A199;ID # YI SYLLABLE HLI +A19A;ID # YI SYLLABLE HLIP +A19B;ID # YI SYLLABLE HLIEX +A19C;ID # YI SYLLABLE HLIE +A19D;ID # YI SYLLABLE HLIEP +A19E;ID # YI SYLLABLE HLAT +A19F;ID # YI SYLLABLE HLAX +A1A0;ID # YI SYLLABLE HLA +A1A1;ID # YI SYLLABLE HLAP +A1A2;ID # YI SYLLABLE HLUOX +A1A3;ID # YI SYLLABLE HLUO +A1A4;ID # YI SYLLABLE HLUOP +A1A5;ID # YI SYLLABLE HLOX +A1A6;ID # YI SYLLABLE HLO +A1A7;ID # YI SYLLABLE HLOP +A1A8;ID # YI SYLLABLE HLEX +A1A9;ID # YI SYLLABLE HLE +A1AA;ID # YI SYLLABLE HLEP +A1AB;ID # YI SYLLABLE HLUT +A1AC;ID # YI SYLLABLE HLUX +A1AD;ID # YI SYLLABLE HLU +A1AE;ID # YI SYLLABLE HLUP +A1AF;ID # YI SYLLABLE HLURX +A1B0;ID # YI SYLLABLE HLUR +A1B1;ID # YI SYLLABLE HLYT +A1B2;ID # YI SYLLABLE HLYX +A1B3;ID # YI SYLLABLE HLY +A1B4;ID # YI SYLLABLE HLYP +A1B5;ID # YI SYLLABLE HLYRX +A1B6;ID # YI SYLLABLE HLYR +A1B7;ID # YI SYLLABLE LIT +A1B8;ID # YI SYLLABLE LIX +A1B9;ID # YI SYLLABLE LI +A1BA;ID # YI SYLLABLE LIP +A1BB;ID # YI SYLLABLE LIET +A1BC;ID # YI SYLLABLE LIEX +A1BD;ID # YI SYLLABLE LIE +A1BE;ID # YI SYLLABLE LIEP +A1BF;ID # YI SYLLABLE LAT +A1C0;ID # YI SYLLABLE LAX +A1C1;ID # YI SYLLABLE LA +A1C2;ID # YI SYLLABLE LAP +A1C3;ID # YI SYLLABLE LUOT +A1C4;ID # YI SYLLABLE LUOX +A1C5;ID # YI SYLLABLE LUO +A1C6;ID # YI SYLLABLE LUOP +A1C7;ID # YI SYLLABLE LOT +A1C8;ID # YI SYLLABLE LOX +A1C9;ID # YI SYLLABLE LO +A1CA;ID # YI SYLLABLE LOP +A1CB;ID # YI SYLLABLE LEX +A1CC;ID # YI SYLLABLE LE +A1CD;ID # YI SYLLABLE LEP +A1CE;ID # YI SYLLABLE LUT +A1CF;ID # YI SYLLABLE LUX +A1D0;ID # YI SYLLABLE LU +A1D1;ID # YI SYLLABLE LUP +A1D2;ID # YI SYLLABLE LURX +A1D3;ID # YI SYLLABLE LUR +A1D4;ID # YI SYLLABLE LYT +A1D5;ID # YI SYLLABLE LYX +A1D6;ID # YI SYLLABLE LY +A1D7;ID # YI SYLLABLE LYP +A1D8;ID # YI SYLLABLE LYRX +A1D9;ID # YI SYLLABLE LYR +A1DA;ID # YI SYLLABLE GIT +A1DB;ID # YI SYLLABLE GIX +A1DC;ID # YI SYLLABLE GI +A1DD;ID # YI SYLLABLE GIP +A1DE;ID # YI SYLLABLE GIET +A1DF;ID # YI SYLLABLE GIEX +A1E0;ID # YI SYLLABLE GIE +A1E1;ID # YI SYLLABLE GIEP +A1E2;ID # YI SYLLABLE GAT +A1E3;ID # YI SYLLABLE GAX +A1E4;ID # YI SYLLABLE GA +A1E5;ID # YI SYLLABLE GAP +A1E6;ID # YI SYLLABLE GUOT +A1E7;ID # YI SYLLABLE GUOX +A1E8;ID # YI SYLLABLE GUO +A1E9;ID # YI SYLLABLE GUOP +A1EA;ID # YI SYLLABLE GOT +A1EB;ID # YI SYLLABLE GOX +A1EC;ID # YI SYLLABLE GO +A1ED;ID # YI SYLLABLE GOP +A1EE;ID # YI SYLLABLE GET +A1EF;ID # YI SYLLABLE GEX +A1F0;ID # YI SYLLABLE GE +A1F1;ID # YI SYLLABLE GEP +A1F2;ID # YI SYLLABLE GUT +A1F3;ID # YI SYLLABLE GUX +A1F4;ID # YI SYLLABLE GU +A1F5;ID # YI SYLLABLE GUP +A1F6;ID # YI SYLLABLE GURX +A1F7;ID # YI SYLLABLE GUR +A1F8;ID # YI SYLLABLE KIT +A1F9;ID # YI SYLLABLE KIX +A1FA;ID # YI SYLLABLE KI +A1FB;ID # YI SYLLABLE KIP +A1FC;ID # YI SYLLABLE KIEX +A1FD;ID # YI SYLLABLE KIE +A1FE;ID # YI SYLLABLE KIEP +A1FF;ID # YI SYLLABLE KAT +A200;ID # YI SYLLABLE KAX +A201;ID # YI SYLLABLE KA +A202;ID # YI SYLLABLE KAP +A203;ID # YI SYLLABLE KUOX +A204;ID # YI SYLLABLE KUO +A205;ID # YI SYLLABLE KUOP +A206;ID # YI SYLLABLE KOT +A207;ID # YI SYLLABLE KOX +A208;ID # YI SYLLABLE KO +A209;ID # YI SYLLABLE KOP +A20A;ID # YI SYLLABLE KET +A20B;ID # YI SYLLABLE KEX +A20C;ID # YI SYLLABLE KE +A20D;ID # YI SYLLABLE KEP +A20E;ID # YI SYLLABLE KUT +A20F;ID # YI SYLLABLE KUX +A210;ID # YI SYLLABLE KU +A211;ID # YI SYLLABLE KUP +A212;ID # YI SYLLABLE KURX +A213;ID # YI SYLLABLE KUR +A214;ID # YI SYLLABLE GGIT +A215;ID # YI SYLLABLE GGIX +A216;ID # YI SYLLABLE GGI +A217;ID # YI SYLLABLE GGIEX +A218;ID # YI SYLLABLE GGIE +A219;ID # YI SYLLABLE GGIEP +A21A;ID # YI SYLLABLE GGAT +A21B;ID # YI SYLLABLE GGAX +A21C;ID # YI SYLLABLE GGA +A21D;ID # YI SYLLABLE GGAP +A21E;ID # YI SYLLABLE GGUOT +A21F;ID # YI SYLLABLE GGUOX +A220;ID # YI SYLLABLE GGUO +A221;ID # YI SYLLABLE GGUOP +A222;ID # YI SYLLABLE GGOT +A223;ID # YI SYLLABLE GGOX +A224;ID # YI SYLLABLE GGO +A225;ID # YI SYLLABLE GGOP +A226;ID # YI SYLLABLE GGET +A227;ID # YI SYLLABLE GGEX +A228;ID # YI SYLLABLE GGE +A229;ID # YI SYLLABLE GGEP +A22A;ID # YI SYLLABLE GGUT +A22B;ID # YI SYLLABLE GGUX +A22C;ID # YI SYLLABLE GGU +A22D;ID # YI SYLLABLE GGUP +A22E;ID # YI SYLLABLE GGURX +A22F;ID # YI SYLLABLE GGUR +A230;ID # YI SYLLABLE MGIEX +A231;ID # YI SYLLABLE MGIE +A232;ID # YI SYLLABLE MGAT +A233;ID # YI SYLLABLE MGAX +A234;ID # YI SYLLABLE MGA +A235;ID # YI SYLLABLE MGAP +A236;ID # YI SYLLABLE MGUOX +A237;ID # YI SYLLABLE MGUO +A238;ID # YI SYLLABLE MGUOP +A239;ID # YI SYLLABLE MGOT +A23A;ID # YI SYLLABLE MGOX +A23B;ID # YI SYLLABLE MGO +A23C;ID # YI SYLLABLE MGOP +A23D;ID # YI SYLLABLE MGEX +A23E;ID # YI SYLLABLE MGE +A23F;ID # YI SYLLABLE MGEP +A240;ID # YI SYLLABLE MGUT +A241;ID # YI SYLLABLE MGUX +A242;ID # YI SYLLABLE MGU +A243;ID # YI SYLLABLE MGUP +A244;ID # YI SYLLABLE MGURX +A245;ID # YI SYLLABLE MGUR +A246;ID # YI SYLLABLE HXIT +A247;ID # YI SYLLABLE HXIX +A248;ID # YI SYLLABLE HXI +A249;ID # YI SYLLABLE HXIP +A24A;ID # YI SYLLABLE HXIET +A24B;ID # YI SYLLABLE HXIEX +A24C;ID # YI SYLLABLE HXIE +A24D;ID # YI SYLLABLE HXIEP +A24E;ID # YI SYLLABLE HXAT +A24F;ID # YI SYLLABLE HXAX +A250;ID # YI SYLLABLE HXA +A251;ID # YI SYLLABLE HXAP +A252;ID # YI SYLLABLE HXUOT +A253;ID # YI SYLLABLE HXUOX +A254;ID # YI SYLLABLE HXUO +A255;ID # YI SYLLABLE HXUOP +A256;ID # YI SYLLABLE HXOT +A257;ID # YI SYLLABLE HXOX +A258;ID # YI SYLLABLE HXO +A259;ID # YI SYLLABLE HXOP +A25A;ID # YI SYLLABLE HXEX +A25B;ID # YI SYLLABLE HXE +A25C;ID # YI SYLLABLE HXEP +A25D;ID # YI SYLLABLE NGIEX +A25E;ID # YI SYLLABLE NGIE +A25F;ID # YI SYLLABLE NGIEP +A260;ID # YI SYLLABLE NGAT +A261;ID # YI SYLLABLE NGAX +A262;ID # YI SYLLABLE NGA +A263;ID # YI SYLLABLE NGAP +A264;ID # YI SYLLABLE NGUOT +A265;ID # YI SYLLABLE NGUOX +A266;ID # YI SYLLABLE NGUO +A267;ID # YI SYLLABLE NGOT +A268;ID # YI SYLLABLE NGOX +A269;ID # YI SYLLABLE NGO +A26A;ID # YI SYLLABLE NGOP +A26B;ID # YI SYLLABLE NGEX +A26C;ID # YI SYLLABLE NGE +A26D;ID # YI SYLLABLE NGEP +A26E;ID # YI SYLLABLE HIT +A26F;ID # YI SYLLABLE HIEX +A270;ID # YI SYLLABLE HIE +A271;ID # YI SYLLABLE HAT +A272;ID # YI SYLLABLE HAX +A273;ID # YI SYLLABLE HA +A274;ID # YI SYLLABLE HAP +A275;ID # YI SYLLABLE HUOT +A276;ID # YI SYLLABLE HUOX +A277;ID # YI SYLLABLE HUO +A278;ID # YI SYLLABLE HUOP +A279;ID # YI SYLLABLE HOT +A27A;ID # YI SYLLABLE HOX +A27B;ID # YI SYLLABLE HO +A27C;ID # YI SYLLABLE HOP +A27D;ID # YI SYLLABLE HEX +A27E;ID # YI SYLLABLE HE +A27F;ID # YI SYLLABLE HEP +A280;ID # YI SYLLABLE WAT +A281;ID # YI SYLLABLE WAX +A282;ID # YI SYLLABLE WA +A283;ID # YI SYLLABLE WAP +A284;ID # YI SYLLABLE WUOX +A285;ID # YI SYLLABLE WUO +A286;ID # YI SYLLABLE WUOP +A287;ID # YI SYLLABLE WOX +A288;ID # YI SYLLABLE WO +A289;ID # YI SYLLABLE WOP +A28A;ID # YI SYLLABLE WEX +A28B;ID # YI SYLLABLE WE +A28C;ID # YI SYLLABLE WEP +A28D;ID # YI SYLLABLE ZIT +A28E;ID # YI SYLLABLE ZIX +A28F;ID # YI SYLLABLE ZI +A290;ID # YI SYLLABLE ZIP +A291;ID # YI SYLLABLE ZIEX +A292;ID # YI SYLLABLE ZIE +A293;ID # YI SYLLABLE ZIEP +A294;ID # YI SYLLABLE ZAT +A295;ID # YI SYLLABLE ZAX +A296;ID # YI SYLLABLE ZA +A297;ID # YI SYLLABLE ZAP +A298;ID # YI SYLLABLE ZUOX +A299;ID # YI SYLLABLE ZUO +A29A;ID # YI SYLLABLE ZUOP +A29B;ID # YI SYLLABLE ZOT +A29C;ID # YI SYLLABLE ZOX +A29D;ID # YI SYLLABLE ZO +A29E;ID # YI SYLLABLE ZOP +A29F;ID # YI SYLLABLE ZEX +A2A0;ID # YI SYLLABLE ZE +A2A1;ID # YI SYLLABLE ZEP +A2A2;ID # YI SYLLABLE ZUT +A2A3;ID # YI SYLLABLE ZUX +A2A4;ID # YI SYLLABLE ZU +A2A5;ID # YI SYLLABLE ZUP +A2A6;ID # YI SYLLABLE ZURX +A2A7;ID # YI SYLLABLE ZUR +A2A8;ID # YI SYLLABLE ZYT +A2A9;ID # YI SYLLABLE ZYX +A2AA;ID # YI SYLLABLE ZY +A2AB;ID # YI SYLLABLE ZYP +A2AC;ID # YI SYLLABLE ZYRX +A2AD;ID # YI SYLLABLE ZYR +A2AE;ID # YI SYLLABLE CIT +A2AF;ID # YI SYLLABLE CIX +A2B0;ID # YI SYLLABLE CI +A2B1;ID # YI SYLLABLE CIP +A2B2;ID # YI SYLLABLE CIET +A2B3;ID # YI SYLLABLE CIEX +A2B4;ID # YI SYLLABLE CIE +A2B5;ID # YI SYLLABLE CIEP +A2B6;ID # YI SYLLABLE CAT +A2B7;ID # YI SYLLABLE CAX +A2B8;ID # YI SYLLABLE CA +A2B9;ID # YI SYLLABLE CAP +A2BA;ID # YI SYLLABLE CUOX +A2BB;ID # YI SYLLABLE CUO +A2BC;ID # YI SYLLABLE CUOP +A2BD;ID # YI SYLLABLE COT +A2BE;ID # YI SYLLABLE COX +A2BF;ID # YI SYLLABLE CO +A2C0;ID # YI SYLLABLE COP +A2C1;ID # YI SYLLABLE CEX +A2C2;ID # YI SYLLABLE CE +A2C3;ID # YI SYLLABLE CEP +A2C4;ID # YI SYLLABLE CUT +A2C5;ID # YI SYLLABLE CUX +A2C6;ID # YI SYLLABLE CU +A2C7;ID # YI SYLLABLE CUP +A2C8;ID # YI SYLLABLE CURX +A2C9;ID # YI SYLLABLE CUR +A2CA;ID # YI SYLLABLE CYT +A2CB;ID # YI SYLLABLE CYX +A2CC;ID # YI SYLLABLE CY +A2CD;ID # YI SYLLABLE CYP +A2CE;ID # YI SYLLABLE CYRX +A2CF;ID # YI SYLLABLE CYR +A2D0;ID # YI SYLLABLE ZZIT +A2D1;ID # YI SYLLABLE ZZIX +A2D2;ID # YI SYLLABLE ZZI +A2D3;ID # YI SYLLABLE ZZIP +A2D4;ID # YI SYLLABLE ZZIET +A2D5;ID # YI SYLLABLE ZZIEX +A2D6;ID # YI SYLLABLE ZZIE +A2D7;ID # YI SYLLABLE ZZIEP +A2D8;ID # YI SYLLABLE ZZAT +A2D9;ID # YI SYLLABLE ZZAX +A2DA;ID # YI SYLLABLE ZZA +A2DB;ID # YI SYLLABLE ZZAP +A2DC;ID # YI SYLLABLE ZZOX +A2DD;ID # YI SYLLABLE ZZO +A2DE;ID # YI SYLLABLE ZZOP +A2DF;ID # YI SYLLABLE ZZEX +A2E0;ID # YI SYLLABLE ZZE +A2E1;ID # YI SYLLABLE ZZEP +A2E2;ID # YI SYLLABLE ZZUX +A2E3;ID # YI SYLLABLE ZZU +A2E4;ID # YI SYLLABLE ZZUP +A2E5;ID # YI SYLLABLE ZZURX +A2E6;ID # YI SYLLABLE ZZUR +A2E7;ID # YI SYLLABLE ZZYT +A2E8;ID # YI SYLLABLE ZZYX +A2E9;ID # YI SYLLABLE ZZY +A2EA;ID # YI SYLLABLE ZZYP +A2EB;ID # YI SYLLABLE ZZYRX +A2EC;ID # YI SYLLABLE ZZYR +A2ED;ID # YI SYLLABLE NZIT +A2EE;ID # YI SYLLABLE NZIX +A2EF;ID # YI SYLLABLE NZI +A2F0;ID # YI SYLLABLE NZIP +A2F1;ID # YI SYLLABLE NZIEX +A2F2;ID # YI SYLLABLE NZIE +A2F3;ID # YI SYLLABLE NZIEP +A2F4;ID # YI SYLLABLE NZAT +A2F5;ID # YI SYLLABLE NZAX +A2F6;ID # YI SYLLABLE NZA +A2F7;ID # YI SYLLABLE NZAP +A2F8;ID # YI SYLLABLE NZUOX +A2F9;ID # YI SYLLABLE NZUO +A2FA;ID # YI SYLLABLE NZOX +A2FB;ID # YI SYLLABLE NZOP +A2FC;ID # YI SYLLABLE NZEX +A2FD;ID # YI SYLLABLE NZE +A2FE;ID # YI SYLLABLE NZUX +A2FF;ID # YI SYLLABLE NZU +A300;ID # YI SYLLABLE NZUP +A301;ID # YI SYLLABLE NZURX +A302;ID # YI SYLLABLE NZUR +A303;ID # YI SYLLABLE NZYT +A304;ID # YI SYLLABLE NZYX +A305;ID # YI SYLLABLE NZY +A306;ID # YI SYLLABLE NZYP +A307;ID # YI SYLLABLE NZYRX +A308;ID # YI SYLLABLE NZYR +A309;ID # YI SYLLABLE SIT +A30A;ID # YI SYLLABLE SIX +A30B;ID # YI SYLLABLE SI +A30C;ID # YI SYLLABLE SIP +A30D;ID # YI SYLLABLE SIEX +A30E;ID # YI SYLLABLE SIE +A30F;ID # YI SYLLABLE SIEP +A310;ID # YI SYLLABLE SAT +A311;ID # YI SYLLABLE SAX +A312;ID # YI SYLLABLE SA +A313;ID # YI SYLLABLE SAP +A314;ID # YI SYLLABLE SUOX +A315;ID # YI SYLLABLE SUO +A316;ID # YI SYLLABLE SUOP +A317;ID # YI SYLLABLE SOT +A318;ID # YI SYLLABLE SOX +A319;ID # YI SYLLABLE SO +A31A;ID # YI SYLLABLE SOP +A31B;ID # YI SYLLABLE SEX +A31C;ID # YI SYLLABLE SE +A31D;ID # YI SYLLABLE SEP +A31E;ID # YI SYLLABLE SUT +A31F;ID # YI SYLLABLE SUX +A320;ID # YI SYLLABLE SU +A321;ID # YI SYLLABLE SUP +A322;ID # YI SYLLABLE SURX +A323;ID # YI SYLLABLE SUR +A324;ID # YI SYLLABLE SYT +A325;ID # YI SYLLABLE SYX +A326;ID # YI SYLLABLE SY +A327;ID # YI SYLLABLE SYP +A328;ID # YI SYLLABLE SYRX +A329;ID # YI SYLLABLE SYR +A32A;ID # YI SYLLABLE SSIT +A32B;ID # YI SYLLABLE SSIX +A32C;ID # YI SYLLABLE SSI +A32D;ID # YI SYLLABLE SSIP +A32E;ID # YI SYLLABLE SSIEX +A32F;ID # YI SYLLABLE SSIE +A330;ID # YI SYLLABLE SSIEP +A331;ID # YI SYLLABLE SSAT +A332;ID # YI SYLLABLE SSAX +A333;ID # YI SYLLABLE SSA +A334;ID # YI SYLLABLE SSAP +A335;ID # YI SYLLABLE SSOT +A336;ID # YI SYLLABLE SSOX +A337;ID # YI SYLLABLE SSO +A338;ID # YI SYLLABLE SSOP +A339;ID # YI SYLLABLE SSEX +A33A;ID # YI SYLLABLE SSE +A33B;ID # YI SYLLABLE SSEP +A33C;ID # YI SYLLABLE SSUT +A33D;ID # YI SYLLABLE SSUX +A33E;ID # YI SYLLABLE SSU +A33F;ID # YI SYLLABLE SSUP +A340;ID # YI SYLLABLE SSYT +A341;ID # YI SYLLABLE SSYX +A342;ID # YI SYLLABLE SSY +A343;ID # YI SYLLABLE SSYP +A344;ID # YI SYLLABLE SSYRX +A345;ID # YI SYLLABLE SSYR +A346;ID # YI SYLLABLE ZHAT +A347;ID # YI SYLLABLE ZHAX +A348;ID # YI SYLLABLE ZHA +A349;ID # YI SYLLABLE ZHAP +A34A;ID # YI SYLLABLE ZHUOX +A34B;ID # YI SYLLABLE ZHUO +A34C;ID # YI SYLLABLE ZHUOP +A34D;ID # YI SYLLABLE ZHOT +A34E;ID # YI SYLLABLE ZHOX +A34F;ID # YI SYLLABLE ZHO +A350;ID # YI SYLLABLE ZHOP +A351;ID # YI SYLLABLE ZHET +A352;ID # YI SYLLABLE ZHEX +A353;ID # YI SYLLABLE ZHE +A354;ID # YI SYLLABLE ZHEP +A355;ID # YI SYLLABLE ZHUT +A356;ID # YI SYLLABLE ZHUX +A357;ID # YI SYLLABLE ZHU +A358;ID # YI SYLLABLE ZHUP +A359;ID # YI SYLLABLE ZHURX +A35A;ID # YI SYLLABLE ZHUR +A35B;ID # YI SYLLABLE ZHYT +A35C;ID # YI SYLLABLE ZHYX +A35D;ID # YI SYLLABLE ZHY +A35E;ID # YI SYLLABLE ZHYP +A35F;ID # YI SYLLABLE ZHYRX +A360;ID # YI SYLLABLE ZHYR +A361;ID # YI SYLLABLE CHAT +A362;ID # YI SYLLABLE CHAX +A363;ID # YI SYLLABLE CHA +A364;ID # YI SYLLABLE CHAP +A365;ID # YI SYLLABLE CHUOT +A366;ID # YI SYLLABLE CHUOX +A367;ID # YI SYLLABLE CHUO +A368;ID # YI SYLLABLE CHUOP +A369;ID # YI SYLLABLE CHOT +A36A;ID # YI SYLLABLE CHOX +A36B;ID # YI SYLLABLE CHO +A36C;ID # YI SYLLABLE CHOP +A36D;ID # YI SYLLABLE CHET +A36E;ID # YI SYLLABLE CHEX +A36F;ID # YI SYLLABLE CHE +A370;ID # YI SYLLABLE CHEP +A371;ID # YI SYLLABLE CHUX +A372;ID # YI SYLLABLE CHU +A373;ID # YI SYLLABLE CHUP +A374;ID # YI SYLLABLE CHURX +A375;ID # YI SYLLABLE CHUR +A376;ID # YI SYLLABLE CHYT +A377;ID # YI SYLLABLE CHYX +A378;ID # YI SYLLABLE CHY +A379;ID # YI SYLLABLE CHYP +A37A;ID # YI SYLLABLE CHYRX +A37B;ID # YI SYLLABLE CHYR +A37C;ID # YI SYLLABLE RRAX +A37D;ID # YI SYLLABLE RRA +A37E;ID # YI SYLLABLE RRUOX +A37F;ID # YI SYLLABLE RRUO +A380;ID # YI SYLLABLE RROT +A381;ID # YI SYLLABLE RROX +A382;ID # YI SYLLABLE RRO +A383;ID # YI SYLLABLE RROP +A384;ID # YI SYLLABLE RRET +A385;ID # YI SYLLABLE RREX +A386;ID # YI SYLLABLE RRE +A387;ID # YI SYLLABLE RREP +A388;ID # YI SYLLABLE RRUT +A389;ID # YI SYLLABLE RRUX +A38A;ID # YI SYLLABLE RRU +A38B;ID # YI SYLLABLE RRUP +A38C;ID # YI SYLLABLE RRURX +A38D;ID # YI SYLLABLE RRUR +A38E;ID # YI SYLLABLE RRYT +A38F;ID # YI SYLLABLE RRYX +A390;ID # YI SYLLABLE RRY +A391;ID # YI SYLLABLE RRYP +A392;ID # YI SYLLABLE RRYRX +A393;ID # YI SYLLABLE RRYR +A394;ID # YI SYLLABLE NRAT +A395;ID # YI SYLLABLE NRAX +A396;ID # YI SYLLABLE NRA +A397;ID # YI SYLLABLE NRAP +A398;ID # YI SYLLABLE NROX +A399;ID # YI SYLLABLE NRO +A39A;ID # YI SYLLABLE NROP +A39B;ID # YI SYLLABLE NRET +A39C;ID # YI SYLLABLE NREX +A39D;ID # YI SYLLABLE NRE +A39E;ID # YI SYLLABLE NREP +A39F;ID # YI SYLLABLE NRUT +A3A0;ID # YI SYLLABLE NRUX +A3A1;ID # YI SYLLABLE NRU +A3A2;ID # YI SYLLABLE NRUP +A3A3;ID # YI SYLLABLE NRURX +A3A4;ID # YI SYLLABLE NRUR +A3A5;ID # YI SYLLABLE NRYT +A3A6;ID # YI SYLLABLE NRYX +A3A7;ID # YI SYLLABLE NRY +A3A8;ID # YI SYLLABLE NRYP +A3A9;ID # YI SYLLABLE NRYRX +A3AA;ID # YI SYLLABLE NRYR +A3AB;ID # YI SYLLABLE SHAT +A3AC;ID # YI SYLLABLE SHAX +A3AD;ID # YI SYLLABLE SHA +A3AE;ID # YI SYLLABLE SHAP +A3AF;ID # YI SYLLABLE SHUOX +A3B0;ID # YI SYLLABLE SHUO +A3B1;ID # YI SYLLABLE SHUOP +A3B2;ID # YI SYLLABLE SHOT +A3B3;ID # YI SYLLABLE SHOX +A3B4;ID # YI SYLLABLE SHO +A3B5;ID # YI SYLLABLE SHOP +A3B6;ID # YI SYLLABLE SHET +A3B7;ID # YI SYLLABLE SHEX +A3B8;ID # YI SYLLABLE SHE +A3B9;ID # YI SYLLABLE SHEP +A3BA;ID # YI SYLLABLE SHUT +A3BB;ID # YI SYLLABLE SHUX +A3BC;ID # YI SYLLABLE SHU +A3BD;ID # YI SYLLABLE SHUP +A3BE;ID # YI SYLLABLE SHURX +A3BF;ID # YI SYLLABLE SHUR +A3C0;ID # YI SYLLABLE SHYT +A3C1;ID # YI SYLLABLE SHYX +A3C2;ID # YI SYLLABLE SHY +A3C3;ID # YI SYLLABLE SHYP +A3C4;ID # YI SYLLABLE SHYRX +A3C5;ID # YI SYLLABLE SHYR +A3C6;ID # YI SYLLABLE RAT +A3C7;ID # YI SYLLABLE RAX +A3C8;ID # YI SYLLABLE RA +A3C9;ID # YI SYLLABLE RAP +A3CA;ID # YI SYLLABLE RUOX +A3CB;ID # YI SYLLABLE RUO +A3CC;ID # YI SYLLABLE RUOP +A3CD;ID # YI SYLLABLE ROT +A3CE;ID # YI SYLLABLE ROX +A3CF;ID # YI SYLLABLE RO +A3D0;ID # YI SYLLABLE ROP +A3D1;ID # YI SYLLABLE REX +A3D2;ID # YI SYLLABLE RE +A3D3;ID # YI SYLLABLE REP +A3D4;ID # YI SYLLABLE RUT +A3D5;ID # YI SYLLABLE RUX +A3D6;ID # YI SYLLABLE RU +A3D7;ID # YI SYLLABLE RUP +A3D8;ID # YI SYLLABLE RURX +A3D9;ID # YI SYLLABLE RUR +A3DA;ID # YI SYLLABLE RYT +A3DB;ID # YI SYLLABLE RYX +A3DC;ID # YI SYLLABLE RY +A3DD;ID # YI SYLLABLE RYP +A3DE;ID # YI SYLLABLE RYRX +A3DF;ID # YI SYLLABLE RYR +A3E0;ID # YI SYLLABLE JIT +A3E1;ID # YI SYLLABLE JIX +A3E2;ID # YI SYLLABLE JI +A3E3;ID # YI SYLLABLE JIP +A3E4;ID # YI SYLLABLE JIET +A3E5;ID # YI SYLLABLE JIEX +A3E6;ID # YI SYLLABLE JIE +A3E7;ID # YI SYLLABLE JIEP +A3E8;ID # YI SYLLABLE JUOT +A3E9;ID # YI SYLLABLE JUOX +A3EA;ID # YI SYLLABLE JUO +A3EB;ID # YI SYLLABLE JUOP +A3EC;ID # YI SYLLABLE JOT +A3ED;ID # YI SYLLABLE JOX +A3EE;ID # YI SYLLABLE JO +A3EF;ID # YI SYLLABLE JOP +A3F0;ID # YI SYLLABLE JUT +A3F1;ID # YI SYLLABLE JUX +A3F2;ID # YI SYLLABLE JU +A3F3;ID # YI SYLLABLE JUP +A3F4;ID # YI SYLLABLE JURX +A3F5;ID # YI SYLLABLE JUR +A3F6;ID # YI SYLLABLE JYT +A3F7;ID # YI SYLLABLE JYX +A3F8;ID # YI SYLLABLE JY +A3F9;ID # YI SYLLABLE JYP +A3FA;ID # YI SYLLABLE JYRX +A3FB;ID # YI SYLLABLE JYR +A3FC;ID # YI SYLLABLE QIT +A3FD;ID # YI SYLLABLE QIX +A3FE;ID # YI SYLLABLE QI +A3FF;ID # YI SYLLABLE QIP +A400;ID # YI SYLLABLE QIET +A401;ID # YI SYLLABLE QIEX +A402;ID # YI SYLLABLE QIE +A403;ID # YI SYLLABLE QIEP +A404;ID # YI SYLLABLE QUOT +A405;ID # YI SYLLABLE QUOX +A406;ID # YI SYLLABLE QUO +A407;ID # YI SYLLABLE QUOP +A408;ID # YI SYLLABLE QOT +A409;ID # YI SYLLABLE QOX +A40A;ID # YI SYLLABLE QO +A40B;ID # YI SYLLABLE QOP +A40C;ID # YI SYLLABLE QUT +A40D;ID # YI SYLLABLE QUX +A40E;ID # YI SYLLABLE QU +A40F;ID # YI SYLLABLE QUP +A410;ID # YI SYLLABLE QURX +A411;ID # YI SYLLABLE QUR +A412;ID # YI SYLLABLE QYT +A413;ID # YI SYLLABLE QYX +A414;ID # YI SYLLABLE QY +A415;ID # YI SYLLABLE QYP +A416;ID # YI SYLLABLE QYRX +A417;ID # YI SYLLABLE QYR +A418;ID # YI SYLLABLE JJIT +A419;ID # YI SYLLABLE JJIX +A41A;ID # YI SYLLABLE JJI +A41B;ID # YI SYLLABLE JJIP +A41C;ID # YI SYLLABLE JJIET +A41D;ID # YI SYLLABLE JJIEX +A41E;ID # YI SYLLABLE JJIE +A41F;ID # YI SYLLABLE JJIEP +A420;ID # YI SYLLABLE JJUOX +A421;ID # YI SYLLABLE JJUO +A422;ID # YI SYLLABLE JJUOP +A423;ID # YI SYLLABLE JJOT +A424;ID # YI SYLLABLE JJOX +A425;ID # YI SYLLABLE JJO +A426;ID # YI SYLLABLE JJOP +A427;ID # YI SYLLABLE JJUT +A428;ID # YI SYLLABLE JJUX +A429;ID # YI SYLLABLE JJU +A42A;ID # YI SYLLABLE JJUP +A42B;ID # YI SYLLABLE JJURX +A42C;ID # YI SYLLABLE JJUR +A42D;ID # YI SYLLABLE JJYT +A42E;ID # YI SYLLABLE JJYX +A42F;ID # YI SYLLABLE JJY +A430;ID # YI SYLLABLE JJYP +A431;ID # YI SYLLABLE NJIT +A432;ID # YI SYLLABLE NJIX +A433;ID # YI SYLLABLE NJI +A434;ID # YI SYLLABLE NJIP +A435;ID # YI SYLLABLE NJIET +A436;ID # YI SYLLABLE NJIEX +A437;ID # YI SYLLABLE NJIE +A438;ID # YI SYLLABLE NJIEP +A439;ID # YI SYLLABLE NJUOX +A43A;ID # YI SYLLABLE NJUO +A43B;ID # YI SYLLABLE NJOT +A43C;ID # YI SYLLABLE NJOX +A43D;ID # YI SYLLABLE NJO +A43E;ID # YI SYLLABLE NJOP +A43F;ID # YI SYLLABLE NJUX +A440;ID # YI SYLLABLE NJU +A441;ID # YI SYLLABLE NJUP +A442;ID # YI SYLLABLE NJURX +A443;ID # YI SYLLABLE NJUR +A444;ID # YI SYLLABLE NJYT +A445;ID # YI SYLLABLE NJYX +A446;ID # YI SYLLABLE NJY +A447;ID # YI SYLLABLE NJYP +A448;ID # YI SYLLABLE NJYRX +A449;ID # YI SYLLABLE NJYR +A44A;ID # YI SYLLABLE NYIT +A44B;ID # YI SYLLABLE NYIX +A44C;ID # YI SYLLABLE NYI +A44D;ID # YI SYLLABLE NYIP +A44E;ID # YI SYLLABLE NYIET +A44F;ID # YI SYLLABLE NYIEX +A450;ID # YI SYLLABLE NYIE +A451;ID # YI SYLLABLE NYIEP +A452;ID # YI SYLLABLE NYUOX +A453;ID # YI SYLLABLE NYUO +A454;ID # YI SYLLABLE NYUOP +A455;ID # YI SYLLABLE NYOT +A456;ID # YI SYLLABLE NYOX +A457;ID # YI SYLLABLE NYO +A458;ID # YI SYLLABLE NYOP +A459;ID # YI SYLLABLE NYUT +A45A;ID # YI SYLLABLE NYUX +A45B;ID # YI SYLLABLE NYU +A45C;ID # YI SYLLABLE NYUP +A45D;ID # YI SYLLABLE XIT +A45E;ID # YI SYLLABLE XIX +A45F;ID # YI SYLLABLE XI +A460;ID # YI SYLLABLE XIP +A461;ID # YI SYLLABLE XIET +A462;ID # YI SYLLABLE XIEX +A463;ID # YI SYLLABLE XIE +A464;ID # YI SYLLABLE XIEP +A465;ID # YI SYLLABLE XUOX +A466;ID # YI SYLLABLE XUO +A467;ID # YI SYLLABLE XOT +A468;ID # YI SYLLABLE XOX +A469;ID # YI SYLLABLE XO +A46A;ID # YI SYLLABLE XOP +A46B;ID # YI SYLLABLE XYT +A46C;ID # YI SYLLABLE XYX +A46D;ID # YI SYLLABLE XY +A46E;ID # YI SYLLABLE XYP +A46F;ID # YI SYLLABLE XYRX +A470;ID # YI SYLLABLE XYR +A471;ID # YI SYLLABLE YIT +A472;ID # YI SYLLABLE YIX +A473;ID # YI SYLLABLE YI +A474;ID # YI SYLLABLE YIP +A475;ID # YI SYLLABLE YIET +A476;ID # YI SYLLABLE YIEX +A477;ID # YI SYLLABLE YIE +A478;ID # YI SYLLABLE YIEP +A479;ID # YI SYLLABLE YUOT +A47A;ID # YI SYLLABLE YUOX +A47B;ID # YI SYLLABLE YUO +A47C;ID # YI SYLLABLE YUOP +A47D;ID # YI SYLLABLE YOT +A47E;ID # YI SYLLABLE YOX +A47F;ID # YI SYLLABLE YO +A480;ID # YI SYLLABLE YOP +A481;ID # YI SYLLABLE YUT +A482;ID # YI SYLLABLE YUX +A483;ID # YI SYLLABLE YU +A484;ID # YI SYLLABLE YUP +A485;ID # YI SYLLABLE YURX +A486;ID # YI SYLLABLE YUR +A487;ID # YI SYLLABLE YYT +A488;ID # YI SYLLABLE YYX +A489;ID # YI SYLLABLE YY +A48A;ID # YI SYLLABLE YYP +A48B;ID # YI SYLLABLE YYRX +A48C;ID # YI SYLLABLE YYR +A490;ID # YI RADICAL QOT +A491;ID # YI RADICAL LI +A492;ID # YI RADICAL KIT +A493;ID # YI RADICAL NYIP +A494;ID # YI RADICAL CYP +A495;ID # YI RADICAL SSI +A496;ID # YI RADICAL GGOP +A497;ID # YI RADICAL GEP +A498;ID # YI RADICAL MI +A499;ID # YI RADICAL HXIT +A49A;ID # YI RADICAL LYR +A49B;ID # YI RADICAL BBUT +A49C;ID # YI RADICAL MOP +A49D;ID # YI RADICAL YO +A49E;ID # YI RADICAL PUT +A49F;ID # YI RADICAL HXUO +A4A0;ID # YI RADICAL TAT +A4A1;ID # YI RADICAL GA +A4A2;ID # YI RADICAL ZUP +A4A3;ID # YI RADICAL CYT +A4A4;ID # YI RADICAL DDUR +A4A5;ID # YI RADICAL BUR +A4A6;ID # YI RADICAL GGUO +A4A7;ID # YI RADICAL NYOP +A4A8;ID # YI RADICAL TU +A4A9;ID # YI RADICAL OP +A4AA;ID # YI RADICAL JJUT +A4AB;ID # YI RADICAL ZOT +A4AC;ID # YI RADICAL PYT +A4AD;ID # YI RADICAL HMO +A4AE;ID # YI RADICAL YIT +A4AF;ID # YI RADICAL VUR +A4B0;ID # YI RADICAL SHY +A4B1;ID # YI RADICAL VEP +A4B2;ID # YI RADICAL ZA +A4B3;ID # YI RADICAL JO +A4B4;ID # YI RADICAL NZUP +A4B5;ID # YI RADICAL JJY +A4B6;ID # YI RADICAL GOT +A4B7;ID # YI RADICAL JJIE +A4B8;ID # YI RADICAL WO +A4B9;ID # YI RADICAL DU +A4BA;ID # YI RADICAL SHUR +A4BB;ID # YI RADICAL LIE +A4BC;ID # YI RADICAL CY +A4BD;ID # YI RADICAL CUOP +A4BE;ID # YI RADICAL CIP +A4BF;ID # YI RADICAL HXOP +A4C0;ID # YI RADICAL SHAT +A4C1;ID # YI RADICAL ZUR +A4C2;ID # YI RADICAL SHOP +A4C3;ID # YI RADICAL CHE +A4C4;ID # YI RADICAL ZZIET +A4C5;ID # YI RADICAL NBIE +A4C6;ID # YI RADICAL KE +AC00..D7A3;ID # .. +D800..DB7F;SG # .. +DB80..DBFF;SG # .. +DC00..DFFF;SG # .. +E000..F8FF;XX # .. +F900;ID # CJK COMPATIBILITY IDEOGRAPH-F900 +F901;ID # CJK COMPATIBILITY IDEOGRAPH-F901 +F902;ID # CJK COMPATIBILITY IDEOGRAPH-F902 +F903;ID # CJK COMPATIBILITY IDEOGRAPH-F903 +F904;ID # CJK COMPATIBILITY IDEOGRAPH-F904 +F905;ID # CJK COMPATIBILITY IDEOGRAPH-F905 +F906;ID # CJK COMPATIBILITY IDEOGRAPH-F906 +F907;ID # CJK COMPATIBILITY IDEOGRAPH-F907 +F908;ID # CJK COMPATIBILITY IDEOGRAPH-F908 +F909;ID # CJK COMPATIBILITY IDEOGRAPH-F909 +F90A;ID # CJK COMPATIBILITY IDEOGRAPH-F90A +F90B;ID # CJK COMPATIBILITY IDEOGRAPH-F90B +F90C;ID # CJK COMPATIBILITY IDEOGRAPH-F90C +F90D;ID # CJK COMPATIBILITY IDEOGRAPH-F90D +F90E;ID # CJK COMPATIBILITY IDEOGRAPH-F90E +F90F;ID # CJK COMPATIBILITY IDEOGRAPH-F90F +F910;ID # CJK COMPATIBILITY IDEOGRAPH-F910 +F911;ID # CJK COMPATIBILITY IDEOGRAPH-F911 +F912;ID # CJK COMPATIBILITY IDEOGRAPH-F912 +F913;ID # CJK COMPATIBILITY IDEOGRAPH-F913 +F914;ID # CJK COMPATIBILITY IDEOGRAPH-F914 +F915;ID # CJK COMPATIBILITY IDEOGRAPH-F915 +F916;ID # CJK COMPATIBILITY IDEOGRAPH-F916 +F917;ID # CJK COMPATIBILITY IDEOGRAPH-F917 +F918;ID # CJK COMPATIBILITY IDEOGRAPH-F918 +F919;ID # CJK COMPATIBILITY IDEOGRAPH-F919 +F91A;ID # CJK COMPATIBILITY IDEOGRAPH-F91A +F91B;ID # CJK COMPATIBILITY IDEOGRAPH-F91B +F91C;ID # CJK COMPATIBILITY IDEOGRAPH-F91C +F91D;ID # CJK COMPATIBILITY IDEOGRAPH-F91D +F91E;ID # CJK COMPATIBILITY IDEOGRAPH-F91E +F91F;ID # CJK COMPATIBILITY IDEOGRAPH-F91F +F920;ID # CJK COMPATIBILITY IDEOGRAPH-F920 +F921;ID # CJK COMPATIBILITY IDEOGRAPH-F921 +F922;ID # CJK COMPATIBILITY IDEOGRAPH-F922 +F923;ID # CJK COMPATIBILITY IDEOGRAPH-F923 +F924;ID # CJK COMPATIBILITY IDEOGRAPH-F924 +F925;ID # CJK COMPATIBILITY IDEOGRAPH-F925 +F926;ID # CJK COMPATIBILITY IDEOGRAPH-F926 +F927;ID # CJK COMPATIBILITY IDEOGRAPH-F927 +F928;ID # CJK COMPATIBILITY IDEOGRAPH-F928 +F929;ID # CJK COMPATIBILITY IDEOGRAPH-F929 +F92A;ID # CJK COMPATIBILITY IDEOGRAPH-F92A +F92B;ID # CJK COMPATIBILITY IDEOGRAPH-F92B +F92C;ID # CJK COMPATIBILITY IDEOGRAPH-F92C +F92D;ID # CJK COMPATIBILITY IDEOGRAPH-F92D +F92E;ID # CJK COMPATIBILITY IDEOGRAPH-F92E +F92F;ID # CJK COMPATIBILITY IDEOGRAPH-F92F +F930;ID # CJK COMPATIBILITY IDEOGRAPH-F930 +F931;ID # CJK COMPATIBILITY IDEOGRAPH-F931 +F932;ID # CJK COMPATIBILITY IDEOGRAPH-F932 +F933;ID # CJK COMPATIBILITY IDEOGRAPH-F933 +F934;ID # CJK COMPATIBILITY IDEOGRAPH-F934 +F935;ID # CJK COMPATIBILITY IDEOGRAPH-F935 +F936;ID # CJK COMPATIBILITY IDEOGRAPH-F936 +F937;ID # CJK COMPATIBILITY IDEOGRAPH-F937 +F938;ID # CJK COMPATIBILITY IDEOGRAPH-F938 +F939;ID # CJK COMPATIBILITY IDEOGRAPH-F939 +F93A;ID # CJK COMPATIBILITY IDEOGRAPH-F93A +F93B;ID # CJK COMPATIBILITY IDEOGRAPH-F93B +F93C;ID # CJK COMPATIBILITY IDEOGRAPH-F93C +F93D;ID # CJK COMPATIBILITY IDEOGRAPH-F93D +F93E;ID # CJK COMPATIBILITY IDEOGRAPH-F93E +F93F;ID # CJK COMPATIBILITY IDEOGRAPH-F93F +F940;ID # CJK COMPATIBILITY IDEOGRAPH-F940 +F941;ID # CJK COMPATIBILITY IDEOGRAPH-F941 +F942;ID # CJK COMPATIBILITY IDEOGRAPH-F942 +F943;ID # CJK COMPATIBILITY IDEOGRAPH-F943 +F944;ID # CJK COMPATIBILITY IDEOGRAPH-F944 +F945;ID # CJK COMPATIBILITY IDEOGRAPH-F945 +F946;ID # CJK COMPATIBILITY IDEOGRAPH-F946 +F947;ID # CJK COMPATIBILITY IDEOGRAPH-F947 +F948;ID # CJK COMPATIBILITY IDEOGRAPH-F948 +F949;ID # CJK COMPATIBILITY IDEOGRAPH-F949 +F94A;ID # CJK COMPATIBILITY IDEOGRAPH-F94A +F94B;ID # CJK COMPATIBILITY IDEOGRAPH-F94B +F94C;ID # CJK COMPATIBILITY IDEOGRAPH-F94C +F94D;ID # CJK COMPATIBILITY IDEOGRAPH-F94D +F94E;ID # CJK COMPATIBILITY IDEOGRAPH-F94E +F94F;ID # CJK COMPATIBILITY IDEOGRAPH-F94F +F950;ID # CJK COMPATIBILITY IDEOGRAPH-F950 +F951;ID # CJK COMPATIBILITY IDEOGRAPH-F951 +F952;ID # CJK COMPATIBILITY IDEOGRAPH-F952 +F953;ID # CJK COMPATIBILITY IDEOGRAPH-F953 +F954;ID # CJK COMPATIBILITY IDEOGRAPH-F954 +F955;ID # CJK COMPATIBILITY IDEOGRAPH-F955 +F956;ID # CJK COMPATIBILITY IDEOGRAPH-F956 +F957;ID # CJK COMPATIBILITY IDEOGRAPH-F957 +F958;ID # CJK COMPATIBILITY IDEOGRAPH-F958 +F959;ID # CJK COMPATIBILITY IDEOGRAPH-F959 +F95A;ID # CJK COMPATIBILITY IDEOGRAPH-F95A +F95B;ID # CJK COMPATIBILITY IDEOGRAPH-F95B +F95C;ID # CJK COMPATIBILITY IDEOGRAPH-F95C +F95D;ID # CJK COMPATIBILITY IDEOGRAPH-F95D +F95E;ID # CJK COMPATIBILITY IDEOGRAPH-F95E +F95F;ID # CJK COMPATIBILITY IDEOGRAPH-F95F +F960;ID # CJK COMPATIBILITY IDEOGRAPH-F960 +F961;ID # CJK COMPATIBILITY IDEOGRAPH-F961 +F962;ID # CJK COMPATIBILITY IDEOGRAPH-F962 +F963;ID # CJK COMPATIBILITY IDEOGRAPH-F963 +F964;ID # CJK COMPATIBILITY IDEOGRAPH-F964 +F965;ID # CJK COMPATIBILITY IDEOGRAPH-F965 +F966;ID # CJK COMPATIBILITY IDEOGRAPH-F966 +F967;ID # CJK COMPATIBILITY IDEOGRAPH-F967 +F968;ID # CJK COMPATIBILITY IDEOGRAPH-F968 +F969;ID # CJK COMPATIBILITY IDEOGRAPH-F969 +F96A;ID # CJK COMPATIBILITY IDEOGRAPH-F96A +F96B;ID # CJK COMPATIBILITY IDEOGRAPH-F96B +F96C;ID # CJK COMPATIBILITY IDEOGRAPH-F96C +F96D;ID # CJK COMPATIBILITY IDEOGRAPH-F96D +F96E;ID # CJK COMPATIBILITY IDEOGRAPH-F96E +F96F;ID # CJK COMPATIBILITY IDEOGRAPH-F96F +F970;ID # CJK COMPATIBILITY IDEOGRAPH-F970 +F971;ID # CJK COMPATIBILITY IDEOGRAPH-F971 +F972;ID # CJK COMPATIBILITY IDEOGRAPH-F972 +F973;ID # CJK COMPATIBILITY IDEOGRAPH-F973 +F974;ID # CJK COMPATIBILITY IDEOGRAPH-F974 +F975;ID # CJK COMPATIBILITY IDEOGRAPH-F975 +F976;ID # CJK COMPATIBILITY IDEOGRAPH-F976 +F977;ID # CJK COMPATIBILITY IDEOGRAPH-F977 +F978;ID # CJK COMPATIBILITY IDEOGRAPH-F978 +F979;ID # CJK COMPATIBILITY IDEOGRAPH-F979 +F97A;ID # CJK COMPATIBILITY IDEOGRAPH-F97A +F97B;ID # CJK COMPATIBILITY IDEOGRAPH-F97B +F97C;ID # CJK COMPATIBILITY IDEOGRAPH-F97C +F97D;ID # CJK COMPATIBILITY IDEOGRAPH-F97D +F97E;ID # CJK COMPATIBILITY IDEOGRAPH-F97E +F97F;ID # CJK COMPATIBILITY IDEOGRAPH-F97F +F980;ID # CJK COMPATIBILITY IDEOGRAPH-F980 +F981;ID # CJK COMPATIBILITY IDEOGRAPH-F981 +F982;ID # CJK COMPATIBILITY IDEOGRAPH-F982 +F983;ID # CJK COMPATIBILITY IDEOGRAPH-F983 +F984;ID # CJK COMPATIBILITY IDEOGRAPH-F984 +F985;ID # CJK COMPATIBILITY IDEOGRAPH-F985 +F986;ID # CJK COMPATIBILITY IDEOGRAPH-F986 +F987;ID # CJK COMPATIBILITY IDEOGRAPH-F987 +F988;ID # CJK COMPATIBILITY IDEOGRAPH-F988 +F989;ID # CJK COMPATIBILITY IDEOGRAPH-F989 +F98A;ID # CJK COMPATIBILITY IDEOGRAPH-F98A +F98B;ID # CJK COMPATIBILITY IDEOGRAPH-F98B +F98C;ID # CJK COMPATIBILITY IDEOGRAPH-F98C +F98D;ID # CJK COMPATIBILITY IDEOGRAPH-F98D +F98E;ID # CJK COMPATIBILITY IDEOGRAPH-F98E +F98F;ID # CJK COMPATIBILITY IDEOGRAPH-F98F +F990;ID # CJK COMPATIBILITY IDEOGRAPH-F990 +F991;ID # CJK COMPATIBILITY IDEOGRAPH-F991 +F992;ID # CJK COMPATIBILITY IDEOGRAPH-F992 +F993;ID # CJK COMPATIBILITY IDEOGRAPH-F993 +F994;ID # CJK COMPATIBILITY IDEOGRAPH-F994 +F995;ID # CJK COMPATIBILITY IDEOGRAPH-F995 +F996;ID # CJK COMPATIBILITY IDEOGRAPH-F996 +F997;ID # CJK COMPATIBILITY IDEOGRAPH-F997 +F998;ID # CJK COMPATIBILITY IDEOGRAPH-F998 +F999;ID # CJK COMPATIBILITY IDEOGRAPH-F999 +F99A;ID # CJK COMPATIBILITY IDEOGRAPH-F99A +F99B;ID # CJK COMPATIBILITY IDEOGRAPH-F99B +F99C;ID # CJK COMPATIBILITY IDEOGRAPH-F99C +F99D;ID # CJK COMPATIBILITY IDEOGRAPH-F99D +F99E;ID # CJK COMPATIBILITY IDEOGRAPH-F99E +F99F;ID # CJK COMPATIBILITY IDEOGRAPH-F99F +F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-F9A0 +F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-F9A1 +F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-F9A2 +F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-F9A3 +F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-F9A4 +F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-F9A5 +F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-F9A6 +F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-F9A7 +F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-F9A8 +F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-F9A9 +F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-F9AA +F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-F9AB +F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-F9AC +F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-F9AD +F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-F9AE +F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-F9AF +F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-F9B0 +F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-F9B1 +F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-F9B2 +F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-F9B3 +F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-F9B4 +F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-F9B5 +F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-F9B6 +F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-F9B7 +F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-F9B8 +F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-F9B9 +F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-F9BA +F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-F9BB +F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-F9BC +F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-F9BD +F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-F9BE +F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-F9BF +F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-F9C0 +F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-F9C1 +F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-F9C2 +F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-F9C3 +F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-F9C4 +F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-F9C5 +F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-F9C6 +F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-F9C7 +F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-F9C8 +F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-F9C9 +F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-F9CA +F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-F9CB +F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-F9CC +F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-F9CD +F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-F9CE +F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-F9CF +F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-F9D0 +F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-F9D1 +F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-F9D2 +F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-F9D3 +F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-F9D4 +F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-F9D5 +F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-F9D6 +F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-F9D7 +F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-F9D8 +F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-F9D9 +F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-F9DA +F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-F9DB +F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-F9DC +F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-F9DD +F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-F9DE +F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-F9DF +F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-F9E0 +F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-F9E1 +F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-F9E2 +F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-F9E3 +F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-F9E4 +F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-F9E5 +F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-F9E6 +F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-F9E7 +F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-F9E8 +F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-F9E9 +F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-F9EA +F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-F9EB +F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-F9EC +F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-F9ED +F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-F9EE +F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-F9EF +F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-F9F0 +F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-F9F1 +F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-F9F2 +F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-F9F3 +F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-F9F4 +F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-F9F5 +F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-F9F6 +F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-F9F7 +F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-F9F8 +F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-F9F9 +F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-F9FA +F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-F9FB +F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-F9FC +F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-F9FD +F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-F9FE +F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-F9FF +FA00;ID # CJK COMPATIBILITY IDEOGRAPH-FA00 +FA01;ID # CJK COMPATIBILITY IDEOGRAPH-FA01 +FA02;ID # CJK COMPATIBILITY IDEOGRAPH-FA02 +FA03;ID # CJK COMPATIBILITY IDEOGRAPH-FA03 +FA04;ID # CJK COMPATIBILITY IDEOGRAPH-FA04 +FA05;ID # CJK COMPATIBILITY IDEOGRAPH-FA05 +FA06;ID # CJK COMPATIBILITY IDEOGRAPH-FA06 +FA07;ID # CJK COMPATIBILITY IDEOGRAPH-FA07 +FA08;ID # CJK COMPATIBILITY IDEOGRAPH-FA08 +FA09;ID # CJK COMPATIBILITY IDEOGRAPH-FA09 +FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-FA0A +FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-FA0B +FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-FA0C +FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-FA0D +FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-FA0E +FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-FA0F +FA10;ID # CJK COMPATIBILITY IDEOGRAPH-FA10 +FA11;ID # CJK COMPATIBILITY IDEOGRAPH-FA11 +FA12;ID # CJK COMPATIBILITY IDEOGRAPH-FA12 +FA13;ID # CJK COMPATIBILITY IDEOGRAPH-FA13 +FA14;ID # CJK COMPATIBILITY IDEOGRAPH-FA14 +FA15;ID # CJK COMPATIBILITY IDEOGRAPH-FA15 +FA16;ID # CJK COMPATIBILITY IDEOGRAPH-FA16 +FA17;ID # CJK COMPATIBILITY IDEOGRAPH-FA17 +FA18;ID # CJK COMPATIBILITY IDEOGRAPH-FA18 +FA19;ID # CJK COMPATIBILITY IDEOGRAPH-FA19 +FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-FA1A +FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-FA1B +FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-FA1C +FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-FA1D +FA1E;ID # CJK COMPATIBILITY IDEOGRAPH-FA1E +FA1F;ID # CJK COMPATIBILITY IDEOGRAPH-FA1F +FA20;ID # CJK COMPATIBILITY IDEOGRAPH-FA20 +FA21;ID # CJK COMPATIBILITY IDEOGRAPH-FA21 +FA22;ID # CJK COMPATIBILITY IDEOGRAPH-FA22 +FA23;ID # CJK COMPATIBILITY IDEOGRAPH-FA23 +FA24;ID # CJK COMPATIBILITY IDEOGRAPH-FA24 +FA25;ID # CJK COMPATIBILITY IDEOGRAPH-FA25 +FA26;ID # CJK COMPATIBILITY IDEOGRAPH-FA26 +FA27;ID # CJK COMPATIBILITY IDEOGRAPH-FA27 +FA28;ID # CJK COMPATIBILITY IDEOGRAPH-FA28 +FA29;ID # CJK COMPATIBILITY IDEOGRAPH-FA29 +FA2A;ID # CJK COMPATIBILITY IDEOGRAPH-FA2A +FA2B;ID # CJK COMPATIBILITY IDEOGRAPH-FA2B +FA2C;ID # CJK COMPATIBILITY IDEOGRAPH-FA2C +FA2D;ID # CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30 +FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31 +FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32 +FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33 +FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34 +FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35 +FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36 +FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37 +FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38 +FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39 +FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A +FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B +FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C +FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D +FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E +FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F +FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40 +FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41 +FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42 +FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43 +FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44 +FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45 +FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46 +FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47 +FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48 +FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49 +FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A +FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B +FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C +FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D +FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E +FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F +FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50 +FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51 +FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52 +FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53 +FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54 +FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55 +FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56 +FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57 +FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58 +FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59 +FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A +FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B +FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C +FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D +FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E +FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F +FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60 +FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61 +FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62 +FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63 +FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64 +FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65 +FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66 +FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67 +FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68 +FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69 +FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A +FB00;AL # LATIN SMALL LIGATURE FF +FB01;AL # LATIN SMALL LIGATURE FI +FB02;AL # LATIN SMALL LIGATURE FL +FB03;AL # LATIN SMALL LIGATURE FFI +FB04;AL # LATIN SMALL LIGATURE FFL +FB05;AL # LATIN SMALL LIGATURE LONG S T +FB06;AL # LATIN SMALL LIGATURE ST +FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW +FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH +FB15;AL # ARMENIAN SMALL LIGATURE MEN INI +FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW +FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH +FB1D;AL # HEBREW LETTER YOD WITH HIRIQ +FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA +FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB20;AL # HEBREW LETTER ALTERNATIVE AYIN +FB21;AL # HEBREW LETTER WIDE ALEF +FB22;AL # HEBREW LETTER WIDE DALET +FB23;AL # HEBREW LETTER WIDE HE +FB24;AL # HEBREW LETTER WIDE KAF +FB25;AL # HEBREW LETTER WIDE LAMED +FB26;AL # HEBREW LETTER WIDE FINAL MEM +FB27;AL # HEBREW LETTER WIDE RESH +FB28;AL # HEBREW LETTER WIDE TAV +FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN +FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT +FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT +FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT +FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT +FB2E;AL # HEBREW LETTER ALEF WITH PATAH +FB2F;AL # HEBREW LETTER ALEF WITH QAMATS +FB30;AL # HEBREW LETTER ALEF WITH MAPIQ +FB31;AL # HEBREW LETTER BET WITH DAGESH +FB32;AL # HEBREW LETTER GIMEL WITH DAGESH +FB33;AL # HEBREW LETTER DALET WITH DAGESH +FB34;AL # HEBREW LETTER HE WITH MAPIQ +FB35;AL # HEBREW LETTER VAV WITH DAGESH +FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH +FB38;AL # HEBREW LETTER TET WITH DAGESH +FB39;AL # HEBREW LETTER YOD WITH DAGESH +FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH +FB3B;AL # HEBREW LETTER KAF WITH DAGESH +FB3C;AL # HEBREW LETTER LAMED WITH DAGESH +FB3E;AL # HEBREW LETTER MEM WITH DAGESH +FB40;AL # HEBREW LETTER NUN WITH DAGESH +FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH +FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH +FB44;AL # HEBREW LETTER PE WITH DAGESH +FB46;AL # HEBREW LETTER TSADI WITH DAGESH +FB47;AL # HEBREW LETTER QOF WITH DAGESH +FB48;AL # HEBREW LETTER RESH WITH DAGESH +FB49;AL # HEBREW LETTER SHIN WITH DAGESH +FB4A;AL # HEBREW LETTER TAV WITH DAGESH +FB4B;AL # HEBREW LETTER VAV WITH HOLAM +FB4C;AL # HEBREW LETTER BET WITH RAFE +FB4D;AL # HEBREW LETTER KAF WITH RAFE +FB4E;AL # HEBREW LETTER PE WITH RAFE +FB4F;AL # HEBREW LIGATURE ALEF LAMED +FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM +FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM +FB52;AL # ARABIC LETTER BEEH ISOLATED FORM +FB53;AL # ARABIC LETTER BEEH FINAL FORM +FB54;AL # ARABIC LETTER BEEH INITIAL FORM +FB55;AL # ARABIC LETTER BEEH MEDIAL FORM +FB56;AL # ARABIC LETTER PEH ISOLATED FORM +FB57;AL # ARABIC LETTER PEH FINAL FORM +FB58;AL # ARABIC LETTER PEH INITIAL FORM +FB59;AL # ARABIC LETTER PEH MEDIAL FORM +FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM +FB5B;AL # ARABIC LETTER BEHEH FINAL FORM +FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM +FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM +FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM +FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM +FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM +FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM +FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM +FB63;AL # ARABIC LETTER TEHEH FINAL FORM +FB64;AL # ARABIC LETTER TEHEH INITIAL FORM +FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM +FB66;AL # ARABIC LETTER TTEH ISOLATED FORM +FB67;AL # ARABIC LETTER TTEH FINAL FORM +FB68;AL # ARABIC LETTER TTEH INITIAL FORM +FB69;AL # ARABIC LETTER TTEH MEDIAL FORM +FB6A;AL # ARABIC LETTER VEH ISOLATED FORM +FB6B;AL # ARABIC LETTER VEH FINAL FORM +FB6C;AL # ARABIC LETTER VEH INITIAL FORM +FB6D;AL # ARABIC LETTER VEH MEDIAL FORM +FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM +FB6F;AL # ARABIC LETTER PEHEH FINAL FORM +FB70;AL # ARABIC LETTER PEHEH INITIAL FORM +FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM +FB72;AL # ARABIC LETTER DYEH ISOLATED FORM +FB73;AL # ARABIC LETTER DYEH FINAL FORM +FB74;AL # ARABIC LETTER DYEH INITIAL FORM +FB75;AL # ARABIC LETTER DYEH MEDIAL FORM +FB76;AL # ARABIC LETTER NYEH ISOLATED FORM +FB77;AL # ARABIC LETTER NYEH FINAL FORM +FB78;AL # ARABIC LETTER NYEH INITIAL FORM +FB79;AL # ARABIC LETTER NYEH MEDIAL FORM +FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM +FB7B;AL # ARABIC LETTER TCHEH FINAL FORM +FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM +FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM +FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM +FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM +FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM +FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM +FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM +FB83;AL # ARABIC LETTER DDAHAL FINAL FORM +FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM +FB85;AL # ARABIC LETTER DAHAL FINAL FORM +FB86;AL # ARABIC LETTER DUL ISOLATED FORM +FB87;AL # ARABIC LETTER DUL FINAL FORM +FB88;AL # ARABIC LETTER DDAL ISOLATED FORM +FB89;AL # ARABIC LETTER DDAL FINAL FORM +FB8A;AL # ARABIC LETTER JEH ISOLATED FORM +FB8B;AL # ARABIC LETTER JEH FINAL FORM +FB8C;AL # ARABIC LETTER RREH ISOLATED FORM +FB8D;AL # ARABIC LETTER RREH FINAL FORM +FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM +FB8F;AL # ARABIC LETTER KEHEH FINAL FORM +FB90;AL # ARABIC LETTER KEHEH INITIAL FORM +FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM +FB92;AL # ARABIC LETTER GAF ISOLATED FORM +FB93;AL # ARABIC LETTER GAF FINAL FORM +FB94;AL # ARABIC LETTER GAF INITIAL FORM +FB95;AL # ARABIC LETTER GAF MEDIAL FORM +FB96;AL # ARABIC LETTER GUEH ISOLATED FORM +FB97;AL # ARABIC LETTER GUEH FINAL FORM +FB98;AL # ARABIC LETTER GUEH INITIAL FORM +FB99;AL # ARABIC LETTER GUEH MEDIAL FORM +FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM +FB9B;AL # ARABIC LETTER NGOEH FINAL FORM +FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM +FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM +FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM +FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM +FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM +FBA1;AL # ARABIC LETTER RNOON FINAL FORM +FBA2;AL # ARABIC LETTER RNOON INITIAL FORM +FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM +FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM +FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM +FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM +FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM +FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM +FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM +FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM +FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM +FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM +FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM +FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM +FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM +FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM +FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBD3;AL # ARABIC LETTER NG ISOLATED FORM +FBD4;AL # ARABIC LETTER NG FINAL FORM +FBD5;AL # ARABIC LETTER NG INITIAL FORM +FBD6;AL # ARABIC LETTER NG MEDIAL FORM +FBD7;AL # ARABIC LETTER U ISOLATED FORM +FBD8;AL # ARABIC LETTER U FINAL FORM +FBD9;AL # ARABIC LETTER OE ISOLATED FORM +FBDA;AL # ARABIC LETTER OE FINAL FORM +FBDB;AL # ARABIC LETTER YU ISOLATED FORM +FBDC;AL # ARABIC LETTER YU FINAL FORM +FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM +FBDE;AL # ARABIC LETTER VE ISOLATED FORM +FBDF;AL # ARABIC LETTER VE FINAL FORM +FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM +FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM +FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM +FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM +FBE4;AL # ARABIC LETTER E ISOLATED FORM +FBE5;AL # ARABIC LETTER E FINAL FORM +FBE6;AL # ARABIC LETTER E INITIAL FORM +FBE7;AL # ARABIC LETTER E MEDIAL FORM +FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM +FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM +FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM +FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM +FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM +FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM +FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM +FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM +FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM +FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM +FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM +FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM +FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM +FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM +FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM +FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM +FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM +FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM +FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM +FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM +FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM +FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM +FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM +FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM +FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM +FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM +FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM +FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM +FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM +FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM +FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM +FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM +FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM +FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM +FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM +FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM +FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM +FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM +FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM +FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM +FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM +FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM +FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM +FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM +FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM +FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM +FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM +FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM +FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM +FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM +FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM +FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM +FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM +FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM +FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM +FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM +FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM +FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM +FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM +FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM +FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM +FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM +FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM +FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM +FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM +FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM +FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM +FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM +FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM +FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM +FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM +FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM +FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM +FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM +FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM +FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM +FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM +FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM +FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM +FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM +FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM +FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM +FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM +FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM +FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM +FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM +FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM +FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM +FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM +FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM +FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM +FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM +FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM +FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM +FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM +FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM +FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM +FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM +FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM +FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM +FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM +FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM +FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM +FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM +FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM +FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM +FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM +FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM +FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM +FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM +FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM +FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM +FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM +FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM +FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM +FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM +FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM +FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM +FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM +FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM +FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM +FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM +FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM +FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM +FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM +FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM +FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM +FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM +FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM +FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM +FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM +FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM +FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM +FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM +FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM +FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM +FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM +FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM +FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM +FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM +FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM +FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM +FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM +FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM +FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM +FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM +FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM +FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM +FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM +FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM +FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM +FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM +FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM +FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM +FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM +FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM +FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM +FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM +FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM +FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM +FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM +FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM +FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM +FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM +FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM +FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM +FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM +FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM +FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM +FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM +FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM +FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM +FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM +FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM +FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM +FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM +FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM +FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM +FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM +FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM +FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM +FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM +FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM +FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM +FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM +FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM +FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM +FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM +FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM +FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM +FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM +FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM +FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM +FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM +FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM +FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM +FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM +FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM +FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM +FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM +FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM +FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM +FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM +FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM +FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM +FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM +FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM +FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM +FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM +FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM +FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM +FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM +FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM +FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM +FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM +FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM +FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM +FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM +FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM +FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM +FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM +FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM +FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM +FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM +FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM +FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM +FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM +FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM +FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM +FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM +FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM +FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM +FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM +FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM +FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM +FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM +FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM +FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM +FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM +FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM +FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM +FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM +FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM +FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM +FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM +FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM +FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM +FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM +FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM +FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM +FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM +FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM +FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM +FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM +FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM +FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM +FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM +FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM +FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM +FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM +FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM +FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM +FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM +FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM +FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM +FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM +FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM +FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM +FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM +FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM +FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM +FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM +FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM +FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM +FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM +FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM +FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM +FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM +FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM +FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM +FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM +FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM +FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM +FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM +FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM +FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM +FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM +FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM +FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM +FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM +FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM +FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM +FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM +FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM +FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM +FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM +FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM +FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM +FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM +FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM +FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM +FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM +FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM +FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM +FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM +FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM +FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM +FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM +FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM +FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM +FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM +FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM +FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM +FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM +FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM +FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM +FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM +FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM +FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM +FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM +FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM +FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM +FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM +FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM +FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM +FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM +FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM +FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM +FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM +FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM +FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM +FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM +FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM +FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM +FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM +FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM +FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM +FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM +FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM +FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM +FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM +FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD3E;OP # ORNATE LEFT PARENTHESIS +FD3F;CL # ORNATE RIGHT PARENTHESIS +FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM +FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM +FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM +FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM +FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM +FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM +FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM +FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM +FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM +FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM +FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM +FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM +FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM +FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM +FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM +FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM +FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM +FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM +FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM +FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM +FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM +FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM +FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM +FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM +FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM +FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM +FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM +FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM +FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM +FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM +FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM +FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM +FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM +FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM +FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM +FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM +FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM +FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM +FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM +FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM +FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM +FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM +FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM +FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM +FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM +FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM +FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM +FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM +FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM +FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM +FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM +FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM +FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM +FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM +FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM +FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM +FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM +FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM +FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM +FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM +FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM +FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM +FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM +FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM +FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM +FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM +FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM +FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM +FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM +FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM +FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM +FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM +FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM +FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM +FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM +FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM +FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM +FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM +FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM +FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM +FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM +FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM +FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM +FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM +FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM +FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM +FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM +FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM +FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM +FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM +FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM +FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM +FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM +FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM +FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM +FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM +FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM +FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM +FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM +FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM +FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM +FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM +FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM +FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM +FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM +FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM +FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM +FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM +FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM +FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM +FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM +FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM +FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM +FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM +FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM +FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM +FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM +FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM +FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM +FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM +FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM +FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM +FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM +FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM +FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU +FDFC;PO # RIAL SIGN +FE00;CM # VARIATION SELECTOR-1 +FE01;CM # VARIATION SELECTOR-2 +FE02;CM # VARIATION SELECTOR-3 +FE03;CM # VARIATION SELECTOR-4 +FE04;CM # VARIATION SELECTOR-5 +FE05;CM # VARIATION SELECTOR-6 +FE06;CM # VARIATION SELECTOR-7 +FE07;CM # VARIATION SELECTOR-8 +FE08;CM # VARIATION SELECTOR-9 +FE09;CM # VARIATION SELECTOR-10 +FE0A;CM # VARIATION SELECTOR-11 +FE0B;CM # VARIATION SELECTOR-12 +FE0C;CM # VARIATION SELECTOR-13 +FE0D;CM # VARIATION SELECTOR-14 +FE0E;CM # VARIATION SELECTOR-15 +FE0F;CM # VARIATION SELECTOR-16 +FE20;CM # COMBINING LIGATURE LEFT HALF +FE21;CM # COMBINING LIGATURE RIGHT HALF +FE22;CM # COMBINING DOUBLE TILDE LEFT HALF +FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF +FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH +FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH +FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE +FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +FE45;ID # SESAME DOT +FE46;ID # WHITE SESAME DOT +FE49;ID # DASHED OVERLINE +FE4A;ID # CENTRELINE OVERLINE +FE4B;ID # WAVY OVERLINE +FE4C;ID # DOUBLE WAVY OVERLINE +FE4D;ID # DASHED LOW LINE +FE4E;ID # CENTRELINE LOW LINE +FE4F;ID # WAVY LOW LINE +FE50;CL # SMALL COMMA +FE51;ID # SMALL IDEOGRAPHIC COMMA +FE52;CL # SMALL FULL STOP +FE54;NS # SMALL SEMICOLON +FE55;NS # SMALL COLON +FE56;EX # SMALL QUESTION MARK +FE57;EX # SMALL EXCLAMATION MARK +FE58;ID # SMALL EM DASH +FE59;OP # SMALL LEFT PARENTHESIS +FE5A;CL # SMALL RIGHT PARENTHESIS +FE5B;OP # SMALL LEFT CURLY BRACKET +FE5C;CL # SMALL RIGHT CURLY BRACKET +FE5D;OP # SMALL LEFT TORTOISE SHELL BRACKET +FE5E;CL # SMALL RIGHT TORTOISE SHELL BRACKET +FE5F;ID # SMALL NUMBER SIGN +FE60;ID # SMALL AMPERSAND +FE61;ID # SMALL ASTERISK +FE62;ID # SMALL PLUS SIGN +FE63;ID # SMALL HYPHEN-MINUS +FE64;ID # SMALL LESS-THAN SIGN +FE65;ID # SMALL GREATER-THAN SIGN +FE66;ID # SMALL EQUALS SIGN +FE68;ID # SMALL REVERSE SOLIDUS +FE69;PR # SMALL DOLLAR SIGN +FE6A;PO # SMALL PERCENT SIGN +FE6B;ID # SMALL COMMERCIAL AT +FE70;AL # ARABIC FATHATAN ISOLATED FORM +FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE +FE72;AL # ARABIC DAMMATAN ISOLATED FORM +FE73;AL # ARABIC TAIL FRAGMENT +FE74;AL # ARABIC KASRATAN ISOLATED FORM +FE76;AL # ARABIC FATHA ISOLATED FORM +FE77;AL # ARABIC FATHA MEDIAL FORM +FE78;AL # ARABIC DAMMA ISOLATED FORM +FE79;AL # ARABIC DAMMA MEDIAL FORM +FE7A;AL # ARABIC KASRA ISOLATED FORM +FE7B;AL # ARABIC KASRA MEDIAL FORM +FE7C;AL # ARABIC SHADDA ISOLATED FORM +FE7D;AL # ARABIC SHADDA MEDIAL FORM +FE7E;AL # ARABIC SUKUN ISOLATED FORM +FE7F;AL # ARABIC SUKUN MEDIAL FORM +FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM +FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM +FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM +FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM +FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM +FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM +FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM +FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM +FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM +FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM +FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM +FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM +FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM +FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM +FE8E;AL # ARABIC LETTER ALEF FINAL FORM +FE8F;AL # ARABIC LETTER BEH ISOLATED FORM +FE90;AL # ARABIC LETTER BEH FINAL FORM +FE91;AL # ARABIC LETTER BEH INITIAL FORM +FE92;AL # ARABIC LETTER BEH MEDIAL FORM +FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM +FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM +FE95;AL # ARABIC LETTER TEH ISOLATED FORM +FE96;AL # ARABIC LETTER TEH FINAL FORM +FE97;AL # ARABIC LETTER TEH INITIAL FORM +FE98;AL # ARABIC LETTER TEH MEDIAL FORM +FE99;AL # ARABIC LETTER THEH ISOLATED FORM +FE9A;AL # ARABIC LETTER THEH FINAL FORM +FE9B;AL # ARABIC LETTER THEH INITIAL FORM +FE9C;AL # ARABIC LETTER THEH MEDIAL FORM +FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM +FE9E;AL # ARABIC LETTER JEEM FINAL FORM +FE9F;AL # ARABIC LETTER JEEM INITIAL FORM +FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM +FEA1;AL # ARABIC LETTER HAH ISOLATED FORM +FEA2;AL # ARABIC LETTER HAH FINAL FORM +FEA3;AL # ARABIC LETTER HAH INITIAL FORM +FEA4;AL # ARABIC LETTER HAH MEDIAL FORM +FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM +FEA6;AL # ARABIC LETTER KHAH FINAL FORM +FEA7;AL # ARABIC LETTER KHAH INITIAL FORM +FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM +FEA9;AL # ARABIC LETTER DAL ISOLATED FORM +FEAA;AL # ARABIC LETTER DAL FINAL FORM +FEAB;AL # ARABIC LETTER THAL ISOLATED FORM +FEAC;AL # ARABIC LETTER THAL FINAL FORM +FEAD;AL # ARABIC LETTER REH ISOLATED FORM +FEAE;AL # ARABIC LETTER REH FINAL FORM +FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM +FEB0;AL # ARABIC LETTER ZAIN FINAL FORM +FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM +FEB2;AL # ARABIC LETTER SEEN FINAL FORM +FEB3;AL # ARABIC LETTER SEEN INITIAL FORM +FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM +FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM +FEB6;AL # ARABIC LETTER SHEEN FINAL FORM +FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM +FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM +FEB9;AL # ARABIC LETTER SAD ISOLATED FORM +FEBA;AL # ARABIC LETTER SAD FINAL FORM +FEBB;AL # ARABIC LETTER SAD INITIAL FORM +FEBC;AL # ARABIC LETTER SAD MEDIAL FORM +FEBD;AL # ARABIC LETTER DAD ISOLATED FORM +FEBE;AL # ARABIC LETTER DAD FINAL FORM +FEBF;AL # ARABIC LETTER DAD INITIAL FORM +FEC0;AL # ARABIC LETTER DAD MEDIAL FORM +FEC1;AL # ARABIC LETTER TAH ISOLATED FORM +FEC2;AL # ARABIC LETTER TAH FINAL FORM +FEC3;AL # ARABIC LETTER TAH INITIAL FORM +FEC4;AL # ARABIC LETTER TAH MEDIAL FORM +FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM +FEC6;AL # ARABIC LETTER ZAH FINAL FORM +FEC7;AL # ARABIC LETTER ZAH INITIAL FORM +FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM +FEC9;AL # ARABIC LETTER AIN ISOLATED FORM +FECA;AL # ARABIC LETTER AIN FINAL FORM +FECB;AL # ARABIC LETTER AIN INITIAL FORM +FECC;AL # ARABIC LETTER AIN MEDIAL FORM +FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM +FECE;AL # ARABIC LETTER GHAIN FINAL FORM +FECF;AL # ARABIC LETTER GHAIN INITIAL FORM +FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM +FED1;AL # ARABIC LETTER FEH ISOLATED FORM +FED2;AL # ARABIC LETTER FEH FINAL FORM +FED3;AL # ARABIC LETTER FEH INITIAL FORM +FED4;AL # ARABIC LETTER FEH MEDIAL FORM +FED5;AL # ARABIC LETTER QAF ISOLATED FORM +FED6;AL # ARABIC LETTER QAF FINAL FORM +FED7;AL # ARABIC LETTER QAF INITIAL FORM +FED8;AL # ARABIC LETTER QAF MEDIAL FORM +FED9;AL # ARABIC LETTER KAF ISOLATED FORM +FEDA;AL # ARABIC LETTER KAF FINAL FORM +FEDB;AL # ARABIC LETTER KAF INITIAL FORM +FEDC;AL # ARABIC LETTER KAF MEDIAL FORM +FEDD;AL # ARABIC LETTER LAM ISOLATED FORM +FEDE;AL # ARABIC LETTER LAM FINAL FORM +FEDF;AL # ARABIC LETTER LAM INITIAL FORM +FEE0;AL # ARABIC LETTER LAM MEDIAL FORM +FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM +FEE2;AL # ARABIC LETTER MEEM FINAL FORM +FEE3;AL # ARABIC LETTER MEEM INITIAL FORM +FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM +FEE5;AL # ARABIC LETTER NOON ISOLATED FORM +FEE6;AL # ARABIC LETTER NOON FINAL FORM +FEE7;AL # ARABIC LETTER NOON INITIAL FORM +FEE8;AL # ARABIC LETTER NOON MEDIAL FORM +FEE9;AL # ARABIC LETTER HEH ISOLATED FORM +FEEA;AL # ARABIC LETTER HEH FINAL FORM +FEEB;AL # ARABIC LETTER HEH INITIAL FORM +FEEC;AL # ARABIC LETTER HEH MEDIAL FORM +FEED;AL # ARABIC LETTER WAW ISOLATED FORM +FEEE;AL # ARABIC LETTER WAW FINAL FORM +FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM +FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM +FEF1;AL # ARABIC LETTER YEH ISOLATED FORM +FEF2;AL # ARABIC LETTER YEH FINAL FORM +FEF3;AL # ARABIC LETTER YEH INITIAL FORM +FEF4;AL # ARABIC LETTER YEH MEDIAL FORM +FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM +FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM +FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM +FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM +FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM +FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM +FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM +FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FEFF;GL # ZERO WIDTH NO-BREAK SPACE +FF01;EX # FULLWIDTH EXCLAMATION MARK +FF02;ID # FULLWIDTH QUOTATION MARK +FF03;ID # FULLWIDTH NUMBER SIGN +FF04;PR # FULLWIDTH DOLLAR SIGN +FF05;PO # FULLWIDTH PERCENT SIGN +FF06;ID # FULLWIDTH AMPERSAND +FF07;ID # FULLWIDTH APOSTROPHE +FF08;OP # FULLWIDTH LEFT PARENTHESIS +FF09;CL # FULLWIDTH RIGHT PARENTHESIS +FF0A;ID # FULLWIDTH ASTERISK +FF0B;ID # FULLWIDTH PLUS SIGN +FF0C;CL # FULLWIDTH COMMA +FF0D;ID # FULLWIDTH HYPHEN-MINUS +FF0E;CL # FULLWIDTH FULL STOP +FF0F;ID # FULLWIDTH SOLIDUS +FF10;ID # FULLWIDTH DIGIT ZERO +FF11;ID # FULLWIDTH DIGIT ONE +FF12;ID # FULLWIDTH DIGIT TWO +FF13;ID # FULLWIDTH DIGIT THREE +FF14;ID # FULLWIDTH DIGIT FOUR +FF15;ID # FULLWIDTH DIGIT FIVE +FF16;ID # FULLWIDTH DIGIT SIX +FF17;ID # FULLWIDTH DIGIT SEVEN +FF18;ID # FULLWIDTH DIGIT EIGHT +FF19;ID # FULLWIDTH DIGIT NINE +FF1A;NS # FULLWIDTH COLON +FF1B;NS # FULLWIDTH SEMICOLON +FF1C;ID # FULLWIDTH LESS-THAN SIGN +FF1D;ID # FULLWIDTH EQUALS SIGN +FF1E;ID # FULLWIDTH GREATER-THAN SIGN +FF1F;EX # FULLWIDTH QUESTION MARK +FF20;ID # FULLWIDTH COMMERCIAL AT +FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A +FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B +FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C +FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D +FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E +FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F +FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G +FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H +FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I +FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J +FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K +FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L +FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M +FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N +FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O +FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P +FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q +FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R +FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S +FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T +FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U +FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V +FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W +FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X +FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y +FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z +FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET +FF3C;ID # FULLWIDTH REVERSE SOLIDUS +FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET +FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT +FF3F;ID # FULLWIDTH LOW LINE +FF40;ID # FULLWIDTH GRAVE ACCENT +FF41;ID # FULLWIDTH LATIN SMALL LETTER A +FF42;ID # FULLWIDTH LATIN SMALL LETTER B +FF43;ID # FULLWIDTH LATIN SMALL LETTER C +FF44;ID # FULLWIDTH LATIN SMALL LETTER D +FF45;ID # FULLWIDTH LATIN SMALL LETTER E +FF46;ID # FULLWIDTH LATIN SMALL LETTER F +FF47;ID # FULLWIDTH LATIN SMALL LETTER G +FF48;ID # FULLWIDTH LATIN SMALL LETTER H +FF49;ID # FULLWIDTH LATIN SMALL LETTER I +FF4A;ID # FULLWIDTH LATIN SMALL LETTER J +FF4B;ID # FULLWIDTH LATIN SMALL LETTER K +FF4C;ID # FULLWIDTH LATIN SMALL LETTER L +FF4D;ID # FULLWIDTH LATIN SMALL LETTER M +FF4E;ID # FULLWIDTH LATIN SMALL LETTER N +FF4F;ID # FULLWIDTH LATIN SMALL LETTER O +FF50;ID # FULLWIDTH LATIN SMALL LETTER P +FF51;ID # FULLWIDTH LATIN SMALL LETTER Q +FF52;ID # FULLWIDTH LATIN SMALL LETTER R +FF53;ID # FULLWIDTH LATIN SMALL LETTER S +FF54;ID # FULLWIDTH LATIN SMALL LETTER T +FF55;ID # FULLWIDTH LATIN SMALL LETTER U +FF56;ID # FULLWIDTH LATIN SMALL LETTER V +FF57;ID # FULLWIDTH LATIN SMALL LETTER W +FF58;ID # FULLWIDTH LATIN SMALL LETTER X +FF59;ID # FULLWIDTH LATIN SMALL LETTER Y +FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z +FF5B;OP # FULLWIDTH LEFT CURLY BRACKET +FF5C;ID # FULLWIDTH VERTICAL LINE +FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET +FF5E;ID # FULLWIDTH TILDE +FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS +FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS +FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP +FF62;OP # HALFWIDTH LEFT CORNER BRACKET +FF63;CL # HALFWIDTH RIGHT CORNER BRACKET +FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA +FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT +FF66;AL # HALFWIDTH KATAKANA LETTER WO +FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A +FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I +FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U +FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E +FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O +FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA +FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU +FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO +FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU +FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF71;AL # HALFWIDTH KATAKANA LETTER A +FF72;AL # HALFWIDTH KATAKANA LETTER I +FF73;AL # HALFWIDTH KATAKANA LETTER U +FF74;AL # HALFWIDTH KATAKANA LETTER E +FF75;AL # HALFWIDTH KATAKANA LETTER O +FF76;AL # HALFWIDTH KATAKANA LETTER KA +FF77;AL # HALFWIDTH KATAKANA LETTER KI +FF78;AL # HALFWIDTH KATAKANA LETTER KU +FF79;AL # HALFWIDTH KATAKANA LETTER KE +FF7A;AL # HALFWIDTH KATAKANA LETTER KO +FF7B;AL # HALFWIDTH KATAKANA LETTER SA +FF7C;AL # HALFWIDTH KATAKANA LETTER SI +FF7D;AL # HALFWIDTH KATAKANA LETTER SU +FF7E;AL # HALFWIDTH KATAKANA LETTER SE +FF7F;AL # HALFWIDTH KATAKANA LETTER SO +FF80;AL # HALFWIDTH KATAKANA LETTER TA +FF81;AL # HALFWIDTH KATAKANA LETTER TI +FF82;AL # HALFWIDTH KATAKANA LETTER TU +FF83;AL # HALFWIDTH KATAKANA LETTER TE +FF84;AL # HALFWIDTH KATAKANA LETTER TO +FF85;AL # HALFWIDTH KATAKANA LETTER NA +FF86;AL # HALFWIDTH KATAKANA LETTER NI +FF87;AL # HALFWIDTH KATAKANA LETTER NU +FF88;AL # HALFWIDTH KATAKANA LETTER NE +FF89;AL # HALFWIDTH KATAKANA LETTER NO +FF8A;AL # HALFWIDTH KATAKANA LETTER HA +FF8B;AL # HALFWIDTH KATAKANA LETTER HI +FF8C;AL # HALFWIDTH KATAKANA LETTER HU +FF8D;AL # HALFWIDTH KATAKANA LETTER HE +FF8E;AL # HALFWIDTH KATAKANA LETTER HO +FF8F;AL # HALFWIDTH KATAKANA LETTER MA +FF90;AL # HALFWIDTH KATAKANA LETTER MI +FF91;AL # HALFWIDTH KATAKANA LETTER MU +FF92;AL # HALFWIDTH KATAKANA LETTER ME +FF93;AL # HALFWIDTH KATAKANA LETTER MO +FF94;AL # HALFWIDTH KATAKANA LETTER YA +FF95;AL # HALFWIDTH KATAKANA LETTER YU +FF96;AL # HALFWIDTH KATAKANA LETTER YO +FF97;AL # HALFWIDTH KATAKANA LETTER RA +FF98;AL # HALFWIDTH KATAKANA LETTER RI +FF99;AL # HALFWIDTH KATAKANA LETTER RU +FF9A;AL # HALFWIDTH KATAKANA LETTER RE +FF9B;AL # HALFWIDTH KATAKANA LETTER RO +FF9C;AL # HALFWIDTH KATAKANA LETTER WA +FF9D;AL # HALFWIDTH KATAKANA LETTER N +FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK +FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +FFA0;AL # HALFWIDTH HANGUL FILLER +FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK +FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK +FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS +FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN +FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC +FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH +FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT +FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT +FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL +FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK +FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM +FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP +FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS +FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH +FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH +FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH +FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM +FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP +FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP +FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS +FFB5;AL # HALFWIDTH HANGUL LETTER SIOS +FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS +FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG +FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC +FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC +FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH +FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH +FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH +FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH +FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH +FFC2;AL # HALFWIDTH HANGUL LETTER A +FFC3;AL # HALFWIDTH HANGUL LETTER AE +FFC4;AL # HALFWIDTH HANGUL LETTER YA +FFC5;AL # HALFWIDTH HANGUL LETTER YAE +FFC6;AL # HALFWIDTH HANGUL LETTER EO +FFC7;AL # HALFWIDTH HANGUL LETTER E +FFCA;AL # HALFWIDTH HANGUL LETTER YEO +FFCB;AL # HALFWIDTH HANGUL LETTER YE +FFCC;AL # HALFWIDTH HANGUL LETTER O +FFCD;AL # HALFWIDTH HANGUL LETTER WA +FFCE;AL # HALFWIDTH HANGUL LETTER WAE +FFCF;AL # HALFWIDTH HANGUL LETTER OE +FFD2;AL # HALFWIDTH HANGUL LETTER YO +FFD3;AL # HALFWIDTH HANGUL LETTER U +FFD4;AL # HALFWIDTH HANGUL LETTER WEO +FFD5;AL # HALFWIDTH HANGUL LETTER WE +FFD6;AL # HALFWIDTH HANGUL LETTER WI +FFD7;AL # HALFWIDTH HANGUL LETTER YU +FFDA;AL # HALFWIDTH HANGUL LETTER EU +FFDB;AL # HALFWIDTH HANGUL LETTER YI +FFDC;AL # HALFWIDTH HANGUL LETTER I +FFE0;PO # FULLWIDTH CENT SIGN +FFE1;PR # FULLWIDTH POUND SIGN +FFE2;ID # FULLWIDTH NOT SIGN +FFE3;ID # FULLWIDTH MACRON +FFE4;ID # FULLWIDTH BROKEN BAR +FFE5;PR # FULLWIDTH YEN SIGN +FFE6;PR # FULLWIDTH WON SIGN +FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL +FFE9;AL # HALFWIDTH LEFTWARDS ARROW +FFEA;AL # HALFWIDTH UPWARDS ARROW +FFEB;AL # HALFWIDTH RIGHTWARDS ARROW +FFEC;AL # HALFWIDTH DOWNWARDS ARROW +FFED;AL # HALFWIDTH BLACK SQUARE +FFEE;AL # HALFWIDTH WHITE CIRCLE +FFF9;CM # INTERLINEAR ANNOTATION ANCHOR +FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR +FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR +FFFC;CB # OBJECT REPLACEMENT CHARACTER +FFFD;AI # REPLACEMENT CHARACTER +10300;AL # OLD ITALIC LETTER A +10301;AL # OLD ITALIC LETTER BE +10302;AL # OLD ITALIC LETTER KE +10303;AL # OLD ITALIC LETTER DE +10304;AL # OLD ITALIC LETTER E +10305;AL # OLD ITALIC LETTER VE +10306;AL # OLD ITALIC LETTER ZE +10307;AL # OLD ITALIC LETTER HE +10308;AL # OLD ITALIC LETTER THE +10309;AL # OLD ITALIC LETTER I +1030A;AL # OLD ITALIC LETTER KA +1030B;AL # OLD ITALIC LETTER EL +1030C;AL # OLD ITALIC LETTER EM +1030D;AL # OLD ITALIC LETTER EN +1030E;AL # OLD ITALIC LETTER ESH +1030F;AL # OLD ITALIC LETTER O +10310;AL # OLD ITALIC LETTER PE +10311;AL # OLD ITALIC LETTER SHE +10312;AL # OLD ITALIC LETTER KU +10313;AL # OLD ITALIC LETTER ER +10314;AL # OLD ITALIC LETTER ES +10315;AL # OLD ITALIC LETTER TE +10316;AL # OLD ITALIC LETTER U +10317;AL # OLD ITALIC LETTER EKS +10318;AL # OLD ITALIC LETTER PHE +10319;AL # OLD ITALIC LETTER KHE +1031A;AL # OLD ITALIC LETTER EF +1031B;AL # OLD ITALIC LETTER ERS +1031C;AL # OLD ITALIC LETTER CHE +1031D;AL # OLD ITALIC LETTER II +1031E;AL # OLD ITALIC LETTER UU +10320;AL # OLD ITALIC NUMERAL ONE +10321;AL # OLD ITALIC NUMERAL FIVE +10322;AL # OLD ITALIC NUMERAL TEN +10323;AL # OLD ITALIC NUMERAL FIFTY +10330;AL # GOTHIC LETTER AHSA +10331;AL # GOTHIC LETTER BAIRKAN +10332;AL # GOTHIC LETTER GIBA +10333;AL # GOTHIC LETTER DAGS +10334;AL # GOTHIC LETTER AIHVUS +10335;AL # GOTHIC LETTER QAIRTHRA +10336;AL # GOTHIC LETTER IUJA +10337;AL # GOTHIC LETTER HAGL +10338;AL # GOTHIC LETTER THIUTH +10339;AL # GOTHIC LETTER EIS +1033A;AL # GOTHIC LETTER KUSMA +1033B;AL # GOTHIC LETTER LAGUS +1033C;AL # GOTHIC LETTER MANNA +1033D;AL # GOTHIC LETTER NAUTHS +1033E;AL # GOTHIC LETTER JER +1033F;AL # GOTHIC LETTER URUS +10340;AL # GOTHIC LETTER PAIRTHRA +10341;AL # GOTHIC LETTER NINETY +10342;AL # GOTHIC LETTER RAIDA +10343;AL # GOTHIC LETTER SAUIL +10344;AL # GOTHIC LETTER TEIWS +10345;AL # GOTHIC LETTER WINJA +10346;AL # GOTHIC LETTER FAIHU +10347;AL # GOTHIC LETTER IGGWS +10348;AL # GOTHIC LETTER HWAIR +10349;AL # GOTHIC LETTER OTHAL +1034A;AL # GOTHIC LETTER NINE HUNDRED +10400;AL # DESERET CAPITAL LETTER LONG I +10401;AL # DESERET CAPITAL LETTER LONG E +10402;AL # DESERET CAPITAL LETTER LONG A +10403;AL # DESERET CAPITAL LETTER LONG AH +10404;AL # DESERET CAPITAL LETTER LONG O +10405;AL # DESERET CAPITAL LETTER LONG OO +10406;AL # DESERET CAPITAL LETTER SHORT I +10407;AL # DESERET CAPITAL LETTER SHORT E +10408;AL # DESERET CAPITAL LETTER SHORT A +10409;AL # DESERET CAPITAL LETTER SHORT AH +1040A;AL # DESERET CAPITAL LETTER SHORT O +1040B;AL # DESERET CAPITAL LETTER SHORT OO +1040C;AL # DESERET CAPITAL LETTER AY +1040D;AL # DESERET CAPITAL LETTER OW +1040E;AL # DESERET CAPITAL LETTER WU +1040F;AL # DESERET CAPITAL LETTER YEE +10410;AL # DESERET CAPITAL LETTER H +10411;AL # DESERET CAPITAL LETTER PEE +10412;AL # DESERET CAPITAL LETTER BEE +10413;AL # DESERET CAPITAL LETTER TEE +10414;AL # DESERET CAPITAL LETTER DEE +10415;AL # DESERET CAPITAL LETTER CHEE +10416;AL # DESERET CAPITAL LETTER JEE +10417;AL # DESERET CAPITAL LETTER KAY +10418;AL # DESERET CAPITAL LETTER GAY +10419;AL # DESERET CAPITAL LETTER EF +1041A;AL # DESERET CAPITAL LETTER VEE +1041B;AL # DESERET CAPITAL LETTER ETH +1041C;AL # DESERET CAPITAL LETTER THEE +1041D;AL # DESERET CAPITAL LETTER ES +1041E;AL # DESERET CAPITAL LETTER ZEE +1041F;AL # DESERET CAPITAL LETTER ESH +10420;AL # DESERET CAPITAL LETTER ZHEE +10421;AL # DESERET CAPITAL LETTER ER +10422;AL # DESERET CAPITAL LETTER EL +10423;AL # DESERET CAPITAL LETTER EM +10424;AL # DESERET CAPITAL LETTER EN +10425;AL # DESERET CAPITAL LETTER ENG +10428;AL # DESERET SMALL LETTER LONG I +10429;AL # DESERET SMALL LETTER LONG E +1042A;AL # DESERET SMALL LETTER LONG A +1042B;AL # DESERET SMALL LETTER LONG AH +1042C;AL # DESERET SMALL LETTER LONG O +1042D;AL # DESERET SMALL LETTER LONG OO +1042E;AL # DESERET SMALL LETTER SHORT I +1042F;AL # DESERET SMALL LETTER SHORT E +10430;AL # DESERET SMALL LETTER SHORT A +10431;AL # DESERET SMALL LETTER SHORT AH +10432;AL # DESERET SMALL LETTER SHORT O +10433;AL # DESERET SMALL LETTER SHORT OO +10434;AL # DESERET SMALL LETTER AY +10435;AL # DESERET SMALL LETTER OW +10436;AL # DESERET SMALL LETTER WU +10437;AL # DESERET SMALL LETTER YEE +10438;AL # DESERET SMALL LETTER H +10439;AL # DESERET SMALL LETTER PEE +1043A;AL # DESERET SMALL LETTER BEE +1043B;AL # DESERET SMALL LETTER TEE +1043C;AL # DESERET SMALL LETTER DEE +1043D;AL # DESERET SMALL LETTER CHEE +1043E;AL # DESERET SMALL LETTER JEE +1043F;AL # DESERET SMALL LETTER KAY +10440;AL # DESERET SMALL LETTER GAY +10441;AL # DESERET SMALL LETTER EF +10442;AL # DESERET SMALL LETTER VEE +10443;AL # DESERET SMALL LETTER ETH +10444;AL # DESERET SMALL LETTER THEE +10445;AL # DESERET SMALL LETTER ES +10446;AL # DESERET SMALL LETTER ZEE +10447;AL # DESERET SMALL LETTER ESH +10448;AL # DESERET SMALL LETTER ZHEE +10449;AL # DESERET SMALL LETTER ER +1044A;AL # DESERET SMALL LETTER EL +1044B;AL # DESERET SMALL LETTER EM +1044C;AL # DESERET SMALL LETTER EN +1044D;AL # DESERET SMALL LETTER ENG +1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI +1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA +1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI +1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON +1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI +1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON +1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI +1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI +1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI +1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI +1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS +1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI +1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI +1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON +1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON +1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA +1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA +1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS +1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI +1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA +1D014;AL # BYZANTINE MUSICAL SYMBOL THITA +1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION +1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION +1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON +1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON +1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY +1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION +1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION +1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION +1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA +1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON +1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA +1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION +1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION +1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION +1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA +1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA +1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA +1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION +1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA +1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA +1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA +1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION +1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU +1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION +1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA +1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI +1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO +1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA +1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA +1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA +1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO +1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION +1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA +1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION +1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON +1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON +1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON +1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA +1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION +1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA +1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION +1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION +1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN +1D040;AL # BYZANTINE MUSICAL SYMBOL NANA +1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA +1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO +1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO +1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA +1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA +1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO +1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO +1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO +1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI +1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA +1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA +1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA +1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO +1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO +1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO +1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI +1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO +1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO +1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI +1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON +1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON +1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI +1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON +1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO +1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO +1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO +1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON +1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA +1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA +1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO +1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO +1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA +1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA +1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA +1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO +1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON +1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO +1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA +1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO +1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA +1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO +1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA +1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON +1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA +1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA +1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA +1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA +1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA +1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA +1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON +1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON +1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON +1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO +1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO +1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO +1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN +1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES +1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA +1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON +1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO +1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO +1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS +1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO +1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION +1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION +1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO +1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO +1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO +1D085;AL # BYZANTINE MUSICAL SYMBOL APLI +1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI +1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI +1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI +1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS +1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU +1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON +1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON +1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON +1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU +1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO +1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA +1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA +1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON +1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO +1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO +1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA +1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON +1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON +1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON +1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON +1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI +1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI +1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI +1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA +1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI +1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI +1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI +1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI +1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS +1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS +1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS +1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS +1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS +1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS +1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS +1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS +1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS +1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS +1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS +1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS +1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS +1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS +1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS +1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS +1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS +1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS +1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN +1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN +1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU +1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON +1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON +1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU +1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA +1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA +1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS +1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI +1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI +1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE +1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO +1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO +1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO +1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS +1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS +1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS +1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI +1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO +1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS +1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON +1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI +1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION +1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA +1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION +1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION +1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION +1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA +1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA +1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA +1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA +1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA +1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA +1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA +1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA +1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS +1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS +1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI +1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI +1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI +1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS +1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS +1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU +1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU +1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU +1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS +1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU +1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU +1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU +1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG +1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU +1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA +1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA +1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU +1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA +1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI +1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE +1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO +1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI +1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO +1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO +1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO +1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO +1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO +1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO +1D100;AL # MUSICAL SYMBOL SINGLE BARLINE +1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE +1D102;AL # MUSICAL SYMBOL FINAL BARLINE +1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE +1D104;AL # MUSICAL SYMBOL DASHED BARLINE +1D105;AL # MUSICAL SYMBOL SHORT BARLINE +1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN +1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN +1D108;AL # MUSICAL SYMBOL REPEAT DOTS +1D109;AL # MUSICAL SYMBOL DAL SEGNO +1D10A;AL # MUSICAL SYMBOL DA CAPO +1D10B;AL # MUSICAL SYMBOL SEGNO +1D10C;AL # MUSICAL SYMBOL CODA +1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1 +1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2 +1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3 +1D110;AL # MUSICAL SYMBOL FERMATA +1D111;AL # MUSICAL SYMBOL FERMATA BELOW +1D112;AL # MUSICAL SYMBOL BREATH MARK +1D113;AL # MUSICAL SYMBOL CAESURA +1D114;AL # MUSICAL SYMBOL BRACE +1D115;AL # MUSICAL SYMBOL BRACKET +1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF +1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF +1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF +1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF +1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF +1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF +1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD +1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD +1D11E;AL # MUSICAL SYMBOL G CLEF +1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA +1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA +1D121;AL # MUSICAL SYMBOL C CLEF +1D122;AL # MUSICAL SYMBOL F CLEF +1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA +1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA +1D125;AL # MUSICAL SYMBOL DRUM CLEF-1 +1D126;AL # MUSICAL SYMBOL DRUM CLEF-2 +1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP +1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT +1D12C;AL # MUSICAL SYMBOL FLAT UP +1D12D;AL # MUSICAL SYMBOL FLAT DOWN +1D12E;AL # MUSICAL SYMBOL NATURAL UP +1D12F;AL # MUSICAL SYMBOL NATURAL DOWN +1D130;AL # MUSICAL SYMBOL SHARP UP +1D131;AL # MUSICAL SYMBOL SHARP DOWN +1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP +1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT +1D134;AL # MUSICAL SYMBOL COMMON TIME +1D135;AL # MUSICAL SYMBOL CUT TIME +1D136;AL # MUSICAL SYMBOL OTTAVA ALTA +1D137;AL # MUSICAL SYMBOL OTTAVA BASSA +1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA +1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA +1D13A;AL # MUSICAL SYMBOL MULTI REST +1D13B;AL # MUSICAL SYMBOL WHOLE REST +1D13C;AL # MUSICAL SYMBOL HALF REST +1D13D;AL # MUSICAL SYMBOL QUARTER REST +1D13E;AL # MUSICAL SYMBOL EIGHTH REST +1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST +1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST +1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST +1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST +1D143;AL # MUSICAL SYMBOL X NOTEHEAD +1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD +1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD +1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE +1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK +1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE +1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK +1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE +1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK +1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE +1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK +1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE +1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK +1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE +1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK +1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE +1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK +1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE +1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK +1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD +1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD +1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK +1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD +1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE +1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK +1D15C;AL # MUSICAL SYMBOL BREVE +1D15D;AL # MUSICAL SYMBOL WHOLE NOTE +1D15E;AL # MUSICAL SYMBOL HALF NOTE +1D15F;AL # MUSICAL SYMBOL QUARTER NOTE +1D160;AL # MUSICAL SYMBOL EIGHTH NOTE +1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE +1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE +1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE +1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D165;CM # MUSICAL SYMBOL COMBINING STEM +1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM +1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1 +1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2 +1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3 +1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1 +1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2 +1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3 +1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT +1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1 +1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2 +1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3 +1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4 +1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5 +1D173;CM # MUSICAL SYMBOL BEGIN BEAM +1D174;CM # MUSICAL SYMBOL END BEAM +1D175;CM # MUSICAL SYMBOL BEGIN TIE +1D176;CM # MUSICAL SYMBOL END TIE +1D177;CM # MUSICAL SYMBOL BEGIN SLUR +1D178;CM # MUSICAL SYMBOL END SLUR +1D179;CM # MUSICAL SYMBOL BEGIN PHRASE +1D17A;CM # MUSICAL SYMBOL END PHRASE +1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT +1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO +1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO +1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO +1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO +1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO +1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO +1D182;CM # MUSICAL SYMBOL COMBINING LOURE +1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP +1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN +1D185;CM # MUSICAL SYMBOL COMBINING DOIT +1D186;CM # MUSICAL SYMBOL COMBINING RIP +1D187;CM # MUSICAL SYMBOL COMBINING FLIP +1D188;CM # MUSICAL SYMBOL COMBINING SMEAR +1D189;CM # MUSICAL SYMBOL COMBINING BEND +1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE +1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE +1D18C;AL # MUSICAL SYMBOL RINFORZANDO +1D18D;AL # MUSICAL SYMBOL SUBITO +1D18E;AL # MUSICAL SYMBOL Z +1D18F;AL # MUSICAL SYMBOL PIANO +1D190;AL # MUSICAL SYMBOL MEZZO +1D191;AL # MUSICAL SYMBOL FORTE +1D192;AL # MUSICAL SYMBOL CRESCENDO +1D193;AL # MUSICAL SYMBOL DECRESCENDO +1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH +1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH +1D196;AL # MUSICAL SYMBOL TR +1D197;AL # MUSICAL SYMBOL TURN +1D198;AL # MUSICAL SYMBOL INVERTED TURN +1D199;AL # MUSICAL SYMBOL TURN SLASH +1D19A;AL # MUSICAL SYMBOL TURN UP +1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1 +1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2 +1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3 +1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4 +1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5 +1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6 +1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7 +1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8 +1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9 +1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10 +1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11 +1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME +1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME +1D1A8;AL # MUSICAL SYMBOL END OF STIMME +1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH +1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW +1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW +1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC +1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO +1D1AE;AL # MUSICAL SYMBOL PEDAL MARK +1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK +1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK +1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP +1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN +1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS +1D1B4;AL # MUSICAL SYMBOL DAMP +1D1B5;AL # MUSICAL SYMBOL DAMP ALL +1D1B6;AL # MUSICAL SYMBOL MAXIMA +1D1B7;AL # MUSICAL SYMBOL LONGA +1D1B8;AL # MUSICAL SYMBOL BREVIS +1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE +1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK +1D1BB;AL # MUSICAL SYMBOL MINIMA +1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK +1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE +1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK +1D1BF;AL # MUSICAL SYMBOL FUSA WHITE +1D1C0;AL # MUSICAL SYMBOL FUSA BLACK +1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST +1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST +1D1C3;AL # MUSICAL SYMBOL BREVIS REST +1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST +1D1C5;AL # MUSICAL SYMBOL MINIMA REST +1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST +1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA +1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA +1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 +1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA +1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA +1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 +1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 +1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 +1D1CF;AL # MUSICAL SYMBOL CROIX +1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF +1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF +1D1D2;AL # MUSICAL SYMBOL SQUARE B +1D1D3;AL # MUSICAL SYMBOL VIRGA +1D1D4;AL # MUSICAL SYMBOL PODATUS +1D1D5;AL # MUSICAL SYMBOL CLIVIS +1D1D6;AL # MUSICAL SYMBOL SCANDICUS +1D1D7;AL # MUSICAL SYMBOL CLIMACUS +1D1D8;AL # MUSICAL SYMBOL TORCULUS +1D1D9;AL # MUSICAL SYMBOL PORRECTUS +1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS +1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS +1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS +1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS +1D400;AL # MATHEMATICAL BOLD CAPITAL A +1D401;AL # MATHEMATICAL BOLD CAPITAL B +1D402;AL # MATHEMATICAL BOLD CAPITAL C +1D403;AL # MATHEMATICAL BOLD CAPITAL D +1D404;AL # MATHEMATICAL BOLD CAPITAL E +1D405;AL # MATHEMATICAL BOLD CAPITAL F +1D406;AL # MATHEMATICAL BOLD CAPITAL G +1D407;AL # MATHEMATICAL BOLD CAPITAL H +1D408;AL # MATHEMATICAL BOLD CAPITAL I +1D409;AL # MATHEMATICAL BOLD CAPITAL J +1D40A;AL # MATHEMATICAL BOLD CAPITAL K +1D40B;AL # MATHEMATICAL BOLD CAPITAL L +1D40C;AL # MATHEMATICAL BOLD CAPITAL M +1D40D;AL # MATHEMATICAL BOLD CAPITAL N +1D40E;AL # MATHEMATICAL BOLD CAPITAL O +1D40F;AL # MATHEMATICAL BOLD CAPITAL P +1D410;AL # MATHEMATICAL BOLD CAPITAL Q +1D411;AL # MATHEMATICAL BOLD CAPITAL R +1D412;AL # MATHEMATICAL BOLD CAPITAL S +1D413;AL # MATHEMATICAL BOLD CAPITAL T +1D414;AL # MATHEMATICAL BOLD CAPITAL U +1D415;AL # MATHEMATICAL BOLD CAPITAL V +1D416;AL # MATHEMATICAL BOLD CAPITAL W +1D417;AL # MATHEMATICAL BOLD CAPITAL X +1D418;AL # MATHEMATICAL BOLD CAPITAL Y +1D419;AL # MATHEMATICAL BOLD CAPITAL Z +1D41A;AL # MATHEMATICAL BOLD SMALL A +1D41B;AL # MATHEMATICAL BOLD SMALL B +1D41C;AL # MATHEMATICAL BOLD SMALL C +1D41D;AL # MATHEMATICAL BOLD SMALL D +1D41E;AL # MATHEMATICAL BOLD SMALL E +1D41F;AL # MATHEMATICAL BOLD SMALL F +1D420;AL # MATHEMATICAL BOLD SMALL G +1D421;AL # MATHEMATICAL BOLD SMALL H +1D422;AL # MATHEMATICAL BOLD SMALL I +1D423;AL # MATHEMATICAL BOLD SMALL J +1D424;AL # MATHEMATICAL BOLD SMALL K +1D425;AL # MATHEMATICAL BOLD SMALL L +1D426;AL # MATHEMATICAL BOLD SMALL M +1D427;AL # MATHEMATICAL BOLD SMALL N +1D428;AL # MATHEMATICAL BOLD SMALL O +1D429;AL # MATHEMATICAL BOLD SMALL P +1D42A;AL # MATHEMATICAL BOLD SMALL Q +1D42B;AL # MATHEMATICAL BOLD SMALL R +1D42C;AL # MATHEMATICAL BOLD SMALL S +1D42D;AL # MATHEMATICAL BOLD SMALL T +1D42E;AL # MATHEMATICAL BOLD SMALL U +1D42F;AL # MATHEMATICAL BOLD SMALL V +1D430;AL # MATHEMATICAL BOLD SMALL W +1D431;AL # MATHEMATICAL BOLD SMALL X +1D432;AL # MATHEMATICAL BOLD SMALL Y +1D433;AL # MATHEMATICAL BOLD SMALL Z +1D434;AL # MATHEMATICAL ITALIC CAPITAL A +1D435;AL # MATHEMATICAL ITALIC CAPITAL B +1D436;AL # MATHEMATICAL ITALIC CAPITAL C +1D437;AL # MATHEMATICAL ITALIC CAPITAL D +1D438;AL # MATHEMATICAL ITALIC CAPITAL E +1D439;AL # MATHEMATICAL ITALIC CAPITAL F +1D43A;AL # MATHEMATICAL ITALIC CAPITAL G +1D43B;AL # MATHEMATICAL ITALIC CAPITAL H +1D43C;AL # MATHEMATICAL ITALIC CAPITAL I +1D43D;AL # MATHEMATICAL ITALIC CAPITAL J +1D43E;AL # MATHEMATICAL ITALIC CAPITAL K +1D43F;AL # MATHEMATICAL ITALIC CAPITAL L +1D440;AL # MATHEMATICAL ITALIC CAPITAL M +1D441;AL # MATHEMATICAL ITALIC CAPITAL N +1D442;AL # MATHEMATICAL ITALIC CAPITAL O +1D443;AL # MATHEMATICAL ITALIC CAPITAL P +1D444;AL # MATHEMATICAL ITALIC CAPITAL Q +1D445;AL # MATHEMATICAL ITALIC CAPITAL R +1D446;AL # MATHEMATICAL ITALIC CAPITAL S +1D447;AL # MATHEMATICAL ITALIC CAPITAL T +1D448;AL # MATHEMATICAL ITALIC CAPITAL U +1D449;AL # MATHEMATICAL ITALIC CAPITAL V +1D44A;AL # MATHEMATICAL ITALIC CAPITAL W +1D44B;AL # MATHEMATICAL ITALIC CAPITAL X +1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y +1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z +1D44E;AL # MATHEMATICAL ITALIC SMALL A +1D44F;AL # MATHEMATICAL ITALIC SMALL B +1D450;AL # MATHEMATICAL ITALIC SMALL C +1D451;AL # MATHEMATICAL ITALIC SMALL D +1D452;AL # MATHEMATICAL ITALIC SMALL E +1D453;AL # MATHEMATICAL ITALIC SMALL F +1D454;AL # MATHEMATICAL ITALIC SMALL G +1D456;AL # MATHEMATICAL ITALIC SMALL I +1D457;AL # MATHEMATICAL ITALIC SMALL J +1D458;AL # MATHEMATICAL ITALIC SMALL K +1D459;AL # MATHEMATICAL ITALIC SMALL L +1D45A;AL # MATHEMATICAL ITALIC SMALL M +1D45B;AL # MATHEMATICAL ITALIC SMALL N +1D45C;AL # MATHEMATICAL ITALIC SMALL O +1D45D;AL # MATHEMATICAL ITALIC SMALL P +1D45E;AL # MATHEMATICAL ITALIC SMALL Q +1D45F;AL # MATHEMATICAL ITALIC SMALL R +1D460;AL # MATHEMATICAL ITALIC SMALL S +1D461;AL # MATHEMATICAL ITALIC SMALL T +1D462;AL # MATHEMATICAL ITALIC SMALL U +1D463;AL # MATHEMATICAL ITALIC SMALL V +1D464;AL # MATHEMATICAL ITALIC SMALL W +1D465;AL # MATHEMATICAL ITALIC SMALL X +1D466;AL # MATHEMATICAL ITALIC SMALL Y +1D467;AL # MATHEMATICAL ITALIC SMALL Z +1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A +1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B +1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C +1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D +1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E +1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F +1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G +1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H +1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I +1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J +1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K +1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L +1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M +1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N +1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O +1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P +1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q +1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R +1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S +1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T +1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U +1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V +1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W +1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X +1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y +1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z +1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A +1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B +1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C +1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D +1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E +1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F +1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G +1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H +1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I +1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J +1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K +1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L +1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M +1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N +1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O +1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P +1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q +1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R +1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S +1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T +1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U +1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V +1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W +1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X +1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y +1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z +1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A +1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C +1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D +1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G +1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J +1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K +1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N +1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O +1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P +1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q +1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S +1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T +1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U +1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V +1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W +1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X +1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y +1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z +1D4B6;AL # MATHEMATICAL SCRIPT SMALL A +1D4B7;AL # MATHEMATICAL SCRIPT SMALL B +1D4B8;AL # MATHEMATICAL SCRIPT SMALL C +1D4B9;AL # MATHEMATICAL SCRIPT SMALL D +1D4BB;AL # MATHEMATICAL SCRIPT SMALL F +1D4BD;AL # MATHEMATICAL SCRIPT SMALL H +1D4BE;AL # MATHEMATICAL SCRIPT SMALL I +1D4BF;AL # MATHEMATICAL SCRIPT SMALL J +1D4C0;AL # MATHEMATICAL SCRIPT SMALL K +1D4C2;AL # MATHEMATICAL SCRIPT SMALL M +1D4C3;AL # MATHEMATICAL SCRIPT SMALL N +1D4C5;AL # MATHEMATICAL SCRIPT SMALL P +1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q +1D4C7;AL # MATHEMATICAL SCRIPT SMALL R +1D4C8;AL # MATHEMATICAL SCRIPT SMALL S +1D4C9;AL # MATHEMATICAL SCRIPT SMALL T +1D4CA;AL # MATHEMATICAL SCRIPT SMALL U +1D4CB;AL # MATHEMATICAL SCRIPT SMALL V +1D4CC;AL # MATHEMATICAL SCRIPT SMALL W +1D4CD;AL # MATHEMATICAL SCRIPT SMALL X +1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y +1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z +1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A +1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B +1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C +1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D +1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E +1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F +1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G +1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H +1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I +1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J +1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K +1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L +1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M +1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N +1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O +1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P +1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q +1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R +1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S +1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T +1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U +1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V +1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W +1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X +1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y +1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z +1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A +1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B +1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C +1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D +1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E +1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F +1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G +1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H +1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I +1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J +1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K +1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L +1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M +1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N +1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O +1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P +1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q +1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R +1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S +1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T +1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U +1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V +1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W +1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X +1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y +1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z +1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A +1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B +1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D +1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E +1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F +1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G +1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J +1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K +1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L +1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M +1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N +1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O +1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P +1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q +1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S +1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T +1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U +1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V +1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W +1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X +1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y +1D51E;AL # MATHEMATICAL FRAKTUR SMALL A +1D51F;AL # MATHEMATICAL FRAKTUR SMALL B +1D520;AL # MATHEMATICAL FRAKTUR SMALL C +1D521;AL # MATHEMATICAL FRAKTUR SMALL D +1D522;AL # MATHEMATICAL FRAKTUR SMALL E +1D523;AL # MATHEMATICAL FRAKTUR SMALL F +1D524;AL # MATHEMATICAL FRAKTUR SMALL G +1D525;AL # MATHEMATICAL FRAKTUR SMALL H +1D526;AL # MATHEMATICAL FRAKTUR SMALL I +1D527;AL # MATHEMATICAL FRAKTUR SMALL J +1D528;AL # MATHEMATICAL FRAKTUR SMALL K +1D529;AL # MATHEMATICAL FRAKTUR SMALL L +1D52A;AL # MATHEMATICAL FRAKTUR SMALL M +1D52B;AL # MATHEMATICAL FRAKTUR SMALL N +1D52C;AL # MATHEMATICAL FRAKTUR SMALL O +1D52D;AL # MATHEMATICAL FRAKTUR SMALL P +1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q +1D52F;AL # MATHEMATICAL FRAKTUR SMALL R +1D530;AL # MATHEMATICAL FRAKTUR SMALL S +1D531;AL # MATHEMATICAL FRAKTUR SMALL T +1D532;AL # MATHEMATICAL FRAKTUR SMALL U +1D533;AL # MATHEMATICAL FRAKTUR SMALL V +1D534;AL # MATHEMATICAL FRAKTUR SMALL W +1D535;AL # MATHEMATICAL FRAKTUR SMALL X +1D536;AL # MATHEMATICAL FRAKTUR SMALL Y +1D537;AL # MATHEMATICAL FRAKTUR SMALL Z +1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A +1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D +1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E +1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F +1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I +1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J +1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K +1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L +1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S +1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T +1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U +1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V +1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W +1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X +1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A +1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B +1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C +1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D +1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E +1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F +1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G +1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H +1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I +1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J +1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K +1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L +1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M +1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N +1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O +1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P +1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q +1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R +1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S +1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T +1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U +1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V +1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W +1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X +1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y +1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z +1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A +1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B +1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C +1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D +1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E +1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F +1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G +1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H +1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I +1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J +1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K +1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L +1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M +1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N +1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O +1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P +1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q +1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R +1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S +1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T +1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U +1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V +1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W +1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X +1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y +1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z +1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A +1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B +1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C +1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D +1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E +1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F +1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G +1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H +1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I +1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J +1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K +1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L +1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M +1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N +1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O +1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P +1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q +1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R +1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S +1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T +1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U +1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V +1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W +1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X +1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y +1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z +1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A +1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B +1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C +1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D +1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E +1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F +1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G +1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H +1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I +1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J +1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K +1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L +1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M +1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N +1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O +1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P +1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q +1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R +1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S +1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T +1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U +1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V +1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W +1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X +1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y +1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z +1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A +1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B +1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C +1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D +1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E +1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F +1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G +1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H +1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I +1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J +1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K +1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L +1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M +1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N +1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O +1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P +1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q +1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R +1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S +1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T +1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U +1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V +1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W +1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X +1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y +1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z +1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A +1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B +1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C +1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D +1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E +1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F +1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G +1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H +1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I +1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J +1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K +1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L +1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M +1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N +1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O +1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P +1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q +1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R +1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S +1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T +1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U +1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V +1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W +1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X +1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y +1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z +1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A +1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B +1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C +1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D +1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E +1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F +1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G +1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H +1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I +1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J +1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K +1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L +1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M +1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N +1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O +1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P +1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q +1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R +1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S +1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T +1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U +1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V +1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W +1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X +1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y +1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z +1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A +1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B +1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C +1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D +1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E +1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F +1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G +1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H +1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I +1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J +1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K +1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L +1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M +1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N +1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O +1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P +1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q +1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R +1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S +1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T +1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U +1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V +1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W +1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X +1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y +1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z +1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A +1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B +1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C +1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D +1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E +1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F +1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G +1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H +1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I +1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J +1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K +1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L +1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M +1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N +1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O +1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P +1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q +1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R +1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S +1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T +1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U +1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V +1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W +1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X +1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y +1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z +1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A +1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B +1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C +1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D +1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E +1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F +1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G +1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H +1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I +1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J +1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K +1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L +1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M +1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N +1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O +1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P +1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q +1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R +1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S +1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T +1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U +1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V +1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W +1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X +1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y +1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z +1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A +1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B +1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C +1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D +1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E +1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F +1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G +1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H +1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I +1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J +1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K +1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L +1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M +1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N +1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O +1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P +1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q +1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R +1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S +1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T +1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U +1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V +1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W +1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X +1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y +1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z +1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A +1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B +1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C +1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D +1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E +1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F +1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G +1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H +1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I +1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J +1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K +1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L +1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M +1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N +1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O +1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P +1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q +1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R +1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S +1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T +1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U +1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V +1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W +1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X +1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y +1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z +1D68A;AL # MATHEMATICAL MONOSPACE SMALL A +1D68B;AL # MATHEMATICAL MONOSPACE SMALL B +1D68C;AL # MATHEMATICAL MONOSPACE SMALL C +1D68D;AL # MATHEMATICAL MONOSPACE SMALL D +1D68E;AL # MATHEMATICAL MONOSPACE SMALL E +1D68F;AL # MATHEMATICAL MONOSPACE SMALL F +1D690;AL # MATHEMATICAL MONOSPACE SMALL G +1D691;AL # MATHEMATICAL MONOSPACE SMALL H +1D692;AL # MATHEMATICAL MONOSPACE SMALL I +1D693;AL # MATHEMATICAL MONOSPACE SMALL J +1D694;AL # MATHEMATICAL MONOSPACE SMALL K +1D695;AL # MATHEMATICAL MONOSPACE SMALL L +1D696;AL # MATHEMATICAL MONOSPACE SMALL M +1D697;AL # MATHEMATICAL MONOSPACE SMALL N +1D698;AL # MATHEMATICAL MONOSPACE SMALL O +1D699;AL # MATHEMATICAL MONOSPACE SMALL P +1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q +1D69B;AL # MATHEMATICAL MONOSPACE SMALL R +1D69C;AL # MATHEMATICAL MONOSPACE SMALL S +1D69D;AL # MATHEMATICAL MONOSPACE SMALL T +1D69E;AL # MATHEMATICAL MONOSPACE SMALL U +1D69F;AL # MATHEMATICAL MONOSPACE SMALL V +1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W +1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X +1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y +1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z +1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA +1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA +1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA +1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA +1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON +1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA +1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA +1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA +1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA +1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA +1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA +1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU +1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU +1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI +1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON +1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI +1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO +1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL +1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA +1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU +1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON +1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI +1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI +1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI +1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA +1D6C1;AL # MATHEMATICAL BOLD NABLA +1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA +1D6C3;AL # MATHEMATICAL BOLD SMALL BETA +1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA +1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA +1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON +1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA +1D6C8;AL # MATHEMATICAL BOLD SMALL ETA +1D6C9;AL # MATHEMATICAL BOLD SMALL THETA +1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA +1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA +1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA +1D6CD;AL # MATHEMATICAL BOLD SMALL MU +1D6CE;AL # MATHEMATICAL BOLD SMALL NU +1D6CF;AL # MATHEMATICAL BOLD SMALL XI +1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON +1D6D1;AL # MATHEMATICAL BOLD SMALL PI +1D6D2;AL # MATHEMATICAL BOLD SMALL RHO +1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA +1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA +1D6D5;AL # MATHEMATICAL BOLD SMALL TAU +1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON +1D6D7;AL # MATHEMATICAL BOLD SMALL PHI +1D6D8;AL # MATHEMATICAL BOLD SMALL CHI +1D6D9;AL # MATHEMATICAL BOLD SMALL PSI +1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA +1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL +1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL +1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL +1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL +1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL +1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL +1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA +1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA +1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA +1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA +1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON +1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA +1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA +1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA +1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA +1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA +1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA +1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU +1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU +1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI +1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON +1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI +1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO +1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL +1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA +1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU +1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON +1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI +1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI +1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI +1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA +1D6FB;AL # MATHEMATICAL ITALIC NABLA +1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA +1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA +1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA +1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA +1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON +1D701;AL # MATHEMATICAL ITALIC SMALL ZETA +1D702;AL # MATHEMATICAL ITALIC SMALL ETA +1D703;AL # MATHEMATICAL ITALIC SMALL THETA +1D704;AL # MATHEMATICAL ITALIC SMALL IOTA +1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA +1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA +1D707;AL # MATHEMATICAL ITALIC SMALL MU +1D708;AL # MATHEMATICAL ITALIC SMALL NU +1D709;AL # MATHEMATICAL ITALIC SMALL XI +1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON +1D70B;AL # MATHEMATICAL ITALIC SMALL PI +1D70C;AL # MATHEMATICAL ITALIC SMALL RHO +1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA +1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA +1D70F;AL # MATHEMATICAL ITALIC SMALL TAU +1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON +1D711;AL # MATHEMATICAL ITALIC SMALL PHI +1D712;AL # MATHEMATICAL ITALIC SMALL CHI +1D713;AL # MATHEMATICAL ITALIC SMALL PSI +1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA +1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL +1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL +1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL +1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL +1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL +1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL +1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA +1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA +1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA +1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA +1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON +1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA +1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA +1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA +1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA +1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA +1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA +1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU +1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU +1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI +1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON +1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI +1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO +1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL +1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA +1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU +1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON +1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI +1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI +1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI +1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D735;AL # MATHEMATICAL BOLD ITALIC NABLA +1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA +1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA +1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA +1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA +1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON +1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA +1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA +1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA +1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA +1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA +1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA +1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU +1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU +1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI +1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON +1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI +1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO +1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA +1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA +1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU +1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON +1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI +1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI +1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI +1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL +1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL +1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL +1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL +1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL +1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL +1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA +1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA +1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA +1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA +1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON +1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA +1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA +1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA +1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA +1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA +1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA +1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU +1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU +1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI +1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON +1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI +1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO +1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL +1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA +1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU +1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON +1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI +1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI +1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI +1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA +1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA +1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA +1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA +1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA +1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON +1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA +1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA +1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA +1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA +1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA +1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA +1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU +1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU +1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI +1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON +1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI +1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO +1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA +1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA +1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU +1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON +1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI +1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI +1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI +1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL +1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL +1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL +1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL +1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL +1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL +1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA +1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA +1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA +1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA +1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON +1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA +1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA +1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA +1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA +1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA +1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA +1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU +1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU +1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI +1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON +1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI +1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO +1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL +1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA +1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU +1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON +1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI +1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI +1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI +1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA +1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA +1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA +1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA +1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON +1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA +1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA +1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA +1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA +1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA +1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA +1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU +1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU +1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI +1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON +1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI +1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO +1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA +1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA +1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU +1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON +1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI +1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI +1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI +1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL +1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL +1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL +1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL +1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL +1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL +1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO +1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE +1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO +1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE +1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR +1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE +1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX +1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN +1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT +1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE +1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO +1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE +1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO +1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE +1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR +1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE +1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX +1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN +1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT +1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE +1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO +1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE +1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO +1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE +1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR +1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE +1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX +1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN +1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT +1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE +1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO +1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE +1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO +1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE +1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR +1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE +1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX +1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN +1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT +1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE +1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO +1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE +1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO +1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE +1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR +1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE +1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX +1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN +1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT +1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE +20000..2A6D6;ID # .. +2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800 +2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801 +2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802 +2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803 +2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804 +2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805 +2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806 +2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807 +2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808 +2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809 +2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A +2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B +2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C +2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D +2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E +2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F +2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810 +2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811 +2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812 +2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813 +2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814 +2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815 +2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816 +2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817 +2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818 +2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819 +2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A +2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B +2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C +2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D +2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E +2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F +2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820 +2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821 +2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822 +2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823 +2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824 +2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825 +2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826 +2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827 +2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828 +2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829 +2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A +2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B +2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C +2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D +2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E +2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F +2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830 +2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831 +2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832 +2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833 +2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834 +2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835 +2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836 +2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837 +2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838 +2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839 +2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A +2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B +2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C +2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D +2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E +2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F +2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840 +2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841 +2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842 +2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843 +2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844 +2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845 +2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846 +2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847 +2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848 +2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849 +2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A +2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B +2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C +2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D +2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E +2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F +2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850 +2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851 +2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852 +2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853 +2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854 +2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855 +2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856 +2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857 +2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858 +2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859 +2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A +2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B +2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C +2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D +2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E +2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F +2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860 +2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861 +2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862 +2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863 +2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864 +2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865 +2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866 +2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867 +2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868 +2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869 +2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A +2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B +2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C +2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D +2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E +2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F +2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870 +2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871 +2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872 +2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873 +2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874 +2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875 +2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876 +2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877 +2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878 +2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879 +2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A +2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B +2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C +2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D +2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E +2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F +2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880 +2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881 +2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882 +2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883 +2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884 +2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885 +2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886 +2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887 +2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888 +2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889 +2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A +2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B +2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C +2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D +2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E +2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F +2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890 +2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891 +2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892 +2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893 +2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894 +2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895 +2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896 +2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897 +2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898 +2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899 +2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A +2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B +2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C +2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D +2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E +2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F +2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0 +2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1 +2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2 +2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3 +2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4 +2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5 +2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6 +2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7 +2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8 +2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9 +2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA +2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB +2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC +2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD +2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE +2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF +2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0 +2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1 +2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2 +2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3 +2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4 +2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5 +2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6 +2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7 +2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8 +2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9 +2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA +2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB +2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC +2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD +2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE +2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF +2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0 +2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1 +2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2 +2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3 +2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4 +2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5 +2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6 +2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7 +2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8 +2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9 +2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA +2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB +2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC +2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD +2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE +2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF +2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0 +2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1 +2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2 +2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3 +2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4 +2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5 +2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6 +2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7 +2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8 +2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9 +2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA +2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB +2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC +2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD +2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE +2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF +2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0 +2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1 +2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2 +2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3 +2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4 +2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5 +2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6 +2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7 +2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8 +2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9 +2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA +2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB +2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC +2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED +2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE +2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF +2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0 +2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1 +2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2 +2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3 +2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4 +2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5 +2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6 +2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7 +2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8 +2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9 +2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA +2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB +2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC +2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD +2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE +2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF +2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900 +2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901 +2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902 +2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903 +2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904 +2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905 +2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906 +2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907 +2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908 +2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909 +2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A +2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B +2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C +2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D +2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E +2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F +2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910 +2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911 +2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912 +2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913 +2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914 +2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915 +2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916 +2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917 +2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918 +2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919 +2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A +2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B +2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C +2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D +2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E +2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F +2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920 +2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921 +2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922 +2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923 +2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924 +2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925 +2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926 +2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927 +2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928 +2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929 +2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A +2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B +2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C +2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D +2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E +2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F +2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930 +2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931 +2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932 +2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933 +2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934 +2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935 +2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936 +2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937 +2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938 +2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939 +2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A +2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B +2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C +2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D +2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E +2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F +2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940 +2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941 +2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942 +2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943 +2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944 +2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945 +2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946 +2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947 +2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948 +2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949 +2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A +2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B +2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C +2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D +2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E +2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F +2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950 +2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951 +2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952 +2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953 +2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954 +2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955 +2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956 +2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957 +2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958 +2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959 +2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A +2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B +2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C +2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D +2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E +2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F +2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960 +2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961 +2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962 +2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963 +2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964 +2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965 +2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966 +2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967 +2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968 +2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969 +2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A +2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B +2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C +2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D +2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E +2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F +2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970 +2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971 +2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972 +2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973 +2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974 +2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975 +2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976 +2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977 +2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978 +2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979 +2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A +2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B +2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C +2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D +2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E +2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F +2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980 +2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981 +2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982 +2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983 +2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984 +2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985 +2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986 +2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987 +2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988 +2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989 +2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A +2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B +2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C +2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D +2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E +2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F +2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990 +2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991 +2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992 +2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993 +2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994 +2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995 +2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996 +2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997 +2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998 +2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999 +2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A +2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B +2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C +2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D +2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E +2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F +2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0 +2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1 +2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2 +2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3 +2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4 +2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5 +2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6 +2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7 +2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8 +2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9 +2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA +2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB +2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC +2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD +2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE +2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF +2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0 +2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1 +2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2 +2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3 +2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4 +2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5 +2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6 +2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7 +2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8 +2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9 +2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA +2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB +2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC +2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD +2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE +2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF +2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0 +2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1 +2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2 +2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3 +2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4 +2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5 +2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6 +2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7 +2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8 +2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9 +2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA +2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB +2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC +2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD +2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE +2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF +2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0 +2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1 +2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2 +2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3 +2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4 +2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5 +2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6 +2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7 +2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8 +2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9 +2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA +2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB +2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC +2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD +2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE +2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF +2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0 +2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1 +2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2 +2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3 +2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4 +2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5 +2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6 +2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7 +2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8 +2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9 +2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA +2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB +2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC +2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED +2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE +2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF +2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0 +2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1 +2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2 +2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3 +2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4 +2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5 +2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6 +2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7 +2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8 +2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9 +2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA +2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB +2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC +2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD +2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE +2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF +2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00 +2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01 +2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02 +2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03 +2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04 +2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05 +2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06 +2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07 +2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08 +2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09 +2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A +2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B +2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C +2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D +2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E +2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F +2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10 +2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11 +2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12 +2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13 +2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14 +2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15 +2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16 +2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17 +2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18 +2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19 +2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A +2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B +2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C +2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D +E0001;CM # LANGUAGE TAG +E0020;CM # TAG SPACE +E0021;CM # TAG EXCLAMATION MARK +E0022;CM # TAG QUOTATION MARK +E0023;CM # TAG NUMBER SIGN +E0024;CM # TAG DOLLAR SIGN +E0025;CM # TAG PERCENT SIGN +E0026;CM # TAG AMPERSAND +E0027;CM # TAG APOSTROPHE +E0028;CM # TAG LEFT PARENTHESIS +E0029;CM # TAG RIGHT PARENTHESIS +E002A;CM # TAG ASTERISK +E002B;CM # TAG PLUS SIGN +E002C;CM # TAG COMMA +E002D;CM # TAG HYPHEN-MINUS +E002E;CM # TAG FULL STOP +E002F;CM # TAG SOLIDUS +E0030;CM # TAG DIGIT ZERO +E0031;CM # TAG DIGIT ONE +E0032;CM # TAG DIGIT TWO +E0033;CM # TAG DIGIT THREE +E0034;CM # TAG DIGIT FOUR +E0035;CM # TAG DIGIT FIVE +E0036;CM # TAG DIGIT SIX +E0037;CM # TAG DIGIT SEVEN +E0038;CM # TAG DIGIT EIGHT +E0039;CM # TAG DIGIT NINE +E003A;CM # TAG COLON +E003B;CM # TAG SEMICOLON +E003C;CM # TAG LESS-THAN SIGN +E003D;CM # TAG EQUALS SIGN +E003E;CM # TAG GREATER-THAN SIGN +E003F;CM # TAG QUESTION MARK +E0040;CM # TAG COMMERCIAL AT +E0041;CM # TAG LATIN CAPITAL LETTER A +E0042;CM # TAG LATIN CAPITAL LETTER B +E0043;CM # TAG LATIN CAPITAL LETTER C +E0044;CM # TAG LATIN CAPITAL LETTER D +E0045;CM # TAG LATIN CAPITAL LETTER E +E0046;CM # TAG LATIN CAPITAL LETTER F +E0047;CM # TAG LATIN CAPITAL LETTER G +E0048;CM # TAG LATIN CAPITAL LETTER H +E0049;CM # TAG LATIN CAPITAL LETTER I +E004A;CM # TAG LATIN CAPITAL LETTER J +E004B;CM # TAG LATIN CAPITAL LETTER K +E004C;CM # TAG LATIN CAPITAL LETTER L +E004D;CM # TAG LATIN CAPITAL LETTER M +E004E;CM # TAG LATIN CAPITAL LETTER N +E004F;CM # TAG LATIN CAPITAL LETTER O +E0050;CM # TAG LATIN CAPITAL LETTER P +E0051;CM # TAG LATIN CAPITAL LETTER Q +E0052;CM # TAG LATIN CAPITAL LETTER R +E0053;CM # TAG LATIN CAPITAL LETTER S +E0054;CM # TAG LATIN CAPITAL LETTER T +E0055;CM # TAG LATIN CAPITAL LETTER U +E0056;CM # TAG LATIN CAPITAL LETTER V +E0057;CM # TAG LATIN CAPITAL LETTER W +E0058;CM # TAG LATIN CAPITAL LETTER X +E0059;CM # TAG LATIN CAPITAL LETTER Y +E005A;CM # TAG LATIN CAPITAL LETTER Z +E005B;CM # TAG LEFT SQUARE BRACKET +E005C;CM # TAG REVERSE SOLIDUS +E005D;CM # TAG RIGHT SQUARE BRACKET +E005E;CM # TAG CIRCUMFLEX ACCENT +E005F;CM # TAG LOW LINE +E0060;CM # TAG GRAVE ACCENT +E0061;CM # TAG LATIN SMALL LETTER A +E0062;CM # TAG LATIN SMALL LETTER B +E0063;CM # TAG LATIN SMALL LETTER C +E0064;CM # TAG LATIN SMALL LETTER D +E0065;CM # TAG LATIN SMALL LETTER E +E0066;CM # TAG LATIN SMALL LETTER F +E0067;CM # TAG LATIN SMALL LETTER G +E0068;CM # TAG LATIN SMALL LETTER H +E0069;CM # TAG LATIN SMALL LETTER I +E006A;CM # TAG LATIN SMALL LETTER J +E006B;CM # TAG LATIN SMALL LETTER K +E006C;CM # TAG LATIN SMALL LETTER L +E006D;CM # TAG LATIN SMALL LETTER M +E006E;CM # TAG LATIN SMALL LETTER N +E006F;CM # TAG LATIN SMALL LETTER O +E0070;CM # TAG LATIN SMALL LETTER P +E0071;CM # TAG LATIN SMALL LETTER Q +E0072;CM # TAG LATIN SMALL LETTER R +E0073;CM # TAG LATIN SMALL LETTER S +E0074;CM # TAG LATIN SMALL LETTER T +E0075;CM # TAG LATIN SMALL LETTER U +E0076;CM # TAG LATIN SMALL LETTER V +E0077;CM # TAG LATIN SMALL LETTER W +E0078;CM # TAG LATIN SMALL LETTER X +E0079;CM # TAG LATIN SMALL LETTER Y +E007A;CM # TAG LATIN SMALL LETTER Z +E007B;CM # TAG LEFT CURLY BRACKET +E007C;CM # TAG VERTICAL LINE +E007D;CM # TAG RIGHT CURLY BRACKET +E007E;CM # TAG TILDE +E007F;CM # CANCEL TAG +F0000..FFFFD;XX # .. +100000..10FFFD;XX # .. diff --git a/doc/specifications/Makefile b/doc/specifications/Makefile new file mode 100644 index 0000000..ac5a1ad --- /dev/null +++ b/doc/specifications/Makefile @@ -0,0 +1,672 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# doc/specifications/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = doc/specifications +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = +NEXT_AS_FIRST_DIRECTIVE_STRING_H = +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = +NEXT_ERRNO_H = +NEXT_ICONV_H = +NEXT_STDARG_H = +NEXT_STDINT_H = +NEXT_STRING_H = +NEXT_UNISTD_H = +NEXT_WCHAR_H = +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/specifications +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/specifications +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +EXTRA_DIST = rfc3454.txt \ + UnicodeData-3.2.0.txt LineBreak-3.2.0.txt \ + SpecialCasing-3.2.0.txt CaseFolding-3.2.0.txt \ + CompositionExclusions-3.2.0.txt BidiMirroring-3.2.0.txt \ + COPYING.UCD + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/specifications/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/specifications/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/specifications/Makefile.am b/doc/specifications/Makefile.am new file mode 100644 index 0000000..b28dae7 --- /dev/null +++ b/doc/specifications/Makefile.am @@ -0,0 +1,23 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . + +EXTRA_DIST = rfc3454.txt \ + UnicodeData-3.2.0.txt LineBreak-3.2.0.txt \ + SpecialCasing-3.2.0.txt CaseFolding-3.2.0.txt \ + CompositionExclusions-3.2.0.txt BidiMirroring-3.2.0.txt \ + COPYING.UCD diff --git a/doc/specifications/Makefile.in b/doc/specifications/Makefile.in new file mode 100644 index 0000000..e8166b2 --- /dev/null +++ b/doc/specifications/Makefile.in @@ -0,0 +1,672 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see . +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/specifications +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = rfc3454.txt \ + UnicodeData-3.2.0.txt LineBreak-3.2.0.txt \ + SpecialCasing-3.2.0.txt CaseFolding-3.2.0.txt \ + CompositionExclusions-3.2.0.txt BidiMirroring-3.2.0.txt \ + COPYING.UCD + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/specifications/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/specifications/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/specifications/SpecialCasing-3.2.0.txt b/doc/specifications/SpecialCasing-3.2.0.txt new file mode 100644 index 0000000..f25ac9b --- /dev/null +++ b/doc/specifications/SpecialCasing-3.2.0.txt @@ -0,0 +1,255 @@ +# SpecialCasing-3.2.0.txt +# Date: 2002-03-19,23:31:42 GMT [MD] +# +# Special Casing Properties +# +# This file is a supplement to the UnicodeData file. +# It contains additional information about the casing of Unicode characters. +# (For compatibility, the UnicodeData.txt file only contains case mappings for +# characters where they are 1-1, and does not have locale-specific mappings.) +# For more information, see +# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/ +# +# ================================================================================ +# Format +# ================================================================================ +# The entries in this file are in the following machine-readable format: +# +# ; ; ; <upper> ; (<condition_list> ;)? # <comment> +# +# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more than +# one character, they are separated by spaces. Other than as used to separate elements, +# spaces are to be ignored. +# +# The <condition_list> is optional. Where present, it consists of one or more locales or contexts, +# separated by spaces. In these conditions: +# - A condition list overrides the normal behavior if all of the listed conditions are true. +# - The context is always the context of the characters in the original string, +# NOT in the resulting string. +# - Case distinctions in the condition list are not significant. +# - Conditions preceded by "Not_" represent the negation of the condition. +# +# A locale is defined as: +# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> ( "_" <variant> )? )? +# <ISO_3166_code> := 2-letter ISO country code, +# <ISO_639_code> := 2-letter ISO language code +# +# A context is one of the following, as defined in UAX #21: Case Mappings: +# Final_Sigma, After_Soft_Dotted, More_Above, Before_Dot +# +# Parsers of this file must be prepared to deal future additions to this format: +# * Additional contexts +# * Additional fields +# ================================================================================ + +# ================================================================================ +# Unconditional mappings +# ================================================================================ + +# The German es-zed is special--the normal mapping is to SS. +# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>)) + +00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S + +# Preserve canonical equivalence for I with dot. Turkic is handled below. + +0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE + +# Ligatures + +FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF +FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI +FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL +FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI +FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL +FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T +FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST + +0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN +FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW +FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH +FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI +FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW +FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH + +# No corresponding uppercase precomposed character + +0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON +1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW +1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS +1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE +1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE +1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING +1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI +1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI +1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI +1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI +1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI + +# IMPORTANT-when capitalizing iota-subscript (0345) +# It MUST be in normalized form--moved to the end of any sequence of combining marks. +# This is because logically it represents a following base character! +# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript> +# It should never be the first character in a word, so in titlecasing it can be left as is. + +# The following cases are already in the UnicodeData file, so are only commented here. + +# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI + +# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript) +# have special uppercases. +# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase! + +1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + +# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases + +1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + +1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + +# ================================================================================ +# Conditional mappings +# ================================================================================ + +# Special case for final form of sigma + +03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA + +# Note: the following cases for non-final are already in the UnicodeData file. + +# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA +# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA +# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA + +# Note: the following cases are not included, since they would case-fold in lowercasing + +# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA +# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA + +# ================================================================================ +# Locale-sensitive mappings +# ================================================================================ + +# Lithuanian + +# Lithuanian retains the dot in a lowercase i when followed by accents. + +# Remove DOT ABOVE after "i" with upper or titlecase + +0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE + +# Introduce an explicit dot above when lowercasing capital I's and J's +# whenever there are more accents above. +# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) + +0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I +004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J +012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK +00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE +00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE +0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE + +# ================================================================================ + +# Turkish and Azeri + +# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri +# The following rules handle those cases. + +0130; 0069; 0130; 0130; tr # LATIN CAPITAL LETTER I WITH DOT ABOVE +0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE + +# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. +# This matches the behavior of the canonically equivalent I-dot_above + +0307; ; 0307; 0307; tr After_Soft_Dotted; # COMBINING DOT ABOVE +0307; ; 0307; 0307; az After_Soft_Dotted; # COMBINING DOT ABOVE + +# When lowercasing, unless an I is before a dot_above, it turns into a dotless i. + +0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I +0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I + +# When uppercasing, i turns into a dotted capital I + +0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I +0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I + +# Note: the following case is already in the UnicodeData file. + +# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I diff --git a/doc/specifications/UnicodeData-3.2.0.txt b/doc/specifications/UnicodeData-3.2.0.txt new file mode 100644 index 0000000..125a692 --- /dev/null +++ b/doc/specifications/UnicodeData-3.2.0.txt @@ -0,0 +1,13874 @@ +0000;<control>;Cc;0;BN;;;;;N;NULL;;;; +0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;; +0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;; +0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;; +0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; +0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;; +0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; +0007;<control>;Cc;0;BN;;;;;N;BELL;;;; +0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;; +0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; +000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;; +000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;; +000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;; +000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; +000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;; +000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;; +0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; +0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; +0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; +0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; +0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; +0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; +0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; +0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; +0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;; +0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;; +001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;; +001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;; +001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; +001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; +001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; +001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; +0020;SPACE;Zs;0;WS;;;;;N;;;;; +0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; +0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; +0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; +0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; +0026;AMPERSAND;Po;0;ON;;;;;N;;;;; +0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; +0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; +0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; +002A;ASTERISK;Po;0;ON;;;;;N;;;;; +002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;; +002C;COMMA;Po;0;CS;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;; +002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; +002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;; +0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; +0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; +0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; +0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; +0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; +0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; +0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; +0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; +0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; +0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; +003A;COLON;Po;0;CS;;;;;N;;;;; +003B;SEMICOLON;Po;0;ON;;;;;N;;;;; +003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; +0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; +0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; +0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; +0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; +0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; +0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; +0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; +0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; +0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; +0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; +004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; +004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; +004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; +004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; +004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; +004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; +0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; +0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; +0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; +0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; +0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; +0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; +0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; +0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; +0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; +0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; +005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; +005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; +005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; +005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; +005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; +005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; +0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; +0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 +0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 +0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 +0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 +0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 +0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 +0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 +0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 +0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 +006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A +006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B +006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C +006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D +006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E +006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F +0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 +0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 +0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 +0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 +0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 +0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 +0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 +0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 +0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 +0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 +007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A +007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; +007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; +007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; +007E;TILDE;Sm;0;ON;;;;;N;;;;; +007F;<control>;Cc;0;BN;;;;;N;DELETE;;;; +0080;<control>;Cc;0;BN;;;;;N;;;;; +0081;<control>;Cc;0;BN;;;;;N;;;;; +0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; +0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;; +0084;<control>;Cc;0;BN;;;;;N;;;;; +0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; +0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; +0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; +0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; +0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; +008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; +008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; +008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; +008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; +008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; +008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; +0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; +0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; +0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; +0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; +0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; +0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; +0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; +0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; +0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;; +0099;<control>;Cc;0;BN;;;;;N;;;;; +009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; +009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; +009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; +009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; +009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; +009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; +00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;; +00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; +00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; +00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; +00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; +00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; +00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;; +00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; +00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;; +00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; +00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; +00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; +00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;; +00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; +00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; +00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;; +00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;; +00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;; +00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C +00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; +00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; +00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;; +00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;; +00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;; +00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; +00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; +00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; +00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; +00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; +00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; +00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; +00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; +00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; +00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; +00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; +00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; +00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; +00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; +00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; +00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; +00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; +00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; +00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; +00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; +00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; +00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; +00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; +00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; +00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; +00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; +00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; +00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; +00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; +00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; +00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; +00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; +00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; +00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; +00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; +00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; +00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; +00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 +00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 +00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 +00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 +00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 +00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 +00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 +00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 +00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 +00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 +00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA +00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB +00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC +00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD +00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE +00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF +00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 +00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 +00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 +00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 +00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 +00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 +00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 +00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 +00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 +00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA +00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB +00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC +00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD +00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE +00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 +0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; +0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 +0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; +0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 +0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; +0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 +0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; +0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 +0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; +0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 +010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; +010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A +010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; +010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C +010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; +010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E +0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; +0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 +0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; +0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 +0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; +0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 +0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; +0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 +0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; +0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 +011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; +011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A +011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; +011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C +011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; +011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E +0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; +0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 +0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; +0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 +0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; +0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 +0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; +0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 +0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; +0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 +012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; +012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A +012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; +012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C +012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; +012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E +0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; +0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 +0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; +0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 +0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; +0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 +0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; +0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 +0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; +0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; +013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 +013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; +013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B +013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; +013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D +013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140; +0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F +0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; +0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 +0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; +0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 +0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; +0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 +0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; +0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 +0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; +014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; +014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A +014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; +014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C +014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; +014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E +0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; +0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 +0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; +0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 +0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; +0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 +0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; +0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 +0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; +0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 +015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; +015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A +015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; +015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C +015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; +015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E +0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; +0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 +0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; +0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 +0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; +0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 +0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; +0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 +0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; +0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 +016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; +016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A +016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; +016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C +016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; +016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E +0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; +0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 +0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; +0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 +0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; +0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 +0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; +0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 +0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; +0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; +017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 +017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; +017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B +017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; +017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D +017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053 +0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;; +0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; +0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; +0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 +0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; +0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 +0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; +0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; +0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 +0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; +018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; +018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; +018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B +018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; +018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; +018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; +0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; +0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; +0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 +0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; +0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; +0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 +0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; +0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; +0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; +0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 +019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;; +019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; +019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; +019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; +019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 +019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; +01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; +01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 +01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; +01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 +01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; +01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 +01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; +01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; +01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 +01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; +01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; +01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; +01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; +01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC +01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; +01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; +01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF +01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; +01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; +01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; +01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 +01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; +01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 +01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; +01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; +01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 +01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; +01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; +01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; +01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC +01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; +01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 +01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; +01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; +01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; +01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; +01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 +01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6; +01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 +01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 +01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9; +01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 +01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB +01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC; +01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB +01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; +01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD +01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; +01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF +01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; +01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 +01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; +01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 +01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; +01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 +01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; +01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 +01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; +01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 +01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; +01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB +01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E +01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; +01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE +01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; +01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 +01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; +01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 +01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; +01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 +01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; +01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 +01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; +01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 +01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; +01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA +01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; +01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC +01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; +01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE +01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; +01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2 +01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3; +01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2 +01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; +01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 +01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; +01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; +01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; +01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 +01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; +01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA +01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; +01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC +01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; +01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE +0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; +0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 +0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; +0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 +0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; +0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 +0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; +0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 +0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; +0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 +020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; +020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A +020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; +020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C +020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; +020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E +0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; +0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 +0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; +0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 +0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; +0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 +0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; +0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 +0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; +0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 +021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; +021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A +021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; +021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C +021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; +021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E +0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; +0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; +0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 +0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; +0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 +0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; +0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 +0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; +0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 +022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; +022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A +022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; +022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C +022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; +022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E +0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; +0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 +0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; +0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 +0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;; +0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;; +0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; +0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 +0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 +0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; +0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 +0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A +0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; +0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F +025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; +025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 +025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; +025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; +025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; +025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; +0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 +0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; +0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; +0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 +0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; +0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; +0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; +0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; +0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 +0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 +026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; +026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; +026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; +026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; +026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C +0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; +0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;; +0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D +0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; +0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; +0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F +0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; +0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; +0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; +0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; +027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; +027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;; +027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; +027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; +0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 +0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; +0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; +0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 +0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; +0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; +0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; +0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; +0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE +0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;; +028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 +028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 +028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;; +028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; +028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; +028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; +0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; +0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; +0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 +0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; +0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; +0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; +0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; +0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; +029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; +029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; +029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; +029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; +02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; +02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; +02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; +02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; +02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; +02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; +02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; +02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; +02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; +02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; +02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; +02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; +02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;; +02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; +02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;; +02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;; +02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;; +02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; +02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;; +02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;; +02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;; +02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;; +02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;; +02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; +02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; +02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; +02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; +02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; +02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; +02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;; +02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;; +02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; +02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; +02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;; +02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;; +02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; +02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; +02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; +02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; +02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; +02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; +02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; +02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; +02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;; +02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; +02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;; +02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;; +02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;; +02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; +02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; +02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; +02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;; +02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;; +02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;; +02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;; +02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;; +02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; +02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;; +02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; +02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; +0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; +0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; +0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; +0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; +0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; +0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; +0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; +0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; +0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; +0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; +030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; +030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; +030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; +030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; +030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; +030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; +0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; +0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; +0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; +0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; +0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; +0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; +0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; +0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; +0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; +0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; +031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; +031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; +031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; +031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; +031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; +031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; +0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; +0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; +0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; +0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; +0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; +0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; +0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; +0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; +0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; +0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; +032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; +032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; +032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; +032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; +032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; +032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; +0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; +0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; +0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; +0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; +0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; +0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; +0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; +0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; +0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; +0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; +033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; +033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; +033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; +033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; +033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; +033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; +0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; +0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; +0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; +0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; +0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; +0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 +0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; +034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; +034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; +034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; +034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; +0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; +0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; +0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; +0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; +0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; +0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; +0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; +0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; +0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; +0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; +036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; +036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; +036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; +036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; +036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; +036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; +0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; +0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; +037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; +037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; +0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;; +0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; +0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; +0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; +0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; +0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; +038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; +038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; +038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; +038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; +0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; +0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; +0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; +0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; +0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; +0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; +0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; +0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; +0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; +0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; +039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; +039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; +039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; +039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; +039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; +039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; +03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; +03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; +03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; +03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; +03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; +03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; +03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; +03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; +03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; +03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; +03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; +03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 +03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 +03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 +03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A +03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; +03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 +03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 +03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 +03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 +03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 +03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 +03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 +03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 +03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 +03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A +03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B +03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C +03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D +03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E +03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F +03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 +03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 +03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 +03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 +03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 +03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 +03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 +03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 +03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA +03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB +03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C +03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E +03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F +03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 +03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 +03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; +03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; +03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; +03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 +03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 +03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; +03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; +03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 +03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; +03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA +03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; +03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC +03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; +03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE +03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; +03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 +03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; +03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 +03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; +03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 +03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; +03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 +03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; +03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 +03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; +03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA +03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; +03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC +03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; +03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE +03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A +03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 +03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3 +03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; +03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8; +03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395 +03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; +0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; +0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; +0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; +0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; +0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; +0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; +0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; +0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; +0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; +0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; +040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; +040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; +040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; +040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; +040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; +040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; +0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; +0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; +0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; +0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; +0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; +0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; +0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; +0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; +0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; +0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; +041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; +041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; +041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; +041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; +041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; +041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; +0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; +0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; +0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; +0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; +0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; +0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; +0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; +0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; +0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; +0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; +042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; +042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; +042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; +042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; +042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; +042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; +0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 +0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 +0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 +0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 +0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 +0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 +0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 +0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 +0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 +0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 +043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A +043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B +043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C +043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D +043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E +043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F +0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 +0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 +0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 +0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 +0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 +0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 +0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 +0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 +0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 +0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 +044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A +044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B +044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C +044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D +044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E +044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F +0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 +0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 +0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 +0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 +0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 +0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 +0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 +0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 +0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 +0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 +045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A +045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B +045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C +045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D +045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E +045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F +0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; +0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 +0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; +0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 +0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; +0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 +0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; +0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 +0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; +0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 +046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; +046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A +046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; +046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C +046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; +046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E +0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; +0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 +0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; +0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 +0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; +0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 +0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; +0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 +0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; +0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 +047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; +047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A +047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; +047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C +047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; +047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E +0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; +0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 +0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; +0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; +0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; +0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; +0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; +0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; +0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; +048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A +048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; +048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C +048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; +048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E +0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; +0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 +0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; +0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 +0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; +0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 +0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; +0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 +0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; +0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 +049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; +049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A +049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; +049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C +049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; +049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E +04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; +04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 +04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; +04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 +04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; +04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 +04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; +04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 +04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; +04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 +04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; +04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA +04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; +04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC +04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; +04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE +04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; +04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 +04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; +04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 +04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; +04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 +04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; +04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 +04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; +04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 +04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; +04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA +04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; +04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC +04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; +04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE +04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;; +04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; +04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 +04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; +04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 +04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; +04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 +04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; +04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 +04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; +04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 +04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; +04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB +04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; +04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD +04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; +04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 +04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; +04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 +04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; +04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 +04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; +04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 +04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; +04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 +04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; +04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA +04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; +04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC +04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; +04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE +04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; +04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 +04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; +04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 +04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; +04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 +04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; +04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 +04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; +04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 +04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; +04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA +04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; +04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC +04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; +04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE +04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; +04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 +04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; +04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 +04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; +04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 +04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; +04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 +0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; +0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 +0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; +0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 +0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; +0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 +0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; +0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 +0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; +0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 +050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; +050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A +050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; +050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C +050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; +050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E +0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; +0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; +0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; +0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; +0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; +0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; +0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; +0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; +0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; +053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; +053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; +053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; +053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; +053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; +053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; +0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; +0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; +0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; +0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; +0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; +0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; +0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; +0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; +0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; +0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; +054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; +054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; +054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; +054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; +054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; +054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; +0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; +0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; +0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; +0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; +0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; +0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; +0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; +0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; +055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; +055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; +055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; +055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; +055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; +0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 +0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 +0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 +0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 +0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 +0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 +0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 +0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 +0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 +056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A +056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B +056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C +056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D +056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E +056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F +0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 +0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 +0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 +0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 +0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 +0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 +0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 +0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 +0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 +0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 +057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A +057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B +057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C +057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D +057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E +057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F +0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 +0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 +0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 +0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 +0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 +0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 +0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 +0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;; +0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; +058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; +0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; +0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; +0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; +0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; +0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; +0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; +0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; +0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; +0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; +059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; +059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; +059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; +059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; +059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; +059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; +05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; +05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; +05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; +05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; +05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; +05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; +05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; +05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; +05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; +05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; +05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; +05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; +05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; +05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; +05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; +05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; +05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; +05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; +05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; +05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; +05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; +05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; +05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; +05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; +05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; +05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; +05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; +05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; +05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;; +05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; +05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; +05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; +05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; +05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; +05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; +05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; +05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; +05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; +05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; +05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; +05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; +05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; +05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; +05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; +05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; +05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; +05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; +05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; +05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; +05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; +05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; +05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; +05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; +05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; +05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; +05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; +05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; +05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; +05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; +05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; +05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; +05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; +05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; +05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; +05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; +060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; +061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; +061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; +0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; +0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; +0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; +0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; +0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; +0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; +0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; +0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; +0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; +062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; +062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; +062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; +062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; +062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; +062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; +0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; +0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; +0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; +0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; +0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; +0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; +0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; +0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; +0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; +063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; +0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; +0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; +0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; +0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; +0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; +0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; +0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; +0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; +0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; +064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; +064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; +064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; +064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; +064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; +064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; +0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; +0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; +0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; +0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; +0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; +0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; +0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; +0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; +0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; +0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; +0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; +0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; +0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; +0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; +0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; +0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; +066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; +066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; +066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; +066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; +066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; +0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; +0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; +0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; +0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; +0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; +0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; +0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; +0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; +0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; +0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; +067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; +067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; +067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; +067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; +067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; +067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; +0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; +0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; +0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; +0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; +0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; +0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; +0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; +0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; +0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; +0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; +068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; +068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; +068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; +068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; +0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; +0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; +0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; +0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; +0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; +0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; +0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; +0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; +0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; +069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; +06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; +06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; +06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; +06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; +06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; +06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; +06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; +06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; +06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; +06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; +06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; +06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; +06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; +06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; +06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; +06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; +06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; +06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; +06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; +06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; +06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; +06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; +06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; +06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; +06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; +06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; +06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; +06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; +06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; +06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; +06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; +06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; +06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; +06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; +06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; +06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; +06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; +06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; +06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; +06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; +06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; +06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; +06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; +06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; +06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; +06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; +06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; +06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; +06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; +06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; +06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; +06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; +06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; +06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; +06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; +06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; +06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; +06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; +06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; +06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; +06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; +06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; +06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; +06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; +06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; +06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; +06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; +06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; +06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; +06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; +06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; +06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; +06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; +06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; +0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; +0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; +0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; +0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; +0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; +070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; +070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; +070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; +070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; +0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; +0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; +0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; +0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; +0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; +0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; +0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; +0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; +0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; +071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; +071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; +071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; +071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; +071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; +0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; +0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; +0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; +0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; +0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; +0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; +0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; +0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; +0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; +0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; +072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; +072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; +072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; +0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; +0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; +0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; +0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; +0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; +073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; +073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; +073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; +073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; +0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; +0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; +0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; +0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; +0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; +074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; +0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; +0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; +0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; +0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; +0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; +0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; +0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; +0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; +0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; +0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; +078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; +078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; +078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; +078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; +078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; +078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; +0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; +0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; +0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; +0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; +0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; +0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; +0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; +0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; +0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; +0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; +079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; +079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; +079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; +079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; +079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; +079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; +07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; +07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; +07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; +07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; +07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; +07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; +07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; +07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; +07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; +07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; +07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; +07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; +07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; +07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; +07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; +07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; +07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; +07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; +0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; +0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; +0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; +0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; +0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; +090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; +090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; +090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; +090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; +0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; +0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; +0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; +0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; +0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; +0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; +0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; +0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; +0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; +0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; +091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; +091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; +091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; +091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; +091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; +091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; +0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; +0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; +0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; +0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; +0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; +0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; +0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; +0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; +092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; +092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; +092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; +092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; +092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; +092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; +0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; +0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; +0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; +0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; +0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; +0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; +0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; +0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; +0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; +0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; +093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; +0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; +094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; +0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; +0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; +0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; +0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; +095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; +095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; +095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; +095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; +095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; +095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; +0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; +0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; +0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; +0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; +0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; +0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; +098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; +098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; +0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; +0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; +0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; +0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; +0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; +0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; +0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; +0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; +099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; +099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; +099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; +099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; +099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; +099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; +09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; +09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; +09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; +09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; +09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; +09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; +09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; +09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; +09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; +09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; +09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; +09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; +09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; +09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; +09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; +09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; +09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; +09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; +09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; +09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; +09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; +09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; +09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; +09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; +09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; +09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; +09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; +09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; +09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; +09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; +09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; +09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; +09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; +09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; +09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; +09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; +0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; +0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; +0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; +0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; +0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; +0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; +0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; +0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; +0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; +0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; +0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; +0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; +0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; +0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; +0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; +0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; +0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; +0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; +0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; +0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; +0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; +0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; +0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; +0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; +0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; +0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; +0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; +0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; +0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; +0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; +0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; +0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; +0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; +0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; +0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; +0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; +0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; +0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; +0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; +0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; +0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; +0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; +0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; +0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; +0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; +0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; +0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; +0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; +0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; +0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; +0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; +0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; +0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; +0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; +0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; +0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; +0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; +0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; +0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; +0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; +0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; +0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; +0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; +0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; +0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; +0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; +0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; +0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; +0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; +0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; +0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; +0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; +0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; +0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; +0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; +0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; +0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; +0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; +0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; +0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; +0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; +0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; +0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; +0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; +0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; +0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; +0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; +0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; +0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; +0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; +0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; +0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; +0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; +0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; +0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; +0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; +0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; +0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; +0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; +0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; +0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; +0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; +0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; +0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; +0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; +0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; +0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; +0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; +0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; +0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; +0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; +0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; +0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; +0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; +0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; +0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; +0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; +0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; +0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; +0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; +0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; +0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; +0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; +0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; +0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; +0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; +0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; +0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; +0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; +0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; +0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; +0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; +0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; +0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; +0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; +0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; +0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; +0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; +0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; +0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; +0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; +0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; +0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; +0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; +0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; +0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; +0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; +0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; +0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; +0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; +0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; +0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; +0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; +0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; +0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; +0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; +0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; +0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; +0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; +0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; +0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; +0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; +0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; +0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; +0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; +0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; +0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; +0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; +0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; +0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; +0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; +0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; +0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; +0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; +0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; +0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; +0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; +0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; +0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; +0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; +0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; +0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; +0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; +0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; +0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; +0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; +0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; +0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; +0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; +0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; +0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; +0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; +0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; +0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; +0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; +0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; +0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; +0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; +0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; +0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; +0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; +0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; +0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; +0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; +0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; +0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; +0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; +0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; +0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; +0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; +0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; +0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; +0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; +0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; +0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; +0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; +0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; +0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; +0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; +0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; +0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; +0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; +0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; +0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; +0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; +0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; +0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; +0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; +0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; +0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; +0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; +0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; +0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; +0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; +0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; +0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; +0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; +0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; +0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; +0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; +0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; +0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; +0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; +0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; +0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; +0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; +0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; +0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; +0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; +0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; +0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; +0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; +0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; +0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; +0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; +0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; +0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; +0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; +0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; +0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; +0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; +0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; +0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; +0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; +0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; +0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; +0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; +0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; +0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; +0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; +0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; +0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; +0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; +0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; +0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; +0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; +0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; +0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; +0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; +0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; +0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; +0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; +0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; +0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; +0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; +0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; +0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; +0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; +0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; +0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; +0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; +0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; +0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; +0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; +0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; +0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; +0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; +0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; +0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; +0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; +0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; +0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; +0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; +0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; +0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; +0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; +0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; +0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; +0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; +0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; +0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; +0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; +0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; +0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; +0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; +0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; +0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; +0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; +0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; +0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; +0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; +0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; +0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; +0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; +0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; +0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; +0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; +0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; +0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; +0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; +0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; +0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; +0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; +0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; +0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; +0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; +0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; +0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; +0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; +0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; +0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; +0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; +0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; +0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; +0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; +0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; +0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; +0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; +0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; +0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; +0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; +0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; +0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; +0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; +0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; +0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; +0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; +0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; +0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; +0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; +0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; +0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; +0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; +0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; +0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; +0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; +0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; +0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; +0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; +0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; +0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; +0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; +0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; +0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; +0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; +0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; +0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; +0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; +0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; +0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; +0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; +0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; +0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; +0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; +0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; +0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; +0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; +0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; +0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; +0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; +0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; +0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; +0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; +0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; +0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; +0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; +0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; +0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; +0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; +0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; +0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; +0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; +0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; +0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; +0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; +0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; +0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; +0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; +0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; +0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; +0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; +0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; +0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; +0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; +0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; +0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; +0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; +0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; +0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; +0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; +0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; +0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; +0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; +0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; +0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; +0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; +0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; +0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; +0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; +0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; +0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; +0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; +0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; +0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; +0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; +0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; +0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; +0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; +0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; +0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; +0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; +0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; +0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; +0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; +0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; +0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; +0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; +0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; +0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; +0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; +0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; +0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; +0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; +0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; +0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; +0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; +0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; +0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; +0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; +0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; +0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; +0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; +0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; +0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; +0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; +0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; +0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; +0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; +0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; +0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;; +0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; +0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; +0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; +0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; +0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; +0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; +0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; +0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; +0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; +0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; +0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; +0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; +0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; +0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;; +0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;; +0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; +0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; +0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; +0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; +0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; +0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; +0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; +0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; +0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; +0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; +0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; +0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; +0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;; +0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; +0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; +0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; +0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; +0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; +0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; +0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; +0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; +0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; +0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; +0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; +0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; +0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; +0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; +0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; +0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; +0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; +0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; +0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; +0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; +0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; +0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; +0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; +0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; +0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; +0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; +0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; +0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; +0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; +0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; +0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; +0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; +0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; +0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; +0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; +0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;; +0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;; +0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;; +0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;; +0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; +0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; +0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; +0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; +0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; +0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; +0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; +0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; +0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; +0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; +0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; +0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; +0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; +0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; +0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; +0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; +0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; +0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; +0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; +0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; +0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; +0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; +0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; +0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; +0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; +0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; +0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; +0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; +0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; +0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; +0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; +0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; +0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; +0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; +0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; +0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; +0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; +0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; +0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; +0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; +0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; +0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; +0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; +0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; +0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; +0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; +0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; +0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; +0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; +0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; +0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;; +0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; +0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;; +0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; +0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; +0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; +0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; +0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; +0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; +0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; +0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; +0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; +0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; +0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; +0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; +0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; +0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; +0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; +0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; +0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; +0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; +0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; +0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; +0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; +0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; +0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; +0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; +0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; +0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; +0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; +0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; +0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; +0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; +0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; +0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; +0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; +0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; +0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; +0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; +0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; +0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; +0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; +0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; +0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; +0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; +0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; +0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; +0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; +0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; +0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; +0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; +0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; +0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; +0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; +0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; +0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; +0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; +0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; +0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; +0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; +0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; +0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; +0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; +0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; +0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; +0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; +0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; +0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; +0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; +0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; +0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; +0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; +0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; +0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; +0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; +0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; +0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; +0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; +0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; +0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; +0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; +1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; +1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; +1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; +1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; +1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; +1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; +1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; +1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; +1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; +1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; +100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; +100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; +100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; +100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; +100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; +100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; +1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; +1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; +1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; +1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; +1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; +1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; +1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; +1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; +1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; +1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; +101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; +101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; +101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; +101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; +101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; +101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; +1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; +1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; +1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; +1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; +1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; +1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; +1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; +1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; +102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; +102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; +1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; +1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; +104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; +104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; +104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; +104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; +104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; +1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; +1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; +1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;; +10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;; +10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;; +10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;; +10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;; +10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;; +10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;; +10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;; +10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;; +10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;; +10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;; +10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;; +10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;; +10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;; +10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;; +10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;; +10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;; +10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;; +10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;; +10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;; +10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;; +10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;; +10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;; +10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;; +10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;; +10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;; +10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;; +10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;; +10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;; +10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;; +10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;; +10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;; +10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; +10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; +10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; +10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; +10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; +10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; +10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; +10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; +10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; +10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; +10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; +10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; +10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; +10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; +10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; +10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; +10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; +10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; +10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; +10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; +10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; +10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; +10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; +10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; +10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; +10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; +10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; +10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; +10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; +10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; +10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; +10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; +10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; +10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; +10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; +10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; +10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; +10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; +10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; +10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; +10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; +10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; +1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; +1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; +1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; +110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; +110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; +1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; +1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; +111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; +111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; +1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; +1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; +1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; +1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; +112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; +112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; +112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; +1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; +1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; +1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; +1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; +113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; +113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; +113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; +113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; +113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; +1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; +1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; +1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; +1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; +1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; +114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; +114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; +114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; +114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; +114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; +1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; +1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; +1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; +1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; +1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; +1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; +1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; +1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; +1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; +1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; +1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; +1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; +1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; +1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; +116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; +116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; +116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; +116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; +116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; +116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; +1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; +1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; +1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; +1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; +1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; +1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; +1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; +1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; +1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; +1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; +117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; +117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; +117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; +117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; +117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; +117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; +1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; +1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; +1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; +1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; +1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; +1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; +1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; +1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; +1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; +1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; +118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; +118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; +118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; +118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; +118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; +118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; +1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; +1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; +1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; +1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; +1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; +1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; +1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; +1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; +1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; +1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; +119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; +119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; +119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; +119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; +119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; +119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; +11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; +11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; +11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; +11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; +11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; +11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; +11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; +11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; +11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; +11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; +11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; +11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; +11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; +11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; +11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; +11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; +11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; +11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; +11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; +11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; +11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; +11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; +11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; +11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; +11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; +11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; +11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; +11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; +11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; +11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; +11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; +11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; +11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; +11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; +11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; +11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; +11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; +11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; +11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; +11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; +1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; +1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; +1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; +1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; +1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; +1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; +1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; +120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; +120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; +120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; +120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; +120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; +1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; +1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; +1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; +1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; +1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; +1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; +1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; +1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; +1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; +1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; +121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; +121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; +121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; +121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; +121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; +1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; +1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; +1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; +1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; +1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; +1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; +1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; +1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; +1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; +1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; +122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; +122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; +122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; +122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; +122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; +122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; +1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; +1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; +1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; +1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; +1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; +1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; +1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; +1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; +123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; +1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; +1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; +1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; +1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; +1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; +1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; +1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; +1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; +124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; +124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; +124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; +124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; +1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; +1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; +1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; +1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; +1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; +1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; +1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; +1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; +125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; +125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; +125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; +125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; +1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; +1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; +1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; +1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; +1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; +1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; +1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; +1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; +1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; +126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; +126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; +126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; +126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; +126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; +1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; +1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; +1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; +1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; +1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; +1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; +1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; +1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; +1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; +127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; +127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; +127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; +127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; +127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; +1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; +1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; +1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; +1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; +1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; +1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; +1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; +1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; +128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; +128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; +128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; +128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; +1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; +1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; +1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; +1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; +1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; +1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; +1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; +1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; +129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; +12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; +12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; +12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; +12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; +12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; +12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; +12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; +12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; +12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; +12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; +12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; +12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; +12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; +12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; +12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; +12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; +12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; +12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; +12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; +12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; +12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; +12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; +12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; +12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; +12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; +12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; +12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; +12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; +12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; +12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; +12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; +12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; +12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; +12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; +12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; +12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; +12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; +12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; +12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; +12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; +12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; +12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; +12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; +12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; +12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; +12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; +12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; +12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; +12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; +12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; +12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; +12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; +12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; +12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; +12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; +12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; +12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; +12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; +12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; +12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; +12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; +12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; +12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; +12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; +1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; +1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; +1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; +1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; +1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; +1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; +1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; +1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; +1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; +130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; +130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; +130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; +130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; +1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; +1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; +1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; +1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; +1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; +1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; +131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; +131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; +1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; +1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; +1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; +1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; +1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; +1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; +1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; +132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; +132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; +132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; +1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; +1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; +1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; +1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; +1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; +1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; +1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; +1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; +1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; +1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; +133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; +133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; +133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; +133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; +133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; +133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; +1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; +1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; +1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; +1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; +1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; +1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; +1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; +1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; +1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; +134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; +134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; +134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; +134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; +134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; +1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; +1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; +1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; +1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; +1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; +1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; +1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; +1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; +1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; +135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; +1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; +1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; +1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; +1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; +1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; +1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; +1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; +1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; +1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; +1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; +1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; +1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; +1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; +137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; +137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; +13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; +13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; +13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; +13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; +13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; +13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; +13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; +13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; +13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; +13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; +13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; +13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; +13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; +13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; +13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; +13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; +13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; +13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; +13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; +13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; +13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; +13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; +13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; +13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; +13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; +13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; +13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; +13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; +13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; +13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; +13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; +13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; +13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; +13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; +13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; +13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; +13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; +13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; +13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; +13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; +13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; +13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; +13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; +13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; +13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; +13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; +13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; +13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; +13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; +13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; +13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; +13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; +13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; +13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; +13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; +13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; +13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; +13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; +13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; +13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; +13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; +13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; +13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; +13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; +13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; +13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; +13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; +13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; +13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; +13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; +13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; +13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; +13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; +13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; +13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; +13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; +13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; +13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; +13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; +13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; +13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; +13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; +13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; +13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; +1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; +1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; +1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; +1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; +1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; +1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; +1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; +1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; +140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; +140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; +140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; +140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; +140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; +140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; +1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; +1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; +1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; +1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; +1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; +1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; +1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; +1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; +1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; +1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; +141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; +141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; +141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; +141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; +141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; +1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; +1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; +1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; +1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; +1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; +1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; +1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; +1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; +1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; +1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; +142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; +142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; +142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; +142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; +142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; +142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; +1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; +1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; +1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; +1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; +1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; +1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; +1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; +1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; +1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; +1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; +143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; +143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; +143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; +143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; +143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; +143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; +1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; +1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; +1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; +1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; +1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; +1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; +1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; +1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; +1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; +1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; +144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; +144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; +144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; +144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; +144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; +144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; +1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; +1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; +1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; +1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; +1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; +1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; +1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; +1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; +1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; +1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; +145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; +145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; +145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; +145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; +145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; +145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; +1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; +1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; +1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; +1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; +1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; +1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; +1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; +1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; +1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; +1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; +146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; +146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; +146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; +146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; +146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; +146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; +1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; +1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; +1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; +1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; +1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; +1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; +1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; +1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; +1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; +1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; +147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; +147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; +147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; +147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; +147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; +147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; +1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; +1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; +1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; +1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; +1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; +1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; +1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; +1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; +1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; +1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; +148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; +148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; +148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; +148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; +148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; +148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; +1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; +1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; +1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; +1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; +1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; +1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; +1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; +1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; +1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; +1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; +149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; +149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; +149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; +149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; +149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; +149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; +14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; +14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; +14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; +14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; +14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; +14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; +14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; +14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; +14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; +14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; +14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; +14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; +14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; +14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; +14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; +14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; +14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; +14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; +14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; +14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; +14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; +14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; +14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; +14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; +14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; +14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; +14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; +14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; +14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; +14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; +14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; +14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; +14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; +14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; +14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; +14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; +14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; +14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; +14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; +14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; +14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; +14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; +14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; +14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; +14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; +14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; +14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; +14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; +14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; +14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; +14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; +14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; +14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; +14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; +14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; +14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; +14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; +14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; +14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; +14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; +14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; +14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; +14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; +14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; +14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; +14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; +14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; +14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; +14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; +14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; +14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; +14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; +14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; +14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; +14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; +14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; +14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; +14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; +14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; +14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; +14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; +14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; +14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; +14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; +14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; +14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; +14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; +14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; +14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; +14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; +14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; +14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; +14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; +14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; +14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; +14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; +1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; +1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; +1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; +1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; +1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; +1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; +1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; +1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; +1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; +1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; +150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; +150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; +150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; +150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; +150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; +150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; +1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; +1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; +1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; +1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; +1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; +1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; +1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; +1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; +1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; +1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; +151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; +151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; +151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; +151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; +151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; +151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; +1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; +1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; +1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; +1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; +1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; +1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; +1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; +1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; +1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; +1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; +152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; +152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; +152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; +152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; +152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; +152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; +1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; +1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; +1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; +1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; +1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; +1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; +1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; +1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; +1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; +1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; +153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; +153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; +153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; +153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; +153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; +153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; +1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; +1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; +1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; +1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; +1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; +1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; +1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; +1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; +1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; +1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; +154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; +154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; +154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; +154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; +154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; +154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; +1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; +1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; +1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; +1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; +1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; +1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; +1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; +1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; +1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; +1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; +155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; +155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; +155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; +155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; +155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; +155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; +1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; +1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; +1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; +1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; +1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; +1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; +1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; +1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; +1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; +1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; +156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; +156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; +156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; +156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; +156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; +156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; +1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; +1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; +1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; +1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; +1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; +1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; +1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; +1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; +1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; +1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; +157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; +157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; +157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; +157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; +157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; +157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; +1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; +1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; +1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; +1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; +1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; +1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; +1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; +1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; +1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; +1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; +158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; +158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; +158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; +158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; +158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; +158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; +1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; +1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; +1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; +1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; +1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; +1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; +1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; +1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; +1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; +1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; +159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; +159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; +159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; +159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; +159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; +159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; +15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; +15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; +15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; +15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; +15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; +15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; +15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; +15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; +15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; +15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; +15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; +15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; +15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; +15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; +15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; +15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; +15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; +15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; +15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; +15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; +15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; +15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; +15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; +15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; +15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; +15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; +15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; +15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; +15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; +15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; +15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; +15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; +15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; +15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; +15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; +15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; +15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; +15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; +15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; +15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; +15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; +15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; +15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; +15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; +15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; +15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; +15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; +15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; +15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; +15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; +15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; +15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; +15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; +15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; +15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; +15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; +15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; +15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; +15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; +15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; +15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; +15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; +15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; +15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; +15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; +15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; +15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; +15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; +15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; +15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; +15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; +15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; +15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; +15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; +15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; +15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; +15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; +15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; +15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; +15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; +15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; +15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; +15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; +15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; +15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; +15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; +15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; +15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; +15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; +15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; +15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; +15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; +15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; +15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; +15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; +15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; +1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; +1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; +1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; +1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; +1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; +1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; +1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; +1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; +1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; +1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; +160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; +160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; +160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; +160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; +160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; +160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; +1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; +1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; +1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; +1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; +1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; +1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; +1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; +1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; +1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; +1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; +161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; +161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; +161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; +161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; +161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; +161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; +1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; +1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; +1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; +1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; +1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; +1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; +1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; +1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; +1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; +1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; +162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; +162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; +162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; +162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; +162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; +162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; +1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; +1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; +1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; +1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; +1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; +1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; +1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; +1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; +1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; +1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; +163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; +163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; +163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; +163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; +163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; +163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; +1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; +1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; +1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; +1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; +1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; +1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; +1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; +1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; +1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; +1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; +164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; +164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; +164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; +164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; +164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; +164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; +1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; +1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; +1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; +1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; +1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; +1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; +1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; +1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; +1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; +1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; +165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; +165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; +165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; +165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; +165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; +165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; +1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; +1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; +1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; +1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; +1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; +1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; +1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; +1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; +1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; +1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; +166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; +166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; +166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; +166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; +166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; +166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; +1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; +1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; +1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; +1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; +1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; +1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; +1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; +1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; +1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; +1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; +1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; +1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; +1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; +1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; +1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; +1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; +1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; +168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; +168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; +168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; +168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; +168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; +168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; +1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; +1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; +1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; +1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; +1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; +1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; +1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; +1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; +1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; +1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; +169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; +169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;; +169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;; +16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; +16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; +16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; +16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; +16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; +16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; +16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; +16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; +16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; +16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; +16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; +16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; +16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; +16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; +16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; +16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; +16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; +16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; +16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; +16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; +16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; +16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; +16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; +16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; +16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; +16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; +16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; +16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; +16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; +16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; +16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; +16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; +16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; +16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; +16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; +16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; +16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; +16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; +16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; +16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; +16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; +16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; +16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; +16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; +16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; +16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; +16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; +16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; +16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; +16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; +16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; +16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; +16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; +16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; +16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; +16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; +16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; +16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; +16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; +16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; +16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; +16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; +16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; +16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; +16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; +16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; +16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; +16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; +16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; +16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; +16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; +16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; +16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; +16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; +16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; +16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; +16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; +16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; +16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; +1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; +1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; +1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; +1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; +1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; +1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; +1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; +1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; +1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; +1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; +170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; +170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; +170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; +170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; +1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; +1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; +1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; +1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; +1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; +1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; +1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; +1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; +1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; +1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; +1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; +1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; +172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; +172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; +172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; +172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; +172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; +172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; +1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; +1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; +1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; +1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; +1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; +1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; +1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; +1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; +1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; +1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; +1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; +1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; +174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; +174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; +174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; +174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; +174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; +174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; +1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; +1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; +1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; +1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; +1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; +1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; +1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; +1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; +1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; +1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; +1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; +1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; +176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; +176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; +176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; +176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; +176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; +1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; +1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; +1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; +1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; +1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; +1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; +1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; +1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; +1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; +1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; +1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; +178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; +178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; +178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; +178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; +178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; +178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; +1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; +1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; +1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; +1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; +1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; +1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; +1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; +1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; +1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; +1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; +179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; +179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; +179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; +179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; +179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; +179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; +17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; +17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; +17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; +17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;; +17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;; +17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; +17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; +17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; +17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; +17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; +17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; +17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; +17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; +17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; +17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; +17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; +17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; +17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; +17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; +17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; +17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;; +17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;; +17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; +17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; +17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; +17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; +17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; +17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; +17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; +17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; +17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; +17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; +17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; +17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; +17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; +17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; +17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; +17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; +17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; +17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;; +17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; +17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; +17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; +17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; +17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; +17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; +17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; +17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; +17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; +17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; +1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; +1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; +1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; +1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; +1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; +1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; +1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; +1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; +180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; +180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; +180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; +180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; +180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; +1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; +1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; +1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; +1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; +1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; +1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; +1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; +1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; +1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; +1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; +182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; +182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; +182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; +182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; +182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; +182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; +1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; +1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; +1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; +1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; +1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; +1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; +1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; +1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; +1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; +1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; +183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; +183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; +183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; +183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; +183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; +183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; +1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; +1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; +1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; +1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; +1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; +1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; +1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; +1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; +1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; +1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; +184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; +184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; +184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; +184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; +184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; +184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; +1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; +1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; +1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; +1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; +1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; +1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; +1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; +1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; +1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; +1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; +185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; +185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; +185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; +185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; +185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; +185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; +1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; +1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; +1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; +1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; +1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; +1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; +1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; +1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; +1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; +1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; +186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; +186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; +186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; +186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; +186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; +186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; +1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; +1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; +1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; +1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; +1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; +1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; +1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; +1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; +1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; +1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; +1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; +1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; +1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; +1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; +1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; +1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; +1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; +1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; +188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; +188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; +188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; +188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; +188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; +188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; +1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; +1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; +1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; +1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; +1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; +1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; +1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; +1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; +1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; +189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; +189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; +189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; +189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; +189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; +18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; +18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; +18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; +18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; +18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; +18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; +18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; +18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; +18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; +1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; +1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 +1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; +1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 +1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; +1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 +1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; +1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 +1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; +1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 +1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; +1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A +1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; +1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C +1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; +1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E +1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; +1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 +1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; +1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 +1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; +1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 +1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; +1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 +1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; +1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 +1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; +1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A +1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; +1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C +1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; +1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E +1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; +1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 +1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; +1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 +1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; +1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 +1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; +1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 +1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; +1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 +1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; +1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A +1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; +1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C +1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; +1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E +1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; +1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 +1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; +1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 +1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; +1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 +1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; +1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 +1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; +1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 +1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; +1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A +1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; +1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C +1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; +1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E +1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; +1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 +1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; +1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 +1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; +1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 +1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; +1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 +1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; +1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 +1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; +1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A +1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; +1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C +1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; +1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E +1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; +1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 +1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; +1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 +1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; +1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 +1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; +1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 +1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; +1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 +1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; +1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A +1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; +1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C +1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; +1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E +1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; +1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 +1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; +1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 +1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; +1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 +1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; +1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 +1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; +1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 +1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; +1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A +1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; +1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C +1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; +1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E +1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; +1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 +1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; +1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 +1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; +1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 +1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; +1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 +1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; +1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 +1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; +1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A +1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; +1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C +1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; +1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E +1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; +1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 +1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; +1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 +1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; +1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 +1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; +1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 +1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; +1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 +1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; +1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A +1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; +1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C +1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; +1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E +1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; +1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 +1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; +1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 +1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; +1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 +1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; +1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; +1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; +1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; +1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;; +1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 +1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; +1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 +1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; +1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 +1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; +1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 +1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; +1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 +1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; +1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 +1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; +1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA +1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; +1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC +1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; +1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE +1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; +1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 +1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; +1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 +1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; +1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 +1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; +1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 +1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; +1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 +1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; +1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA +1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; +1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC +1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; +1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE +1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; +1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 +1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; +1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 +1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; +1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 +1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; +1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 +1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; +1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 +1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; +1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA +1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; +1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC +1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; +1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE +1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; +1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 +1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; +1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 +1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; +1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 +1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; +1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 +1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; +1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 +1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; +1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA +1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; +1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC +1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; +1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE +1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; +1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 +1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; +1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 +1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; +1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 +1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; +1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 +1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; +1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 +1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; +1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA +1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; +1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC +1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; +1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE +1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; +1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 +1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; +1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 +1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; +1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 +1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; +1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 +1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; +1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 +1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 +1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 +1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A +1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B +1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C +1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D +1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E +1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F +1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; +1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; +1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; +1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; +1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; +1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; +1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; +1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; +1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 +1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 +1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A +1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B +1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C +1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D +1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; +1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; +1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; +1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; +1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; +1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; +1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 +1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 +1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A +1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B +1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C +1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D +1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E +1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F +1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; +1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; +1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; +1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; +1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; +1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; +1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; +1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; +1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 +1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 +1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A +1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B +1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C +1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D +1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E +1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F +1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; +1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; +1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; +1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; +1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; +1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; +1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; +1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; +1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 +1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 +1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A +1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B +1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C +1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D +1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; +1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; +1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; +1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; +1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; +1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; +1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; +1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 +1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; +1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B +1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; +1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D +1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; +1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F +1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; +1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; +1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; +1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; +1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 +1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 +1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A +1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B +1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C +1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D +1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E +1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F +1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; +1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; +1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; +1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; +1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; +1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; +1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; +1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; +1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA +1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB +1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 +1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 +1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA +1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB +1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA +1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB +1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 +1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 +1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA +1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB +1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA +1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB +1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 +1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 +1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A +1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B +1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C +1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D +1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E +1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F +1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; +1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; +1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; +1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; +1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; +1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; +1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; +1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; +1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 +1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 +1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A +1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B +1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C +1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D +1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E +1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F +1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; +1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; +1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; +1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; +1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; +1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; +1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; +1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; +1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 +1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 +1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA +1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB +1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC +1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD +1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE +1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF +1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; +1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; +1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; +1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; +1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; +1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; +1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; +1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; +1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 +1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 +1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; +1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC +1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; +1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; +1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; +1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; +1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; +1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; +1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; +1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; +1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; +1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 +1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; +1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;; +1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; +1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; +1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC +1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; +1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; +1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; +1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; +1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; +1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; +1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; +1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; +1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; +1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; +1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; +1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 +1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 +1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; +1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; +1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; +1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; +1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; +1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; +1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; +1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; +1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; +1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; +1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; +1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 +1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 +1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; +1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; +1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; +1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC +1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; +1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; +1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; +1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; +1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; +1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; +1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; +1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; +1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; +1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; +1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; +1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC +1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; +1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; +1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; +1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; +1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; +1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; +1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; +1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; +1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; +1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;; +2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; +2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; +2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;; +2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;; +200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; +200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; +200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; +200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; +2010;HYPHEN;Pd;0;ON;;;;;N;;;;; +2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;; +2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; +2013;EN DASH;Pd;0;ON;;;;;N;;;;; +2014;EM DASH;Pd;0;ON;;;;;N;;;;; +2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; +2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; +2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; +2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; +2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; +201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; +201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; +201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; +201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; +201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; +201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; +2020;DAGGER;Po;0;ON;;;;;N;;;;; +2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; +2022;BULLET;Po;0;ON;;;;;N;;;;; +2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; +2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;; +2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;; +2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;; +2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; +2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; +2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; +202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; +202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; +202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; +202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; +202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; +202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;; +2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +2032;PRIME;Po;0;ET;;;;;N;;;;; +2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;; +2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;; +2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; +2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;; +2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;; +2038;CARET;Po;0;ON;;;;;N;;;;; +2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; +203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; +203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; +203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;; +203D;INTERROBANG;Po;0;ON;;;;;N;;;;; +203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;; +203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; +2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; +2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; +2042;ASTERISM;Po;0;ON;;;;;N;;;;; +2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; +2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;; +2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; +2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; +2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;; +2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;; +2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;; +204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; +204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; +204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; +204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; +2050;CLOSE UP;Po;0;ON;;;;;N;;;;; +2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; +2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; +205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; +2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; +2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; +2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; +206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; +2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;; +2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; +2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; +2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;; +2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; +2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; +2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;; +207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;; +207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; +207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;; +207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; +207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; +207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;; +2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;; +2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;; +2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;; +2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;; +2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;; +2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;; +2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;; +2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; +2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; +2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;; +208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;; +208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; +208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;; +208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; +208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; +20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; +20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; +20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; +20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; +20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; +20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;; +20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; +20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; +20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; +20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; +20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; +20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; +20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; +20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; +20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; +20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; +20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; +20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; +20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; +20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; +20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; +20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; +20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; +20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; +20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; +20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; +20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; +20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; +20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; +20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; +20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; +20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; +20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; +20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; +20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; +20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; +20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; +20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; +20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; +2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;; +2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;; +2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;; +2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; +2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; +2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;; +2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;; +2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;; +2108;SCRUPLE;So;0;ON;;;;;N;;;;; +2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; +210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;; +210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;; +210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;; +210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;; +210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; +2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;; +2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;; +2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;; +2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; +2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;; +2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;; +2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; +2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; +2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;; +211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;; +211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;; +211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;; +211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;; +211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; +211F;RESPONSE;So;0;ON;;;;;N;;;;; +2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;; +2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;; +2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;; +2123;VERSICLE;So;0;ON;;;;;N;;;;; +2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;; +2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; +2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; +2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; +2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;; +2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; +212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; +212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; +212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;; +212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;; +212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; +212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;; +2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;; +2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;; +2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;; +2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; +2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; +2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; +2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; +2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;; +213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; +213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;; +2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; +2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; +2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; +214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; +2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; +2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; +2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; +2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; +2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; +2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; +2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; +215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; +215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; +215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; +215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; +215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; +215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;; +2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170; +2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171; +2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172; +2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173; +2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174; +2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175; +2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176; +2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177; +2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178; +2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179; +216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A; +216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B; +216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C; +216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D; +216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E; +216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F; +2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160 +2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161 +2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162 +2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163 +2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164 +2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165 +2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166 +2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167 +2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168 +2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169 +217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A +217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B +217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C +217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D +217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E +217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F +2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; +2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; +2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; +2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;; +2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; +2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; +2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; +2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; +2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; +2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; +2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; +2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; +2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; +219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; +219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; +219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; +219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; +219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; +219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; +21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; +21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; +21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; +21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; +21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; +21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; +21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; +21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; +21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; +21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; +21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; +21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; +21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; +21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; +21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; +21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; +21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; +21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; +21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; +21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; +21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; +21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; +21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; +21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; +21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; +21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; +21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; +21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; +21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; +21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; +21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; +21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; +21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; +21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; +21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; +21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; +21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; +21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; +21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; +21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; +21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; +21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; +21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; +21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; +21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; +21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; +21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; +21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; +21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; +21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; +21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; +21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; +21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; +21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; +21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; +21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; +21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; +21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; +21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; +21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; +21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; +21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; +21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; +21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; +21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; +21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; +21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; +21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; +21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; +21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; +21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; +21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; +21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; +21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; +21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +2200;FOR ALL;Sm;0;ON;;;;;N;;;;; +2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; +2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; +2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; +2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; +2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; +2206;INCREMENT;Sm;0;ON;;;;;N;;;;; +2207;NABLA;Sm;0;ON;;;;;N;;;;; +2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; +220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; +220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; +220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; +2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; +2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; +2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;; +2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; +2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; +2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; +2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; +2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; +221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; +221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; +221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; +221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; +221E;INFINITY;Sm;0;ON;;;;;N;;;;; +221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; +2220;ANGLE;Sm;0;ON;;;;;Y;;;;; +2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; +2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; +2223;DIVIDES;Sm;0;ON;;;;;N;;;;; +2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; +2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; +2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; +2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; +222A;UNION;Sm;0;ON;;;;;N;;;;; +222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;; +222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;; +222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;; +2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;; +2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2234;THEREFORE;Sm;0;ON;;;;;N;;;;; +2235;BECAUSE;Sm;0;ON;;;;;N;;;;; +2236;RATIO;Sm;0;ON;;;;;N;;;;; +2237;PROPORTION;Sm;0;ON;;;;;N;;;;; +2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; +2239;EXCESS;Sm;0;ON;;;;;Y;;;;; +223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; +223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; +223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; +223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; +223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; +2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; +2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; +2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; +2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; +2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; +2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; +224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; +224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; +2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; +2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; +2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; +2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; +2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; +2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; +2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; +2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; +225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; +225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; +225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; +225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; +225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; +225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; +2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; +2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; +2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; +2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; +2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; +2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; +2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; +2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; +226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; +226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; +226C;BETWEEN;Sm;0;ON;;;;;N;;;;; +226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; +226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; +226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; +2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; +2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; +2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; +2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; +2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; +2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; +2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; +2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; +2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; +2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; +227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; +227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; +2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; +2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; +2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; +2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; +2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; +2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; +2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; +228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; +228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; +228C;MULTISET;Sm;0;ON;;;;;Y;;;;; +228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; +228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; +228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; +2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; +2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; +2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; +2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; +229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; +229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; +229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; +229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; +22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; +22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; +22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; +22A5;UP TACK;Sm;0;ON;;;;;N;;;;; +22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; +22A7;MODELS;Sm;0;ON;;;;;Y;;;;; +22A8;TRUE;Sm;0;ON;;;;;Y;;;;; +22A9;FORCES;Sm;0;ON;;;;;Y;;;;; +22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; +22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; +22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; +22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; +22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; +22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; +22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; +22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; +22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; +22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; +22BB;XOR;Sm;0;ON;;;;;N;;;;; +22BC;NAND;Sm;0;ON;;;;;N;;;;; +22BD;NOR;Sm;0;ON;;;;;N;;;;; +22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; +22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; +22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; +22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; +22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; +22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; +22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; +22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; +22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; +22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; +22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; +22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; +22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; +22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; +22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; +22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; +22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; +22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; +22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; +22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; +22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; +22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; +22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; +22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; +22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; +22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; +22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; +22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; +22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; +22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; +22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; +22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; +22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; +22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; +22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; +2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; +2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; +2302;HOUSE;So;0;ON;;;;;N;;;;; +2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; +2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; +2305;PROJECTIVE;So;0;ON;;;;;N;;;;; +2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; +2307;WAVY LINE;So;0;ON;;;;;N;;;;; +2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; +2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; +230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; +230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; +230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; +230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; +230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; +230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; +2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; +2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; +2312;ARC;So;0;ON;;;;;N;;;;; +2313;SEGMENT;So;0;ON;;;;;N;;;;; +2314;SECTOR;So;0;ON;;;;;N;;;;; +2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; +2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; +2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; +2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; +2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; +231A;WATCH;So;0;ON;;;;;N;;;;; +231B;HOURGLASS;So;0;ON;;;;;N;;;;; +231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; +231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; +231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; +231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; +2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2322;FROWN;So;0;ON;;;;;N;;;;; +2323;SMILE;So;0;ON;;;;;N;;;;; +2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; +2325;OPTION KEY;So;0;ON;;;;;N;;;;; +2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; +2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; +2328;KEYBOARD;So;0;ON;;;;;N;;;;; +2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; +232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; +232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; +232C;BENZENE RING;So;0;ON;;;;;N;;;;; +232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; +232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; +232F;SYMMETRY;So;0;ON;;;;;N;;;;; +2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; +2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; +2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; +2333;SLOPE;So;0;ON;;;;;N;;;;; +2334;COUNTERBORE;So;0;ON;;;;;N;;;;; +2335;COUNTERSINK;So;0;ON;;;;;N;;;;; +2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; +2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; +2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; +2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; +233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; +233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; +233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; +233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; +233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; +233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; +2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; +2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; +2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; +2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; +2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; +2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; +2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; +2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; +2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; +2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; +234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; +234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; +234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; +234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; +234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; +234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; +2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; +2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; +2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; +2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; +2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; +2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; +2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; +2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; +2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; +2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; +235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; +235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; +235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; +235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; +235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; +235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; +2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; +2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; +2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; +2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; +2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; +2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; +2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; +2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; +2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; +2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; +236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; +236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; +236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; +236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; +236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; +236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; +2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; +2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; +2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; +2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; +2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; +2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; +2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; +2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; +2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; +2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; +237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; +237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; +237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; +237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; +237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; +237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; +2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; +2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; +2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; +2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; +2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; +2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; +2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; +2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; +238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; +238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; +238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; +238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; +238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; +238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; +2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; +2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; +2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; +2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; +2398;NEXT PAGE;So;0;ON;;;;;N;;;;; +2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; +23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; +23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; +23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; +23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;; +23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; +23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; +23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; +23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; +23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; +23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; +23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; +23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; +2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; +2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; +2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; +2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; +2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; +2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; +2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; +2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; +2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; +2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; +240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; +240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; +240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; +240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; +240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; +240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; +2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; +2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; +2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; +2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; +2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; +2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; +2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; +2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; +2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; +2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; +241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; +241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; +241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; +241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; +241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; +241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; +2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; +2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; +2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; +2423;OPEN BOX;So;0;ON;;;;;N;;;;; +2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; +2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; +2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; +2440;OCR HOOK;So;0;ON;;;;;N;;;;; +2441;OCR CHAIR;So;0;ON;;;;;N;;;;; +2442;OCR FORK;So;0;ON;;;;;N;;;;; +2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; +2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; +2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; +2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; +2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; +2448;OCR DASH;So;0;ON;;;;;N;;;;; +2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; +244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; +2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;; +2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;; +2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;; +2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;; +2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;; +2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;; +2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;; +2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;; +2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;; +2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;; +246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;; +246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;; +246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;; +246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;; +246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;; +246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;; +2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;; +2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;; +2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;; +2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;; +2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;; +2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;; +2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;; +2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;; +2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;; +2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;; +247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;; +247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;; +247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;; +247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;; +247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;; +247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;; +2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;; +2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;; +2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;; +2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;; +2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;; +2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;; +2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;; +2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;; +2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; +2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; +248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; +248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; +248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; +248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; +248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; +248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; +2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; +2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; +2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; +2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; +2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; +2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; +2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; +2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; +2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; +2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; +249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; +249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; +249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;; +249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;; +249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;; +249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;; +24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;; +24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;; +24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;; +24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;; +24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;; +24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;; +24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;; +24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;; +24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;; +24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;; +24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;; +24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;; +24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;; +24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;; +24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;; +24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;; +24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;; +24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;; +24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;; +24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;; +24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;; +24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;; +24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0; +24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1; +24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2; +24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3; +24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4; +24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5; +24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6; +24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7; +24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8; +24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9; +24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA; +24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB; +24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC; +24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD; +24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE; +24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF; +24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0; +24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1; +24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2; +24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3; +24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4; +24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5; +24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6; +24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7; +24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8; +24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9; +24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6 +24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7 +24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8 +24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9 +24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA +24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB +24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC +24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD +24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE +24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF +24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0 +24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1 +24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2 +24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3 +24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4 +24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5 +24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6 +24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7 +24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8 +24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9 +24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA +24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB +24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC +24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD +24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE +24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF +24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;; +24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; +24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; +24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; +24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; +24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; +24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; +24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; +24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; +24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; +24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; +24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; +24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; +24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; +24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; +24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; +24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; +24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; +24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; +24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; +24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; +2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; +2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; +2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; +2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; +2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; +2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; +2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; +2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; +2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; +2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; +250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; +250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; +250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; +250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; +250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; +250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; +2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; +2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; +2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; +2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; +2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; +2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; +2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; +2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; +2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; +2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; +251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; +251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; +251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; +251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; +251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; +251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; +2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; +2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; +2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; +2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; +2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; +2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; +2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; +2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; +2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; +2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; +252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; +252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; +252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; +252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; +252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; +252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; +2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; +2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; +2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; +2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; +2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; +2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; +2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; +2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; +2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; +2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; +253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; +253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; +253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; +253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; +253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; +253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; +2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; +2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; +2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; +2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; +2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; +2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; +2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; +2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; +2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; +2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; +254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; +254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; +254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; +254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; +254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; +254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; +2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; +2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; +2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; +2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; +2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; +2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; +2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; +2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; +2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; +2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; +255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; +255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; +255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; +255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; +255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; +255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; +2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; +2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; +2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; +2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; +2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; +2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; +2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; +2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; +2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; +2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; +256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; +256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; +256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; +256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; +256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; +256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; +2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; +2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; +2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; +2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; +2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; +2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; +2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; +2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; +2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; +2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; +257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; +257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; +257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; +257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; +257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; +257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; +2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; +2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; +2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; +2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2588;FULL BLOCK;So;0;ON;;;;;N;;;;; +2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; +258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; +258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; +2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; +2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; +2593;DARK SHADE;So;0;ON;;;;;N;;;;; +2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; +2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; +2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; +2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; +259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; +25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; +25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; +25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; +25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; +25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; +25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; +25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; +25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; +25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; +25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; +25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; +25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; +25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; +25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; +25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; +25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; +25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; +25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; +25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; +25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; +25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; +25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; +25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; +25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; +25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; +25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; +25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; +25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; +25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +25C9;FISHEYE;So;0;ON;;;;;N;;;;; +25CA;LOZENGE;So;0;ON;;;;;N;;;;; +25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; +25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25CE;BULLSEYE;So;0;ON;;;;;N;;;;; +25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; +25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; +25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; +25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; +25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; +25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; +25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; +25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; +25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; +25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; +2601;CLOUD;So;0;ON;;;;;N;;;;; +2602;UMBRELLA;So;0;ON;;;;;N;;;;; +2603;SNOWMAN;So;0;ON;;;;;N;;;;; +2604;COMET;So;0;ON;;;;;N;;;;; +2605;BLACK STAR;So;0;ON;;;;;N;;;;; +2606;WHITE STAR;So;0;ON;;;;;N;;;;; +2607;LIGHTNING;So;0;ON;;;;;N;;;;; +2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; +2609;SUN;So;0;ON;;;;;N;;;;; +260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; +260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; +260C;CONJUNCTION;So;0;ON;;;;;N;;;;; +260D;OPPOSITION;So;0;ON;;;;;N;;;;; +260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; +260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; +2610;BALLOT BOX;So;0;ON;;;;;N;;;;; +2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; +2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; +2613;SALTIRE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; +2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; +261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; +2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; +2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; +2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; +2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; +2624;CADUCEUS;So;0;ON;;;;;N;;;;; +2625;ANKH;So;0;ON;;;;;N;;;;; +2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; +2627;CHI RHO;So;0;ON;;;;;N;;;;; +2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; +2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; +262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; +262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; +262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; +262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; +262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; +262F;YIN YANG;So;0;ON;;;;;N;;;;; +2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; +2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; +2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; +2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; +2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; +2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; +2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; +2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; +2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; +263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; +263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; +263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; +263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; +263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; +263F;MERCURY;So;0;ON;;;;;N;;;;; +2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; +2641;EARTH;So;0;ON;;;;;N;;;;; +2642;MALE SIGN;So;0;ON;;;;;N;;;;; +2643;JUPITER;So;0;ON;;;;;N;;;;; +2644;SATURN;So;0;ON;;;;;N;;;;; +2645;URANUS;So;0;ON;;;;;N;;;;; +2646;NEPTUNE;So;0;ON;;;;;N;;;;; +2647;PLUTO;So;0;ON;;;;;N;;;;; +2648;ARIES;So;0;ON;;;;;N;;;;; +2649;TAURUS;So;0;ON;;;;;N;;;;; +264A;GEMINI;So;0;ON;;;;;N;;;;; +264B;CANCER;So;0;ON;;;;;N;;;;; +264C;LEO;So;0;ON;;;;;N;;;;; +264D;VIRGO;So;0;ON;;;;;N;;;;; +264E;LIBRA;So;0;ON;;;;;N;;;;; +264F;SCORPIUS;So;0;ON;;;;;N;;;;; +2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; +2651;CAPRICORN;So;0;ON;;;;;N;;;;; +2652;AQUARIUS;So;0;ON;;;;;N;;;;; +2653;PISCES;So;0;ON;;;;;N;;;;; +2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; +2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; +2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; +2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; +2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; +2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; +265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; +265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; +265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; +265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; +265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; +265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; +2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; +2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; +2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; +2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; +2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; +2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; +2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; +2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; +266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; +266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; +266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; +266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; +266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; +266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; +2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; +2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; +2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; +2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; +2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; +2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; +2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; +267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; +267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +2680;DIE FACE-1;So;0;ON;;;;;N;;;;; +2681;DIE FACE-2;So;0;ON;;;;;N;;;;; +2682;DIE FACE-3;So;0;ON;;;;;N;;;;; +2683;DIE FACE-4;So;0;ON;;;;;N;;;;; +2684;DIE FACE-5;So;0;ON;;;;;N;;;;; +2685;DIE FACE-6;So;0;ON;;;;;N;;;;; +2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; +2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; +2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; +2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; +2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; +2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; +2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; +2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; +2708;AIRPLANE;So;0;ON;;;;;N;;;;; +2709;ENVELOPE;So;0;ON;;;;;N;;;;; +270C;VICTORY HAND;So;0;ON;;;;;N;;;;; +270D;WRITING HAND;So;0;ON;;;;;N;;;;; +270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +270F;PENCIL;So;0;ON;;;;;N;;;;; +2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +2711;WHITE NIB;So;0;ON;;;;;N;;;;; +2712;BLACK NIB;So;0;ON;;;;;N;;;;; +2713;CHECK MARK;So;0;ON;;;;;N;;;;; +2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; +2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2717;BALLOT X;So;0;ON;;;;;N;;;;; +2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; +2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; +271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; +271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; +271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; +271D;LATIN CROSS;So;0;ON;;;;;N;;;;; +271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; +271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; +2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; +2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; +2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; +272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; +272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; +272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; +2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; +2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; +2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; +273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; +273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; +273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; +2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; +2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; +2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; +2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; +2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; +2747;SPARKLE;So;0;ON;;;;;N;;;;; +2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; +2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; +274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; +2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; +2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; +275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; +275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; +2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; +2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; +2766;FLORAL HEART;So;0;ON;;;;;N;;;;; +2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; +2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; +2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; +2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; +277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; +277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; +277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; +277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; +277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; +277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; +2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; +2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; +2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; +2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; +2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; +2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; +2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; +2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; +278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; +278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; +278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; +278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; +278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; +278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; +2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; +2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; +2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; +2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; +2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; +279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; +279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; +279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; +279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; +279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; +279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; +27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; +27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; +27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; +27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; +27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; +27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; +27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; +27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; +27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; +27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; +27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; +27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; +27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; +27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; +27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; +27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; +27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; +27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; +27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; +27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; +27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; +27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; +27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; +27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; +27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; +27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; +27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; +27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; +27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; +27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; +27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; +27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;; +2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; +2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; +2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; +2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; +2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; +293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; +293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; +2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; +2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; +297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; +297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; +2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; +2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; +2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; +2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; +2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; +2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; +2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; +2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; +298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; +298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; +298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; +298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; +298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; +298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; +2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; +2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; +2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; +2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; +299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; +299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; +299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; +299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; +299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; +29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; +29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; +29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; +29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; +29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; +29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; +29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; +29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; +29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; +29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; +29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; +29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; +29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; +29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; +29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; +29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; +29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; +29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; +29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; +29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; +29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; +29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; +29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; +29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; +29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; +29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; +29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; +29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; +29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; +29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; +29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; +29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; +29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; +29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +29FE;TINY;Sm;0;ON;;;;;N;;;;; +29FF;MINY;Sm;0;ON;;;;;N;;;;; +2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; +2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; +2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; +2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; +2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; +2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; +2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;; +2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; +2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; +2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; +2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; +2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; +2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; +2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; +2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; +2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; +2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2A1D;JOIN;Sm;0;ON;;;;;N;;;;; +2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; +2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; +2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; +2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; +2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; +2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; +2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; +2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; +2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; +2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; +2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; +2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; +2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; +2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; +2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; +2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; +2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; +2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; +2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; +2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; +2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;; +2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;; +2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;; +2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; +2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; +2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; +2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; +2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; +2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; +2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; +2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; +2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; +2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; +2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; +2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; +2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; +2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; +2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; +2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; +2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; +2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; +2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; +2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; +2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; +2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; +2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; +2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; +2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; +2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; +2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; +2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; +2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; +2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; +2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; +2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; +2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; +2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; +2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; +2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; +2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; +2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; +2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; +2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; +2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; +2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; +2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; +2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; +2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; +2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; +2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; +2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; +2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; +2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; +2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; +2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; +2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; +2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; +2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;; +2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; +2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; +2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; +2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; +2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; +2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; +2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; +2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; +2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; +2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; +2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; +2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; +2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; +2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; +2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; +2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; +2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; +2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; +2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; +2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; +2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; +2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; +2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; +2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; +2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; +2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; +2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; +2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; +2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; +2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; +2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; +2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; +2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; +2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; +2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; +2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; +2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; +2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; +2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; +2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; +2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; +2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; +2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; +2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; +2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; +2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; +2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; +2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; +2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; +2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; +2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; +2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; +2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; +2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; +2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; +2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; +2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; +2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; +2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; +2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; +2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; +2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; +2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; +2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; +2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; +2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; +2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; +2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; +2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; +2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; +2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; +2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; +2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; +2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; +2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; +2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; +2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; +2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;; +2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;; +2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;; +2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;; +2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;; +2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;; +2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;; +2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;; +2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;; +2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;; +2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;; +2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;; +2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;; +2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;; +2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;; +2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;; +2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;; +2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;; +2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;; +2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;; +2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;; +2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;; +2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;; +2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;; +2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;; +2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;; +2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;; +2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;; +2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;; +2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;; +2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;; +2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;; +2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;; +2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;; +2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;; +2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;; +2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;; +2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;; +2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;; +2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;; +2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;; +2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;; +2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;; +2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;; +2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;; +2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;; +2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;; +2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;; +2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;; +2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;; +2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;; +2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;; +2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;; +2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;; +2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;; +2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;; +2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;; +2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;; +2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;; +2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;; +2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;; +2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;; +2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;; +2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;; +2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;; +2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;; +2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;; +2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;; +2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;; +2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;; +2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;; +2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;; +2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;; +2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;; +2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;; +2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;; +2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;; +2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;; +2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;; +2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;; +2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;; +2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;; +2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;; +2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;; +2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;; +2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;; +2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;; +2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;; +2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;; +2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;; +2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;; +2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;; +2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;; +2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;; +2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;; +2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;; +2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;; +2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;; +2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;; +2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;; +2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;; +2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;; +2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;; +2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;; +2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;; +2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;; +2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;; +2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;; +2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;; +2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;; +2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;; +2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;; +2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;; +2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;; +2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;; +2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;; +2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;; +2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;; +2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;; +2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;; +2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;; +2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;; +2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;; +2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;; +2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;; +2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;; +2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;; +2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;; +2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;; +2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;; +2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;; +2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;; +2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;; +2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;; +2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;; +2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;; +2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;; +2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;; +2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;; +2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;; +2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;; +2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;; +2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;; +2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;; +2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;; +2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;; +2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;; +2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;; +2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;; +2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;; +2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;; +2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;; +2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;; +2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;; +2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;; +2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;; +2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;; +2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;; +2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;; +2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;; +2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;; +2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;; +2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;; +2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;; +2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;; +2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;; +2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;; +2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;; +2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;; +2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;; +2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;; +2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;; +2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;; +2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;; +2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;; +2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;; +2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;; +2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;; +2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;; +2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;; +2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;; +2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;; +2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;; +2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;; +2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;; +2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;; +2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;; +2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;; +2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;; +2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;; +2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;; +2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;; +2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;; +2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;; +2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;; +2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;; +2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;; +2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;; +2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;; +2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;; +2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;; +2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;; +2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;; +2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;; +2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;; +2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;; +2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;; +2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;; +2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;; +2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;; +2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;; +2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;; +2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;; +2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;; +2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;; +2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; +2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; +2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; +2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; +2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; +2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; +2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; +2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; +2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; +2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; +2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; +2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; +3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;; +3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; +3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; +3003;DITTO MARK;Po;0;ON;;;;;N;;;;; +3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; +3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; +3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; +3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; +3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; +300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; +300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; +300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; +300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; +300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; +300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; +3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; +3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; +3012;POSTAL MARK;So;0;ON;;;;;N;;;;; +3013;GETA MARK;So;0;ON;;;;;N;;;;; +3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; +3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; +3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; +3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; +3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; +3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; +301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; +301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; +301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; +301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; +301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; +3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; +3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; +3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; +3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; +3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; +3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; +3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; +3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; +3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; +302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; +302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; +302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; +302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; +302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; +3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; +3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; +3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; +3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;; +3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; +3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;; +3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;; +303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;; +303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +303C;MASU MARK;Lo;0;L;;;;;N;;;;; +303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; +303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; +303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; +3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; +3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; +3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; +3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; +3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; +304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; +304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; +304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; +304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; +304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; +3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; +3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; +3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; +3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; +3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; +3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; +3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; +3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; +3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; +3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; +305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; +305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; +305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; +305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; +305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; +305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; +3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; +3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; +3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; +3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; +3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; +3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; +3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; +3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; +3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; +306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; +306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; +306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; +306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; +306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; +306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; +3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; +3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; +3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; +3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; +3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; +3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; +3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; +3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; +3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; +3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; +307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; +307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; +307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; +307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; +307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; +307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; +3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; +3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; +3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; +3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; +3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; +3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; +3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; +308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; +308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; +308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; +308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; +308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; +3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; +3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; +3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; +3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; +3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; +3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; +309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; +309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;; +309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;; +309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; +309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;; +30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; +30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; +30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; +30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; +30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; +30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; +30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; +30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; +30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; +30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; +30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; +30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; +30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; +30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; +30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; +30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; +30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; +30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; +30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; +30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; +30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; +30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; +30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; +30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; +30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; +30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; +30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; +30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; +30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; +30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; +30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; +30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; +30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; +30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; +30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; +30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; +30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; +30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; +30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; +30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; +30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; +30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; +30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; +30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; +30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; +30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; +30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; +30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; +30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; +30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; +30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; +30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; +30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; +30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; +30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; +30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; +30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; +30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; +30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; +30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; +30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; +30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; +30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; +30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; +30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; +30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; +30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; +30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; +30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; +30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; +30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; +30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; +30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; +30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; +30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; +30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; +30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; +30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; +30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; +30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;; +30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; +30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; +30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;; +3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; +3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; +3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; +3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; +3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; +310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; +310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; +310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; +310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; +310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; +310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; +3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; +3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; +3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; +3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; +3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; +3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; +3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; +3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; +3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; +3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; +311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; +311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; +311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; +311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; +311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; +311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; +3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; +3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; +3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; +3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; +3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; +3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; +3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; +3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; +3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; +3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; +312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; +312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; +312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; +3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;; +3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; +3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; +3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;; +3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; +3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; +3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;; +3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; +3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;; +313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; +313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; +313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; +313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; +313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; +313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; +3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; +3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;; +3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;; +3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; +3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; +3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;; +3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; +3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;; +3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;; +3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; +314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;; +314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;; +314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;; +314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;; +314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;; +314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;; +3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;; +3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;; +3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;; +3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;; +3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;; +3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;; +3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;; +3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;; +3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;; +3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;; +315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;; +315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;; +315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;; +315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;; +315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;; +315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;; +3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;; +3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;; +3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;; +3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;; +3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;; +3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; +3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; +3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; +3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; +3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; +316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; +316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; +316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; +316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; +316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; +316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; +3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; +3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; +3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; +3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; +3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; +3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; +3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; +3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; +3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; +3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; +317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; +317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; +317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; +317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; +317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; +317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; +3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; +3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;; +3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; +3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; +3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; +3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; +3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; +3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;; +3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;; +3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;; +318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;; +318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;; +318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;; +318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;; +318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;; +3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; +3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; +3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; +3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; +3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; +3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;; +3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; +3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; +3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;; +3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;; +319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;; +319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;; +319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;; +319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;; +319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;; +319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; +31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; +31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; +31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; +31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; +31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; +31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; +31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; +31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; +31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; +31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; +31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; +31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; +31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; +31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; +31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; +31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; +31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; +31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; +31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; +31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; +31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; +31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; +31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; +31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; +31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; +31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; +31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; +31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; +31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; +31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; +31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; +31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; +31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; +31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; +31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; +31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; +31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; +31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; +31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; +31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; +3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; +3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;; +3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; +3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; +3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;; +3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; +3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;; +3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;; +3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; +3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; +320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; +320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; +320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; +320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;; +320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; +320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; +3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; +3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; +3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; +3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; +3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; +3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; +3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; +3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; +3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; +3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; +321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; +321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; +321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; +3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;; +3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;; +3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;; +3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;; +3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;; +3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;; +3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;; +3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;; +3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;; +3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;; +322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;; +322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;; +322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;; +322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;; +322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;; +322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;; +3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;; +3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;; +3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;; +3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;; +3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;; +3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;; +3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;; +3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;; +3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;; +3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;; +323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;; +323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;; +323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;; +323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;; +323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;; +323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;; +3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;; +3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;; +3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;; +3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;; +3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;; +3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;; +3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;; +3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;; +3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;; +3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;; +3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;; +3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;; +3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;; +325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;; +325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;; +325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;; +325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;; +325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;; +325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;; +3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; +3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;; +3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; +3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;; +3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;; +3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;; +3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;; +3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;; +3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; +3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;; +326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; +326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;; +326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;; +326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;; +326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;; +326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;; +3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;; +3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;; +3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;; +3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;; +3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;; +3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;; +3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;; +3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;; +3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;; +3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;; +327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;; +327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;; +327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; +3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;; +3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;; +3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;; +3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;; +3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;; +3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;; +3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;; +3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;; +3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;; +3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;; +328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;; +328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;; +328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;; +328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;; +328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;; +328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;; +3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;; +3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;; +3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;; +3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;; +3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;; +3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;; +3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;; +3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;; +3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;; +3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;; +329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;; +329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;; +329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;; +329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;; +329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;; +329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;; +32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;; +32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;; +32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;; +32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;; +32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;; +32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; +32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;; +32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;; +32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;; +32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;; +32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;; +32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;; +32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;; +32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;; +32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;; +32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;; +32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;; +32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;; +32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;; +32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;; +32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;; +32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;; +32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;; +32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;; +32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;; +32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;; +32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;; +32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;; +32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;; +32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;; +32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;; +32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;; +32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;; +32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;; +32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;; +32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;; +32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;; +32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;; +32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;; +32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;; +32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;; +32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;; +32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;; +32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;; +32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;; +32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;; +32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;; +32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;; +32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;; +32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;; +32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;; +32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;; +32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;; +32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;; +32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;; +32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;; +32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;; +32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;; +32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;; +32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;; +32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;; +32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;; +32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;; +32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;; +32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;; +32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;; +32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;; +32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;; +32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;; +32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;; +32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;; +32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;; +32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;; +32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;; +32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;; +32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;; +32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;; +32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;; +32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;; +32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;; +32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;; +32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;; +32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;; +32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;; +32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;; +32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;; +32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;; +32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;; +32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;; +32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;; +32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;; +3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; +3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; +3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; +3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; +3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; +3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; +3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;; +3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; +3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; +3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; +330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; +330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; +330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; +330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; +330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; +330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; +3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;; +3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; +3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; +3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; +3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;; +3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; +3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; +3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; +3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; +3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; +331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; +331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; +331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; +331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; +331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; +331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; +3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; +3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; +3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; +3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; +3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; +3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;; +3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;; +3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;; +3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;; +3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; +332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; +332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; +332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; +332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; +332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; +332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; +3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;; +3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;; +3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; +3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; +3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; +3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; +3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; +3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;; +3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; +3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; +333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; +333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; +333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; +333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; +333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; +333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;; +3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; +3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; +3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; +3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; +3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; +3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; +3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; +3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; +3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; +3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;; +334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; +334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;; +334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; +334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; +334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; +334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; +3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; +3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; +3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;; +3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; +3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; +3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;; +3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; +3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; +3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;; +3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;; +335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;; +335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;; +335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;; +335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;; +335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;; +335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;; +3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;; +3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;; +3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;; +3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;; +3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;; +3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;; +3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;; +3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;; +3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;; +3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;; +336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;; +336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;; +336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;; +336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;; +336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;; +336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;; +3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;; +3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;; +3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;; +3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;; +3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;; +3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;; +3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;; +337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; +337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; +337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; +337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; +337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; +3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;; +3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;; +3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;; +3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;; +3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;; +3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;; +3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;; +3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;; +3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;; +3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; +338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;; +338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;; +338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;; +338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;; +338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;; +338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;; +3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;; +3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;; +3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;; +3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;; +3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;; +3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;; +3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;; +3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;; +3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;; +3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;; +339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;; +339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;; +339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;; +339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;; +339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;; +339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; +33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; +33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;; +33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; +33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; +33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; +33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;; +33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; +33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;; +33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; +33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;; +33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;; +33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;; +33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;; +33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;; +33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; +33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; +33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;; +33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;; +33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;; +33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;; +33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;; +33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;; +33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;; +33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;; +33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;; +33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;; +33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;; +33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;; +33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;; +33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;; +33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;; +33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;; +33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;; +33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;; +33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;; +33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;; +33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;; +33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;; +33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; +33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;; +33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;; +33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;; +33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;; +33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;; +33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;; +33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;; +33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;; +33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;; +33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;; +33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;; +33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;; +33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;; +33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;; +33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;; +33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;; +33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;; +33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;; +33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;; +33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;; +33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;; +33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;; +33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;; +33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;; +33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;; +33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;; +33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;; +33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;; +33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;; +33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;; +33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;; +33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;; +33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;; +33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;; +33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;; +33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;; +33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;; +33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;; +33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;; +33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;; +33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;; +33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;; +33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;; +33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;; +33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;; +33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;; +33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;; +33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;; +33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;; +33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;; +33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;; +33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;; +33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;; +33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;; +3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; +4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; +4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;; +9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;; +A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; +A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; +A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; +A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; +A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; +A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; +A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; +A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; +A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; +A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; +A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; +A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; +A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; +A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; +A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; +A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; +A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; +A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;; +A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; +A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; +A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; +A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; +A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; +A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; +A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; +A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; +A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; +A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; +A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; +A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; +A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; +A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; +A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; +A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; +A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; +A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; +A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; +A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; +A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; +A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; +A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; +A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; +A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; +A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; +A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; +A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; +A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; +A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; +A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; +A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; +A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; +A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; +A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; +A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; +A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; +A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; +A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; +A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; +A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; +A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; +A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; +A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; +A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; +A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; +A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; +A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; +A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; +A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; +A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; +A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; +A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; +A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; +A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; +A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; +A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; +A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; +A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; +A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; +A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; +A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; +A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; +A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; +A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; +A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; +A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; +A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; +A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; +A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; +A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; +A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; +A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; +A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; +A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; +A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; +A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; +A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; +A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; +A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; +A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; +A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; +A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; +A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; +A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; +A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; +A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; +A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; +A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; +A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; +A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; +A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; +A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; +A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; +A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; +A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; +A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; +A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; +A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; +A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; +A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; +A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; +A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; +A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; +A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; +A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; +A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; +A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; +A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; +A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; +A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; +A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; +A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; +A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; +A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; +A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; +A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; +A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; +A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; +A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; +A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; +A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; +A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; +A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; +A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; +A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; +A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; +A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; +A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; +A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; +A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; +A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; +A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; +A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; +A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; +A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; +A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; +A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; +A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; +A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; +A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; +A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; +A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; +A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; +A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; +A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; +A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; +A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; +A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; +A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; +A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; +A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; +A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; +A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; +A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; +A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; +A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; +A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; +A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; +A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; +A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; +A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; +A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; +A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; +A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; +A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; +A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; +A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; +A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; +A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; +A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; +A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; +A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; +A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; +A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; +A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; +A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; +A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; +A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; +A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; +A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; +A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; +A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; +A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; +A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; +A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; +A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; +A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; +A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; +A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; +A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; +A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; +A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; +A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; +A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; +A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; +A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; +A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; +A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; +A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; +A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; +A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; +A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; +A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; +A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; +A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; +A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; +A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; +A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; +A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; +A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; +A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; +A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; +A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; +A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; +A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; +A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; +A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; +A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; +A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; +A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; +A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; +A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; +A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; +A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; +A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; +A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; +A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; +A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; +A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; +A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; +A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; +A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; +A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; +A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; +A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; +A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; +A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; +A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; +A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; +A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; +A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; +A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; +A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; +A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; +A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; +A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; +A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; +A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; +A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; +A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; +A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; +A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; +A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; +A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; +A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; +A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; +A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; +A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; +A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; +A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; +A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; +A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; +A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; +A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; +A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; +A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; +A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; +A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; +A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; +A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; +A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; +A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; +A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; +A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; +A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; +A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; +A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; +A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; +A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; +A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; +A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; +A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; +A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; +A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; +A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; +A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; +A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; +A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; +A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; +A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; +A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; +A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; +A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; +A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; +A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; +A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; +A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; +A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; +A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; +A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; +A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; +A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; +A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; +A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; +A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; +A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; +A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; +A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; +A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; +A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; +A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; +A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; +A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; +A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; +A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; +A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; +A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; +A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; +A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; +A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; +A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; +A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; +A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; +A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; +A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; +A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; +A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; +A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; +A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; +A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; +A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; +A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; +A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; +A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; +A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; +A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; +A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; +A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; +A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; +A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; +A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; +A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; +A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; +A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; +A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; +A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; +A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; +A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; +A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; +A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; +A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; +A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; +A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; +A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; +A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; +A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; +A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; +A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; +A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; +A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; +A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; +A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; +A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; +A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; +A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; +A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; +A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; +A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; +A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; +A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; +A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; +A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; +A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; +A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; +A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; +A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; +A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; +A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; +A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; +A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; +A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; +A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; +A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; +A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; +A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; +A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; +A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; +A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; +A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; +A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; +A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; +A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; +A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; +A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; +A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; +A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; +A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; +A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; +A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; +A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; +A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; +A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; +A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; +A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; +A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; +A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; +A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; +A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; +A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; +A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; +A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; +A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; +A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; +A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; +A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; +A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; +A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; +A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; +A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; +A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; +A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; +A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; +A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; +A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; +A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; +A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; +A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; +A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; +A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; +A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; +A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; +A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; +A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; +A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; +A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; +A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; +A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; +A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; +A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; +A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; +A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; +A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; +A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; +A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; +A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; +A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; +A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; +A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; +A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; +A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; +A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; +A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; +A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; +A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; +A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; +A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; +A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; +A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; +A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; +A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; +A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; +A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; +A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; +A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; +A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; +A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; +A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; +A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; +A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; +A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; +A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; +A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; +A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; +A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; +A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; +A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; +A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; +A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; +A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; +A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; +A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; +A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; +A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; +A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; +A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; +A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; +A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; +A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; +A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; +A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; +A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; +A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; +A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; +A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; +A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; +A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; +A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; +A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; +A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; +A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; +A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; +A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; +A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; +A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; +A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; +A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; +A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; +A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; +A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; +A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; +A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; +A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; +A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; +A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; +A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; +A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; +A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; +A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; +A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; +A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; +A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; +A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; +A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; +A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; +A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; +A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; +A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; +A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; +A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; +A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; +A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; +A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; +A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; +A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; +A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; +A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; +A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; +A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; +A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; +A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; +A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; +A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; +A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; +A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; +A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; +A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; +A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; +A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; +A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; +A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; +A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; +A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; +A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; +A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; +A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; +A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; +A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; +A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; +A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; +A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; +A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; +A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; +A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; +A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; +A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; +A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; +A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; +A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; +A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; +A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; +A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; +A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; +A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; +A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; +A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; +A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; +A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; +A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; +A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; +A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; +A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; +A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; +A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; +A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; +A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; +A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; +A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; +A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; +A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; +A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; +A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; +A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; +A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; +A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; +A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; +A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; +A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; +A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; +A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; +A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; +A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; +A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; +A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; +A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; +A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; +A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; +A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; +A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; +A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; +A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; +A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; +A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; +A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; +A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; +A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; +A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; +A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; +A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; +A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; +A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; +A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; +A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; +A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; +A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; +A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; +A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; +A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; +A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; +A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; +A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; +A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; +A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; +A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; +A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; +A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; +A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; +A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; +A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; +A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; +A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; +A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; +A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; +A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; +A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; +A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; +A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; +A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; +A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; +A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; +A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; +A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; +A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; +A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; +A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; +A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; +A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; +A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; +A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; +A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; +A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; +A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; +A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; +A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; +A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; +A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; +A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; +A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; +A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; +A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; +A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; +A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; +A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; +A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; +A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; +A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; +A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; +A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; +A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; +A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; +A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; +A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; +A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; +A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; +A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; +A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; +A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; +A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; +A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; +A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; +A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; +A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; +A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; +A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; +A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; +A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; +A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; +A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; +A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; +A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; +A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; +A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; +A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; +A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; +A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; +A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; +A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; +A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; +A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; +A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; +A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; +A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; +A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; +A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; +A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; +A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; +A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; +A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; +A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; +A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; +A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; +A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; +A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; +A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; +A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; +A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; +A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; +A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; +A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; +A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; +A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; +A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; +A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; +A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; +A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; +A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; +A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; +A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; +A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; +A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; +A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; +A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; +A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; +A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; +A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; +A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; +A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; +A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; +A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; +A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; +A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; +A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; +A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; +A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; +A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; +A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; +A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; +A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; +A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; +A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; +A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; +A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; +A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; +A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; +A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; +A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; +A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; +A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; +A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; +A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; +A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; +A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; +A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; +A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; +A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; +A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; +A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; +A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; +A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; +A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; +A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; +A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; +A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; +A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; +A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; +A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; +A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; +A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; +A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; +A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; +A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; +A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; +A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; +A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; +A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; +A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; +A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; +A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; +A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; +A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; +A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; +A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; +A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; +A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; +A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; +A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; +A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; +A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; +A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; +A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; +A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; +A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; +A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; +A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; +A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; +A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; +A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; +A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; +A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; +A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; +A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; +A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; +A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; +A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; +A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; +A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; +A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; +A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; +A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; +A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; +A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; +A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; +A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; +A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; +A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; +A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; +A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; +A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; +A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; +A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; +A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; +A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; +A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; +A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; +A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; +A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; +A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; +A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; +A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; +A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; +A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; +A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; +A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; +A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; +A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; +A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; +A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; +A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; +A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; +A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; +A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; +A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; +A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; +A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; +A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; +A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; +A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; +A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; +A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; +A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; +A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; +A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; +A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; +A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; +A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; +A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; +A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; +A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; +A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; +A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; +A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; +A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; +A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; +A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; +A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; +A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; +A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; +A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; +A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; +A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; +A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; +A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; +A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; +A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; +A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; +A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; +A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; +A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; +A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; +A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; +A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; +A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; +A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; +A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; +A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; +A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; +A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; +A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; +A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; +A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; +A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; +A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; +A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; +A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; +A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; +A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; +A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; +A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; +A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; +A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; +A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; +A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; +A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; +A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; +A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; +A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; +A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; +A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; +A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; +A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; +A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; +A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; +A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; +A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; +A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; +A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; +A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; +A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; +A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; +A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; +A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; +A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; +A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; +A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; +A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; +A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; +A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; +A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; +A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; +A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; +A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; +A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; +A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; +A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; +A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; +A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; +A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; +A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; +A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; +A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; +A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; +A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; +A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; +A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; +A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; +A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; +A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; +A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; +A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; +A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; +A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; +A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; +A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; +A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; +A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; +A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; +A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; +A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; +A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; +A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; +A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; +A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; +A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; +A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; +A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; +A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; +A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; +A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; +A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; +A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; +A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; +A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; +A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; +A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; +A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; +A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; +A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; +A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; +A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; +A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; +A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; +A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; +A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; +A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; +A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; +A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; +A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; +A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; +A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; +A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; +A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; +A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; +A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; +A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; +A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; +A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; +A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; +A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; +A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; +A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; +A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; +A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; +A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; +A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; +A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; +A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; +A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; +A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; +A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; +A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; +A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; +A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; +A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; +A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; +A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; +A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; +A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; +A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; +A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; +A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; +A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; +A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; +A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; +A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; +A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; +A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; +A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; +A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; +A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; +A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; +A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; +A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; +A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; +A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; +A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; +A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; +A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; +A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; +A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; +A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; +A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; +A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; +A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; +A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; +A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; +A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; +A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; +A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; +A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; +A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; +A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; +A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; +AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; +D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; +D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; +DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; +DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; +DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; +DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;; +DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;; +E000;<Private Use, First>;Co;0;L;;;;;N;;;;; +F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;; +F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; +F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; +F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; +F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; +F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; +F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; +F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; +F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; +F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; +F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; +F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; +F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; +F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; +F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; +F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; +F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; +F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; +F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; +F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; +F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; +F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; +F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; +F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; +F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; +F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; +F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; +F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; +F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; +F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; +F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; +F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; +F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; +F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; +F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; +F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; +F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; +F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; +F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; +F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; +F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; +F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; +F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; +F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; +F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; +F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; +F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; +F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; +F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; +F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; +F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; +F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; +F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; +F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; +F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; +F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; +F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; +F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; +F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; +F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; +F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; +F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; +F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; +F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; +F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; +F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; +F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; +F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; +F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; +F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; +F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; +F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; +F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; +F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; +F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; +F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; +F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; +F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; +F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; +F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; +F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; +F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; +F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; +F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; +F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; +F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; +F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; +F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; +F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; +F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; +F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; +F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; +F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; +F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; +F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; +F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; +F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; +F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; +F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; +F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; +F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; +F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; +F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; +F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; +F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; +F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; +F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; +F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; +F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;; +F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; +F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; +F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; +F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; +F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; +F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; +F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; +F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;; +F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; +F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; +F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; +F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; +F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;; +F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; +F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; +F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; +F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; +F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; +F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; +F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; +F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; +F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; +F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; +F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; +F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; +F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; +F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; +F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; +F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; +F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; +F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; +F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; +F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; +F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; +F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; +F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; +F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; +F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; +F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; +F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; +F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; +F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; +F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; +F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; +F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; +F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; +F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; +F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; +F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; +F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; +F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; +F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; +F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; +F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; +F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; +F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; +F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; +F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; +F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; +F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; +F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; +F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; +F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; +F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; +F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; +F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; +F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; +F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; +F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; +F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; +F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;; +F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; +F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; +F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; +F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; +F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; +F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; +F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; +F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; +F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; +F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; +F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; +F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; +F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; +F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; +F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; +F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; +F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; +F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; +F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; +F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; +F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; +F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; +F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; +F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; +F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; +F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; +F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; +F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; +F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; +F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; +F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;; +F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; +F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;; +F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; +F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; +F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; +F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; +F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; +F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; +F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; +F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; +F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; +F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; +F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; +F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; +F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; +F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; +F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; +F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; +F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; +F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; +F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; +F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; +F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; +F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; +F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; +F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; +F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; +F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; +F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; +F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; +F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; +F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; +F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; +F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; +F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; +F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; +F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; +F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; +F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; +F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; +F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; +F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; +F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; +F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;; +F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; +F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; +FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; +FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; +FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; +FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; +FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; +FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; +FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; +FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; +FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; +FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; +FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; +FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; +FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; +FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; +FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; +FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; +FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; +FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; +FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; +FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; +FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; +FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; +FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; +FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; +FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; +FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; +FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; +FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; +FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; +FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; +FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; +FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; +FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; +FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; +FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; +FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; +FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; +FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; +FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; +FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; +FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; +FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; +FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; +FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; +FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; +FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; +FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; +FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; +FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; +FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; +FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; +FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; +FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; +FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; +FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; +FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; +FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; +FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; +FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; +FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; +FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; +FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; +FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; +FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; +FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; +FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; +FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; +FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; +FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; +FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; +FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; +FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; +FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; +FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; +FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; +FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; +FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; +FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; +FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; +FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; +FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; +FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; +FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; +FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; +FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; +FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; +FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; +FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; +FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; +FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; +FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; +FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; +FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; +FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; +FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; +FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; +FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; +FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; +FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; +FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; +FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; +FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; +FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; +FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; +FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; +FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;; +FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;; +FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;; +FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;; +FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;; +FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;; +FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;; +FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;; +FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;; +FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;; +FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;; +FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;; +FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; +FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; +FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; +FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;; +FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;; +FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;; +FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;; +FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;; +FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;; +FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;; +FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;; +FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;; +FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;; +FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; +FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; +FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; +FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; +FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; +FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; +FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; +FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; +FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; +FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; +FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; +FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; +FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; +FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; +FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; +FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; +FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; +FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; +FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; +FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; +FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; +FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; +FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; +FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; +FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; +FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; +FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; +FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; +FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; +FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; +FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; +FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; +FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;; +FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;; +FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;; +FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;; +FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;; +FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;; +FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;; +FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;; +FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;; +FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;; +FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;; +FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;; +FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;; +FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;; +FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;; +FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;; +FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;; +FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;; +FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;; +FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;; +FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;; +FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;; +FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;; +FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;; +FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;; +FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;; +FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;; +FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;; +FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;; +FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;; +FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;; +FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;; +FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;; +FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;; +FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;; +FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;; +FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;; +FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;; +FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;; +FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;; +FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;; +FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;; +FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;; +FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;; +FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;; +FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;; +FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;; +FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;; +FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;; +FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;; +FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;; +FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;; +FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;; +FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;; +FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;; +FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;; +FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;; +FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;; +FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;; +FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;; +FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;; +FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;; +FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;; +FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;; +FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;; +FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;; +FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;; +FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;; +FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;; +FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;; +FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;; +FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;; +FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;; +FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;; +FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;; +FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;; +FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;; +FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;; +FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;; +FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;; +FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;; +FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;; +FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;; +FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;; +FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;; +FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;; +FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;; +FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;; +FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;; +FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;; +FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;; +FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;; +FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;; +FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;; +FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;; +FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;; +FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;; +FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;; +FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;; +FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;; +FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;; +FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;; +FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;; +FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;; +FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;; +FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;; +FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;; +FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;; +FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;; +FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;; +FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;; +FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;; +FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;; +FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;; +FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;; +FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;; +FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;; +FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;; +FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;; +FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;; +FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;; +FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;; +FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;; +FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;; +FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;; +FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;; +FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;; +FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;; +FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;; +FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;; +FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;; +FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;; +FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;; +FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;; +FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;; +FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;; +FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;; +FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; +FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; +FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;; +FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;; +FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;; +FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;; +FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;; +FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;; +FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;; +FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;; +FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; +FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;; +FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;; +FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;; +FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;; +FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;; +FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;; +FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;; +FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;; +FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;; +FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;; +FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;; +FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;; +FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;; +FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;; +FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;; +FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;; +FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;; +FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;; +FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;; +FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;; +FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;; +FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;; +FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;; +FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;; +FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;; +FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;; +FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;; +FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;; +FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;; +FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;; +FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;; +FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;; +FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;; +FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;; +FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;; +FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;; +FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;; +FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;; +FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;; +FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;; +FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;; +FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;; +FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;; +FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;; +FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;; +FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;; +FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;; +FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;; +FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;; +FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;; +FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;; +FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;; +FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;; +FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;; +FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;; +FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;; +FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;; +FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;; +FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;; +FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;; +FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;; +FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;; +FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;; +FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;; +FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;; +FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;; +FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;; +FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;; +FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;; +FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;; +FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;; +FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;; +FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;; +FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;; +FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;; +FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;; +FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;; +FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;; +FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;; +FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;; +FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;; +FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;; +FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;; +FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;; +FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;; +FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;; +FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;; +FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;; +FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;; +FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;; +FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;; +FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;; +FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;; +FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;; +FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;; +FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;; +FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;; +FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;; +FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;; +FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;; +FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; +FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;; +FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;; +FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;; +FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;; +FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;; +FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;; +FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;; +FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;; +FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;; +FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;; +FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;; +FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;; +FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;; +FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;; +FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;; +FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;; +FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;; +FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;; +FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;; +FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;; +FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;; +FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;; +FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;; +FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;; +FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;; +FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;; +FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;; +FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;; +FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;; +FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;; +FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;; +FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;; +FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;; +FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;; +FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;; +FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;; +FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;; +FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;; +FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;; +FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;; +FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;; +FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;; +FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;; +FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;; +FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;; +FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;; +FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;; +FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;; +FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;; +FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;; +FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;; +FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;; +FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;; +FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;; +FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;; +FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;; +FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;; +FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;; +FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;; +FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;; +FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;; +FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;; +FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;; +FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;; +FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;; +FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;; +FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;; +FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;; +FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;; +FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;; +FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;; +FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;; +FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;; +FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;; +FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;; +FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;; +FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;; +FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;; +FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;; +FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;; +FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;; +FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;; +FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;; +FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;; +FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;; +FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;; +FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;; +FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;; +FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;; +FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;; +FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;; +FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;; +FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;; +FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;; +FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;; +FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;; +FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;; +FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;; +FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;; +FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;; +FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;; +FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;; +FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;; +FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;; +FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;; +FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;; +FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;; +FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;; +FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;; +FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;; +FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;; +FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;; +FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;; +FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;; +FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;; +FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;; +FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;; +FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;; +FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;; +FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;; +FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;; +FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;; +FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;; +FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;; +FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;; +FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;; +FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;; +FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;; +FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;; +FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;; +FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;; +FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;; +FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;; +FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;; +FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;; +FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;; +FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;; +FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;; +FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;; +FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;; +FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;; +FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;; +FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;; +FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;; +FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;; +FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;; +FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;; +FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;; +FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;; +FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;; +FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;; +FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;; +FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;; +FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;; +FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;; +FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;; +FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;; +FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;; +FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;; +FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;; +FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;; +FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;; +FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;; +FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;; +FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;; +FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;; +FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;; +FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;; +FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;; +FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;; +FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;; +FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;; +FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;; +FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;; +FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;; +FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;; +FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;; +FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;; +FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;; +FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;; +FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;; +FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;; +FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;; +FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;; +FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;; +FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;; +FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;; +FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;; +FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;; +FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;; +FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;; +FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;; +FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;; +FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;; +FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;; +FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;; +FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;; +FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;; +FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;; +FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;; +FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;; +FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;; +FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;; +FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;; +FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;; +FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;; +FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;; +FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;; +FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;; +FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;; +FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;; +FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;; +FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;; +FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; +FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;; +FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;; +FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;; +FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;; +FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;; +FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;; +FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;; +FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;; +FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;; +FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;; +FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;; +FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;; +FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;; +FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;; +FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;; +FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;; +FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;; +FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;; +FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;; +FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;; +FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;; +FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;; +FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;; +FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;; +FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;; +FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;; +FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;; +FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;; +FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;; +FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;; +FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;; +FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;; +FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;; +FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;; +FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;; +FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;; +FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;; +FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;; +FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;; +FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;; +FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;; +FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;; +FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;; +FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;; +FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;; +FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;; +FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;; +FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;; +FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;; +FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;; +FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;; +FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;; +FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;; +FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;; +FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;; +FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;; +FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;; +FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;; +FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;; +FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;; +FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;; +FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;; +FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;; +FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;; +FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;; +FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;; +FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;; +FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;; +FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;; +FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;; +FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;; +FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;; +FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;; +FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;; +FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;; +FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;; +FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;; +FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;; +FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;; +FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;; +FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;; +FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;; +FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;; +FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;; +FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;; +FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;; +FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;; +FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;; +FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;; +FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;; +FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;; +FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;; +FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;; +FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;; +FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;; +FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;; +FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;; +FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;; +FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;; +FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;; +FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;; +FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;; +FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;; +FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;; +FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;; +FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;; +FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;; +FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;; +FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;; +FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;; +FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;; +FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;; +FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;; +FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;; +FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;; +FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;; +FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;; +FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;; +FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;; +FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;; +FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;; +FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;; +FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;; +FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;; +FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;; +FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;; +FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;; +FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;; +FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; +FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; +FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;; +FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; +FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; +FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; +FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; +FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; +FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; +FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; +FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; +FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; +FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; +FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; +FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; +FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; +FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; +FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; +FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; +FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; +FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; +FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; +FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; +FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; +FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; +FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; +FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; +FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; +FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; +FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; +FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; +FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; +FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; +FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; +FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; +FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; +FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; +FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; +FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; +FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; +FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; +FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; +FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;; +FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; +FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;; +FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; +FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;; +FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; +FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;; +FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;; +FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;; +FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;; +FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;; +FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;; +FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;; +FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;; +FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;; +FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;; +FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;; +FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;; +FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;; +FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;; +FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;; +FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;; +FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;; +FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;; +FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;; +FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;; +FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;; +FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;; +FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;; +FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;; +FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;; +FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;; +FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;; +FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; +FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; +FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; +FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; +FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; +FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; +FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; +FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; +FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; +FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; +FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; +FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; +FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; +FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; +FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; +FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; +FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; +FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; +FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; +FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; +FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; +FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; +FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; +FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; +FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; +FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; +FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; +FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; +FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; +FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; +FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; +FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; +FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; +FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; +FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; +FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; +FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; +FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; +FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; +FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; +FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; +FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; +FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; +FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; +FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; +FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; +FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; +FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; +FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; +FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; +FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; +FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; +FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; +FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; +FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; +FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; +FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; +FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; +FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; +FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; +FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; +FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; +FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; +FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; +FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; +FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; +FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; +FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; +FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; +FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; +FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; +FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; +FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; +FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; +FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; +FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; +FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; +FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; +FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; +FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; +FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; +FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; +FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; +FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; +FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; +FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; +FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; +FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; +FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; +FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; +FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; +FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; +FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; +FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; +FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; +FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; +FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; +FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; +FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; +FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; +FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; +FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; +FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; +FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; +FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; +FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; +FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; +FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; +FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; +FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; +FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; +FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; +FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; +FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; +FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; +FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; +FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; +FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; +FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; +FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; +FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; +FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; +FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; +FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; +FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; +FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; +FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; +FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; +FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; +FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; +FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; +FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; +FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; +FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; +FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; +FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;; +FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;; +FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;; +FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; +FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; +FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; +FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; +FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; +FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; +FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; +FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;; +FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; +FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;; +FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; +FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;; +FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;; +FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;; +FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;; +FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;; +FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;; +FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;; +FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;; +FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;; +FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;; +FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;; +FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;; +FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;; +FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;; +FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;; +FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;; +FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;; +FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;; +FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41; +FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42; +FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43; +FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44; +FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45; +FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46; +FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47; +FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48; +FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49; +FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A; +FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B; +FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C; +FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D; +FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E; +FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F; +FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50; +FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51; +FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52; +FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53; +FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54; +FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55; +FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56; +FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57; +FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58; +FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59; +FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A; +FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; +FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;; +FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; +FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; +FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; +FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; +FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21 +FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22 +FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23 +FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24 +FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25 +FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26 +FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27 +FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28 +FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29 +FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A +FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B +FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C +FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D +FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E +FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F +FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30 +FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31 +FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32 +FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33 +FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34 +FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35 +FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36 +FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37 +FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38 +FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39 +FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A +FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; +FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; +FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; +FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;; +FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;; +FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;; +FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; +FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; +FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; +FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;; +FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;; +FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;; +FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;; +FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;; +FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;; +FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;; +FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;; +FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;; +FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;; +FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;; +FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;; +FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;; +FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;; +FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;; +FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;; +FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;; +FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;; +FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;; +FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;; +FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;; +FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;; +FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;; +FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;; +FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;; +FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;; +FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;; +FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;; +FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;; +FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;; +FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;; +FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;; +FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;; +FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;; +FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;; +FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;; +FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;; +FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;; +FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;; +FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;; +FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;; +FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;; +FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;; +FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;; +FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;; +FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;; +FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;; +FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;; +FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;; +FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;; +FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;; +FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;; +FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;; +FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;; +FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;; +FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;; +FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;; +FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;; +FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; +FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; +FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; +FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; +FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; +FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; +FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;; +FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; +FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; +FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; +FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; +FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; +FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; +FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; +FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; +FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; +FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; +FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; +FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; +FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;; +FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; +FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; +FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; +FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;; +FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; +FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;; +FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; +FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; +FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; +FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; +FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; +FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; +FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;; +FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;; +FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;; +FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;; +FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;; +FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;; +FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;; +FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;; +FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;; +FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;; +FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;; +FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;; +FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;; +FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;; +FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;; +FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;; +FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;; +FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;; +FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;; +FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;; +FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;; +FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;; +FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;; +FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;; +FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;; +FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; +FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; +FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;; +FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;; +FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;; +FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;; +FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;; +FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;; +FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;; +FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;; +FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;; +FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;; +FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; +10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; +10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; +10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; +10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; +10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; +10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; +10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; +10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; +10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; +1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; +1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; +1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; +1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; +1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; +1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; +10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; +10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; +10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; +10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; +10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; +10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; +10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; +10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; +10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; +10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; +1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; +1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; +1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; +1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; +1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; +10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; +10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; +10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; +10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; +10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; +10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; +10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; +10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; +10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; +10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; +10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; +10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; +10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; +10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; +1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; +1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; +1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; +1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; +1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; +1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; +10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; +10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;; +10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; +10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; +10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; +10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; +10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; +10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; +10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; +10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; +1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;; +10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; +10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; +10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; +10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; +10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; +10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; +10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; +10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; +10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; +10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; +1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; +1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; +1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; +1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; +1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; +1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; +10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; +10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; +10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; +10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; +10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; +10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; +10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; +10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; +10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; +10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; +1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; +1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; +1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; +1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; +1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; +1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; +10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; +10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; +10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; +10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; +10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; +10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; +10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 +10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 +1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 +1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 +1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 +1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 +1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 +1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 +10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 +10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 +10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A +10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B +10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C +10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D +10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E +10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F +10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 +10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 +1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 +1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 +1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 +1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 +1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 +1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 +10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 +10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 +10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A +10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B +10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C +10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D +10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E +10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F +10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 +10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 +1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 +1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 +1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 +1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 +1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; +1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; +1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; +1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; +1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; +1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; +1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; +1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; +1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; +1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; +1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; +1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; +1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; +1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; +1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; +1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; +1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; +1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; +1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; +1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; +1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; +1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; +1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; +1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; +1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; +1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; +1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; +1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; +1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; +1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; +1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; +1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; +1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; +1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; +1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; +1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; +1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; +1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; +1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; +1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; +1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; +1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; +1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; +1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; +1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; +1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; +1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; +1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; +1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; +1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; +1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; +1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; +1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; +1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; +1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; +1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; +1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; +1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; +1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; +1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; +1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; +1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; +1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; +1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; +1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; +1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; +1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; +1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; +1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; +1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; +1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; +1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; +1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; +1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; +1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; +1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; +1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; +1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; +1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; +1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; +1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; +1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; +1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; +1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; +1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; +1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; +1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; +1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; +1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; +1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; +1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; +1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; +1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; +1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; +1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; +1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; +1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; +1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; +1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; +1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; +1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; +1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; +1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; +1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; +1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; +1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; +1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; +1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; +1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; +1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; +1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; +1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; +1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; +1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; +1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; +1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; +1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; +1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; +1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; +1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; +1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; +1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; +1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; +1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; +1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; +1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; +1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; +1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; +1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; +1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; +1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; +1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; +1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; +1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; +1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; +1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; +1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; +1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; +1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; +1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; +1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; +1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; +1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; +1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; +1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; +1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; +1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; +1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; +1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; +1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; +1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; +1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; +1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; +1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; +1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; +1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; +1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; +1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; +1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; +1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; +1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; +1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; +1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; +1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; +1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; +1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; +1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; +1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; +1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; +1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; +1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; +1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; +1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; +1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; +1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; +1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; +1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; +1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; +1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; +1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; +1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; +1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; +1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; +1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; +1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; +1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; +1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; +1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; +1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; +1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; +1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; +1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; +1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; +1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; +1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; +1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; +1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; +1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; +1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; +1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; +1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; +1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; +1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; +1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; +1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; +1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; +1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; +1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; +1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; +1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; +1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; +1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; +1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; +1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; +1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; +1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; +1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; +1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; +1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; +1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; +1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; +1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; +1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; +1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; +1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; +1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; +1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; +1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; +1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; +1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; +1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; +1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; +1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; +1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; +1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; +1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; +1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; +1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; +1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; +1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; +1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; +1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; +1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; +1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; +1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; +1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; +1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; +1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; +1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; +1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; +1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; +1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; +1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; +1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; +1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; +1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; +1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; +1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; +1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; +1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; +1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; +1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; +1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; +1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; +1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; +1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; +1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; +1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; +1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; +1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; +1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; +1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; +1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; +1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; +1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; +1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; +1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; +1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; +1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; +1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; +1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; +1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; +1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; +1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; +1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; +1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; +1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; +1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; +1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; +1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; +1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; +1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; +1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; +1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; +1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; +1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; +1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; +1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; +1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; +1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; +1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; +1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; +1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; +1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; +1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; +1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; +1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; +1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; +1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; +1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; +1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; +1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; +1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; +1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; +1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; +1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; +1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; +1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; +1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; +1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; +1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; +1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; +1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; +1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; +1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; +1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; +1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; +1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; +1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; +1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; +1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; +1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; +1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; +1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; +1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; +1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; +1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; +1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; +1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; +1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; +1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; +1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; +1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; +1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; +1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; +1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; +1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; +1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; +1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; +1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; +1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; +1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; +1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; +1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; +1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; +1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; +1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; +1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; +1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; +1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; +1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; +1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; +1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; +1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; +1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; +1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; +1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; +1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; +1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; +1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; +1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; +1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; +1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; +1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; +1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; +1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; +1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; +1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; +1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; +1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; +1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; +1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; +1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; +1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; +1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; +1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; +1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; +1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; +1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; +1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; +1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; +1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; +1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; +1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; +1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; +1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; +1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; +1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; +1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;; +2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;; +2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; +2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; +2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; +2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; +2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; +2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; +2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; +2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; +2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; +2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; +2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; +2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; +2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; +2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; +2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; +2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; +2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; +2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; +2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; +2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; +2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; +2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; +2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; +2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; +2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; +2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; +2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; +2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; +2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; +2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; +2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; +2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; +2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; +2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; +2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; +2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; +2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; +2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; +2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; +2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; +2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; +2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; +2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; +2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; +2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; +2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; +2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; +2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; +2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; +2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; +2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; +2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; +2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; +2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; +2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; +2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; +2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; +2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; +2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; +2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; +2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; +2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; +2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; +2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; +2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; +2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; +2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; +2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; +2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; +2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; +2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; +2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; +2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; +2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; +2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; +2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; +2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; +2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; +2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; +2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; +2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; +2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; +2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; +2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; +2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; +2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; +2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; +2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; +2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; +2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; +2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; +2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; +2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; +2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; +2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; +2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; +2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; +2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; +2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; +2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; +2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; +2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; +2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; +2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; +2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;2136A;;;;N;;;;; +2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; +2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; +2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; +2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; +2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; +2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; +2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; +2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; +2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; +2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; +2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; +2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F33;;;;N;;;;; +2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; +2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; +2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; +2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; +2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; +2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; +2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; +2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; +2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; +2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; +2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; +2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; +2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; +2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; +2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; +2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; +2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; +2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; +2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; +2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; +2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; +2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; +2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; +2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; +2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; +2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; +2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; +2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;; +2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; +2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; +2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; +2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; +2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; +2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; +2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; +2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; +2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; +2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; +2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; +2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; +2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; +2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; +2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; +2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; +2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; +2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; +2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; +2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; +2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; +2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; +2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; +2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; +2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; +2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; +2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; +2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; +2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; +2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; +2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; +2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; +2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; +2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; +2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; +2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; +2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; +2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; +2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; +2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; +2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; +2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; +2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; +2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; +2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; +2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; +2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; +2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; +2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; +2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; +2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; +2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; +2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; +2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; +2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; +2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; +2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; +2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; +2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; +2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; +2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; +2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; +2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; +2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; +2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; +2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; +2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; +2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; +2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; +2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; +2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; +2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; +2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; +2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; +2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; +2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; +2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; +2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; +2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; +2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; +2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; +2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; +2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; +2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; +2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; +2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; +2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; +2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; +2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; +2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; +2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; +2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; +2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; +2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; +2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; +2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; +2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; +2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; +2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; +2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; +2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; +2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; +2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; +2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; +2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; +2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; +2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; +2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; +2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; +2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; +2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; +2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; +2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; +2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; +2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; +2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; +2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; +2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; +2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; +2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; +2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; +2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; +2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; +2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; +2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; +2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; +2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; +2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; +2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; +2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; +2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; +2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; +2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; +2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; +2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; +2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; +2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; +2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; +2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; +2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; +2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; +2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; +2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;43AB;;;;N;;;;; +2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; +2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; +2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; +2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; +2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; +2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; +2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; +2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; +2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; +2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; +2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; +2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; +2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; +2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; +2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; +2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; +2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; +2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; +2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; +2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; +2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; +2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; +2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; +2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; +2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; +2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; +2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; +2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; +2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; +2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; +2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; +2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; +2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; +2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; +2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; +2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; +2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; +2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; +2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; +2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; +2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; +2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; +2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; +2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; +2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; +2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; +2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; +2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; +2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; +2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; +2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; +2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; +2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; +2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; +2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; +2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; +2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; +2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; +2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; +2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; +2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; +2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; +2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; +2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AAE;;;;N;;;;; +2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; +2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; +2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; +2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; +2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; +2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; +2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; +2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; +2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; +2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; +2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; +2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; +2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; +2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; +2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; +2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; +2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; +2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; +2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; +2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; +2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; +2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; +2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; +2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; +2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; +2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; +2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; +2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; +2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; +2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; +2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; +2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; +2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; +2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; +2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; +2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; +2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; +2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; +2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; +2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; +2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; +2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; +2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; +2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; +2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; +2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; +2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; +2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; +2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; +2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; +2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; +2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; +2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; +2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; +2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; +2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; +2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; +2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; +2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; +2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; +2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; +2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; +2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; +2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; +2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; +2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; +2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; +2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; +2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; +2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; +2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; +2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; +2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; +2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; +2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; +2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; +2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; +2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; +2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; +2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; +2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; +2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; +2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; +2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; +2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; +2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; +2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; +2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; +2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; +2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; +2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; +2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; +2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; +2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; +2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; +2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;4D57;;;;N;;;;; +2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; +2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; +2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; +2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; +2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; +2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; +2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; +2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; +2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; +2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; +2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; +2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; +2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; +2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; +2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; +2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; +2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; +2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; +2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; +2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; +2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; +2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; +2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; +2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; +2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; +2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; +2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; +2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; +2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; +2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; +2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; +2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; +2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; +2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; +2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; +2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; +2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; +2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; +2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; +2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; +2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; +2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; +2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; +2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; +2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; +2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; +2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; +2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; +2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; +2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; +2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; +2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; +2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; +2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; +2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; +2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; +2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; +2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; +2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; +2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; +2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; +2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; +2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; +2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; +2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; +2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; +2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; +2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; +2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; +2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; +2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; +2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; +2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; +2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; +2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; +2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; +2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; +2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; +2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; +2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; +2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; +2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; +2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; +2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; +2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; +2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; +2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; +2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; +2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; +2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; +2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; +2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; +2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; +2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; +E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; +E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; +E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; +E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; +E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; +E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; +E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; +E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; +E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; +E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; +E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; +E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; +E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; +E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; +E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; +E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; +E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; +E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; +E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; +E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; +E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; +E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; +E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; +E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; +E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; +E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; +E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; +E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; +E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; +E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; +E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; +E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; +E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; +E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; +E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; +E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; +E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; +E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; +E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; +E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; +E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; +E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; +E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; +E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; +E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; +E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; +E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; +E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; +E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; +E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; +E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; +E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; +E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; +E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; +E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; +E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; +E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; +E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; +E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; +E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; +E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; +E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; +E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; +E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; +E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; +E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; +E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; +E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; +E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; +E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; +E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; +E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; +E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; +E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; +E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; +E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; +E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; +E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; +E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; +E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; +E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; +E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; +E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; +E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; +E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; +E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; +E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; +F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;; +FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;; +100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;; +10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;; diff --git a/doc/specifications/rfc3454.txt b/doc/specifications/rfc3454.txt new file mode 100644 index 0000000..bdf8edb --- /dev/null +++ b/doc/specifications/rfc3454.txt @@ -0,0 +1,3246 @@ +Below there are data tables extracted from RFC 3454. The license for +RFC 3454 is: + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Unfortunately, that license is non-free according to +licensing@fsf.org: + + From: "Dave Turner via RT" <licensing@fsf.org> + Date: Thu, 08 Dec 2005 16:33:57 -0500 + Subject: [gnu.org #211910] Are RFC specifications freely licensed? + + > Hi Dave! I know this is an old issue (last post in this thread was + > about a year ago), but have you heard back from the licensing + > committee on the RFC 2026 and RFC 3978 licenses? + + Sorry for the delay. The old terms are officially non-free. + +However, to be copyrightable there needs to be some originality, which +isn't present here, see: + + From: "novalis@fsf.org via RT" <licensing@fsf.org> + Subject: Re: [gnu.org #211910] Are RFC specifications freely licensed? + Date: Thu, 06 Jan 2005 18:32:02 -0500 + + >> >> > If not, it's entirely possible that they're not copyrightable, or that + >> >> > they have very thin protection. I would need to see them specifically + >> >> > to be able to determine this. + >> >> + >> >> The table fall under the old license. The ASN.1 schema fall under the + >> >> new license. I'm attaching the tables, and the ASN.1 schema below. + >> >> If it matters: Some tables are derived from Unicode tables, and some + >> >> were probably created by hand. + >> > + >> > It looks to me like these tables do not have enough originality to be + >> > copyrightable. The text surrounding them ("The following is the mapping + >> > table from section 3....") is probably minimally original and should be + >> > removed. + >> + >> Are you sure about this? I'm looking for something strong than "It + >> looks". The tables were not trivial to create, it took the IETF some + >> time (years) to arrive with the final tables. Perhaps the tables + >> could be argued to contain some artistic value. But I'm not an expert + >> on this, so these are just my thoughts. + > + > I'm not a lawyer. This isn't legal advice. If you need legal advice, + > talk to a lawyer. I can get a second opinion on this from our lawyers, + > if you think it's important, but it still won't be legal advice. + > + > From a copyright perspective, the time and effort ("sweat of the brow") + > that a given thing takes don't matter (Fiest v. Rural Telephone + > Service). What matters is the originality. + > + > I don't see a lot here that's original. The names are probably + > original, but names are generally unprotected. And if the names are + > needed for compatibility, the scenes a faire doctrine comes into play. + + Right, the names are not required, only the actual numbers are. + + Thanks, this information seem to solve my problem for the source code + in libidn. + +So we can use this material. There may be other legal analysis that +also reach the same conclusion. + + ----- Start Table A.1 ----- + 0221 + 0234-024F + 02AE-02AF + 02EF-02FF + 0350-035F + 0370-0373 + 0376-0379 + 037B-037D + 037F-0383 + 038B + 038D + 03A2 + 03CF + 03F7-03FF + 0487 + 04CF + 04F6-04F7 + 04FA-04FF + 0510-0530 + 0557-0558 + 0560 + 0588 + 058B-0590 + 05A2 + 05BA + 05C5-05CF + 05EB-05EF + 05F5-060B + 060D-061A + 061C-061E + 0620 + 063B-063F + 0656-065F + 06EE-06EF + 06FF + 070E + 072D-072F + 074B-077F + 07B2-0900 + 0904 + 093A-093B + 094E-094F + 0955-0957 + 0971-0980 + 0984 + 098D-098E + 0991-0992 + 09A9 + 09B1 + 09B3-09B5 + 09BA-09BB + 09BD + 09C5-09C6 + 09C9-09CA + 09CE-09D6 + 09D8-09DB + 09DE + 09E4-09E5 + 09FB-0A01 + 0A03-0A04 + 0A0B-0A0E + 0A11-0A12 + 0A29 + 0A31 + 0A34 + 0A37 + 0A3A-0A3B + 0A3D + 0A43-0A46 + 0A49-0A4A + 0A4E-0A58 + 0A5D + 0A5F-0A65 + 0A75-0A80 + 0A84 + 0A8C + 0A8E + 0A92 + 0AA9 + 0AB1 + 0AB4 + 0ABA-0ABB + 0AC6 + 0ACA + 0ACE-0ACF + 0AD1-0ADF + 0AE1-0AE5 + 0AF0-0B00 + 0B04 + 0B0D-0B0E + 0B11-0B12 + 0B29 + 0B31 + 0B34-0B35 + 0B3A-0B3B + 0B44-0B46 + 0B49-0B4A + 0B4E-0B55 + 0B58-0B5B + 0B5E + 0B62-0B65 + 0B71-0B81 + 0B84 + 0B8B-0B8D + 0B91 + 0B96-0B98 + 0B9B + 0B9D + 0BA0-0BA2 + 0BA5-0BA7 + 0BAB-0BAD + 0BB6 + 0BBA-0BBD + 0BC3-0BC5 + 0BC9 + 0BCE-0BD6 + 0BD8-0BE6 + 0BF3-0C00 + 0C04 + 0C0D + 0C11 + 0C29 + 0C34 + 0C3A-0C3D + 0C45 + 0C49 + 0C4E-0C54 + 0C57-0C5F + 0C62-0C65 + 0C70-0C81 + 0C84 + 0C8D + 0C91 + 0CA9 + 0CB4 + 0CBA-0CBD + 0CC5 + 0CC9 + 0CCE-0CD4 + 0CD7-0CDD + 0CDF + 0CE2-0CE5 + 0CF0-0D01 + 0D04 + 0D0D + 0D11 + 0D29 + 0D3A-0D3D + 0D44-0D45 + 0D49 + 0D4E-0D56 + 0D58-0D5F + 0D62-0D65 + 0D70-0D81 + 0D84 + 0D97-0D99 + 0DB2 + 0DBC + 0DBE-0DBF + 0DC7-0DC9 + 0DCB-0DCE + 0DD5 + 0DD7 + 0DE0-0DF1 + 0DF5-0E00 + 0E3B-0E3E + 0E5C-0E80 + 0E83 + 0E85-0E86 + 0E89 + 0E8B-0E8C + 0E8E-0E93 + 0E98 + 0EA0 + 0EA4 + 0EA6 + 0EA8-0EA9 + 0EAC + 0EBA + 0EBE-0EBF + 0EC5 + 0EC7 + 0ECE-0ECF + 0EDA-0EDB + 0EDE-0EFF + 0F48 + 0F6B-0F70 + 0F8C-0F8F + 0F98 + 0FBD + 0FCD-0FCE + 0FD0-0FFF + 1022 + 1028 + 102B + 1033-1035 + 103A-103F + 105A-109F + 10C6-10CF + 10F9-10FA + 10FC-10FF + 115A-115E + 11A3-11A7 + 11FA-11FF + 1207 + 1247 + 1249 + 124E-124F + 1257 + 1259 + 125E-125F + 1287 + 1289 + 128E-128F + 12AF + 12B1 + 12B6-12B7 + 12BF + 12C1 + 12C6-12C7 + 12CF + 12D7 + 12EF + 130F + 1311 + 1316-1317 + 131F + 1347 + 135B-1360 + 137D-139F + 13F5-1400 + 1677-167F + 169D-169F + 16F1-16FF + 170D + 1715-171F + 1737-173F + 1754-175F + 176D + 1771 + 1774-177F + 17DD-17DF + 17EA-17FF + 180F + 181A-181F + 1878-187F + 18AA-1DFF + 1E9C-1E9F + 1EFA-1EFF + 1F16-1F17 + 1F1E-1F1F + 1F46-1F47 + 1F4E-1F4F + 1F58 + 1F5A + 1F5C + 1F5E + 1F7E-1F7F + 1FB5 + 1FC5 + 1FD4-1FD5 + 1FDC + 1FF0-1FF1 + 1FF5 + 1FFF + 2053-2056 + 2058-205E + 2064-2069 + 2072-2073 + 208F-209F + 20B2-20CF + 20EB-20FF + 213B-213C + 214C-2152 + 2184-218F + 23CF-23FF + 2427-243F + 244B-245F + 24FF + 2614-2615 + 2618 + 267E-267F + 268A-2700 + 2705 + 270A-270B + 2728 + 274C + 274E + 2753-2755 + 2757 + 275F-2760 + 2795-2797 + 27B0 + 27BF-27CF + 27EC-27EF + 2B00-2E7F + 2E9A + 2EF4-2EFF + 2FD6-2FEF + 2FFC-2FFF + 3040 + 3097-3098 + 3100-3104 + 312D-3130 + 318F + 31B8-31EF + 321D-321F + 3244-3250 + 327C-327E + 32CC-32CF + 32FF + 3377-337A + 33DE-33DF + 33FF + 4DB6-4DFF + 9FA6-9FFF + A48D-A48F + A4C7-ABFF + D7A4-D7FF + FA2E-FA2F + FA6B-FAFF + FB07-FB12 + FB18-FB1C + FB37 + FB3D + FB3F + FB42 + FB45 + FBB2-FBD2 + FD40-FD4F + FD90-FD91 + FDC8-FDCF + FDFD-FDFF + FE10-FE1F + FE24-FE2F + FE47-FE48 + FE53 + FE67 + FE6C-FE6F + FE75 + FEFD-FEFE + FF00 + FFBF-FFC1 + FFC8-FFC9 + FFD0-FFD1 + FFD8-FFD9 + FFDD-FFDF + FFE7 + FFEF-FFF8 + 10000-102FF + 1031F + 10324-1032F + 1034B-103FF + 10426-10427 + 1044E-1CFFF + 1D0F6-1D0FF + 1D127-1D129 + 1D1DE-1D3FF + 1D455 + 1D49D + 1D4A0-1D4A1 + 1D4A3-1D4A4 + 1D4A7-1D4A8 + 1D4AD + 1D4BA + 1D4BC + 1D4C1 + 1D4C4 + 1D506 + 1D50B-1D50C + 1D515 + 1D51D + 1D53A + 1D53F + 1D545 + 1D547-1D549 + 1D551 + 1D6A4-1D6A7 + 1D7CA-1D7CD + 1D800-1FFFD + 2A6D7-2F7FF + 2FA1E-2FFFD + 30000-3FFFD + 40000-4FFFD + 50000-5FFFD + 60000-6FFFD + 70000-7FFFD + 80000-8FFFD + 90000-9FFFD + A0000-AFFFD + B0000-BFFFD + C0000-CFFFD + D0000-DFFFD + E0000 + E0002-E001F + E0080-EFFFD + ----- End Table A.1 ----- + + ----- Start Table B.1 ----- + 00AD; ; Map to nothing + 034F; ; Map to nothing + 1806; ; Map to nothing + 180B; ; Map to nothing + 180C; ; Map to nothing + 180D; ; Map to nothing + 200B; ; Map to nothing + 200C; ; Map to nothing + 200D; ; Map to nothing + 2060; ; Map to nothing + FE00; ; Map to nothing + FE01; ; Map to nothing + FE02; ; Map to nothing + FE03; ; Map to nothing + FE04; ; Map to nothing + FE05; ; Map to nothing + FE06; ; Map to nothing + FE07; ; Map to nothing + FE08; ; Map to nothing + FE09; ; Map to nothing + FE0A; ; Map to nothing + FE0B; ; Map to nothing + FE0C; ; Map to nothing + FE0D; ; Map to nothing + FE0E; ; Map to nothing + FE0F; ; Map to nothing + FEFF; ; Map to nothing + ----- End Table B.1 ----- + + ----- Start Table B.2 ----- + 0041; 0061; Case map + 0042; 0062; Case map + 0043; 0063; Case map + 0044; 0064; Case map + 0045; 0065; Case map + 0046; 0066; Case map + 0047; 0067; Case map + 0048; 0068; Case map + 0049; 0069; Case map + 004A; 006A; Case map + 004B; 006B; Case map + 004C; 006C; Case map + 004D; 006D; Case map + 004E; 006E; Case map + 004F; 006F; Case map + 0050; 0070; Case map + 0051; 0071; Case map + 0052; 0072; Case map + 0053; 0073; Case map + 0054; 0074; Case map + 0055; 0075; Case map + 0056; 0076; Case map + 0057; 0077; Case map + 0058; 0078; Case map + 0059; 0079; Case map + 005A; 007A; Case map + 00B5; 03BC; Case map + 00C0; 00E0; Case map + 00C1; 00E1; Case map + 00C2; 00E2; Case map + 00C3; 00E3; Case map + 00C4; 00E4; Case map + 00C5; 00E5; Case map + 00C6; 00E6; Case map + 00C7; 00E7; Case map + 00C8; 00E8; Case map + 00C9; 00E9; Case map + 00CA; 00EA; Case map + 00CB; 00EB; Case map + 00CC; 00EC; Case map + 00CD; 00ED; Case map + 00CE; 00EE; Case map + 00CF; 00EF; Case map + 00D0; 00F0; Case map + 00D1; 00F1; Case map + 00D2; 00F2; Case map + 00D3; 00F3; Case map + 00D4; 00F4; Case map + 00D5; 00F5; Case map + 00D6; 00F6; Case map + 00D8; 00F8; Case map + 00D9; 00F9; Case map + 00DA; 00FA; Case map + 00DB; 00FB; Case map + 00DC; 00FC; Case map + 00DD; 00FD; Case map + 00DE; 00FE; Case map + 00DF; 0073 0073; Case map + 0100; 0101; Case map + 0102; 0103; Case map + 0104; 0105; Case map + 0106; 0107; Case map + 0108; 0109; Case map + 010A; 010B; Case map + 010C; 010D; Case map + 010E; 010F; Case map + 0110; 0111; Case map + 0112; 0113; Case map + 0114; 0115; Case map + 0116; 0117; Case map + 0118; 0119; Case map + 011A; 011B; Case map + 011C; 011D; Case map + 011E; 011F; Case map + 0120; 0121; Case map + 0122; 0123; Case map + 0124; 0125; Case map + 0126; 0127; Case map + 0128; 0129; Case map + 012A; 012B; Case map + 012C; 012D; Case map + 012E; 012F; Case map + 0130; 0069 0307; Case map + 0132; 0133; Case map + 0134; 0135; Case map + 0136; 0137; Case map + 0139; 013A; Case map + 013B; 013C; Case map + 013D; 013E; Case map + 013F; 0140; Case map + 0141; 0142; Case map + 0143; 0144; Case map + 0145; 0146; Case map + 0147; 0148; Case map + 0149; 02BC 006E; Case map + 014A; 014B; Case map + 014C; 014D; Case map + 014E; 014F; Case map + 0150; 0151; Case map + 0152; 0153; Case map + 0154; 0155; Case map + 0156; 0157; Case map + 0158; 0159; Case map + 015A; 015B; Case map + 015C; 015D; Case map + 015E; 015F; Case map + 0160; 0161; Case map + 0162; 0163; Case map + 0164; 0165; Case map + 0166; 0167; Case map + 0168; 0169; Case map + 016A; 016B; Case map + 016C; 016D; Case map + 016E; 016F; Case map + 0170; 0171; Case map + 0172; 0173; Case map + 0174; 0175; Case map + 0176; 0177; Case map + 0178; 00FF; Case map + 0179; 017A; Case map + 017B; 017C; Case map + 017D; 017E; Case map + 017F; 0073; Case map + 0181; 0253; Case map + 0182; 0183; Case map + 0184; 0185; Case map + 0186; 0254; Case map + 0187; 0188; Case map + 0189; 0256; Case map + 018A; 0257; Case map + 018B; 018C; Case map + 018E; 01DD; Case map + 018F; 0259; Case map + 0190; 025B; Case map + 0191; 0192; Case map + 0193; 0260; Case map + 0194; 0263; Case map + 0196; 0269; Case map + 0197; 0268; Case map + 0198; 0199; Case map + 019C; 026F; Case map + 019D; 0272; Case map + 019F; 0275; Case map + 01A0; 01A1; Case map + 01A2; 01A3; Case map + 01A4; 01A5; Case map + 01A6; 0280; Case map + 01A7; 01A8; Case map + 01A9; 0283; Case map + 01AC; 01AD; Case map + 01AE; 0288; Case map + 01AF; 01B0; Case map + 01B1; 028A; Case map + 01B2; 028B; Case map + 01B3; 01B4; Case map + 01B5; 01B6; Case map + 01B7; 0292; Case map + 01B8; 01B9; Case map + 01BC; 01BD; Case map + 01C4; 01C6; Case map + 01C5; 01C6; Case map + 01C7; 01C9; Case map + 01C8; 01C9; Case map + 01CA; 01CC; Case map + 01CB; 01CC; Case map + 01CD; 01CE; Case map + 01CF; 01D0; Case map + 01D1; 01D2; Case map + 01D3; 01D4; Case map + 01D5; 01D6; Case map + 01D7; 01D8; Case map + 01D9; 01DA; Case map + 01DB; 01DC; Case map + 01DE; 01DF; Case map + 01E0; 01E1; Case map + 01E2; 01E3; Case map + 01E4; 01E5; Case map + 01E6; 01E7; Case map + 01E8; 01E9; Case map + 01EA; 01EB; Case map + 01EC; 01ED; Case map + 01EE; 01EF; Case map + 01F0; 006A 030C; Case map + 01F1; 01F3; Case map + 01F2; 01F3; Case map + 01F4; 01F5; Case map + 01F6; 0195; Case map + 01F7; 01BF; Case map + 01F8; 01F9; Case map + 01FA; 01FB; Case map + 01FC; 01FD; Case map + 01FE; 01FF; Case map + 0200; 0201; Case map + 0202; 0203; Case map + 0204; 0205; Case map + 0206; 0207; Case map + 0208; 0209; Case map + 020A; 020B; Case map + 020C; 020D; Case map + 020E; 020F; Case map + 0210; 0211; Case map + 0212; 0213; Case map + 0214; 0215; Case map + 0216; 0217; Case map + 0218; 0219; Case map + 021A; 021B; Case map + 021C; 021D; Case map + 021E; 021F; Case map + 0220; 019E; Case map + 0222; 0223; Case map + 0224; 0225; Case map + 0226; 0227; Case map + 0228; 0229; Case map + 022A; 022B; Case map + 022C; 022D; Case map + 022E; 022F; Case map + 0230; 0231; Case map + 0232; 0233; Case map + 0345; 03B9; Case map + 037A; 0020 03B9; Additional folding + 0386; 03AC; Case map + 0388; 03AD; Case map + 0389; 03AE; Case map + 038A; 03AF; Case map + 038C; 03CC; Case map + 038E; 03CD; Case map + 038F; 03CE; Case map + 0390; 03B9 0308 0301; Case map + 0391; 03B1; Case map + 0392; 03B2; Case map + 0393; 03B3; Case map + 0394; 03B4; Case map + 0395; 03B5; Case map + 0396; 03B6; Case map + 0397; 03B7; Case map + 0398; 03B8; Case map + 0399; 03B9; Case map + 039A; 03BA; Case map + 039B; 03BB; Case map + 039C; 03BC; Case map + 039D; 03BD; Case map + 039E; 03BE; Case map + 039F; 03BF; Case map + 03A0; 03C0; Case map + 03A1; 03C1; Case map + 03A3; 03C3; Case map + 03A4; 03C4; Case map + 03A5; 03C5; Case map + 03A6; 03C6; Case map + 03A7; 03C7; Case map + 03A8; 03C8; Case map + 03A9; 03C9; Case map + 03AA; 03CA; Case map + 03AB; 03CB; Case map + 03B0; 03C5 0308 0301; Case map + 03C2; 03C3; Case map + 03D0; 03B2; Case map + 03D1; 03B8; Case map + 03D2; 03C5; Additional folding + 03D3; 03CD; Additional folding + 03D4; 03CB; Additional folding + 03D5; 03C6; Case map + 03D6; 03C0; Case map + 03D8; 03D9; Case map + 03DA; 03DB; Case map + 03DC; 03DD; Case map + 03DE; 03DF; Case map + 03E0; 03E1; Case map + 03E2; 03E3; Case map + 03E4; 03E5; Case map + 03E6; 03E7; Case map + 03E8; 03E9; Case map + 03EA; 03EB; Case map + 03EC; 03ED; Case map + 03EE; 03EF; Case map + 03F0; 03BA; Case map + 03F1; 03C1; Case map + 03F2; 03C3; Case map + 03F4; 03B8; Case map + 03F5; 03B5; Case map + 0400; 0450; Case map + 0401; 0451; Case map + 0402; 0452; Case map + 0403; 0453; Case map + 0404; 0454; Case map + 0405; 0455; Case map + 0406; 0456; Case map + 0407; 0457; Case map + 0408; 0458; Case map + 0409; 0459; Case map + 040A; 045A; Case map + 040B; 045B; Case map + 040C; 045C; Case map + 040D; 045D; Case map + 040E; 045E; Case map + 040F; 045F; Case map + 0410; 0430; Case map + 0411; 0431; Case map + 0412; 0432; Case map + 0413; 0433; Case map + 0414; 0434; Case map + 0415; 0435; Case map + 0416; 0436; Case map + 0417; 0437; Case map + 0418; 0438; Case map + 0419; 0439; Case map + 041A; 043A; Case map + 041B; 043B; Case map + 041C; 043C; Case map + 041D; 043D; Case map + 041E; 043E; Case map + 041F; 043F; Case map + 0420; 0440; Case map + 0421; 0441; Case map + 0422; 0442; Case map + 0423; 0443; Case map + 0424; 0444; Case map + 0425; 0445; Case map + 0426; 0446; Case map + 0427; 0447; Case map + 0428; 0448; Case map + 0429; 0449; Case map + 042A; 044A; Case map + 042B; 044B; Case map + 042C; 044C; Case map + 042D; 044D; Case map + 042E; 044E; Case map + 042F; 044F; Case map + 0460; 0461; Case map + 0462; 0463; Case map + 0464; 0465; Case map + 0466; 0467; Case map + 0468; 0469; Case map + 046A; 046B; Case map + 046C; 046D; Case map + 046E; 046F; Case map + 0470; 0471; Case map + 0472; 0473; Case map + 0474; 0475; Case map + 0476; 0477; Case map + 0478; 0479; Case map + 047A; 047B; Case map + 047C; 047D; Case map + 047E; 047F; Case map + 0480; 0481; Case map + 048A; 048B; Case map + 048C; 048D; Case map + 048E; 048F; Case map + 0490; 0491; Case map + 0492; 0493; Case map + 0494; 0495; Case map + 0496; 0497; Case map + 0498; 0499; Case map + 049A; 049B; Case map + 049C; 049D; Case map + 049E; 049F; Case map + 04A0; 04A1; Case map + 04A2; 04A3; Case map + 04A4; 04A5; Case map + 04A6; 04A7; Case map + 04A8; 04A9; Case map + 04AA; 04AB; Case map + 04AC; 04AD; Case map + 04AE; 04AF; Case map + 04B0; 04B1; Case map + 04B2; 04B3; Case map + 04B4; 04B5; Case map + 04B6; 04B7; Case map + 04B8; 04B9; Case map + 04BA; 04BB; Case map + 04BC; 04BD; Case map + 04BE; 04BF; Case map + 04C1; 04C2; Case map + 04C3; 04C4; Case map + 04C5; 04C6; Case map + 04C7; 04C8; Case map + 04C9; 04CA; Case map + 04CB; 04CC; Case map + 04CD; 04CE; Case map + 04D0; 04D1; Case map + 04D2; 04D3; Case map + 04D4; 04D5; Case map + 04D6; 04D7; Case map + 04D8; 04D9; Case map + 04DA; 04DB; Case map + 04DC; 04DD; Case map + 04DE; 04DF; Case map + 04E0; 04E1; Case map + 04E2; 04E3; Case map + 04E4; 04E5; Case map + 04E6; 04E7; Case map + 04E8; 04E9; Case map + 04EA; 04EB; Case map + 04EC; 04ED; Case map + 04EE; 04EF; Case map + 04F0; 04F1; Case map + 04F2; 04F3; Case map + 04F4; 04F5; Case map + 04F8; 04F9; Case map + 0500; 0501; Case map + 0502; 0503; Case map + 0504; 0505; Case map + 0506; 0507; Case map + 0508; 0509; Case map + 050A; 050B; Case map + 050C; 050D; Case map + 050E; 050F; Case map + 0531; 0561; Case map + 0532; 0562; Case map + 0533; 0563; Case map + 0534; 0564; Case map + 0535; 0565; Case map + 0536; 0566; Case map + 0537; 0567; Case map + 0538; 0568; Case map + 0539; 0569; Case map + 053A; 056A; Case map + 053B; 056B; Case map + 053C; 056C; Case map + 053D; 056D; Case map + 053E; 056E; Case map + 053F; 056F; Case map + 0540; 0570; Case map + 0541; 0571; Case map + 0542; 0572; Case map + 0543; 0573; Case map + 0544; 0574; Case map + 0545; 0575; Case map + 0546; 0576; Case map + 0547; 0577; Case map + 0548; 0578; Case map + 0549; 0579; Case map + 054A; 057A; Case map + 054B; 057B; Case map + 054C; 057C; Case map + 054D; 057D; Case map + 054E; 057E; Case map + 054F; 057F; Case map + 0550; 0580; Case map + 0551; 0581; Case map + 0552; 0582; Case map + 0553; 0583; Case map + 0554; 0584; Case map + 0555; 0585; Case map + 0556; 0586; Case map + 0587; 0565 0582; Case map + 1E00; 1E01; Case map + 1E02; 1E03; Case map + 1E04; 1E05; Case map + 1E06; 1E07; Case map + 1E08; 1E09; Case map + 1E0A; 1E0B; Case map + 1E0C; 1E0D; Case map + 1E0E; 1E0F; Case map + 1E10; 1E11; Case map + 1E12; 1E13; Case map + 1E14; 1E15; Case map + 1E16; 1E17; Case map + 1E18; 1E19; Case map + 1E1A; 1E1B; Case map + 1E1C; 1E1D; Case map + 1E1E; 1E1F; Case map + 1E20; 1E21; Case map + 1E22; 1E23; Case map + 1E24; 1E25; Case map + 1E26; 1E27; Case map + 1E28; 1E29; Case map + 1E2A; 1E2B; Case map + 1E2C; 1E2D; Case map + 1E2E; 1E2F; Case map + 1E30; 1E31; Case map + 1E32; 1E33; Case map + 1E34; 1E35; Case map + 1E36; 1E37; Case map + 1E38; 1E39; Case map + 1E3A; 1E3B; Case map + 1E3C; 1E3D; Case map + 1E3E; 1E3F; Case map + 1E40; 1E41; Case map + 1E42; 1E43; Case map + 1E44; 1E45; Case map + 1E46; 1E47; Case map + 1E48; 1E49; Case map + 1E4A; 1E4B; Case map + 1E4C; 1E4D; Case map + 1E4E; 1E4F; Case map + 1E50; 1E51; Case map + 1E52; 1E53; Case map + 1E54; 1E55; Case map + 1E56; 1E57; Case map + 1E58; 1E59; Case map + 1E5A; 1E5B; Case map + 1E5C; 1E5D; Case map + 1E5E; 1E5F; Case map + 1E60; 1E61; Case map + 1E62; 1E63; Case map + 1E64; 1E65; Case map + 1E66; 1E67; Case map + 1E68; 1E69; Case map + 1E6A; 1E6B; Case map + 1E6C; 1E6D; Case map + 1E6E; 1E6F; Case map + 1E70; 1E71; Case map + 1E72; 1E73; Case map + 1E74; 1E75; Case map + 1E76; 1E77; Case map + 1E78; 1E79; Case map + 1E7A; 1E7B; Case map + 1E7C; 1E7D; Case map + 1E7E; 1E7F; Case map + 1E80; 1E81; Case map + 1E82; 1E83; Case map + 1E84; 1E85; Case map + 1E86; 1E87; Case map + 1E88; 1E89; Case map + 1E8A; 1E8B; Case map + 1E8C; 1E8D; Case map + 1E8E; 1E8F; Case map + 1E90; 1E91; Case map + 1E92; 1E93; Case map + 1E94; 1E95; Case map + 1E96; 0068 0331; Case map + 1E97; 0074 0308; Case map + 1E98; 0077 030A; Case map + 1E99; 0079 030A; Case map + 1E9A; 0061 02BE; Case map + 1E9B; 1E61; Case map + 1EA0; 1EA1; Case map + 1EA2; 1EA3; Case map + 1EA4; 1EA5; Case map + 1EA6; 1EA7; Case map + 1EA8; 1EA9; Case map + 1EAA; 1EAB; Case map + 1EAC; 1EAD; Case map + 1EAE; 1EAF; Case map + 1EB0; 1EB1; Case map + 1EB2; 1EB3; Case map + 1EB4; 1EB5; Case map + 1EB6; 1EB7; Case map + 1EB8; 1EB9; Case map + 1EBA; 1EBB; Case map + 1EBC; 1EBD; Case map + 1EBE; 1EBF; Case map + 1EC0; 1EC1; Case map + 1EC2; 1EC3; Case map + 1EC4; 1EC5; Case map + 1EC6; 1EC7; Case map + 1EC8; 1EC9; Case map + 1ECA; 1ECB; Case map + 1ECC; 1ECD; Case map + 1ECE; 1ECF; Case map + 1ED0; 1ED1; Case map + 1ED2; 1ED3; Case map + 1ED4; 1ED5; Case map + 1ED6; 1ED7; Case map + 1ED8; 1ED9; Case map + 1EDA; 1EDB; Case map + 1EDC; 1EDD; Case map + 1EDE; 1EDF; Case map + 1EE0; 1EE1; Case map + 1EE2; 1EE3; Case map + 1EE4; 1EE5; Case map + 1EE6; 1EE7; Case map + 1EE8; 1EE9; Case map + 1EEA; 1EEB; Case map + 1EEC; 1EED; Case map + 1EEE; 1EEF; Case map + 1EF0; 1EF1; Case map + 1EF2; 1EF3; Case map + 1EF4; 1EF5; Case map + 1EF6; 1EF7; Case map + 1EF8; 1EF9; Case map + 1F08; 1F00; Case map + 1F09; 1F01; Case map + 1F0A; 1F02; Case map + 1F0B; 1F03; Case map + 1F0C; 1F04; Case map + 1F0D; 1F05; Case map + 1F0E; 1F06; Case map + 1F0F; 1F07; Case map + 1F18; 1F10; Case map + 1F19; 1F11; Case map + 1F1A; 1F12; Case map + 1F1B; 1F13; Case map + 1F1C; 1F14; Case map + 1F1D; 1F15; Case map + 1F28; 1F20; Case map + 1F29; 1F21; Case map + 1F2A; 1F22; Case map + 1F2B; 1F23; Case map + 1F2C; 1F24; Case map + 1F2D; 1F25; Case map + 1F2E; 1F26; Case map + 1F2F; 1F27; Case map + 1F38; 1F30; Case map + 1F39; 1F31; Case map + 1F3A; 1F32; Case map + 1F3B; 1F33; Case map + 1F3C; 1F34; Case map + 1F3D; 1F35; Case map + 1F3E; 1F36; Case map + 1F3F; 1F37; Case map + 1F48; 1F40; Case map + 1F49; 1F41; Case map + 1F4A; 1F42; Case map + 1F4B; 1F43; Case map + 1F4C; 1F44; Case map + 1F4D; 1F45; Case map + 1F50; 03C5 0313; Case map + 1F52; 03C5 0313 0300; Case map + 1F54; 03C5 0313 0301; Case map + 1F56; 03C5 0313 0342; Case map + 1F59; 1F51; Case map + 1F5B; 1F53; Case map + 1F5D; 1F55; Case map + 1F5F; 1F57; Case map + 1F68; 1F60; Case map + 1F69; 1F61; Case map + 1F6A; 1F62; Case map + 1F6B; 1F63; Case map + 1F6C; 1F64; Case map + 1F6D; 1F65; Case map + 1F6E; 1F66; Case map + 1F6F; 1F67; Case map + 1F80; 1F00 03B9; Case map + 1F81; 1F01 03B9; Case map + 1F82; 1F02 03B9; Case map + 1F83; 1F03 03B9; Case map + 1F84; 1F04 03B9; Case map + 1F85; 1F05 03B9; Case map + 1F86; 1F06 03B9; Case map + 1F87; 1F07 03B9; Case map + 1F88; 1F00 03B9; Case map + 1F89; 1F01 03B9; Case map + 1F8A; 1F02 03B9; Case map + 1F8B; 1F03 03B9; Case map + 1F8C; 1F04 03B9; Case map + 1F8D; 1F05 03B9; Case map + 1F8E; 1F06 03B9; Case map + 1F8F; 1F07 03B9; Case map + 1F90; 1F20 03B9; Case map + 1F91; 1F21 03B9; Case map + 1F92; 1F22 03B9; Case map + 1F93; 1F23 03B9; Case map + 1F94; 1F24 03B9; Case map + 1F95; 1F25 03B9; Case map + 1F96; 1F26 03B9; Case map + 1F97; 1F27 03B9; Case map + 1F98; 1F20 03B9; Case map + 1F99; 1F21 03B9; Case map + 1F9A; 1F22 03B9; Case map + 1F9B; 1F23 03B9; Case map + 1F9C; 1F24 03B9; Case map + 1F9D; 1F25 03B9; Case map + 1F9E; 1F26 03B9; Case map + 1F9F; 1F27 03B9; Case map + 1FA0; 1F60 03B9; Case map + 1FA1; 1F61 03B9; Case map + 1FA2; 1F62 03B9; Case map + 1FA3; 1F63 03B9; Case map + 1FA4; 1F64 03B9; Case map + 1FA5; 1F65 03B9; Case map + 1FA6; 1F66 03B9; Case map + 1FA7; 1F67 03B9; Case map + 1FA8; 1F60 03B9; Case map + 1FA9; 1F61 03B9; Case map + 1FAA; 1F62 03B9; Case map + 1FAB; 1F63 03B9; Case map + 1FAC; 1F64 03B9; Case map + 1FAD; 1F65 03B9; Case map + 1FAE; 1F66 03B9; Case map + 1FAF; 1F67 03B9; Case map + 1FB2; 1F70 03B9; Case map + 1FB3; 03B1 03B9; Case map + 1FB4; 03AC 03B9; Case map + 1FB6; 03B1 0342; Case map + 1FB7; 03B1 0342 03B9; Case map + 1FB8; 1FB0; Case map + 1FB9; 1FB1; Case map + 1FBA; 1F70; Case map + 1FBB; 1F71; Case map + 1FBC; 03B1 03B9; Case map + 1FBE; 03B9; Case map + 1FC2; 1F74 03B9; Case map + 1FC3; 03B7 03B9; Case map + 1FC4; 03AE 03B9; Case map + 1FC6; 03B7 0342; Case map + 1FC7; 03B7 0342 03B9; Case map + 1FC8; 1F72; Case map + 1FC9; 1F73; Case map + 1FCA; 1F74; Case map + 1FCB; 1F75; Case map + 1FCC; 03B7 03B9; Case map + 1FD2; 03B9 0308 0300; Case map + 1FD3; 03B9 0308 0301; Case map + 1FD6; 03B9 0342; Case map + 1FD7; 03B9 0308 0342; Case map + 1FD8; 1FD0; Case map + 1FD9; 1FD1; Case map + 1FDA; 1F76; Case map + 1FDB; 1F77; Case map + 1FE2; 03C5 0308 0300; Case map + 1FE3; 03C5 0308 0301; Case map + 1FE4; 03C1 0313; Case map + 1FE6; 03C5 0342; Case map + 1FE7; 03C5 0308 0342; Case map + 1FE8; 1FE0; Case map + 1FE9; 1FE1; Case map + 1FEA; 1F7A; Case map + 1FEB; 1F7B; Case map + 1FEC; 1FE5; Case map + 1FF2; 1F7C 03B9; Case map + 1FF3; 03C9 03B9; Case map + 1FF4; 03CE 03B9; Case map + 1FF6; 03C9 0342; Case map + 1FF7; 03C9 0342 03B9; Case map + 1FF8; 1F78; Case map + 1FF9; 1F79; Case map + 1FFA; 1F7C; Case map + 1FFB; 1F7D; Case map + 1FFC; 03C9 03B9; Case map + 20A8; 0072 0073; Additional folding + 2102; 0063; Additional folding + 2103; 00B0 0063; Additional folding + 2107; 025B; Additional folding + 2109; 00B0 0066; Additional folding + 210B; 0068; Additional folding + 210C; 0068; Additional folding + 210D; 0068; Additional folding + 2110; 0069; Additional folding + 2111; 0069; Additional folding + 2112; 006C; Additional folding + 2115; 006E; Additional folding + 2116; 006E 006F; Additional folding + 2119; 0070; Additional folding + 211A; 0071; Additional folding + 211B; 0072; Additional folding + 211C; 0072; Additional folding + 211D; 0072; Additional folding + 2120; 0073 006D; Additional folding + 2121; 0074 0065 006C; Additional folding + 2122; 0074 006D; Additional folding + 2124; 007A; Additional folding + 2126; 03C9; Case map + 2128; 007A; Additional folding + 212A; 006B; Case map + 212B; 00E5; Case map + 212C; 0062; Additional folding + 212D; 0063; Additional folding + 2130; 0065; Additional folding + 2131; 0066; Additional folding + 2133; 006D; Additional folding + 213E; 03B3; Additional folding + 213F; 03C0; Additional folding + 2145; 0064; Additional folding + 2160; 2170; Case map + 2161; 2171; Case map + 2162; 2172; Case map + 2163; 2173; Case map + 2164; 2174; Case map + 2165; 2175; Case map + 2166; 2176; Case map + 2167; 2177; Case map + 2168; 2178; Case map + 2169; 2179; Case map + 216A; 217A; Case map + 216B; 217B; Case map + 216C; 217C; Case map + 216D; 217D; Case map + 216E; 217E; Case map + 216F; 217F; Case map + 24B6; 24D0; Case map + 24B7; 24D1; Case map + 24B8; 24D2; Case map + 24B9; 24D3; Case map + 24BA; 24D4; Case map + 24BB; 24D5; Case map + 24BC; 24D6; Case map + 24BD; 24D7; Case map + 24BE; 24D8; Case map + 24BF; 24D9; Case map + 24C0; 24DA; Case map + 24C1; 24DB; Case map + 24C2; 24DC; Case map + 24C3; 24DD; Case map + 24C4; 24DE; Case map + 24C5; 24DF; Case map + 24C6; 24E0; Case map + 24C7; 24E1; Case map + 24C8; 24E2; Case map + 24C9; 24E3; Case map + 24CA; 24E4; Case map + 24CB; 24E5; Case map + 24CC; 24E6; Case map + 24CD; 24E7; Case map + 24CE; 24E8; Case map + 24CF; 24E9; Case map + 3371; 0068 0070 0061; Additional folding + 3373; 0061 0075; Additional folding + 3375; 006F 0076; Additional folding + 3380; 0070 0061; Additional folding + 3381; 006E 0061; Additional folding + 3382; 03BC 0061; Additional folding + 3383; 006D 0061; Additional folding + 3384; 006B 0061; Additional folding + 3385; 006B 0062; Additional folding + 3386; 006D 0062; Additional folding + 3387; 0067 0062; Additional folding + 338A; 0070 0066; Additional folding + 338B; 006E 0066; Additional folding + 338C; 03BC 0066; Additional folding + 3390; 0068 007A; Additional folding + 3391; 006B 0068 007A; Additional folding + 3392; 006D 0068 007A; Additional folding + 3393; 0067 0068 007A; Additional folding + 3394; 0074 0068 007A; Additional folding + 33A9; 0070 0061; Additional folding + 33AA; 006B 0070 0061; Additional folding + 33AB; 006D 0070 0061; Additional folding + 33AC; 0067 0070 0061; Additional folding + 33B4; 0070 0076; Additional folding + 33B5; 006E 0076; Additional folding + 33B6; 03BC 0076; Additional folding + 33B7; 006D 0076; Additional folding + 33B8; 006B 0076; Additional folding + 33B9; 006D 0076; Additional folding + 33BA; 0070 0077; Additional folding + 33BB; 006E 0077; Additional folding + 33BC; 03BC 0077; Additional folding + 33BD; 006D 0077; Additional folding + 33BE; 006B 0077; Additional folding + 33BF; 006D 0077; Additional folding + 33C0; 006B 03C9; Additional folding + 33C1; 006D 03C9; Additional folding + 33C3; 0062 0071; Additional folding + 33C6; 0063 2215 006B 0067; Additional folding + 33C7; 0063 006F 002E; Additional folding + 33C8; 0064 0062; Additional folding + 33C9; 0067 0079; Additional folding + 33CB; 0068 0070; Additional folding + 33CD; 006B 006B; Additional folding + 33CE; 006B 006D; Additional folding + 33D7; 0070 0068; Additional folding + 33D9; 0070 0070 006D; Additional folding + 33DA; 0070 0072; Additional folding + 33DC; 0073 0076; Additional folding + 33DD; 0077 0062; Additional folding + FB00; 0066 0066; Case map + FB01; 0066 0069; Case map + FB02; 0066 006C; Case map + FB03; 0066 0066 0069; Case map + FB04; 0066 0066 006C; Case map + FB05; 0073 0074; Case map + FB06; 0073 0074; Case map + FB13; 0574 0576; Case map + FB14; 0574 0565; Case map + FB15; 0574 056B; Case map + FB16; 057E 0576; Case map + FB17; 0574 056D; Case map + FF21; FF41; Case map + FF22; FF42; Case map + FF23; FF43; Case map + FF24; FF44; Case map + FF25; FF45; Case map + FF26; FF46; Case map + FF27; FF47; Case map + FF28; FF48; Case map + FF29; FF49; Case map + FF2A; FF4A; Case map + FF2B; FF4B; Case map + FF2C; FF4C; Case map + FF2D; FF4D; Case map + FF2E; FF4E; Case map + FF2F; FF4F; Case map + FF30; FF50; Case map + FF31; FF51; Case map + FF32; FF52; Case map + FF33; FF53; Case map + FF34; FF54; Case map + FF35; FF55; Case map + FF36; FF56; Case map + FF37; FF57; Case map + FF38; FF58; Case map + FF39; FF59; Case map + FF3A; FF5A; Case map + 10400; 10428; Case map + 10401; 10429; Case map + 10402; 1042A; Case map + 10403; 1042B; Case map + 10404; 1042C; Case map + 10405; 1042D; Case map + 10406; 1042E; Case map + 10407; 1042F; Case map + 10408; 10430; Case map + 10409; 10431; Case map + 1040A; 10432; Case map + 1040B; 10433; Case map + 1040C; 10434; Case map + 1040D; 10435; Case map + 1040E; 10436; Case map + 1040F; 10437; Case map + 10410; 10438; Case map + 10411; 10439; Case map + 10412; 1043A; Case map + 10413; 1043B; Case map + 10414; 1043C; Case map + 10415; 1043D; Case map + 10416; 1043E; Case map + 10417; 1043F; Case map + 10418; 10440; Case map + 10419; 10441; Case map + 1041A; 10442; Case map + 1041B; 10443; Case map + 1041C; 10444; Case map + 1041D; 10445; Case map + 1041E; 10446; Case map + 1041F; 10447; Case map + 10420; 10448; Case map + 10421; 10449; Case map + 10422; 1044A; Case map + 10423; 1044B; Case map + 10424; 1044C; Case map + 10425; 1044D; Case map + 1D400; 0061; Additional folding + 1D401; 0062; Additional folding + 1D402; 0063; Additional folding + 1D403; 0064; Additional folding + 1D404; 0065; Additional folding + 1D405; 0066; Additional folding + 1D406; 0067; Additional folding + 1D407; 0068; Additional folding + 1D408; 0069; Additional folding + 1D409; 006A; Additional folding + 1D40A; 006B; Additional folding + 1D40B; 006C; Additional folding + 1D40C; 006D; Additional folding + 1D40D; 006E; Additional folding + 1D40E; 006F; Additional folding + 1D40F; 0070; Additional folding + 1D410; 0071; Additional folding + 1D411; 0072; Additional folding + 1D412; 0073; Additional folding + 1D413; 0074; Additional folding + 1D414; 0075; Additional folding + 1D415; 0076; Additional folding + 1D416; 0077; Additional folding + 1D417; 0078; Additional folding + 1D418; 0079; Additional folding + 1D419; 007A; Additional folding + 1D434; 0061; Additional folding + 1D435; 0062; Additional folding + 1D436; 0063; Additional folding + 1D437; 0064; Additional folding + 1D438; 0065; Additional folding + 1D439; 0066; Additional folding + 1D43A; 0067; Additional folding + 1D43B; 0068; Additional folding + 1D43C; 0069; Additional folding + 1D43D; 006A; Additional folding + 1D43E; 006B; Additional folding + 1D43F; 006C; Additional folding + 1D440; 006D; Additional folding + 1D441; 006E; Additional folding + 1D442; 006F; Additional folding + 1D443; 0070; Additional folding + 1D444; 0071; Additional folding + 1D445; 0072; Additional folding + 1D446; 0073; Additional folding + 1D447; 0074; Additional folding + 1D448; 0075; Additional folding + 1D449; 0076; Additional folding + 1D44A; 0077; Additional folding + 1D44B; 0078; Additional folding + 1D44C; 0079; Additional folding + 1D44D; 007A; Additional folding + 1D468; 0061; Additional folding + 1D469; 0062; Additional folding + 1D46A; 0063; Additional folding + 1D46B; 0064; Additional folding + 1D46C; 0065; Additional folding + 1D46D; 0066; Additional folding + 1D46E; 0067; Additional folding + 1D46F; 0068; Additional folding + 1D470; 0069; Additional folding + 1D471; 006A; Additional folding + 1D472; 006B; Additional folding + 1D473; 006C; Additional folding + 1D474; 006D; Additional folding + 1D475; 006E; Additional folding + 1D476; 006F; Additional folding + 1D477; 0070; Additional folding + 1D478; 0071; Additional folding + 1D479; 0072; Additional folding + 1D47A; 0073; Additional folding + 1D47B; 0074; Additional folding + 1D47C; 0075; Additional folding + 1D47D; 0076; Additional folding + 1D47E; 0077; Additional folding + 1D47F; 0078; Additional folding + 1D480; 0079; Additional folding + 1D481; 007A; Additional folding + 1D49C; 0061; Additional folding + 1D49E; 0063; Additional folding + 1D49F; 0064; Additional folding + 1D4A2; 0067; Additional folding + 1D4A5; 006A; Additional folding + 1D4A6; 006B; Additional folding + 1D4A9; 006E; Additional folding + 1D4AA; 006F; Additional folding + 1D4AB; 0070; Additional folding + 1D4AC; 0071; Additional folding + 1D4AE; 0073; Additional folding + 1D4AF; 0074; Additional folding + 1D4B0; 0075; Additional folding + 1D4B1; 0076; Additional folding + 1D4B2; 0077; Additional folding + 1D4B3; 0078; Additional folding + 1D4B4; 0079; Additional folding + 1D4B5; 007A; Additional folding + 1D4D0; 0061; Additional folding + 1D4D1; 0062; Additional folding + 1D4D2; 0063; Additional folding + 1D4D3; 0064; Additional folding + 1D4D4; 0065; Additional folding + 1D4D5; 0066; Additional folding + 1D4D6; 0067; Additional folding + 1D4D7; 0068; Additional folding + 1D4D8; 0069; Additional folding + 1D4D9; 006A; Additional folding + 1D4DA; 006B; Additional folding + 1D4DB; 006C; Additional folding + 1D4DC; 006D; Additional folding + 1D4DD; 006E; Additional folding + 1D4DE; 006F; Additional folding + 1D4DF; 0070; Additional folding + 1D4E0; 0071; Additional folding + 1D4E1; 0072; Additional folding + 1D4E2; 0073; Additional folding + 1D4E3; 0074; Additional folding + 1D4E4; 0075; Additional folding + 1D4E5; 0076; Additional folding + 1D4E6; 0077; Additional folding + 1D4E7; 0078; Additional folding + 1D4E8; 0079; Additional folding + 1D4E9; 007A; Additional folding + 1D504; 0061; Additional folding + 1D505; 0062; Additional folding + 1D507; 0064; Additional folding + 1D508; 0065; Additional folding + 1D509; 0066; Additional folding + 1D50A; 0067; Additional folding + 1D50D; 006A; Additional folding + 1D50E; 006B; Additional folding + 1D50F; 006C; Additional folding + 1D510; 006D; Additional folding + 1D511; 006E; Additional folding + 1D512; 006F; Additional folding + 1D513; 0070; Additional folding + 1D514; 0071; Additional folding + 1D516; 0073; Additional folding + 1D517; 0074; Additional folding + 1D518; 0075; Additional folding + 1D519; 0076; Additional folding + 1D51A; 0077; Additional folding + 1D51B; 0078; Additional folding + 1D51C; 0079; Additional folding + 1D538; 0061; Additional folding + 1D539; 0062; Additional folding + 1D53B; 0064; Additional folding + 1D53C; 0065; Additional folding + 1D53D; 0066; Additional folding + 1D53E; 0067; Additional folding + 1D540; 0069; Additional folding + 1D541; 006A; Additional folding + 1D542; 006B; Additional folding + 1D543; 006C; Additional folding + 1D544; 006D; Additional folding + 1D546; 006F; Additional folding + 1D54A; 0073; Additional folding + 1D54B; 0074; Additional folding + 1D54C; 0075; Additional folding + 1D54D; 0076; Additional folding + 1D54E; 0077; Additional folding + 1D54F; 0078; Additional folding + 1D550; 0079; Additional folding + 1D56C; 0061; Additional folding + 1D56D; 0062; Additional folding + 1D56E; 0063; Additional folding + 1D56F; 0064; Additional folding + 1D570; 0065; Additional folding + 1D571; 0066; Additional folding + 1D572; 0067; Additional folding + 1D573; 0068; Additional folding + 1D574; 0069; Additional folding + 1D575; 006A; Additional folding + 1D576; 006B; Additional folding + 1D577; 006C; Additional folding + 1D578; 006D; Additional folding + 1D579; 006E; Additional folding + 1D57A; 006F; Additional folding + 1D57B; 0070; Additional folding + 1D57C; 0071; Additional folding + 1D57D; 0072; Additional folding + 1D57E; 0073; Additional folding + 1D57F; 0074; Additional folding + 1D580; 0075; Additional folding + 1D581; 0076; Additional folding + 1D582; 0077; Additional folding + 1D583; 0078; Additional folding + 1D584; 0079; Additional folding + 1D585; 007A; Additional folding + 1D5A0; 0061; Additional folding + 1D5A1; 0062; Additional folding + 1D5A2; 0063; Additional folding + 1D5A3; 0064; Additional folding + 1D5A4; 0065; Additional folding + 1D5A5; 0066; Additional folding + 1D5A6; 0067; Additional folding + 1D5A7; 0068; Additional folding + 1D5A8; 0069; Additional folding + 1D5A9; 006A; Additional folding + 1D5AA; 006B; Additional folding + 1D5AB; 006C; Additional folding + 1D5AC; 006D; Additional folding + 1D5AD; 006E; Additional folding + 1D5AE; 006F; Additional folding + 1D5AF; 0070; Additional folding + 1D5B0; 0071; Additional folding + 1D5B1; 0072; Additional folding + 1D5B2; 0073; Additional folding + 1D5B3; 0074; Additional folding + 1D5B4; 0075; Additional folding + 1D5B5; 0076; Additional folding + 1D5B6; 0077; Additional folding + 1D5B7; 0078; Additional folding + 1D5B8; 0079; Additional folding + 1D5B9; 007A; Additional folding + 1D5D4; 0061; Additional folding + 1D5D5; 0062; Additional folding + 1D5D6; 0063; Additional folding + 1D5D7; 0064; Additional folding + 1D5D8; 0065; Additional folding + 1D5D9; 0066; Additional folding + 1D5DA; 0067; Additional folding + 1D5DB; 0068; Additional folding + 1D5DC; 0069; Additional folding + 1D5DD; 006A; Additional folding + 1D5DE; 006B; Additional folding + 1D5DF; 006C; Additional folding + 1D5E0; 006D; Additional folding + 1D5E1; 006E; Additional folding + 1D5E2; 006F; Additional folding + 1D5E3; 0070; Additional folding + 1D5E4; 0071; Additional folding + 1D5E5; 0072; Additional folding + 1D5E6; 0073; Additional folding + 1D5E7; 0074; Additional folding + 1D5E8; 0075; Additional folding + 1D5E9; 0076; Additional folding + 1D5EA; 0077; Additional folding + 1D5EB; 0078; Additional folding + 1D5EC; 0079; Additional folding + 1D5ED; 007A; Additional folding + 1D608; 0061; Additional folding + 1D609; 0062; Additional folding + 1D60A; 0063; Additional folding + 1D60B; 0064; Additional folding + 1D60C; 0065; Additional folding + 1D60D; 0066; Additional folding + 1D60E; 0067; Additional folding + 1D60F; 0068; Additional folding + 1D610; 0069; Additional folding + 1D611; 006A; Additional folding + 1D612; 006B; Additional folding + 1D613; 006C; Additional folding + 1D614; 006D; Additional folding + 1D615; 006E; Additional folding + 1D616; 006F; Additional folding + 1D617; 0070; Additional folding + 1D618; 0071; Additional folding + 1D619; 0072; Additional folding + 1D61A; 0073; Additional folding + 1D61B; 0074; Additional folding + 1D61C; 0075; Additional folding + 1D61D; 0076; Additional folding + 1D61E; 0077; Additional folding + 1D61F; 0078; Additional folding + 1D620; 0079; Additional folding + 1D621; 007A; Additional folding + 1D63C; 0061; Additional folding + 1D63D; 0062; Additional folding + 1D63E; 0063; Additional folding + 1D63F; 0064; Additional folding + 1D640; 0065; Additional folding + 1D641; 0066; Additional folding + 1D642; 0067; Additional folding + 1D643; 0068; Additional folding + 1D644; 0069; Additional folding + 1D645; 006A; Additional folding + 1D646; 006B; Additional folding + 1D647; 006C; Additional folding + 1D648; 006D; Additional folding + 1D649; 006E; Additional folding + 1D64A; 006F; Additional folding + 1D64B; 0070; Additional folding + 1D64C; 0071; Additional folding + 1D64D; 0072; Additional folding + 1D64E; 0073; Additional folding + 1D64F; 0074; Additional folding + 1D650; 0075; Additional folding + 1D651; 0076; Additional folding + 1D652; 0077; Additional folding + 1D653; 0078; Additional folding + 1D654; 0079; Additional folding + 1D655; 007A; Additional folding + 1D670; 0061; Additional folding + 1D671; 0062; Additional folding + 1D672; 0063; Additional folding + 1D673; 0064; Additional folding + 1D674; 0065; Additional folding + 1D675; 0066; Additional folding + 1D676; 0067; Additional folding + 1D677; 0068; Additional folding + 1D678; 0069; Additional folding + 1D679; 006A; Additional folding + 1D67A; 006B; Additional folding + 1D67B; 006C; Additional folding + 1D67C; 006D; Additional folding + 1D67D; 006E; Additional folding + 1D67E; 006F; Additional folding + 1D67F; 0070; Additional folding + 1D680; 0071; Additional folding + 1D681; 0072; Additional folding + 1D682; 0073; Additional folding + 1D683; 0074; Additional folding + 1D684; 0075; Additional folding + 1D685; 0076; Additional folding + 1D686; 0077; Additional folding + 1D687; 0078; Additional folding + 1D688; 0079; Additional folding + 1D689; 007A; Additional folding + 1D6A8; 03B1; Additional folding + 1D6A9; 03B2; Additional folding + 1D6AA; 03B3; Additional folding + 1D6AB; 03B4; Additional folding + 1D6AC; 03B5; Additional folding + 1D6AD; 03B6; Additional folding + 1D6AE; 03B7; Additional folding + 1D6AF; 03B8; Additional folding + 1D6B0; 03B9; Additional folding + 1D6B1; 03BA; Additional folding + 1D6B2; 03BB; Additional folding + 1D6B3; 03BC; Additional folding + 1D6B4; 03BD; Additional folding + 1D6B5; 03BE; Additional folding + 1D6B6; 03BF; Additional folding + 1D6B7; 03C0; Additional folding + 1D6B8; 03C1; Additional folding + 1D6B9; 03B8; Additional folding + 1D6BA; 03C3; Additional folding + 1D6BB; 03C4; Additional folding + 1D6BC; 03C5; Additional folding + 1D6BD; 03C6; Additional folding + 1D6BE; 03C7; Additional folding + 1D6BF; 03C8; Additional folding + 1D6C0; 03C9; Additional folding + 1D6D3; 03C3; Additional folding + 1D6E2; 03B1; Additional folding + 1D6E3; 03B2; Additional folding + 1D6E4; 03B3; Additional folding + 1D6E5; 03B4; Additional folding + 1D6E6; 03B5; Additional folding + 1D6E7; 03B6; Additional folding + 1D6E8; 03B7; Additional folding + 1D6E9; 03B8; Additional folding + 1D6EA; 03B9; Additional folding + 1D6EB; 03BA; Additional folding + 1D6EC; 03BB; Additional folding + 1D6ED; 03BC; Additional folding + 1D6EE; 03BD; Additional folding + 1D6EF; 03BE; Additional folding + 1D6F0; 03BF; Additional folding + 1D6F1; 03C0; Additional folding + 1D6F2; 03C1; Additional folding + 1D6F3; 03B8; Additional folding + 1D6F4; 03C3; Additional folding + 1D6F5; 03C4; Additional folding + 1D6F6; 03C5; Additional folding + 1D6F7; 03C6; Additional folding + 1D6F8; 03C7; Additional folding + 1D6F9; 03C8; Additional folding + 1D6FA; 03C9; Additional folding + 1D70D; 03C3; Additional folding + 1D71C; 03B1; Additional folding + 1D71D; 03B2; Additional folding + 1D71E; 03B3; Additional folding + 1D71F; 03B4; Additional folding + 1D720; 03B5; Additional folding + 1D721; 03B6; Additional folding + 1D722; 03B7; Additional folding + 1D723; 03B8; Additional folding + 1D724; 03B9; Additional folding + 1D725; 03BA; Additional folding + 1D726; 03BB; Additional folding + 1D727; 03BC; Additional folding + 1D728; 03BD; Additional folding + 1D729; 03BE; Additional folding + 1D72A; 03BF; Additional folding + 1D72B; 03C0; Additional folding + 1D72C; 03C1; Additional folding + 1D72D; 03B8; Additional folding + 1D72E; 03C3; Additional folding + 1D72F; 03C4; Additional folding + 1D730; 03C5; Additional folding + 1D731; 03C6; Additional folding + 1D732; 03C7; Additional folding + 1D733; 03C8; Additional folding + 1D734; 03C9; Additional folding + 1D747; 03C3; Additional folding + 1D756; 03B1; Additional folding + 1D757; 03B2; Additional folding + 1D758; 03B3; Additional folding + 1D759; 03B4; Additional folding + 1D75A; 03B5; Additional folding + 1D75B; 03B6; Additional folding + 1D75C; 03B7; Additional folding + 1D75D; 03B8; Additional folding + 1D75E; 03B9; Additional folding + 1D75F; 03BA; Additional folding + 1D760; 03BB; Additional folding + 1D761; 03BC; Additional folding + 1D762; 03BD; Additional folding + 1D763; 03BE; Additional folding + 1D764; 03BF; Additional folding + 1D765; 03C0; Additional folding + 1D766; 03C1; Additional folding + 1D767; 03B8; Additional folding + 1D768; 03C3; Additional folding + 1D769; 03C4; Additional folding + 1D76A; 03C5; Additional folding + 1D76B; 03C6; Additional folding + 1D76C; 03C7; Additional folding + 1D76D; 03C8; Additional folding + 1D76E; 03C9; Additional folding + 1D781; 03C3; Additional folding + 1D790; 03B1; Additional folding + 1D791; 03B2; Additional folding + 1D792; 03B3; Additional folding + 1D793; 03B4; Additional folding + 1D794; 03B5; Additional folding + 1D795; 03B6; Additional folding + 1D796; 03B7; Additional folding + 1D797; 03B8; Additional folding + 1D798; 03B9; Additional folding + 1D799; 03BA; Additional folding + 1D79A; 03BB; Additional folding + 1D79B; 03BC; Additional folding + 1D79C; 03BD; Additional folding + 1D79D; 03BE; Additional folding + 1D79E; 03BF; Additional folding + 1D79F; 03C0; Additional folding + 1D7A0; 03C1; Additional folding + 1D7A1; 03B8; Additional folding + 1D7A2; 03C3; Additional folding + 1D7A3; 03C4; Additional folding + 1D7A4; 03C5; Additional folding + 1D7A5; 03C6; Additional folding + 1D7A6; 03C7; Additional folding + 1D7A7; 03C8; Additional folding + 1D7A8; 03C9; Additional folding + 1D7BB; 03C3; Additional folding + ----- End Table B.2 ----- + + ----- Start Table B.3 ----- + 0041; 0061; Case map + 0042; 0062; Case map + 0043; 0063; Case map + 0044; 0064; Case map + 0045; 0065; Case map + 0046; 0066; Case map + 0047; 0067; Case map + 0048; 0068; Case map + 0049; 0069; Case map + 004A; 006A; Case map + 004B; 006B; Case map + 004C; 006C; Case map + 004D; 006D; Case map + 004E; 006E; Case map + 004F; 006F; Case map + 0050; 0070; Case map + 0051; 0071; Case map + 0052; 0072; Case map + 0053; 0073; Case map + 0054; 0074; Case map + 0055; 0075; Case map + 0056; 0076; Case map + 0057; 0077; Case map + 0058; 0078; Case map + 0059; 0079; Case map + 005A; 007A; Case map + 00B5; 03BC; Case map + 00C0; 00E0; Case map + 00C1; 00E1; Case map + 00C2; 00E2; Case map + 00C3; 00E3; Case map + 00C4; 00E4; Case map + 00C5; 00E5; Case map + 00C6; 00E6; Case map + 00C7; 00E7; Case map + 00C8; 00E8; Case map + 00C9; 00E9; Case map + 00CA; 00EA; Case map + 00CB; 00EB; Case map + 00CC; 00EC; Case map + 00CD; 00ED; Case map + 00CE; 00EE; Case map + 00CF; 00EF; Case map + 00D0; 00F0; Case map + 00D1; 00F1; Case map + 00D2; 00F2; Case map + 00D3; 00F3; Case map + 00D4; 00F4; Case map + 00D5; 00F5; Case map + 00D6; 00F6; Case map + 00D8; 00F8; Case map + 00D9; 00F9; Case map + 00DA; 00FA; Case map + 00DB; 00FB; Case map + 00DC; 00FC; Case map + 00DD; 00FD; Case map + 00DE; 00FE; Case map + 00DF; 0073 0073; Case map + 0100; 0101; Case map + 0102; 0103; Case map + 0104; 0105; Case map + 0106; 0107; Case map + 0108; 0109; Case map + 010A; 010B; Case map + 010C; 010D; Case map + 010E; 010F; Case map + 0110; 0111; Case map + 0112; 0113; Case map + 0114; 0115; Case map + 0116; 0117; Case map + 0118; 0119; Case map + 011A; 011B; Case map + 011C; 011D; Case map + 011E; 011F; Case map + 0120; 0121; Case map + 0122; 0123; Case map + 0124; 0125; Case map + 0126; 0127; Case map + 0128; 0129; Case map + 012A; 012B; Case map + 012C; 012D; Case map + 012E; 012F; Case map + 0130; 0069 0307; Case map + 0132; 0133; Case map + 0134; 0135; Case map + 0136; 0137; Case map + 0139; 013A; Case map + 013B; 013C; Case map + 013D; 013E; Case map + 013F; 0140; Case map + 0141; 0142; Case map + 0143; 0144; Case map + 0145; 0146; Case map + 0147; 0148; Case map + 0149; 02BC 006E; Case map + 014A; 014B; Case map + 014C; 014D; Case map + 014E; 014F; Case map + 0150; 0151; Case map + 0152; 0153; Case map + 0154; 0155; Case map + 0156; 0157; Case map + 0158; 0159; Case map + 015A; 015B; Case map + 015C; 015D; Case map + 015E; 015F; Case map + 0160; 0161; Case map + 0162; 0163; Case map + 0164; 0165; Case map + 0166; 0167; Case map + 0168; 0169; Case map + 016A; 016B; Case map + 016C; 016D; Case map + 016E; 016F; Case map + 0170; 0171; Case map + 0172; 0173; Case map + 0174; 0175; Case map + 0176; 0177; Case map + 0178; 00FF; Case map + 0179; 017A; Case map + 017B; 017C; Case map + 017D; 017E; Case map + 017F; 0073; Case map + 0181; 0253; Case map + 0182; 0183; Case map + 0184; 0185; Case map + 0186; 0254; Case map + 0187; 0188; Case map + 0189; 0256; Case map + 018A; 0257; Case map + 018B; 018C; Case map + 018E; 01DD; Case map + 018F; 0259; Case map + 0190; 025B; Case map + 0191; 0192; Case map + 0193; 0260; Case map + 0194; 0263; Case map + 0196; 0269; Case map + 0197; 0268; Case map + 0198; 0199; Case map + 019C; 026F; Case map + 019D; 0272; Case map + 019F; 0275; Case map + 01A0; 01A1; Case map + 01A2; 01A3; Case map + 01A4; 01A5; Case map + 01A6; 0280; Case map + 01A7; 01A8; Case map + 01A9; 0283; Case map + 01AC; 01AD; Case map + 01AE; 0288; Case map + 01AF; 01B0; Case map + 01B1; 028A; Case map + 01B2; 028B; Case map + 01B3; 01B4; Case map + 01B5; 01B6; Case map + 01B7; 0292; Case map + 01B8; 01B9; Case map + 01BC; 01BD; Case map + 01C4; 01C6; Case map + 01C5; 01C6; Case map + 01C7; 01C9; Case map + 01C8; 01C9; Case map + 01CA; 01CC; Case map + 01CB; 01CC; Case map + 01CD; 01CE; Case map + 01CF; 01D0; Case map + 01D1; 01D2; Case map + 01D3; 01D4; Case map + 01D5; 01D6; Case map + 01D7; 01D8; Case map + 01D9; 01DA; Case map + 01DB; 01DC; Case map + 01DE; 01DF; Case map + 01E0; 01E1; Case map + 01E2; 01E3; Case map + 01E4; 01E5; Case map + 01E6; 01E7; Case map + 01E8; 01E9; Case map + 01EA; 01EB; Case map + 01EC; 01ED; Case map + 01EE; 01EF; Case map + 01F0; 006A 030C; Case map + 01F1; 01F3; Case map + 01F2; 01F3; Case map + 01F4; 01F5; Case map + 01F6; 0195; Case map + 01F7; 01BF; Case map + 01F8; 01F9; Case map + 01FA; 01FB; Case map + 01FC; 01FD; Case map + 01FE; 01FF; Case map + 0200; 0201; Case map + 0202; 0203; Case map + 0204; 0205; Case map + 0206; 0207; Case map + 0208; 0209; Case map + 020A; 020B; Case map + 020C; 020D; Case map + 020E; 020F; Case map + 0210; 0211; Case map + 0212; 0213; Case map + 0214; 0215; Case map + 0216; 0217; Case map + 0218; 0219; Case map + 021A; 021B; Case map + 021C; 021D; Case map + 021E; 021F; Case map + 0220; 019E; Case map + 0222; 0223; Case map + 0224; 0225; Case map + 0226; 0227; Case map + 0228; 0229; Case map + 022A; 022B; Case map + 022C; 022D; Case map + 022E; 022F; Case map + 0230; 0231; Case map + 0232; 0233; Case map + 0345; 03B9; Case map + 0386; 03AC; Case map + 0388; 03AD; Case map + 0389; 03AE; Case map + 038A; 03AF; Case map + 038C; 03CC; Case map + 038E; 03CD; Case map + 038F; 03CE; Case map + 0390; 03B9 0308 0301; Case map + 0391; 03B1; Case map + 0392; 03B2; Case map + 0393; 03B3; Case map + 0394; 03B4; Case map + 0395; 03B5; Case map + 0396; 03B6; Case map + 0397; 03B7; Case map + 0398; 03B8; Case map + 0399; 03B9; Case map + 039A; 03BA; Case map + 039B; 03BB; Case map + 039C; 03BC; Case map + 039D; 03BD; Case map + 039E; 03BE; Case map + 039F; 03BF; Case map + 03A0; 03C0; Case map + 03A1; 03C1; Case map + 03A3; 03C3; Case map + 03A4; 03C4; Case map + 03A5; 03C5; Case map + 03A6; 03C6; Case map + 03A7; 03C7; Case map + 03A8; 03C8; Case map + 03A9; 03C9; Case map + 03AA; 03CA; Case map + 03AB; 03CB; Case map + 03B0; 03C5 0308 0301; Case map + 03C2; 03C3; Case map + 03D0; 03B2; Case map + 03D1; 03B8; Case map + 03D5; 03C6; Case map + 03D6; 03C0; Case map + 03D8; 03D9; Case map + 03DA; 03DB; Case map + 03DC; 03DD; Case map + 03DE; 03DF; Case map + 03E0; 03E1; Case map + 03E2; 03E3; Case map + 03E4; 03E5; Case map + 03E6; 03E7; Case map + 03E8; 03E9; Case map + 03EA; 03EB; Case map + 03EC; 03ED; Case map + 03EE; 03EF; Case map + 03F0; 03BA; Case map + 03F1; 03C1; Case map + 03F2; 03C3; Case map + 03F4; 03B8; Case map + 03F5; 03B5; Case map + 0400; 0450; Case map + 0401; 0451; Case map + 0402; 0452; Case map + 0403; 0453; Case map + 0404; 0454; Case map + 0405; 0455; Case map + 0406; 0456; Case map + 0407; 0457; Case map + 0408; 0458; Case map + 0409; 0459; Case map + 040A; 045A; Case map + 040B; 045B; Case map + 040C; 045C; Case map + 040D; 045D; Case map + 040E; 045E; Case map + 040F; 045F; Case map + 0410; 0430; Case map + 0411; 0431; Case map + 0412; 0432; Case map + 0413; 0433; Case map + 0414; 0434; Case map + 0415; 0435; Case map + 0416; 0436; Case map + 0417; 0437; Case map + 0418; 0438; Case map + 0419; 0439; Case map + 041A; 043A; Case map + 041B; 043B; Case map + 041C; 043C; Case map + 041D; 043D; Case map + 041E; 043E; Case map + 041F; 043F; Case map + 0420; 0440; Case map + 0421; 0441; Case map + 0422; 0442; Case map + 0423; 0443; Case map + 0424; 0444; Case map + 0425; 0445; Case map + 0426; 0446; Case map + 0427; 0447; Case map + 0428; 0448; Case map + 0429; 0449; Case map + 042A; 044A; Case map + 042B; 044B; Case map + 042C; 044C; Case map + 042D; 044D; Case map + 042E; 044E; Case map + 042F; 044F; Case map + 0460; 0461; Case map + 0462; 0463; Case map + 0464; 0465; Case map + 0466; 0467; Case map + 0468; 0469; Case map + 046A; 046B; Case map + 046C; 046D; Case map + 046E; 046F; Case map + 0470; 0471; Case map + 0472; 0473; Case map + 0474; 0475; Case map + 0476; 0477; Case map + 0478; 0479; Case map + 047A; 047B; Case map + 047C; 047D; Case map + 047E; 047F; Case map + 0480; 0481; Case map + 048A; 048B; Case map + 048C; 048D; Case map + 048E; 048F; Case map + 0490; 0491; Case map + 0492; 0493; Case map + 0494; 0495; Case map + 0496; 0497; Case map + 0498; 0499; Case map + 049A; 049B; Case map + 049C; 049D; Case map + 049E; 049F; Case map + 04A0; 04A1; Case map + 04A2; 04A3; Case map + 04A4; 04A5; Case map + 04A6; 04A7; Case map + 04A8; 04A9; Case map + 04AA; 04AB; Case map + 04AC; 04AD; Case map + 04AE; 04AF; Case map + 04B0; 04B1; Case map + 04B2; 04B3; Case map + 04B4; 04B5; Case map + 04B6; 04B7; Case map + 04B8; 04B9; Case map + 04BA; 04BB; Case map + 04BC; 04BD; Case map + 04BE; 04BF; Case map + 04C1; 04C2; Case map + 04C3; 04C4; Case map + 04C5; 04C6; Case map + 04C7; 04C8; Case map + 04C9; 04CA; Case map + 04CB; 04CC; Case map + 04CD; 04CE; Case map + 04D0; 04D1; Case map + 04D2; 04D3; Case map + 04D4; 04D5; Case map + 04D6; 04D7; Case map + 04D8; 04D9; Case map + 04DA; 04DB; Case map + 04DC; 04DD; Case map + 04DE; 04DF; Case map + 04E0; 04E1; Case map + 04E2; 04E3; Case map + 04E4; 04E5; Case map + 04E6; 04E7; Case map + 04E8; 04E9; Case map + 04EA; 04EB; Case map + 04EC; 04ED; Case map + 04EE; 04EF; Case map + 04F0; 04F1; Case map + 04F2; 04F3; Case map + 04F4; 04F5; Case map + 04F8; 04F9; Case map + 0500; 0501; Case map + 0502; 0503; Case map + 0504; 0505; Case map + 0506; 0507; Case map + 0508; 0509; Case map + 050A; 050B; Case map + 050C; 050D; Case map + 050E; 050F; Case map + 0531; 0561; Case map + 0532; 0562; Case map + 0533; 0563; Case map + 0534; 0564; Case map + 0535; 0565; Case map + 0536; 0566; Case map + 0537; 0567; Case map + 0538; 0568; Case map + 0539; 0569; Case map + 053A; 056A; Case map + 053B; 056B; Case map + 053C; 056C; Case map + 053D; 056D; Case map + 053E; 056E; Case map + 053F; 056F; Case map + 0540; 0570; Case map + 0541; 0571; Case map + 0542; 0572; Case map + 0543; 0573; Case map + 0544; 0574; Case map + 0545; 0575; Case map + 0546; 0576; Case map + 0547; 0577; Case map + 0548; 0578; Case map + 0549; 0579; Case map + 054A; 057A; Case map + 054B; 057B; Case map + 054C; 057C; Case map + 054D; 057D; Case map + 054E; 057E; Case map + 054F; 057F; Case map + 0550; 0580; Case map + 0551; 0581; Case map + 0552; 0582; Case map + 0553; 0583; Case map + 0554; 0584; Case map + 0555; 0585; Case map + 0556; 0586; Case map + 0587; 0565 0582; Case map + 1E00; 1E01; Case map + 1E02; 1E03; Case map + 1E04; 1E05; Case map + 1E06; 1E07; Case map + 1E08; 1E09; Case map + 1E0A; 1E0B; Case map + 1E0C; 1E0D; Case map + 1E0E; 1E0F; Case map + 1E10; 1E11; Case map + 1E12; 1E13; Case map + 1E14; 1E15; Case map + 1E16; 1E17; Case map + 1E18; 1E19; Case map + 1E1A; 1E1B; Case map + 1E1C; 1E1D; Case map + 1E1E; 1E1F; Case map + 1E20; 1E21; Case map + 1E22; 1E23; Case map + 1E24; 1E25; Case map + 1E26; 1E27; Case map + 1E28; 1E29; Case map + 1E2A; 1E2B; Case map + 1E2C; 1E2D; Case map + 1E2E; 1E2F; Case map + 1E30; 1E31; Case map + 1E32; 1E33; Case map + 1E34; 1E35; Case map + 1E36; 1E37; Case map + 1E38; 1E39; Case map + 1E3A; 1E3B; Case map + 1E3C; 1E3D; Case map + 1E3E; 1E3F; Case map + 1E40; 1E41; Case map + 1E42; 1E43; Case map + 1E44; 1E45; Case map + 1E46; 1E47; Case map + 1E48; 1E49; Case map + 1E4A; 1E4B; Case map + 1E4C; 1E4D; Case map + 1E4E; 1E4F; Case map + 1E50; 1E51; Case map + 1E52; 1E53; Case map + 1E54; 1E55; Case map + 1E56; 1E57; Case map + 1E58; 1E59; Case map + 1E5A; 1E5B; Case map + 1E5C; 1E5D; Case map + 1E5E; 1E5F; Case map + 1E60; 1E61; Case map + 1E62; 1E63; Case map + 1E64; 1E65; Case map + 1E66; 1E67; Case map + 1E68; 1E69; Case map + 1E6A; 1E6B; Case map + 1E6C; 1E6D; Case map + 1E6E; 1E6F; Case map + 1E70; 1E71; Case map + 1E72; 1E73; Case map + 1E74; 1E75; Case map + 1E76; 1E77; Case map + 1E78; 1E79; Case map + 1E7A; 1E7B; Case map + 1E7C; 1E7D; Case map + 1E7E; 1E7F; Case map + 1E80; 1E81; Case map + 1E82; 1E83; Case map + 1E84; 1E85; Case map + 1E86; 1E87; Case map + 1E88; 1E89; Case map + 1E8A; 1E8B; Case map + 1E8C; 1E8D; Case map + 1E8E; 1E8F; Case map + 1E90; 1E91; Case map + 1E92; 1E93; Case map + 1E94; 1E95; Case map + 1E96; 0068 0331; Case map + 1E97; 0074 0308; Case map + 1E98; 0077 030A; Case map + 1E99; 0079 030A; Case map + 1E9A; 0061 02BE; Case map + 1E9B; 1E61; Case map + 1EA0; 1EA1; Case map + 1EA2; 1EA3; Case map + 1EA4; 1EA5; Case map + 1EA6; 1EA7; Case map + 1EA8; 1EA9; Case map + 1EAA; 1EAB; Case map + 1EAC; 1EAD; Case map + 1EAE; 1EAF; Case map + 1EB0; 1EB1; Case map + 1EB2; 1EB3; Case map + 1EB4; 1EB5; Case map + 1EB6; 1EB7; Case map + 1EB8; 1EB9; Case map + 1EBA; 1EBB; Case map + 1EBC; 1EBD; Case map + 1EBE; 1EBF; Case map + 1EC0; 1EC1; Case map + 1EC2; 1EC3; Case map + 1EC4; 1EC5; Case map + 1EC6; 1EC7; Case map + 1EC8; 1EC9; Case map + 1ECA; 1ECB; Case map + 1ECC; 1ECD; Case map + 1ECE; 1ECF; Case map + 1ED0; 1ED1; Case map + 1ED2; 1ED3; Case map + 1ED4; 1ED5; Case map + 1ED6; 1ED7; Case map + 1ED8; 1ED9; Case map + 1EDA; 1EDB; Case map + 1EDC; 1EDD; Case map + 1EDE; 1EDF; Case map + 1EE0; 1EE1; Case map + 1EE2; 1EE3; Case map + 1EE4; 1EE5; Case map + 1EE6; 1EE7; Case map + 1EE8; 1EE9; Case map + 1EEA; 1EEB; Case map + 1EEC; 1EED; Case map + 1EEE; 1EEF; Case map + 1EF0; 1EF1; Case map + 1EF2; 1EF3; Case map + 1EF4; 1EF5; Case map + 1EF6; 1EF7; Case map + 1EF8; 1EF9; Case map + 1F08; 1F00; Case map + 1F09; 1F01; Case map + 1F0A; 1F02; Case map + 1F0B; 1F03; Case map + 1F0C; 1F04; Case map + 1F0D; 1F05; Case map + 1F0E; 1F06; Case map + 1F0F; 1F07; Case map + 1F18; 1F10; Case map + 1F19; 1F11; Case map + 1F1A; 1F12; Case map + 1F1B; 1F13; Case map + 1F1C; 1F14; Case map + 1F1D; 1F15; Case map + 1F28; 1F20; Case map + 1F29; 1F21; Case map + 1F2A; 1F22; Case map + 1F2B; 1F23; Case map + 1F2C; 1F24; Case map + 1F2D; 1F25; Case map + 1F2E; 1F26; Case map + 1F2F; 1F27; Case map + 1F38; 1F30; Case map + 1F39; 1F31; Case map + 1F3A; 1F32; Case map + 1F3B; 1F33; Case map + 1F3C; 1F34; Case map + 1F3D; 1F35; Case map + 1F3E; 1F36; Case map + 1F3F; 1F37; Case map + 1F48; 1F40; Case map + 1F49; 1F41; Case map + 1F4A; 1F42; Case map + 1F4B; 1F43; Case map + 1F4C; 1F44; Case map + 1F4D; 1F45; Case map + 1F50; 03C5 0313; Case map + 1F52; 03C5 0313 0300; Case map + 1F54; 03C5 0313 0301; Case map + 1F56; 03C5 0313 0342; Case map + 1F59; 1F51; Case map + 1F5B; 1F53; Case map + 1F5D; 1F55; Case map + 1F5F; 1F57; Case map + 1F68; 1F60; Case map + 1F69; 1F61; Case map + 1F6A; 1F62; Case map + 1F6B; 1F63; Case map + 1F6C; 1F64; Case map + 1F6D; 1F65; Case map + 1F6E; 1F66; Case map + 1F6F; 1F67; Case map + 1F80; 1F00 03B9; Case map + 1F81; 1F01 03B9; Case map + 1F82; 1F02 03B9; Case map + 1F83; 1F03 03B9; Case map + 1F84; 1F04 03B9; Case map + 1F85; 1F05 03B9; Case map + 1F86; 1F06 03B9; Case map + 1F87; 1F07 03B9; Case map + 1F88; 1F00 03B9; Case map + 1F89; 1F01 03B9; Case map + 1F8A; 1F02 03B9; Case map + 1F8B; 1F03 03B9; Case map + 1F8C; 1F04 03B9; Case map + 1F8D; 1F05 03B9; Case map + 1F8E; 1F06 03B9; Case map + 1F8F; 1F07 03B9; Case map + 1F90; 1F20 03B9; Case map + 1F91; 1F21 03B9; Case map + 1F92; 1F22 03B9; Case map + 1F93; 1F23 03B9; Case map + 1F94; 1F24 03B9; Case map + 1F95; 1F25 03B9; Case map + 1F96; 1F26 03B9; Case map + 1F97; 1F27 03B9; Case map + 1F98; 1F20 03B9; Case map + 1F99; 1F21 03B9; Case map + 1F9A; 1F22 03B9; Case map + 1F9B; 1F23 03B9; Case map + 1F9C; 1F24 03B9; Case map + 1F9D; 1F25 03B9; Case map + 1F9E; 1F26 03B9; Case map + 1F9F; 1F27 03B9; Case map + 1FA0; 1F60 03B9; Case map + 1FA1; 1F61 03B9; Case map + 1FA2; 1F62 03B9; Case map + 1FA3; 1F63 03B9; Case map + 1FA4; 1F64 03B9; Case map + 1FA5; 1F65 03B9; Case map + 1FA6; 1F66 03B9; Case map + 1FA7; 1F67 03B9; Case map + 1FA8; 1F60 03B9; Case map + 1FA9; 1F61 03B9; Case map + 1FAA; 1F62 03B9; Case map + 1FAB; 1F63 03B9; Case map + 1FAC; 1F64 03B9; Case map + 1FAD; 1F65 03B9; Case map + 1FAE; 1F66 03B9; Case map + 1FAF; 1F67 03B9; Case map + 1FB2; 1F70 03B9; Case map + 1FB3; 03B1 03B9; Case map + 1FB4; 03AC 03B9; Case map + 1FB6; 03B1 0342; Case map + 1FB7; 03B1 0342 03B9; Case map + 1FB8; 1FB0; Case map + 1FB9; 1FB1; Case map + 1FBA; 1F70; Case map + 1FBB; 1F71; Case map + 1FBC; 03B1 03B9; Case map + 1FBE; 03B9; Case map + 1FC2; 1F74 03B9; Case map + 1FC3; 03B7 03B9; Case map + 1FC4; 03AE 03B9; Case map + 1FC6; 03B7 0342; Case map + 1FC7; 03B7 0342 03B9; Case map + 1FC8; 1F72; Case map + 1FC9; 1F73; Case map + 1FCA; 1F74; Case map + 1FCB; 1F75; Case map + 1FCC; 03B7 03B9; Case map + 1FD2; 03B9 0308 0300; Case map + 1FD3; 03B9 0308 0301; Case map + 1FD6; 03B9 0342; Case map + 1FD7; 03B9 0308 0342; Case map + 1FD8; 1FD0; Case map + 1FD9; 1FD1; Case map + 1FDA; 1F76; Case map + 1FDB; 1F77; Case map + 1FE2; 03C5 0308 0300; Case map + 1FE3; 03C5 0308 0301; Case map + 1FE4; 03C1 0313; Case map + 1FE6; 03C5 0342; Case map + 1FE7; 03C5 0308 0342; Case map + 1FE8; 1FE0; Case map + 1FE9; 1FE1; Case map + 1FEA; 1F7A; Case map + 1FEB; 1F7B; Case map + 1FEC; 1FE5; Case map + 1FF2; 1F7C 03B9; Case map + 1FF3; 03C9 03B9; Case map + 1FF4; 03CE 03B9; Case map + 1FF6; 03C9 0342; Case map + 1FF7; 03C9 0342 03B9; Case map + 1FF8; 1F78; Case map + 1FF9; 1F79; Case map + 1FFA; 1F7C; Case map + 1FFB; 1F7D; Case map + 1FFC; 03C9 03B9; Case map + 2126; 03C9; Case map + 212A; 006B; Case map + 212B; 00E5; Case map + 2160; 2170; Case map + 2161; 2171; Case map + 2162; 2172; Case map + 2163; 2173; Case map + 2164; 2174; Case map + 2165; 2175; Case map + 2166; 2176; Case map + 2167; 2177; Case map + 2168; 2178; Case map + 2169; 2179; Case map + 216A; 217A; Case map + 216B; 217B; Case map + 216C; 217C; Case map + 216D; 217D; Case map + 216E; 217E; Case map + 216F; 217F; Case map + 24B6; 24D0; Case map + 24B7; 24D1; Case map + 24B8; 24D2; Case map + 24B9; 24D3; Case map + 24BA; 24D4; Case map + 24BB; 24D5; Case map + 24BC; 24D6; Case map + 24BD; 24D7; Case map + 24BE; 24D8; Case map + 24BF; 24D9; Case map + 24C0; 24DA; Case map + 24C1; 24DB; Case map + 24C2; 24DC; Case map + 24C3; 24DD; Case map + 24C4; 24DE; Case map + 24C5; 24DF; Case map + 24C6; 24E0; Case map + 24C7; 24E1; Case map + 24C8; 24E2; Case map + 24C9; 24E3; Case map + 24CA; 24E4; Case map + 24CB; 24E5; Case map + 24CC; 24E6; Case map + 24CD; 24E7; Case map + 24CE; 24E8; Case map + 24CF; 24E9; Case map + FB00; 0066 0066; Case map + FB01; 0066 0069; Case map + FB02; 0066 006C; Case map + FB03; 0066 0066 0069; Case map + FB04; 0066 0066 006C; Case map + FB05; 0073 0074; Case map + FB06; 0073 0074; Case map + FB13; 0574 0576; Case map + FB14; 0574 0565; Case map + FB15; 0574 056B; Case map + FB16; 057E 0576; Case map + FB17; 0574 056D; Case map + FF21; FF41; Case map + FF22; FF42; Case map + FF23; FF43; Case map + FF24; FF44; Case map + FF25; FF45; Case map + FF26; FF46; Case map + FF27; FF47; Case map + FF28; FF48; Case map + FF29; FF49; Case map + FF2A; FF4A; Case map + FF2B; FF4B; Case map + FF2C; FF4C; Case map + FF2D; FF4D; Case map + FF2E; FF4E; Case map + FF2F; FF4F; Case map + FF30; FF50; Case map + FF31; FF51; Case map + FF32; FF52; Case map + FF33; FF53; Case map + FF34; FF54; Case map + FF35; FF55; Case map + FF36; FF56; Case map + FF37; FF57; Case map + FF38; FF58; Case map + FF39; FF59; Case map + FF3A; FF5A; Case map + 10400; 10428; Case map + 10401; 10429; Case map + 10402; 1042A; Case map + 10403; 1042B; Case map + 10404; 1042C; Case map + 10405; 1042D; Case map + 10406; 1042E; Case map + 10407; 1042F; Case map + 10408; 10430; Case map + 10409; 10431; Case map + 1040A; 10432; Case map + 1040B; 10433; Case map + 1040C; 10434; Case map + 1040D; 10435; Case map + 1040E; 10436; Case map + 1040F; 10437; Case map + 10410; 10438; Case map + 10411; 10439; Case map + 10412; 1043A; Case map + 10413; 1043B; Case map + 10414; 1043C; Case map + 10415; 1043D; Case map + 10416; 1043E; Case map + 10417; 1043F; Case map + 10418; 10440; Case map + 10419; 10441; Case map + 1041A; 10442; Case map + 1041B; 10443; Case map + 1041C; 10444; Case map + 1041D; 10445; Case map + 1041E; 10446; Case map + 1041F; 10447; Case map + 10420; 10448; Case map + 10421; 10449; Case map + 10422; 1044A; Case map + 10423; 1044B; Case map + 10424; 1044C; Case map + 10425; 1044D; Case map + ----- End Table B.3 ----- + + ----- Start Table C.1.1 ----- + 0020; SPACE + ----- End Table C.1.1 ----- + + ----- Start Table C.1.2 ----- + 00A0; NO-BREAK SPACE + 1680; OGHAM SPACE MARK + 2000; EN QUAD + 2001; EM QUAD + 2002; EN SPACE + 2003; EM SPACE + 2004; THREE-PER-EM SPACE + 2005; FOUR-PER-EM SPACE + 2006; SIX-PER-EM SPACE + 2007; FIGURE SPACE + 2008; PUNCTUATION SPACE + 2009; THIN SPACE + 200A; HAIR SPACE + 200B; ZERO WIDTH SPACE + 202F; NARROW NO-BREAK SPACE + 205F; MEDIUM MATHEMATICAL SPACE + 3000; IDEOGRAPHIC SPACE + ----- End Table C.1.2 ----- + + ----- Start Table C.2.1 ----- + 0000-001F; [CONTROL CHARACTERS] + 007F; DELETE + ----- End Table C.2.1 ----- + + ----- Start Table C.2.2 ----- + 0080-009F; [CONTROL CHARACTERS] + 06DD; ARABIC END OF AYAH + 070F; SYRIAC ABBREVIATION MARK + 180E; MONGOLIAN VOWEL SEPARATOR + 200C; ZERO WIDTH NON-JOINER + 200D; ZERO WIDTH JOINER + 2028; LINE SEPARATOR + 2029; PARAGRAPH SEPARATOR + 2060; WORD JOINER + 2061; FUNCTION APPLICATION + 2062; INVISIBLE TIMES + 2063; INVISIBLE SEPARATOR + 206A-206F; [CONTROL CHARACTERS] + FEFF; ZERO WIDTH NO-BREAK SPACE + FFF9-FFFC; [CONTROL CHARACTERS] + 1D173-1D17A; [MUSICAL CONTROL CHARACTERS] + ----- End Table C.2.2 ----- + + ----- Start Table C.3 ----- + E000-F8FF; [PRIVATE USE, PLANE 0] + F0000-FFFFD; [PRIVATE USE, PLANE 15] + 100000-10FFFD; [PRIVATE USE, PLANE 16] + ----- End Table C.3 ----- + + ----- Start Table C.4 ----- + FDD0-FDEF; [NONCHARACTER CODE POINTS] + FFFE-FFFF; [NONCHARACTER CODE POINTS] + 1FFFE-1FFFF; [NONCHARACTER CODE POINTS] + 2FFFE-2FFFF; [NONCHARACTER CODE POINTS] + 3FFFE-3FFFF; [NONCHARACTER CODE POINTS] + 4FFFE-4FFFF; [NONCHARACTER CODE POINTS] + 5FFFE-5FFFF; [NONCHARACTER CODE POINTS] + 6FFFE-6FFFF; [NONCHARACTER CODE POINTS] + 7FFFE-7FFFF; [NONCHARACTER CODE POINTS] + 8FFFE-8FFFF; [NONCHARACTER CODE POINTS] + 9FFFE-9FFFF; [NONCHARACTER CODE POINTS] + AFFFE-AFFFF; [NONCHARACTER CODE POINTS] + BFFFE-BFFFF; [NONCHARACTER CODE POINTS] + CFFFE-CFFFF; [NONCHARACTER CODE POINTS] + DFFFE-DFFFF; [NONCHARACTER CODE POINTS] + EFFFE-EFFFF; [NONCHARACTER CODE POINTS] + FFFFE-FFFFF; [NONCHARACTER CODE POINTS] + 10FFFE-10FFFF; [NONCHARACTER CODE POINTS] + ----- End Table C.4 ----- + + ----- Start Table C.5 ----- + D800-DFFF; [SURROGATE CODES] + ----- End Table C.5 ----- + + ----- Start Table C.6 ----- + FFF9; INTERLINEAR ANNOTATION ANCHOR + FFFA; INTERLINEAR ANNOTATION SEPARATOR + FFFB; INTERLINEAR ANNOTATION TERMINATOR + FFFC; OBJECT REPLACEMENT CHARACTER + FFFD; REPLACEMENT CHARACTER + ----- End Table C.6 ----- + + ----- Start Table C.7 ----- + 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] + ----- End Table C.7 ----- + + ----- Start Table C.8 ----- + 0340; COMBINING GRAVE TONE MARK + 0341; COMBINING ACUTE TONE MARK + 200E; LEFT-TO-RIGHT MARK + 200F; RIGHT-TO-LEFT MARK + 202A; LEFT-TO-RIGHT EMBEDDING + 202B; RIGHT-TO-LEFT EMBEDDING + 202C; POP DIRECTIONAL FORMATTING + 202D; LEFT-TO-RIGHT OVERRIDE + 202E; RIGHT-TO-LEFT OVERRIDE + 206A; INHIBIT SYMMETRIC SWAPPING + 206B; ACTIVATE SYMMETRIC SWAPPING + 206C; INHIBIT ARABIC FORM SHAPING + 206D; ACTIVATE ARABIC FORM SHAPING + 206E; NATIONAL DIGIT SHAPES + 206F; NOMINAL DIGIT SHAPES + ----- End Table C.8 ----- + + ----- Start Table C.9 ----- + E0001; LANGUAGE TAG + E0020-E007F; [TAGGING CHARACTERS] + ----- End Table C.9 ----- + + ----- Start Table D.1 ----- + 05BE + 05C0 + 05C3 + 05D0-05EA + 05F0-05F4 + 061B + 061F + 0621-063A + 0640-064A + 066D-066F + 0671-06D5 + 06DD + 06E5-06E6 + 06FA-06FE + 0700-070D + 0710 + 0712-072C + 0780-07A5 + 07B1 + 200F + FB1D + FB1F-FB28 + FB2A-FB36 + FB38-FB3C + FB3E + FB40-FB41 + FB43-FB44 + FB46-FBB1 + FBD3-FD3D + FD50-FD8F + FD92-FDC7 + FDF0-FDFC + FE70-FE74 + FE76-FEFC + ----- End Table D.1 ----- + + ----- Start Table D.2 ----- + 0041-005A + 0061-007A + 00AA + 00B5 + 00BA + 00C0-00D6 + 00D8-00F6 + 00F8-0220 + 0222-0233 + 0250-02AD + 02B0-02B8 + 02BB-02C1 + 02D0-02D1 + 02E0-02E4 + 02EE + 037A + 0386 + 0388-038A + 038C + 038E-03A1 + 03A3-03CE + 03D0-03F5 + 0400-0482 + 048A-04CE + 04D0-04F5 + 04F8-04F9 + 0500-050F + 0531-0556 + 0559-055F + 0561-0587 + 0589 + 0903 + 0905-0939 + 093D-0940 + 0949-094C + 0950 + 0958-0961 + 0964-0970 + 0982-0983 + 0985-098C + 098F-0990 + 0993-09A8 + 09AA-09B0 + 09B2 + 09B6-09B9 + 09BE-09C0 + 09C7-09C8 + 09CB-09CC + 09D7 + 09DC-09DD + 09DF-09E1 + 09E6-09F1 + 09F4-09FA + 0A05-0A0A + 0A0F-0A10 + 0A13-0A28 + 0A2A-0A30 + 0A32-0A33 + 0A35-0A36 + 0A38-0A39 + 0A3E-0A40 + 0A59-0A5C + 0A5E + 0A66-0A6F + 0A72-0A74 + 0A83 + 0A85-0A8B + 0A8D + 0A8F-0A91 + 0A93-0AA8 + 0AAA-0AB0 + 0AB2-0AB3 + 0AB5-0AB9 + 0ABD-0AC0 + 0AC9 + 0ACB-0ACC + 0AD0 + 0AE0 + 0AE6-0AEF + 0B02-0B03 + 0B05-0B0C + 0B0F-0B10 + 0B13-0B28 + 0B2A-0B30 + 0B32-0B33 + 0B36-0B39 + 0B3D-0B3E + 0B40 + 0B47-0B48 + 0B4B-0B4C + 0B57 + 0B5C-0B5D + 0B5F-0B61 + 0B66-0B70 + 0B83 + 0B85-0B8A + 0B8E-0B90 + 0B92-0B95 + 0B99-0B9A + 0B9C + 0B9E-0B9F + 0BA3-0BA4 + 0BA8-0BAA + 0BAE-0BB5 + 0BB7-0BB9 + 0BBE-0BBF + 0BC1-0BC2 + 0BC6-0BC8 + 0BCA-0BCC + 0BD7 + 0BE7-0BF2 + 0C01-0C03 + 0C05-0C0C + 0C0E-0C10 + 0C12-0C28 + 0C2A-0C33 + 0C35-0C39 + 0C41-0C44 + 0C60-0C61 + 0C66-0C6F + 0C82-0C83 + 0C85-0C8C + 0C8E-0C90 + 0C92-0CA8 + 0CAA-0CB3 + 0CB5-0CB9 + 0CBE + 0CC0-0CC4 + 0CC7-0CC8 + 0CCA-0CCB + 0CD5-0CD6 + 0CDE + 0CE0-0CE1 + 0CE6-0CEF + 0D02-0D03 + 0D05-0D0C + 0D0E-0D10 + 0D12-0D28 + 0D2A-0D39 + 0D3E-0D40 + 0D46-0D48 + 0D4A-0D4C + 0D57 + 0D60-0D61 + 0D66-0D6F + 0D82-0D83 + 0D85-0D96 + 0D9A-0DB1 + 0DB3-0DBB + 0DBD + 0DC0-0DC6 + 0DCF-0DD1 + 0DD8-0DDF + 0DF2-0DF4 + 0E01-0E30 + 0E32-0E33 + 0E40-0E46 + 0E4F-0E5B + 0E81-0E82 + 0E84 + 0E87-0E88 + 0E8A + 0E8D + 0E94-0E97 + 0E99-0E9F + 0EA1-0EA3 + 0EA5 + 0EA7 + 0EAA-0EAB + 0EAD-0EB0 + 0EB2-0EB3 + 0EBD + 0EC0-0EC4 + 0EC6 + 0ED0-0ED9 + 0EDC-0EDD + 0F00-0F17 + 0F1A-0F34 + 0F36 + 0F38 + 0F3E-0F47 + 0F49-0F6A + 0F7F + 0F85 + 0F88-0F8B + 0FBE-0FC5 + 0FC7-0FCC + 0FCF + 1000-1021 + 1023-1027 + 1029-102A + 102C + 1031 + 1038 + 1040-1057 + 10A0-10C5 + 10D0-10F8 + 10FB + 1100-1159 + 115F-11A2 + 11A8-11F9 + 1200-1206 + 1208-1246 + 1248 + 124A-124D + 1250-1256 + 1258 + 125A-125D + 1260-1286 + 1288 + 128A-128D + 1290-12AE + 12B0 + 12B2-12B5 + 12B8-12BE + 12C0 + 12C2-12C5 + 12C8-12CE + 12D0-12D6 + 12D8-12EE + 12F0-130E + 1310 + 1312-1315 + 1318-131E + 1320-1346 + 1348-135A + 1361-137C + 13A0-13F4 + 1401-1676 + 1681-169A + 16A0-16F0 + 1700-170C + 170E-1711 + 1720-1731 + 1735-1736 + 1740-1751 + 1760-176C + 176E-1770 + 1780-17B6 + 17BE-17C5 + 17C7-17C8 + 17D4-17DA + 17DC + 17E0-17E9 + 1810-1819 + 1820-1877 + 1880-18A8 + 1E00-1E9B + 1EA0-1EF9 + 1F00-1F15 + 1F18-1F1D + 1F20-1F45 + 1F48-1F4D + 1F50-1F57 + 1F59 + 1F5B + 1F5D + 1F5F-1F7D + 1F80-1FB4 + 1FB6-1FBC + 1FBE + 1FC2-1FC4 + 1FC6-1FCC + 1FD0-1FD3 + 1FD6-1FDB + 1FE0-1FEC + 1FF2-1FF4 + 1FF6-1FFC + 200E + 2071 + 207F + 2102 + 2107 + 210A-2113 + 2115 + 2119-211D + 2124 + 2126 + 2128 + 212A-212D + 212F-2131 + 2133-2139 + 213D-213F + 2145-2149 + 2160-2183 + 2336-237A + 2395 + 249C-24E9 + 3005-3007 + 3021-3029 + 3031-3035 + 3038-303C + 3041-3096 + 309D-309F + 30A1-30FA + 30FC-30FF + 3105-312C + 3131-318E + 3190-31B7 + 31F0-321C + 3220-3243 + 3260-327B + 327F-32B0 + 32C0-32CB + 32D0-32FE + 3300-3376 + 337B-33DD + 33E0-33FE + 3400-4DB5 + 4E00-9FA5 + A000-A48C + AC00-D7A3 + D800-FA2D + FA30-FA6A + FB00-FB06 + FB13-FB17 + FF21-FF3A + FF41-FF5A + FF66-FFBE + FFC2-FFC7 + FFCA-FFCF + FFD2-FFD7 + FFDA-FFDC + 10300-1031E + 10320-10323 + 10330-1034A + 10400-10425 + 10428-1044D + 1D000-1D0F5 + 1D100-1D126 + 1D12A-1D166 + 1D16A-1D172 + 1D183-1D184 + 1D18C-1D1A9 + 1D1AE-1D1DD + 1D400-1D454 + 1D456-1D49C + 1D49E-1D49F + 1D4A2 + 1D4A5-1D4A6 + 1D4A9-1D4AC + 1D4AE-1D4B9 + 1D4BB + 1D4BD-1D4C0 + 1D4C2-1D4C3 + 1D4C5-1D505 + 1D507-1D50A + 1D50D-1D514 + 1D516-1D51C + 1D51E-1D539 + 1D53B-1D53E + 1D540-1D544 + 1D546 + 1D54A-1D550 + 1D552-1D6A3 + 1D6A8-1D7C9 + 20000-2A6D6 + 2F800-2FA1D + F0000-FFFFD + 100000-10FFFD + ----- End Table D.2 ----- diff --git a/doc/stamp-vti b/doc/stamp-vti new file mode 100644 index 0000000..1001413 --- /dev/null +++ b/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 28 May 2009 +@set UPDATED-MONTH May 2009 +@set EDITION 1.15 +@set VERSION 1.15 diff --git a/doc/texi/idn-free.c.texi b/doc/texi/idn-free.c.texi new file mode 100644 index 0000000..7da46c1 --- /dev/null +++ b/doc/texi/idn-free.c.texi @@ -0,0 +1,15 @@ +@subheading idn_free +@anchor{idn_free} +@deftypefun {void} {idn_free} (void * @var{ptr}) +@var{ptr}: memory region to deallocate, or @code{NULL}. + +Deallocates memory region by calling @code{free()}. If @code{ptr} is @code{NULL} no +operation is performed. + +Normally applications de-allocate strings allocated by libidn by +calling @code{free()} directly. Under Windows, different parts of the +same application may use different heap memory, and then it is +important to deallocate memory allocated within the same module +that allocated it. This function makes that possible. +@end deftypefun + diff --git a/doc/texi/idn_free.texi b/doc/texi/idn_free.texi new file mode 100644 index 0000000..7da46c1 --- /dev/null +++ b/doc/texi/idn_free.texi @@ -0,0 +1,15 @@ +@subheading idn_free +@anchor{idn_free} +@deftypefun {void} {idn_free} (void * @var{ptr}) +@var{ptr}: memory region to deallocate, or @code{NULL}. + +Deallocates memory region by calling @code{free()}. If @code{ptr} is @code{NULL} no +operation is performed. + +Normally applications de-allocate strings allocated by libidn by +calling @code{free()} directly. Under Windows, different parts of the +same application may use different heap memory, and then it is +important to deallocate memory allocated within the same module +that allocated it. This function makes that possible. +@end deftypefun + diff --git a/doc/texi/idna.c.texi b/doc/texi/idna.c.texi new file mode 100644 index 0000000..8b36c26 --- /dev/null +++ b/doc/texi/idna.c.texi @@ -0,0 +1,222 @@ +@subheading idna_to_ascii_4i +@anchor{idna_to_ascii_4i} +@deftypefun {int} {idna_to_ascii_4i} (const uint32_t * @var{in}, size_t @var{inlen}, char * @var{out}, int @var{flags}) +@var{in}: input array with unicode code points. + +@var{inlen}: length of input array with unicode code points. + +@var{out}: output zero terminated string that must have room for at +least 63 characters plus the terminating zero. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +The ToASCII operation takes a sequence of Unicode code points that +make up one domain label and transforms it into a sequence of code +points in the ASCII range (0..7F). If ToASCII succeeds, the +original sequence and the resulting sequence are equivalent labels. + +It is important to note that the ToASCII operation can fail. ToASCII +fails if any step of it fails. If any step of the ToASCII operation +fails on any label in a domain name, that domain name MUST NOT be used +as an internationalized domain name. The method for deadling with this +failure is application-specific. + +The inputs to ToASCII are a sequence of code points, the AllowUnassigned +flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a +sequence of ASCII code points or a failure condition. + +ToASCII never alters a sequence of code points that are all in the ASCII +range to begin with (although it could fail). Applying the ToASCII +operation multiple times has exactly the same effect as applying it just +once. + +@strong{Return value:} Returns 0 on success, or an @code{Idna_rc} error code. +@end deftypefun + +@subheading idna_to_unicode_44i +@anchor{idna_to_unicode_44i} +@deftypefun {int} {idna_to_unicode_44i} (const uint32_t * @var{in}, size_t @var{inlen}, uint32_t * @var{out}, size_t * @var{outlen}, int @var{flags}) +@var{in}: input array with unicode code points. + +@var{inlen}: length of input array with unicode code points. + +@var{out}: output array with unicode code points. + +@var{outlen}: on input, maximum size of output array with unicode code points, +on exit, actual size of output array with unicode code points. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +The ToUnicode operation takes a sequence of Unicode code points +that make up one domain label and returns a sequence of Unicode +code points. If the input sequence is a label in ACE form, then the +result is an equivalent internationalized label that is not in ACE +form, otherwise the original sequence is returned unaltered. + +ToUnicode never fails. If any step fails, then the original input +sequence is returned immediately in that step. + +The Punycode decoder can never output more code points than it +inputs, but Nameprep can, and therefore ToUnicode can. Note that +the number of octets needed to represent a sequence of code points +depends on the particular character encoding used. + +The inputs to ToUnicode are a sequence of code points, the +AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of +ToUnicode is always a sequence of Unicode code points. + +@strong{Return value:} Returns @code{Idna_rc} error condition, but it must only be +used for debugging purposes. The output buffer is always +guaranteed to contain the correct data according to the +specification (sans malloc induced errors). NB! This means that +you normally ignore the return code from this function, as +checking it means breaking the standard. +@end deftypefun + +@subheading idna_to_ascii_4z +@anchor{idna_to_ascii_4z} +@deftypefun {int} {idna_to_ascii_4z} (const uint32_t * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input Unicode string. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert UCS-4 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_ascii_8z +@anchor{idna_to_ascii_8z} +@deftypefun {int} {idna_to_ascii_8z} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input UTF-8 string. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert UTF-8 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_ascii_lz +@anchor{idna_to_ascii_lz} +@deftypefun {int} {idna_to_ascii_lz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input string encoded in the current locale's +character set. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert domain name in the locale's encoding to ASCII string. The +domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_unicode_4z4z +@anchor{idna_to_unicode_4z4z} +@deftypefun {int} {idna_to_unicode_4z4z} (const uint32_t * @var{input}, uint32_t ** @var{output}, int @var{flags}) +@var{input}: zero-terminated Unicode string. + +@var{output}: pointer to newly allocated output Unicode string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UCS-4 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_unicode_8z4z +@anchor{idna_to_unicode_8z4z} +@deftypefun {int} {idna_to_unicode_8z4z} (const char * @var{input}, uint32_t ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output Unicode string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_unicode_8z8z +@anchor{idna_to_unicode_8z8z} +@deftypefun {int} {idna_to_unicode_8z8z} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output UTF-8 string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +UTF-8 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_unicode_8zlz +@anchor{idna_to_unicode_8zlz} +@deftypefun {int} {idna_to_unicode_8zlz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output string encoded in the +current locale's character set. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +string encoded in the current locale's character set. The domain +name may contain several labels, separated by dots. The output +buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + +@subheading idna_to_unicode_lzlz +@anchor{idna_to_unicode_lzlz} +@deftypefun {int} {idna_to_unicode_lzlz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated string encoded in the current locale's +character set. + +@var{output}: pointer to newly allocated output string encoded in the +current locale's character set. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in the locale's character +set into a string encoded in the current locale's character set. +The domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_strerror.texi b/doc/texi/idna_strerror.texi new file mode 100644 index 0000000..7674516 --- /dev/null +++ b/doc/texi/idna_strerror.texi @@ -0,0 +1,46 @@ +@subheading idna_strerror +@anchor{idna_strerror} +@deftypefun {const char *} {idna_strerror} (Idna_rc @var{rc}) +@var{rc}: an @code{Idna_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{IDNA_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{IDNA_STRINGPREP_ERROR:} Error during string preparation. + +@strong{IDNA_PUNYCODE_ERROR:} Error during punycode operation. + +@strong{IDNA_CONTAINS_NON_LDH:} For IDNA_USE_STD3_ASCII_RULES, indicate that +the string contains non-LDH ASCII characters. + +@strong{IDNA_CONTAINS_MINUS:} For IDNA_USE_STD3_ASCII_RULES, indicate that +the string contains a leading or trailing hyphen-minus (U+002D). + +@strong{IDNA_INVALID_LENGTH:} The final output string is not within the +(inclusive) range 1 to 63 characters. + +@strong{IDNA_NO_ACE_PREFIX:} The string does not contain the ACE prefix +(for ToUnicode). + +@strong{IDNA_ROUNDTRIP_VERIFY_ERROR:} The ToASCII operation on output +string does not equal the input. + +@strong{IDNA_CONTAINS_ACE_PREFIX:} The input contains the ACE prefix (for +ToASCII). + +@strong{IDNA_ICONV_ERROR:} Could not convert string in locale encoding. + +@strong{IDNA_MALLOC_ERROR:} Could not allocate buffer (this is typically a +fatal error). + +@strong{IDNA_DLOPEN_ERROR:} Could not dlopen the libcidn DSO (only used +internally in libc). + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/idna_to_ascii_4i.texi b/doc/texi/idna_to_ascii_4i.texi new file mode 100644 index 0000000..6633090 --- /dev/null +++ b/doc/texi/idna_to_ascii_4i.texi @@ -0,0 +1,36 @@ +@subheading idna_to_ascii_4i +@anchor{idna_to_ascii_4i} +@deftypefun {int} {idna_to_ascii_4i} (const uint32_t * @var{in}, size_t @var{inlen}, char * @var{out}, int @var{flags}) +@var{in}: input array with unicode code points. + +@var{inlen}: length of input array with unicode code points. + +@var{out}: output zero terminated string that must have room for at +least 63 characters plus the terminating zero. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +The ToASCII operation takes a sequence of Unicode code points that +make up one domain label and transforms it into a sequence of code +points in the ASCII range (0..7F). If ToASCII succeeds, the +original sequence and the resulting sequence are equivalent labels. + +It is important to note that the ToASCII operation can fail. ToASCII +fails if any step of it fails. If any step of the ToASCII operation +fails on any label in a domain name, that domain name MUST NOT be used +as an internationalized domain name. The method for deadling with this +failure is application-specific. + +The inputs to ToASCII are a sequence of code points, the AllowUnassigned +flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a +sequence of ASCII code points or a failure condition. + +ToASCII never alters a sequence of code points that are all in the ASCII +range to begin with (although it could fail). Applying the ToASCII +operation multiple times has exactly the same effect as applying it just +once. + +@strong{Return value:} Returns 0 on success, or an @code{Idna_rc} error code. +@end deftypefun + diff --git a/doc/texi/idna_to_ascii_4z.texi b/doc/texi/idna_to_ascii_4z.texi new file mode 100644 index 0000000..6882e73 --- /dev/null +++ b/doc/texi/idna_to_ascii_4z.texi @@ -0,0 +1,17 @@ +@subheading idna_to_ascii_4z +@anchor{idna_to_ascii_4z} +@deftypefun {int} {idna_to_ascii_4z} (const uint32_t * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input Unicode string. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert UCS-4 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_ascii_8z.texi b/doc/texi/idna_to_ascii_8z.texi new file mode 100644 index 0000000..bd279c4 --- /dev/null +++ b/doc/texi/idna_to_ascii_8z.texi @@ -0,0 +1,17 @@ +@subheading idna_to_ascii_8z +@anchor{idna_to_ascii_8z} +@deftypefun {int} {idna_to_ascii_8z} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input UTF-8 string. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert UTF-8 domain name to ASCII string. The domain name may +contain several labels, separated by dots. The output buffer must +be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_ascii_lz.texi b/doc/texi/idna_to_ascii_lz.texi new file mode 100644 index 0000000..be5465d --- /dev/null +++ b/doc/texi/idna_to_ascii_lz.texi @@ -0,0 +1,18 @@ +@subheading idna_to_ascii_lz +@anchor{idna_to_ascii_lz} +@deftypefun {int} {idna_to_ascii_lz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero terminated input string encoded in the current locale's +character set. + +@var{output}: pointer to newly allocated output string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert domain name in the locale's encoding to ASCII string. The +domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_44i.texi b/doc/texi/idna_to_unicode_44i.texi new file mode 100644 index 0000000..a1d7d4e --- /dev/null +++ b/doc/texi/idna_to_unicode_44i.texi @@ -0,0 +1,41 @@ +@subheading idna_to_unicode_44i +@anchor{idna_to_unicode_44i} +@deftypefun {int} {idna_to_unicode_44i} (const uint32_t * @var{in}, size_t @var{inlen}, uint32_t * @var{out}, size_t * @var{outlen}, int @var{flags}) +@var{in}: input array with unicode code points. + +@var{inlen}: length of input array with unicode code points. + +@var{out}: output array with unicode code points. + +@var{outlen}: on input, maximum size of output array with unicode code points, +on exit, actual size of output array with unicode code points. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +The ToUnicode operation takes a sequence of Unicode code points +that make up one domain label and returns a sequence of Unicode +code points. If the input sequence is a label in ACE form, then the +result is an equivalent internationalized label that is not in ACE +form, otherwise the original sequence is returned unaltered. + +ToUnicode never fails. If any step fails, then the original input +sequence is returned immediately in that step. + +The Punycode decoder can never output more code points than it +inputs, but Nameprep can, and therefore ToUnicode can. Note that +the number of octets needed to represent a sequence of code points +depends on the particular character encoding used. + +The inputs to ToUnicode are a sequence of code points, the +AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of +ToUnicode is always a sequence of Unicode code points. + +@strong{Return value:} Returns @code{Idna_rc} error condition, but it must only be +used for debugging purposes. The output buffer is always +guaranteed to contain the correct data according to the +specification (sans malloc induced errors). NB! This means that +you normally ignore the return code from this function, as +checking it means breaking the standard. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_4z4z.texi b/doc/texi/idna_to_unicode_4z4z.texi new file mode 100644 index 0000000..5c45829 --- /dev/null +++ b/doc/texi/idna_to_unicode_4z4z.texi @@ -0,0 +1,18 @@ +@subheading idna_to_unicode_4z4z +@anchor{idna_to_unicode_4z4z} +@deftypefun {int} {idna_to_unicode_4z4z} (const uint32_t * @var{input}, uint32_t ** @var{output}, int @var{flags}) +@var{input}: zero-terminated Unicode string. + +@var{output}: pointer to newly allocated output Unicode string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UCS-4 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_8z4z.texi b/doc/texi/idna_to_unicode_8z4z.texi new file mode 100644 index 0000000..ef32d1a --- /dev/null +++ b/doc/texi/idna_to_unicode_8z4z.texi @@ -0,0 +1,18 @@ +@subheading idna_to_unicode_8z4z +@anchor{idna_to_unicode_8z4z} +@deftypefun {int} {idna_to_unicode_8z4z} (const char * @var{input}, uint32_t ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output Unicode string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +UCS-4 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_8z8z.texi b/doc/texi/idna_to_unicode_8z8z.texi new file mode 100644 index 0000000..49d1c04 --- /dev/null +++ b/doc/texi/idna_to_unicode_8z8z.texi @@ -0,0 +1,18 @@ +@subheading idna_to_unicode_8z8z +@anchor{idna_to_unicode_8z8z} +@deftypefun {int} {idna_to_unicode_8z8z} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output UTF-8 string. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +UTF-8 string. The domain name may contain several labels, +separated by dots. The output buffer must be deallocated by the +caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_8zlz.texi b/doc/texi/idna_to_unicode_8zlz.texi new file mode 100644 index 0000000..7ca0e7c --- /dev/null +++ b/doc/texi/idna_to_unicode_8zlz.texi @@ -0,0 +1,19 @@ +@subheading idna_to_unicode_8zlz +@anchor{idna_to_unicode_8zlz} +@deftypefun {int} {idna_to_unicode_8zlz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated UTF-8 string. + +@var{output}: pointer to newly allocated output string encoded in the +current locale's character set. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in UTF-8 format into a +string encoded in the current locale's character set. The domain +name may contain several labels, separated by dots. The output +buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/idna_to_unicode_lzlz.texi b/doc/texi/idna_to_unicode_lzlz.texi new file mode 100644 index 0000000..30b43f3 --- /dev/null +++ b/doc/texi/idna_to_unicode_lzlz.texi @@ -0,0 +1,20 @@ +@subheading idna_to_unicode_lzlz +@anchor{idna_to_unicode_lzlz} +@deftypefun {int} {idna_to_unicode_lzlz} (const char * @var{input}, char ** @var{output}, int @var{flags}) +@var{input}: zero-terminated string encoded in the current locale's +character set. + +@var{output}: pointer to newly allocated output string encoded in the +current locale's character set. + +@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or +@code{IDNA_USE_STD3_ASCII_RULES}. + +Convert possibly ACE encoded domain name in the locale's character +set into a string encoded in the current locale's character set. +The domain name may contain several labels, separated by dots. The +output buffer must be deallocated by the caller. + +@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code. +@end deftypefun + diff --git a/doc/texi/nfkc.c.texi b/doc/texi/nfkc.c.texi new file mode 100644 index 0000000..d5be453 --- /dev/null +++ b/doc/texi/nfkc.c.texi @@ -0,0 +1,107 @@ +@subheading stringprep_utf8_to_unichar +@anchor{stringprep_utf8_to_unichar} +@deftypefun {uint32_t} {stringprep_utf8_to_unichar} (const char * @var{p}) +@var{p}: a pointer to Unicode character encoded as UTF-8 + +Converts a sequence of bytes encoded as UTF-8 to a Unicode character. +If @code{p} does not point to a valid UTF-8 encoded character, results are +undefined. + +@strong{Return value:} the resulting character. +@end deftypefun + +@subheading stringprep_unichar_to_utf8 +@anchor{stringprep_unichar_to_utf8} +@deftypefun {int} {stringprep_unichar_to_utf8} (uint32_t @var{c}, char * @var{outbuf}) +@var{c}: a ISO10646 character code + +@var{outbuf}: output buffer, must have at least 6 bytes of space. +If @code{NULL}, the length will be computed and returned +and nothing will be written to @code{outbuf}. + +Converts a single character to UTF-8. + +@strong{Return value:} number of bytes written. +@end deftypefun + +@subheading stringprep_utf8_to_ucs4 +@anchor{stringprep_utf8_to_ucs4} +@deftypefun {uint32_t *} {stringprep_utf8_to_ucs4} (const char * @var{str}, ssize_t @var{len}, size_t * @var{items_written}) +@var{str}: a UTF-8 encoded string + +@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then +the string is nul-terminated. + +@var{items_written}: location to store the number of characters in the +result, or @code{NULL}. + +Convert a string from UTF-8 to a 32-bit fixed width +representation as UCS-4, assuming valid UTF-8 input. +This function does no error checking on the input. + +@strong{Return value:} a pointer to a newly allocated UCS-4 string. +This value must be deallocated by the caller. +@end deftypefun + +@subheading stringprep_ucs4_to_utf8 +@anchor{stringprep_ucs4_to_utf8} +@deftypefun {char *} {stringprep_ucs4_to_utf8} (const uint32_t * @var{str}, ssize_t @var{len}, size_t * @var{items_read}, size_t * @var{items_written}) +@var{str}: a UCS-4 encoded string + +@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then +the string is terminated with a 0 character. + +@var{items_read}: location to store number of characters read read, or @code{NULL}. + +@var{items_written}: location to store number of bytes written or @code{NULL}. +The value here stored does not include the trailing 0 +byte. + +Convert a string from a 32-bit fixed width representation as UCS-4. +to UTF-8. The result will be terminated with a 0 byte. + +@strong{Return value:} a pointer to a newly allocated UTF-8 string. +This value must be deallocated by the caller. +If an error occurs, @code{NULL} will be returned and @code{error} +set. +@end deftypefun + +@subheading stringprep_utf8_nfkc_normalize +@anchor{stringprep_utf8_nfkc_normalize} +@deftypefun {char *} {stringprep_utf8_nfkc_normalize} (const char * @var{str}, ssize_t @var{len}) +@var{str}: a UTF-8 encoded string. + +@var{len}: length of @code{str}, in bytes, or -1 if @code{str} is nul-terminated. + +Converts a string into canonical form, standardizing +such issues as whether a character with an accent +is represented as a base character and combining +accent or as a single precomposed character. + +The normalization mode is NFKC (ALL COMPOSE). It standardizes +differences that do not affect the text content, such as the +above-mentioned accent representation. It standardizes the +"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to +the standard forms (in this case DIGIT THREE). Formatting +information may be lost but for most text operations such +characters should be considered the same. It returns a result with +composed forms rather than a maximally decomposed form. + +@strong{Return value:} a newly allocated string, that is the +NFKC normalized form of @code{str}. +@end deftypefun + +@subheading stringprep_ucs4_nfkc_normalize +@anchor{stringprep_ucs4_nfkc_normalize} +@deftypefun {uint32_t *} {stringprep_ucs4_nfkc_normalize} (uint32_t * @var{str}, ssize_t @var{len}) +@var{str}: a Unicode string. + +@var{len}: length of @code{str} array, or -1 if @code{str} is nul-terminated. + +Converts UCS4 string into UTF-8 and runs +@code{stringprep_utf8_nfkc_normalize()}. + +@strong{Return value:} a newly allocated Unicode string, that is the NFKC +normalized form of @code{str}. +@end deftypefun + diff --git a/doc/texi/pr29.c.texi b/doc/texi/pr29.c.texi new file mode 100644 index 0000000..4f5e489 --- /dev/null +++ b/doc/texi/pr29.c.texi @@ -0,0 +1,48 @@ +@subheading pr29_4 +@anchor{pr29_4} +@deftypefun {int} {pr29_4} (const uint32_t * @var{in}, size_t @var{len}) +@var{in}: input array with unicode code points. + +@var{len}: length of input array with unicode code points. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations). +@end deftypefun + +@subheading pr29_4z +@anchor{pr29_4z} +@deftypefun {int} {pr29_4z} (const uint32_t * @var{in}) +@var{in}: zero terminated array of Unicode code points. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations). +@end deftypefun + +@subheading pr29_8z +@anchor{pr29_8z} +@deftypefun {int} {pr29_8z} (const char * @var{in}) +@var{in}: zero terminated input UTF-8 string. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations), or @code{PR29_STRINGPREP_ERROR} if there was a +problem converting the string from UTF-8 to UCS-4. +@end deftypefun + diff --git a/doc/texi/pr29_4.texi b/doc/texi/pr29_4.texi new file mode 100644 index 0000000..51649fe --- /dev/null +++ b/doc/texi/pr29_4.texi @@ -0,0 +1,17 @@ +@subheading pr29_4 +@anchor{pr29_4} +@deftypefun {int} {pr29_4} (const uint32_t * @var{in}, size_t @var{len}) +@var{in}: input array with unicode code points. + +@var{len}: length of input array with unicode code points. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations). +@end deftypefun + diff --git a/doc/texi/pr29_4z.texi b/doc/texi/pr29_4z.texi new file mode 100644 index 0000000..2a79bfe --- /dev/null +++ b/doc/texi/pr29_4z.texi @@ -0,0 +1,15 @@ +@subheading pr29_4z +@anchor{pr29_4z} +@deftypefun {int} {pr29_4z} (const uint32_t * @var{in}) +@var{in}: zero terminated array of Unicode code points. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations). +@end deftypefun + diff --git a/doc/texi/pr29_8z.texi b/doc/texi/pr29_8z.texi new file mode 100644 index 0000000..8516b2f --- /dev/null +++ b/doc/texi/pr29_8z.texi @@ -0,0 +1,16 @@ +@subheading pr29_8z +@anchor{pr29_8z} +@deftypefun {int} {pr29_8z} (const char * @var{in}) +@var{in}: zero terminated input UTF-8 string. + +Check the input to see if it may be normalized into different +strings by different NFKC implementations, due to an anomaly in the +NFKC specifications. + +@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success, +and @code{PR29_PROBLEM} if the input sequence is a "problem sequence" +(i.e., may be normalized into different strings by different +implementations), or @code{PR29_STRINGPREP_ERROR} if there was a +problem converting the string from UTF-8 to UCS-4. +@end deftypefun + diff --git a/doc/texi/pr29_strerror.texi b/doc/texi/pr29_strerror.texi new file mode 100644 index 0000000..fd6b822 --- /dev/null +++ b/doc/texi/pr29_strerror.texi @@ -0,0 +1,21 @@ +@subheading pr29_strerror +@anchor{pr29_strerror} +@deftypefun {const char *} {pr29_strerror} (Pr29_rc @var{rc}) +@var{rc}: an @code{Pr29_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{PR29_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{PR29_PROBLEM:} A problem sequence was encountered. + +@strong{PR29_STRINGPREP_ERROR:} The character set conversion failed (only +for @code{pr29_8()} and @code{pr29_8z()}). + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/punycode.c.texi b/doc/texi/punycode.c.texi new file mode 100644 index 0000000..8c7887c --- /dev/null +++ b/doc/texi/punycode.c.texi @@ -0,0 +1,83 @@ +@subheading punycode_encode +@anchor{punycode_encode} +@deftypefun {int} {punycode_encode} (size_t @var{input_length}, const punycode_uint [] @var{input}, const unsigned char [] @var{case_flags}, size_t * @var{output_length}, char [] @var{output}) +@var{input_length}: The number of code points in the @code{input} array and +the number of flags in the @code{case_flags} array. + +@var{input}: An array of code points. They are presumed to be Unicode +code points, but that is not strictly REQUIRED. The array +contains code points, not code units. UTF-16 uses code units +D800 through DFFF to refer to code points 10000..10FFFF. The +code points D800..DFFF do not occur in any valid Unicode string. +The code points that can occur in Unicode strings (0..D7FF and +E000..10FFFF) are also called Unicode scalar values. + +@var{case_flags}: A @code{NULL} pointer or an array of boolean values parallel +to the @code{input} array. Nonzero (true, flagged) suggests that the +corresponding Unicode character be forced to uppercase after +being decoded (if possible), and zero (false, unflagged) suggests +that it be forced to lowercase (if possible). ASCII code points +(0..7F) are encoded literally, except that ASCII letters are +forced to uppercase or lowercase according to the corresponding +case flags. If @code{case_flags} is a @code{NULL} pointer then ASCII letters +are left as they are, and other code points are treated as +unflagged. + +@var{output_length}: The caller passes in the maximum number of ASCII +code points that it can receive. On successful return it will +contain the number of ASCII code points actually output. + +@var{output}: An array of ASCII code points. It is *not* +null-terminated; it will contain zeros if and only if the @code{input} +contains zeros. (Of course the caller can leave room for a +terminator and add one if needed.) + +Converts a sequence of code points (presumed to be Unicode code +points) to Punycode. + +@strong{Return value:} The return value can be any of the @code{Punycode_status} +values defined above except @code{PUNYCODE_BAD_INPUT}. If not +@code{PUNYCODE_SUCCESS}, then @code{output_size} and @code{output} might contain +garbage. +@end deftypefun + +@subheading punycode_decode +@anchor{punycode_decode} +@deftypefun {int} {punycode_decode} (size_t @var{input_length}, const char [] @var{input}, size_t * @var{output_length}, punycode_uint [] @var{output}, unsigned char [] @var{case_flags}) +@var{input_length}: The number of ASCII code points in the @code{input} array. + +@var{input}: An array of ASCII code points (0..7F). + +@var{output_length}: The caller passes in the maximum number of code +points that it can receive into the @code{output} array (which is also +the maximum number of flags that it can receive into the +@code{case_flags} array, if @code{case_flags} is not a @code{NULL} pointer). On +successful return it will contain the number of code points +actually output (which is also the number of flags actually +output, if case_flags is not a null pointer). The decoder will +never need to output more code points than the number of ASCII +code points in the input, because of the way the encoding is +defined. The number of code points output cannot exceed the +maximum possible value of a punycode_uint, even if the supplied +@code{output_length} is greater than that. + +@var{output}: An array of code points like the input argument of +@code{punycode_encode()} (see above). + +@var{case_flags}: A @code{NULL} pointer (if the flags are not needed by the +caller) or an array of boolean values parallel to the @code{output} +array. Nonzero (true, flagged) suggests that the corresponding +Unicode character be forced to uppercase by the caller (if +possible), and zero (false, unflagged) suggests that it be forced +to lowercase (if possible). ASCII code points (0..7F) are output +already in the proper case, but their flags will be set +appropriately so that applying the flags would be harmless. + +Converts Punycode to a sequence of code points (presumed to be +Unicode code points). + +@strong{Return value:} The return value can be any of the @code{Punycode_status} +values defined above. If not @code{PUNYCODE_SUCCESS}, then +@code{output_length}, @code{output}, and @code{case_flags} might contain garbage. +@end deftypefun + diff --git a/doc/texi/punycode_decode.texi b/doc/texi/punycode_decode.texi new file mode 100644 index 0000000..323daa1 --- /dev/null +++ b/doc/texi/punycode_decode.texi @@ -0,0 +1,40 @@ +@subheading punycode_decode +@anchor{punycode_decode} +@deftypefun {int} {punycode_decode} (size_t @var{input_length}, const char [] @var{input}, size_t * @var{output_length}, punycode_uint [] @var{output}, unsigned char [] @var{case_flags}) +@var{input_length}: The number of ASCII code points in the @code{input} array. + +@var{input}: An array of ASCII code points (0..7F). + +@var{output_length}: The caller passes in the maximum number of code +points that it can receive into the @code{output} array (which is also +the maximum number of flags that it can receive into the +@code{case_flags} array, if @code{case_flags} is not a @code{NULL} pointer). On +successful return it will contain the number of code points +actually output (which is also the number of flags actually +output, if case_flags is not a null pointer). The decoder will +never need to output more code points than the number of ASCII +code points in the input, because of the way the encoding is +defined. The number of code points output cannot exceed the +maximum possible value of a punycode_uint, even if the supplied +@code{output_length} is greater than that. + +@var{output}: An array of code points like the input argument of +@code{punycode_encode()} (see above). + +@var{case_flags}: A @code{NULL} pointer (if the flags are not needed by the +caller) or an array of boolean values parallel to the @code{output} +array. Nonzero (true, flagged) suggests that the corresponding +Unicode character be forced to uppercase by the caller (if +possible), and zero (false, unflagged) suggests that it be forced +to lowercase (if possible). ASCII code points (0..7F) are output +already in the proper case, but their flags will be set +appropriately so that applying the flags would be harmless. + +Converts Punycode to a sequence of code points (presumed to be +Unicode code points). + +@strong{Return value:} The return value can be any of the @code{Punycode_status} +values defined above. If not @code{PUNYCODE_SUCCESS}, then +@code{output_length}, @code{output}, and @code{case_flags} might contain garbage. +@end deftypefun + diff --git a/doc/texi/punycode_encode.texi b/doc/texi/punycode_encode.texi new file mode 100644 index 0000000..3f7d57b --- /dev/null +++ b/doc/texi/punycode_encode.texi @@ -0,0 +1,43 @@ +@subheading punycode_encode +@anchor{punycode_encode} +@deftypefun {int} {punycode_encode} (size_t @var{input_length}, const punycode_uint [] @var{input}, const unsigned char [] @var{case_flags}, size_t * @var{output_length}, char [] @var{output}) +@var{input_length}: The number of code points in the @code{input} array and +the number of flags in the @code{case_flags} array. + +@var{input}: An array of code points. They are presumed to be Unicode +code points, but that is not strictly REQUIRED. The array +contains code points, not code units. UTF-16 uses code units +D800 through DFFF to refer to code points 10000..10FFFF. The +code points D800..DFFF do not occur in any valid Unicode string. +The code points that can occur in Unicode strings (0..D7FF and +E000..10FFFF) are also called Unicode scalar values. + +@var{case_flags}: A @code{NULL} pointer or an array of boolean values parallel +to the @code{input} array. Nonzero (true, flagged) suggests that the +corresponding Unicode character be forced to uppercase after +being decoded (if possible), and zero (false, unflagged) suggests +that it be forced to lowercase (if possible). ASCII code points +(0..7F) are encoded literally, except that ASCII letters are +forced to uppercase or lowercase according to the corresponding +case flags. If @code{case_flags} is a @code{NULL} pointer then ASCII letters +are left as they are, and other code points are treated as +unflagged. + +@var{output_length}: The caller passes in the maximum number of ASCII +code points that it can receive. On successful return it will +contain the number of ASCII code points actually output. + +@var{output}: An array of ASCII code points. It is *not* +null-terminated; it will contain zeros if and only if the @code{input} +contains zeros. (Of course the caller can leave room for a +terminator and add one if needed.) + +Converts a sequence of code points (presumed to be Unicode code +points) to Punycode. + +@strong{Return value:} The return value can be any of the @code{Punycode_status} +values defined above except @code{PUNYCODE_BAD_INPUT}. If not +@code{PUNYCODE_SUCCESS}, then @code{output_size} and @code{output} might contain +garbage. +@end deftypefun + diff --git a/doc/texi/punycode_strerror.texi b/doc/texi/punycode_strerror.texi new file mode 100644 index 0000000..9e29628 --- /dev/null +++ b/doc/texi/punycode_strerror.texi @@ -0,0 +1,22 @@ +@subheading punycode_strerror +@anchor{punycode_strerror} +@deftypefun {const char *} {punycode_strerror} (Punycode_status @var{rc}) +@var{rc}: an @code{Punycode_status} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{PUNYCODE_SUCCESS:} Successful operation. This value is guaranteed +to always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{PUNYCODE_BAD_INPUT:} Input is invalid. + +@strong{PUNYCODE_BIG_OUTPUT:} Output would exceed the space provided. + +@strong{PUNYCODE_OVERFLOW:} Input needs wider integers to process. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/strerror-idna.c.texi b/doc/texi/strerror-idna.c.texi new file mode 100644 index 0000000..7674516 --- /dev/null +++ b/doc/texi/strerror-idna.c.texi @@ -0,0 +1,46 @@ +@subheading idna_strerror +@anchor{idna_strerror} +@deftypefun {const char *} {idna_strerror} (Idna_rc @var{rc}) +@var{rc}: an @code{Idna_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{IDNA_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{IDNA_STRINGPREP_ERROR:} Error during string preparation. + +@strong{IDNA_PUNYCODE_ERROR:} Error during punycode operation. + +@strong{IDNA_CONTAINS_NON_LDH:} For IDNA_USE_STD3_ASCII_RULES, indicate that +the string contains non-LDH ASCII characters. + +@strong{IDNA_CONTAINS_MINUS:} For IDNA_USE_STD3_ASCII_RULES, indicate that +the string contains a leading or trailing hyphen-minus (U+002D). + +@strong{IDNA_INVALID_LENGTH:} The final output string is not within the +(inclusive) range 1 to 63 characters. + +@strong{IDNA_NO_ACE_PREFIX:} The string does not contain the ACE prefix +(for ToUnicode). + +@strong{IDNA_ROUNDTRIP_VERIFY_ERROR:} The ToASCII operation on output +string does not equal the input. + +@strong{IDNA_CONTAINS_ACE_PREFIX:} The input contains the ACE prefix (for +ToASCII). + +@strong{IDNA_ICONV_ERROR:} Could not convert string in locale encoding. + +@strong{IDNA_MALLOC_ERROR:} Could not allocate buffer (this is typically a +fatal error). + +@strong{IDNA_DLOPEN_ERROR:} Could not dlopen the libcidn DSO (only used +internally in libc). + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/strerror-pr29.c.texi b/doc/texi/strerror-pr29.c.texi new file mode 100644 index 0000000..fd6b822 --- /dev/null +++ b/doc/texi/strerror-pr29.c.texi @@ -0,0 +1,21 @@ +@subheading pr29_strerror +@anchor{pr29_strerror} +@deftypefun {const char *} {pr29_strerror} (Pr29_rc @var{rc}) +@var{rc}: an @code{Pr29_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{PR29_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{PR29_PROBLEM:} A problem sequence was encountered. + +@strong{PR29_STRINGPREP_ERROR:} The character set conversion failed (only +for @code{pr29_8()} and @code{pr29_8z()}). + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/strerror-punycode.c.texi b/doc/texi/strerror-punycode.c.texi new file mode 100644 index 0000000..9e29628 --- /dev/null +++ b/doc/texi/strerror-punycode.c.texi @@ -0,0 +1,22 @@ +@subheading punycode_strerror +@anchor{punycode_strerror} +@deftypefun {const char *} {punycode_strerror} (Punycode_status @var{rc}) +@var{rc}: an @code{Punycode_status} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{PUNYCODE_SUCCESS:} Successful operation. This value is guaranteed +to always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{PUNYCODE_BAD_INPUT:} Input is invalid. + +@strong{PUNYCODE_BIG_OUTPUT:} Output would exceed the space provided. + +@strong{PUNYCODE_OVERFLOW:} Input needs wider integers to process. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/strerror-stringprep.c.texi b/doc/texi/strerror-stringprep.c.texi new file mode 100644 index 0000000..ee1b067 --- /dev/null +++ b/doc/texi/strerror-stringprep.c.texi @@ -0,0 +1,50 @@ +@subheading stringprep_strerror +@anchor{stringprep_strerror} +@deftypefun {const char *} {stringprep_strerror} (Stringprep_rc @var{rc}) +@var{rc}: a @code{Stringprep_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{STRINGPREP_OK:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{STRINGPREP_CONTAINS_UNASSIGNED:} String contain unassigned Unicode +code points, which is forbidden by the profile. + +@strong{STRINGPREP_CONTAINS_PROHIBITED:} String contain code points +prohibited by the profile. + +@strong{STRINGPREP_BIDI_BOTH_L_AND_RAL:} String contain code points with +conflicting bidirection category. + +@strong{STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:} Leading and trailing character +in string not of proper bidirectional category. + +@strong{STRINGPREP_BIDI_CONTAINS_PROHIBITED:} Contains prohibited code +points detected by bidirectional code. + +@strong{STRINGPREP_TOO_SMALL_BUFFER:} Buffer handed to function was too +small. This usually indicate a problem in the calling +application. + +@strong{STRINGPREP_PROFILE_ERROR:} The stringprep profile was inconsistent. +This usually indicate an internal error in the library. + +@strong{STRINGPREP_FLAG_ERROR:} The supplied flag conflicted with profile. +This usually indicate a problem in the calling application. + +@strong{STRINGPREP_UNKNOWN_PROFILE:} The supplied profile name was not +known to the library. + +@strong{STRINGPREP_NFKC_FAILED:} The Unicode NFKC operation failed. This +usually indicate an internal error in the library. + +@strong{STRINGPREP_MALLOC_ERROR:} The @code{malloc()} was out of memory. This is +usually a fatal error. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/strerror-tld.c.texi b/doc/texi/strerror-tld.c.texi new file mode 100644 index 0000000..3eeb9c2 --- /dev/null +++ b/doc/texi/strerror-tld.c.texi @@ -0,0 +1,26 @@ +@subheading tld_strerror +@anchor{tld_strerror} +@deftypefun {const char *} {tld_strerror} (Tld_rc @var{rc}) +@var{rc}: tld return code + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{TLD_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{TLD_INVALID:} Invalid character found. + +@strong{TLD_NODATA:} No input data was provided. + +@strong{TLD_MALLOC_ERROR:} Error during memory allocation. + +@strong{TLD_ICONV_ERROR:} Error during iconv string conversion. + +@strong{TLD_NO_TLD:} No top-level domain found in domain string. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/stringprep.c.texi b/doc/texi/stringprep.c.texi new file mode 100644 index 0000000..0529788 --- /dev/null +++ b/doc/texi/stringprep.c.texi @@ -0,0 +1,127 @@ +@subheading stringprep_4i +@anchor{stringprep_4i} +@deftypefun {int} {stringprep_4i} (uint32_t * @var{ucs4}, size_t * @var{len}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{ucs4}: input/output array with string to prepare. + +@var{len}: on input, length of input array with Unicode code points, +on exit, length of output array with Unicode code points. + +@var{maxucs4len}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input UCS-4 string according to the stringprep profile, +and write back the result to the input string. + +The input is not required to be zero terminated (@code{ucs4}[@code{len}] = 0). +The output will not be zero terminated unless @code{ucs4}[@code{len}] = 0. +Instead, see @code{stringprep_4zi()} if your input is zero terminated or +if you want the output to be. + +Since the stringprep operation can expand the string, @code{maxucs4len} +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an +@code{Stringprep_rc} error code. +@end deftypefun + +@subheading stringprep_4zi +@anchor{stringprep_4zi} +@deftypefun {int} {stringprep_4zi} (uint32_t * @var{ucs4}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{ucs4}: input/output array with zero terminated string to prepare. + +@var{maxucs4len}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input zero terminated UCS-4 string according to the +stringprep profile, and write back the result to the input string. + +Since the stringprep operation can expand the string, @code{maxucs4len} +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an +@code{Stringprep_rc} error code. +@end deftypefun + +@subheading stringprep +@anchor{stringprep} +@deftypefun {int} {stringprep} (char * @var{in}, size_t @var{maxlen}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{in}: input/ouput array with string to prepare. + +@var{maxlen}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and write back the result to the input string. + +Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +@code{stringprep_locale_to_utf8()}. + +Since the stringprep operation can expand the string, @code{maxlen} +indicate how large the buffer holding the string is. This function +will not read or write to characters outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code. +@end deftypefun + +@subheading stringprep_profile +@anchor{stringprep_profile} +@deftypefun {int} {stringprep_profile} (const char * @var{in}, char ** @var{out}, const char * @var{profile}, Stringprep_profile_flags @var{flags}) +@var{in}: input array with UTF-8 string to prepare. + +@var{out}: output variable with pointer to newly allocate string. + +@var{profile}: name of stringprep profile to use. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and return the result in a newly allocated +variable. + +Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +@code{stringprep_locale_to_utf8()}. + +The output @code{out} variable must be deallocated by the caller. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} specifies the name of the stringprep profile to use. +It must be one of the internally supported stringprep profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code. +@end deftypefun + diff --git a/doc/texi/stringprep.texi b/doc/texi/stringprep.texi new file mode 100644 index 0000000..5d082a3 --- /dev/null +++ b/doc/texi/stringprep.texi @@ -0,0 +1,32 @@ +@subheading stringprep +@anchor{stringprep} +@deftypefun {int} {stringprep} (char * @var{in}, size_t @var{maxlen}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{in}: input/ouput array with string to prepare. + +@var{maxlen}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and write back the result to the input string. + +Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +@code{stringprep_locale_to_utf8()}. + +Since the stringprep operation can expand the string, @code{maxlen} +indicate how large the buffer holding the string is. This function +will not read or write to characters outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code. +@end deftypefun + diff --git a/doc/texi/stringprep_4i.texi b/doc/texi/stringprep_4i.texi new file mode 100644 index 0000000..7eac683 --- /dev/null +++ b/doc/texi/stringprep_4i.texi @@ -0,0 +1,37 @@ +@subheading stringprep_4i +@anchor{stringprep_4i} +@deftypefun {int} {stringprep_4i} (uint32_t * @var{ucs4}, size_t * @var{len}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{ucs4}: input/output array with string to prepare. + +@var{len}: on input, length of input array with Unicode code points, +on exit, length of output array with Unicode code points. + +@var{maxucs4len}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input UCS-4 string according to the stringprep profile, +and write back the result to the input string. + +The input is not required to be zero terminated (@code{ucs4}[@code{len}] = 0). +The output will not be zero terminated unless @code{ucs4}[@code{len}] = 0. +Instead, see @code{stringprep_4zi()} if your input is zero terminated or +if you want the output to be. + +Since the stringprep operation can expand the string, @code{maxucs4len} +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an +@code{Stringprep_rc} error code. +@end deftypefun + diff --git a/doc/texi/stringprep_4zi.texi b/doc/texi/stringprep_4zi.texi new file mode 100644 index 0000000..7b27522 --- /dev/null +++ b/doc/texi/stringprep_4zi.texi @@ -0,0 +1,29 @@ +@subheading stringprep_4zi +@anchor{stringprep_4zi} +@deftypefun {int} {stringprep_4zi} (uint32_t * @var{ucs4}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile}) +@var{ucs4}: input/output array with zero terminated string to prepare. + +@var{maxucs4len}: maximum length of input/output array. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +@var{profile}: pointer to @code{Stringprep_profile} to use. + +Prepare the input zero terminated UCS-4 string according to the +stringprep profile, and write back the result to the input string. + +Since the stringprep operation can expand the string, @code{maxucs4len} +indicate how large the buffer holding the string is. This function +will not read or write to code points outside that size. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} contain the @code{Stringprep_profile} instructions to +perform. Your application can define new profiles, possibly +re-using the generic stringprep tables that always will be part of +the library, or use one of the currently supported profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an +@code{Stringprep_rc} error code. +@end deftypefun + diff --git a/doc/texi/stringprep_check_version.texi b/doc/texi/stringprep_check_version.texi new file mode 100644 index 0000000..2ba59d2 --- /dev/null +++ b/doc/texi/stringprep_check_version.texi @@ -0,0 +1,16 @@ +@subheading stringprep_check_version +@anchor{stringprep_check_version} +@deftypefun {const char *} {stringprep_check_version} (const char * @var{req_version}) +@var{req_version}: Required version number, or NULL. + +Check that the version of the library is at minimum the requested one +and return the version string; return NULL if the condition is not +satisfied. If a NULL is passed to this function, no check is done, +but the version string is simply returned. + +See @code{STRINGPREP_VERSION} for a suitable @code{req_version} string. + +@strong{Return value:} Version string of run-time library, or NULL if the +run-time library does not meet the required version number. +@end deftypefun + diff --git a/doc/texi/stringprep_convert.texi b/doc/texi/stringprep_convert.texi new file mode 100644 index 0000000..15b186c --- /dev/null +++ b/doc/texi/stringprep_convert.texi @@ -0,0 +1,16 @@ +@subheading stringprep_convert +@anchor{stringprep_convert} +@deftypefun {char *} {stringprep_convert} (const char * @var{str}, const char * @var{to_codeset}, const char * @var{from_codeset}) +@var{str}: input zero-terminated string. + +@var{to_codeset}: name of destination character set. + +@var{from_codeset}: name of origin character set, as used by @code{str}. + +Convert the string from one character set to another using the +system's @code{iconv()} function. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into to_codeset. +@end deftypefun + diff --git a/doc/texi/stringprep_locale_charset.texi b/doc/texi/stringprep_locale_charset.texi new file mode 100644 index 0000000..e97407f --- /dev/null +++ b/doc/texi/stringprep_locale_charset.texi @@ -0,0 +1,22 @@ +@subheading stringprep_locale_charset +@anchor{stringprep_locale_charset} +@deftypefun {const char *} {stringprep_locale_charset} ( @var{void}) + +Find out current locale charset. The function respect the CHARSET +environment variable, but typically uses nl_langinfo(CODESET) when +it is supported. It fall back on "ASCII" if CHARSET isn't set and +nl_langinfo isn't supported or return anything. + +Note that this function return the application's locale's preferred +charset (or thread's locale's preffered charset, if your system +support thread-specific locales). It does not return what the +system may be using. Thus, if you receive data from external +sources you cannot in general use this function to guess what +charset it is encoded in. Use stringprep_convert from the external +representation into the charset returned by this function, to have +data in the locale encoding. + +@strong{Return value:} Return the character set used by the current locale. +It will never return NULL, but use "ASCII" as a fallback. +@end deftypefun + diff --git a/doc/texi/stringprep_locale_to_utf8.texi b/doc/texi/stringprep_locale_to_utf8.texi new file mode 100644 index 0000000..1a49de8 --- /dev/null +++ b/doc/texi/stringprep_locale_to_utf8.texi @@ -0,0 +1,12 @@ +@subheading stringprep_locale_to_utf8 +@anchor{stringprep_locale_to_utf8} +@deftypefun {char *} {stringprep_locale_to_utf8} (const char * @var{str}) +@var{str}: input zero terminated string. + +Convert string encoded in the locale's character set into UTF-8 by +using @code{stringprep_convert()}. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into UTF-8. +@end deftypefun + diff --git a/doc/texi/stringprep_profile.texi b/doc/texi/stringprep_profile.texi new file mode 100644 index 0000000..790577f --- /dev/null +++ b/doc/texi/stringprep_profile.texi @@ -0,0 +1,29 @@ +@subheading stringprep_profile +@anchor{stringprep_profile} +@deftypefun {int} {stringprep_profile} (const char * @var{in}, char ** @var{out}, const char * @var{profile}, Stringprep_profile_flags @var{flags}) +@var{in}: input array with UTF-8 string to prepare. + +@var{out}: output variable with pointer to newly allocate string. + +@var{profile}: name of stringprep profile to use. + +@var{flags}: a @code{Stringprep_profile_flags} value, or 0. + +Prepare the input zero terminated UTF-8 string according to the +stringprep profile, and return the result in a newly allocated +variable. + +Note that you must convert strings entered in the systems locale +into UTF-8 before using this function, see +@code{stringprep_locale_to_utf8()}. + +The output @code{out} variable must be deallocated by the caller. + +The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0. + +The @code{profile} specifies the name of the stringprep profile to use. +It must be one of the internally supported stringprep profiles. + +@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code. +@end deftypefun + diff --git a/doc/texi/stringprep_strerror.texi b/doc/texi/stringprep_strerror.texi new file mode 100644 index 0000000..ee1b067 --- /dev/null +++ b/doc/texi/stringprep_strerror.texi @@ -0,0 +1,50 @@ +@subheading stringprep_strerror +@anchor{stringprep_strerror} +@deftypefun {const char *} {stringprep_strerror} (Stringprep_rc @var{rc}) +@var{rc}: a @code{Stringprep_rc} return code. + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{STRINGPREP_OK:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{STRINGPREP_CONTAINS_UNASSIGNED:} String contain unassigned Unicode +code points, which is forbidden by the profile. + +@strong{STRINGPREP_CONTAINS_PROHIBITED:} String contain code points +prohibited by the profile. + +@strong{STRINGPREP_BIDI_BOTH_L_AND_RAL:} String contain code points with +conflicting bidirection category. + +@strong{STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:} Leading and trailing character +in string not of proper bidirectional category. + +@strong{STRINGPREP_BIDI_CONTAINS_PROHIBITED:} Contains prohibited code +points detected by bidirectional code. + +@strong{STRINGPREP_TOO_SMALL_BUFFER:} Buffer handed to function was too +small. This usually indicate a problem in the calling +application. + +@strong{STRINGPREP_PROFILE_ERROR:} The stringprep profile was inconsistent. +This usually indicate an internal error in the library. + +@strong{STRINGPREP_FLAG_ERROR:} The supplied flag conflicted with profile. +This usually indicate a problem in the calling application. + +@strong{STRINGPREP_UNKNOWN_PROFILE:} The supplied profile name was not +known to the library. + +@strong{STRINGPREP_NFKC_FAILED:} The Unicode NFKC operation failed. This +usually indicate an internal error in the library. + +@strong{STRINGPREP_MALLOC_ERROR:} The @code{malloc()} was out of memory. This is +usually a fatal error. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/stringprep_ucs4_nfkc_normalize.texi b/doc/texi/stringprep_ucs4_nfkc_normalize.texi new file mode 100644 index 0000000..69bbd06 --- /dev/null +++ b/doc/texi/stringprep_ucs4_nfkc_normalize.texi @@ -0,0 +1,14 @@ +@subheading stringprep_ucs4_nfkc_normalize +@anchor{stringprep_ucs4_nfkc_normalize} +@deftypefun {uint32_t *} {stringprep_ucs4_nfkc_normalize} (uint32_t * @var{str}, ssize_t @var{len}) +@var{str}: a Unicode string. + +@var{len}: length of @code{str} array, or -1 if @code{str} is nul-terminated. + +Converts UCS4 string into UTF-8 and runs +@code{stringprep_utf8_nfkc_normalize()}. + +@strong{Return value:} a newly allocated Unicode string, that is the NFKC +normalized form of @code{str}. +@end deftypefun + diff --git a/doc/texi/stringprep_ucs4_to_utf8.texi b/doc/texi/stringprep_ucs4_to_utf8.texi new file mode 100644 index 0000000..d472ac3 --- /dev/null +++ b/doc/texi/stringprep_ucs4_to_utf8.texi @@ -0,0 +1,23 @@ +@subheading stringprep_ucs4_to_utf8 +@anchor{stringprep_ucs4_to_utf8} +@deftypefun {char *} {stringprep_ucs4_to_utf8} (const uint32_t * @var{str}, ssize_t @var{len}, size_t * @var{items_read}, size_t * @var{items_written}) +@var{str}: a UCS-4 encoded string + +@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then +the string is terminated with a 0 character. + +@var{items_read}: location to store number of characters read read, or @code{NULL}. + +@var{items_written}: location to store number of bytes written or @code{NULL}. +The value here stored does not include the trailing 0 +byte. + +Convert a string from a 32-bit fixed width representation as UCS-4. +to UTF-8. The result will be terminated with a 0 byte. + +@strong{Return value:} a pointer to a newly allocated UTF-8 string. +This value must be deallocated by the caller. +If an error occurs, @code{NULL} will be returned and @code{error} +set. +@end deftypefun + diff --git a/doc/texi/stringprep_unichar_to_utf8.texi b/doc/texi/stringprep_unichar_to_utf8.texi new file mode 100644 index 0000000..435884f --- /dev/null +++ b/doc/texi/stringprep_unichar_to_utf8.texi @@ -0,0 +1,14 @@ +@subheading stringprep_unichar_to_utf8 +@anchor{stringprep_unichar_to_utf8} +@deftypefun {int} {stringprep_unichar_to_utf8} (uint32_t @var{c}, char * @var{outbuf}) +@var{c}: a ISO10646 character code + +@var{outbuf}: output buffer, must have at least 6 bytes of space. +If @code{NULL}, the length will be computed and returned +and nothing will be written to @code{outbuf}. + +Converts a single character to UTF-8. + +@strong{Return value:} number of bytes written. +@end deftypefun + diff --git a/doc/texi/stringprep_utf8_nfkc_normalize.texi b/doc/texi/stringprep_utf8_nfkc_normalize.texi new file mode 100644 index 0000000..dc51a4d --- /dev/null +++ b/doc/texi/stringprep_utf8_nfkc_normalize.texi @@ -0,0 +1,25 @@ +@subheading stringprep_utf8_nfkc_normalize +@anchor{stringprep_utf8_nfkc_normalize} +@deftypefun {char *} {stringprep_utf8_nfkc_normalize} (const char * @var{str}, ssize_t @var{len}) +@var{str}: a UTF-8 encoded string. + +@var{len}: length of @code{str}, in bytes, or -1 if @code{str} is nul-terminated. + +Converts a string into canonical form, standardizing +such issues as whether a character with an accent +is represented as a base character and combining +accent or as a single precomposed character. + +The normalization mode is NFKC (ALL COMPOSE). It standardizes +differences that do not affect the text content, such as the +above-mentioned accent representation. It standardizes the +"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to +the standard forms (in this case DIGIT THREE). Formatting +information may be lost but for most text operations such +characters should be considered the same. It returns a result with +composed forms rather than a maximally decomposed form. + +@strong{Return value:} a newly allocated string, that is the +NFKC normalized form of @code{str}. +@end deftypefun + diff --git a/doc/texi/stringprep_utf8_to_locale.texi b/doc/texi/stringprep_utf8_to_locale.texi new file mode 100644 index 0000000..9c73b14 --- /dev/null +++ b/doc/texi/stringprep_utf8_to_locale.texi @@ -0,0 +1,12 @@ +@subheading stringprep_utf8_to_locale +@anchor{stringprep_utf8_to_locale} +@deftypefun {char *} {stringprep_utf8_to_locale} (const char * @var{str}) +@var{str}: input zero terminated string. + +Convert string encoded in UTF-8 into the locale's character set by +using @code{stringprep_convert()}. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into the locale's character set. +@end deftypefun + diff --git a/doc/texi/stringprep_utf8_to_ucs4.texi b/doc/texi/stringprep_utf8_to_ucs4.texi new file mode 100644 index 0000000..346d628 --- /dev/null +++ b/doc/texi/stringprep_utf8_to_ucs4.texi @@ -0,0 +1,19 @@ +@subheading stringprep_utf8_to_ucs4 +@anchor{stringprep_utf8_to_ucs4} +@deftypefun {uint32_t *} {stringprep_utf8_to_ucs4} (const char * @var{str}, ssize_t @var{len}, size_t * @var{items_written}) +@var{str}: a UTF-8 encoded string + +@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then +the string is nul-terminated. + +@var{items_written}: location to store the number of characters in the +result, or @code{NULL}. + +Convert a string from UTF-8 to a 32-bit fixed width +representation as UCS-4, assuming valid UTF-8 input. +This function does no error checking on the input. + +@strong{Return value:} a pointer to a newly allocated UCS-4 string. +This value must be deallocated by the caller. +@end deftypefun + diff --git a/doc/texi/stringprep_utf8_to_unichar.texi b/doc/texi/stringprep_utf8_to_unichar.texi new file mode 100644 index 0000000..5cfd339 --- /dev/null +++ b/doc/texi/stringprep_utf8_to_unichar.texi @@ -0,0 +1,12 @@ +@subheading stringprep_utf8_to_unichar +@anchor{stringprep_utf8_to_unichar} +@deftypefun {uint32_t} {stringprep_utf8_to_unichar} (const char * @var{p}) +@var{p}: a pointer to Unicode character encoded as UTF-8 + +Converts a sequence of bytes encoded as UTF-8 to a Unicode character. +If @code{p} does not point to a valid UTF-8 encoded character, results are +undefined. + +@strong{Return value:} the resulting character. +@end deftypefun + diff --git a/doc/texi/tld.c.texi b/doc/texi/tld.c.texi new file mode 100644 index 0000000..de3891f --- /dev/null +++ b/doc/texi/tld.c.texi @@ -0,0 +1,230 @@ +@subheading tld_get_table +@anchor{tld_get_table} +@deftypefun {const Tld_table *} {tld_get_table} (const char * @var{tld}, const Tld_table ** @var{tables}) +@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string. + +@var{tables}: Zero terminated array of @code{Tld_table} info-structures for +TLDs. + +Get the TLD table for a named TLD by searching through the given +TLD table array. + +@strong{Return value:} Return structure corresponding to TLD @code{tld} by going +thru @code{tables}, or return @code{NULL} if no such structure is found. +@end deftypefun + +@subheading tld_default_table +@anchor{tld_default_table} +@deftypefun {const Tld_table *} {tld_default_table} (const char * @var{tld}, const Tld_table ** @var{overrides}) +@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string. + +@var{overrides}: Additional zero terminated array of @code{Tld_table} +info-structures for TLDs, or @code{NULL} to only use library deault +tables. + +Get the TLD table for a named TLD, using the internal defaults, +possibly overrided by the (optional) supplied tables. + +@strong{Return value:} Return structure corresponding to TLD @code{tld_str}, first +looking through @code{overrides} then thru built-in list, or @code{NULL} if +no such structure found. +@end deftypefun + +@subheading tld_get_4 +@anchor{tld_get_4} +@deftypefun {int} {tld_get_4} (const uint32_t * @var{in}, size_t @var{inlen}, char ** @var{out}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + +@subheading tld_get_4z +@anchor{tld_get_4z} +@deftypefun {int} {tld_get_4z} (const uint32_t * @var{in}, char ** @var{out}) +@var{in}: Zero terminated array of unicode code points to process. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + +@subheading tld_get_z +@anchor{tld_get_z} +@deftypefun {int} {tld_get_z} (const char * @var{in}, char ** @var{out}) +@var{in}: Zero terminated character array to process. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. The input string @code{in} may be UTF-8, ISO-8859-1 or +any ASCII compatible character encoding. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + +@subheading tld_check_4t +@anchor{tld_check_4t} +@deftypefun {int} {tld_check_4t} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table * @var{tld}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{errpos}: Position of offending character is returned here. + +@var{tld}: A @code{Tld_table} data structure representing the restrictions for +which the input should be tested. + +Test each of the code points in @code{in} for whether or not +they are allowed by the data structure in @code{tld}, return +the position of the first character for which this is not +the case in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + +@subheading tld_check_4tz +@anchor{tld_check_4tz} +@deftypefun {int} {tld_check_4tz} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table * @var{tld}) +@var{in}: Zero terminated array of unicode code points to process. + +@var{errpos}: Position of offending character is returned here. + +@var{tld}: A @code{Tld_table} data structure representing the restrictions for +which the input should be tested. + +Test each of the code points in @code{in} for whether or not +they are allowed by the data structure in @code{tld}, return +the position of the first character for which this is not +the case in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + +@subheading tld_check_4 +@anchor{tld_check_4} +@deftypefun {int} {tld_check_4} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the code points in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + +@subheading tld_check_4z +@anchor{tld_check_4z} +@deftypefun {int} {tld_check_4z} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated array of unicode code points to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the code points in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + +@subheading tld_check_8z +@anchor{tld_check_8z} +@deftypefun {int} {tld_check_8z} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated UTF8 string to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the characters in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. Note that the error position refers to the +decoded character offset rather than the byte position in the +string. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all +characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + +@subheading tld_check_lz +@anchor{tld_check_lz} +@deftypefun {int} {tld_check_lz} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated string in the current locales encoding to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the characters in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. Note that the error position refers to the +decoded character offset rather than the byte position in the +string. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all +characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_4.texi b/doc/texi/tld_check_4.texi new file mode 100644 index 0000000..3790b39 --- /dev/null +++ b/doc/texi/tld_check_4.texi @@ -0,0 +1,28 @@ +@subheading tld_check_4 +@anchor{tld_check_4} +@deftypefun {int} {tld_check_4} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the code points in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_4t.texi b/doc/texi/tld_check_4t.texi new file mode 100644 index 0000000..7e55195 --- /dev/null +++ b/doc/texi/tld_check_4t.texi @@ -0,0 +1,24 @@ +@subheading tld_check_4t +@anchor{tld_check_4t} +@deftypefun {int} {tld_check_4t} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table * @var{tld}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{errpos}: Position of offending character is returned here. + +@var{tld}: A @code{Tld_table} data structure representing the restrictions for +which the input should be tested. + +Test each of the code points in @code{in} for whether or not +they are allowed by the data structure in @code{tld}, return +the position of the first character for which this is not +the case in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_4tz.texi b/doc/texi/tld_check_4tz.texi new file mode 100644 index 0000000..fc7da3c --- /dev/null +++ b/doc/texi/tld_check_4tz.texi @@ -0,0 +1,21 @@ +@subheading tld_check_4tz +@anchor{tld_check_4tz} +@deftypefun {int} {tld_check_4tz} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table * @var{tld}) +@var{in}: Zero terminated array of unicode code points to process. + +@var{errpos}: Position of offending character is returned here. + +@var{tld}: A @code{Tld_table} data structure representing the restrictions for +which the input should be tested. + +Test each of the code points in @code{in} for whether or not +they are allowed by the data structure in @code{tld}, return +the position of the first character for which this is not +the case in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_4z.texi b/doc/texi/tld_check_4z.texi new file mode 100644 index 0000000..5158989 --- /dev/null +++ b/doc/texi/tld_check_4z.texi @@ -0,0 +1,25 @@ +@subheading tld_check_4z +@anchor{tld_check_4z} +@deftypefun {int} {tld_check_4z} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated array of unicode code points to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the code points in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code +points are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_8z.texi b/doc/texi/tld_check_8z.texi new file mode 100644 index 0000000..17b42e3 --- /dev/null +++ b/doc/texi/tld_check_8z.texi @@ -0,0 +1,27 @@ +@subheading tld_check_8z +@anchor{tld_check_8z} +@deftypefun {int} {tld_check_8z} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated UTF8 string to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the characters in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. Note that the error position refers to the +decoded character offset rather than the byte position in the +string. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all +characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_check_lz.texi b/doc/texi/tld_check_lz.texi new file mode 100644 index 0000000..7e83d4a --- /dev/null +++ b/doc/texi/tld_check_lz.texi @@ -0,0 +1,27 @@ +@subheading tld_check_lz +@anchor{tld_check_lz} +@deftypefun {int} {tld_check_lz} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides}) +@var{in}: Zero-terminated string in the current locales encoding to process. + +@var{errpos}: Position of offending character is returned here. + +@var{overrides}: A @code{Tld_table} array of additional domain restriction +structures that complement and supersede the built-in information. + +Test each of the characters in @code{in} for whether or not they are +allowed by the information in @code{overrides} or by the built-in TLD +restriction data. When data for the same TLD is available both +internally and in @code{overrides}, the information in @code{overrides} takes +precedence. If several entries for a specific TLD are found, the +first one is used. If @code{overrides} is @code{NULL}, only the built-in +information is used. The position of the first offending character +is returned in @code{errpos}. Note that the error position refers to the +decoded character offset rather than the byte position in the +string. + +@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all +characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a +character is not allowed, or additional error codes on general +failure conditions. +@end deftypefun + diff --git a/doc/texi/tld_default_table.texi b/doc/texi/tld_default_table.texi new file mode 100644 index 0000000..408a149 --- /dev/null +++ b/doc/texi/tld_default_table.texi @@ -0,0 +1,17 @@ +@subheading tld_default_table +@anchor{tld_default_table} +@deftypefun {const Tld_table *} {tld_default_table} (const char * @var{tld}, const Tld_table ** @var{overrides}) +@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string. + +@var{overrides}: Additional zero terminated array of @code{Tld_table} +info-structures for TLDs, or @code{NULL} to only use library deault +tables. + +Get the TLD table for a named TLD, using the internal defaults, +possibly overrided by the (optional) supplied tables. + +@strong{Return value:} Return structure corresponding to TLD @code{tld_str}, first +looking through @code{overrides} then thru built-in list, or @code{NULL} if +no such structure found. +@end deftypefun + diff --git a/doc/texi/tld_get_4.texi b/doc/texi/tld_get_4.texi new file mode 100644 index 0000000..60fda1b --- /dev/null +++ b/doc/texi/tld_get_4.texi @@ -0,0 +1,17 @@ +@subheading tld_get_4 +@anchor{tld_get_4} +@deftypefun {int} {tld_get_4} (const uint32_t * @var{in}, size_t @var{inlen}, char ** @var{out}) +@var{in}: Array of unicode code points to process. Does not need to be +zero terminated. + +@var{inlen}: Number of unicode code points. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + diff --git a/doc/texi/tld_get_4z.texi b/doc/texi/tld_get_4z.texi new file mode 100644 index 0000000..e241079 --- /dev/null +++ b/doc/texi/tld_get_4z.texi @@ -0,0 +1,14 @@ +@subheading tld_get_4z +@anchor{tld_get_4z} +@deftypefun {int} {tld_get_4z} (const uint32_t * @var{in}, char ** @var{out}) +@var{in}: Zero terminated array of unicode code points to process. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + diff --git a/doc/texi/tld_get_table.texi b/doc/texi/tld_get_table.texi new file mode 100644 index 0000000..b647d16 --- /dev/null +++ b/doc/texi/tld_get_table.texi @@ -0,0 +1,15 @@ +@subheading tld_get_table +@anchor{tld_get_table} +@deftypefun {const Tld_table *} {tld_get_table} (const char * @var{tld}, const Tld_table ** @var{tables}) +@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string. + +@var{tables}: Zero terminated array of @code{Tld_table} info-structures for +TLDs. + +Get the TLD table for a named TLD by searching through the given +TLD table array. + +@strong{Return value:} Return structure corresponding to TLD @code{tld} by going +thru @code{tables}, or return @code{NULL} if no such structure is found. +@end deftypefun + diff --git a/doc/texi/tld_get_z.texi b/doc/texi/tld_get_z.texi new file mode 100644 index 0000000..1ff5b02 --- /dev/null +++ b/doc/texi/tld_get_z.texi @@ -0,0 +1,15 @@ +@subheading tld_get_z +@anchor{tld_get_z} +@deftypefun {int} {tld_get_z} (const char * @var{in}, char ** @var{out}) +@var{in}: Zero terminated character array to process. + +@var{out}: Zero terminated ascii result string pointer. + +Isolate the top-level domain of @code{in} and return it as an ASCII +string in @code{out}. The input string @code{in} may be UTF-8, ISO-8859-1 or +any ASCII compatible character encoding. + +@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding +@code{Tld_rc} error code otherwise. +@end deftypefun + diff --git a/doc/texi/tld_strerror.texi b/doc/texi/tld_strerror.texi new file mode 100644 index 0000000..3eeb9c2 --- /dev/null +++ b/doc/texi/tld_strerror.texi @@ -0,0 +1,26 @@ +@subheading tld_strerror +@anchor{tld_strerror} +@deftypefun {const char *} {tld_strerror} (Tld_rc @var{rc}) +@var{rc}: tld return code + +Convert a return code integer to a text string. This string can be +used to output a diagnostic message to the user. + +@strong{TLD_SUCCESS:} Successful operation. This value is guaranteed to +always be zero, the remaining ones are only guaranteed to hold +non-zero values, for logical comparison purposes. + +@strong{TLD_INVALID:} Invalid character found. + +@strong{TLD_NODATA:} No input data was provided. + +@strong{TLD_MALLOC_ERROR:} Error during memory allocation. + +@strong{TLD_ICONV_ERROR:} Error during iconv string conversion. + +@strong{TLD_NO_TLD:} No top-level domain found in domain string. + +@strong{Return value:} Returns a pointer to a statically allocated string +containing a description of the error with the return code @code{rc}. +@end deftypefun + diff --git a/doc/texi/toutf8.c.texi b/doc/texi/toutf8.c.texi new file mode 100644 index 0000000..7fc7d28 --- /dev/null +++ b/doc/texi/toutf8.c.texi @@ -0,0 +1,62 @@ +@subheading stringprep_locale_charset +@anchor{stringprep_locale_charset} +@deftypefun {const char *} {stringprep_locale_charset} ( @var{void}) + +Find out current locale charset. The function respect the CHARSET +environment variable, but typically uses nl_langinfo(CODESET) when +it is supported. It fall back on "ASCII" if CHARSET isn't set and +nl_langinfo isn't supported or return anything. + +Note that this function return the application's locale's preferred +charset (or thread's locale's preffered charset, if your system +support thread-specific locales). It does not return what the +system may be using. Thus, if you receive data from external +sources you cannot in general use this function to guess what +charset it is encoded in. Use stringprep_convert from the external +representation into the charset returned by this function, to have +data in the locale encoding. + +@strong{Return value:} Return the character set used by the current locale. +It will never return NULL, but use "ASCII" as a fallback. +@end deftypefun + +@subheading stringprep_convert +@anchor{stringprep_convert} +@deftypefun {char *} {stringprep_convert} (const char * @var{str}, const char * @var{to_codeset}, const char * @var{from_codeset}) +@var{str}: input zero-terminated string. + +@var{to_codeset}: name of destination character set. + +@var{from_codeset}: name of origin character set, as used by @code{str}. + +Convert the string from one character set to another using the +system's @code{iconv()} function. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into to_codeset. +@end deftypefun + +@subheading stringprep_locale_to_utf8 +@anchor{stringprep_locale_to_utf8} +@deftypefun {char *} {stringprep_locale_to_utf8} (const char * @var{str}) +@var{str}: input zero terminated string. + +Convert string encoded in the locale's character set into UTF-8 by +using @code{stringprep_convert()}. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into UTF-8. +@end deftypefun + +@subheading stringprep_utf8_to_locale +@anchor{stringprep_utf8_to_locale} +@deftypefun {char *} {stringprep_utf8_to_locale} (const char * @var{str}) +@var{str}: input zero terminated string. + +Convert string encoded in UTF-8 into the locale's character set by +using @code{stringprep_convert()}. + +@strong{Return value:} Returns newly allocated zero-terminated string which +is @code{str} transcoded into the locale's character set. +@end deftypefun + diff --git a/doc/texi/version.c.texi b/doc/texi/version.c.texi new file mode 100644 index 0000000..2ba59d2 --- /dev/null +++ b/doc/texi/version.c.texi @@ -0,0 +1,16 @@ +@subheading stringprep_check_version +@anchor{stringprep_check_version} +@deftypefun {const char *} {stringprep_check_version} (const char * @var{req_version}) +@var{req_version}: Required version number, or NULL. + +Check that the version of the library is at minimum the requested one +and return the version string; return NULL if the condition is not +satisfied. If a NULL is passed to this function, no check is done, +but the version string is simply returned. + +See @code{STRINGPREP_VERSION} for a suitable @code{req_version} string. + +@strong{Return value:} Version string of run-time library, or NULL if the +run-time library does not meet the required version number. +@end deftypefun + diff --git a/doc/texinfo.css b/doc/texinfo.css new file mode 100644 index 0000000..96df89e --- /dev/null +++ b/doc/texinfo.css @@ -0,0 +1,44 @@ +body { + margin: 2%; + padding: 0 5%; + background: #ffffff; +} +h1,h2,h3,h4,h5 { + font-weight: bold; + padding: 5px 5px 5px 5px; + background-color: #c2e0ff; + color: #336699; +} +h1 { + padding: 2em 2em 2em 5%; + color: white; + background: #336699; + text-align: center; + letter-spacing: 3px; +} +h2 { text-decoration: underline; } +pre { + margin: 0 5%; + padding: 0.5em; +} +pre.example { + border: solid 1px; + background: #eeeeff; + padding-bottom: 1em; +} +pre.verbatim { + border: solid 1px gray; + background: white; + padding-bottom: 1em; +} +div.node { + margin: 0 -5% 0 -2%; + padding: 0.5em 0.5em; + margin-top: 0.5em; + margin-bottom: 0.5em; + font-weight: bold; +} +dd, li { + padding-top: 0.1em; + padding-bottom: 0.1em; +} diff --git a/doc/tld/Makefile b/doc/tld/Makefile new file mode 100644 index 0000000..a046eb2 --- /dev/null +++ b/doc/tld/Makefile @@ -0,0 +1,668 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# doc/tld/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 Free Software Foundation, Inc +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = doc/tld +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/tld +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/doc/tld +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +EXTRA_DIST = README fr.tld no.tld +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tld/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/tld/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/tld/Makefile.am b/doc/tld/Makefile.am new file mode 100644 index 0000000..b8de3ce --- /dev/null +++ b/doc/tld/Makefile.am @@ -0,0 +1,20 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 Free Software Foundation, Inc +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +EXTRA_DIST = README fr.tld no.tld diff --git a/doc/tld/Makefile.in b/doc/tld/Makefile.in new file mode 100644 index 0000000..41c767b --- /dev/null +++ b/doc/tld/Makefile.in @@ -0,0 +1,668 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 Free Software Foundation, Inc +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/tld +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = README fr.tld no.tld +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tld/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/tld/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/tld/README b/doc/tld/README new file mode 100644 index 0000000..3433bf6 --- /dev/null +++ b/doc/tld/README @@ -0,0 +1,45 @@ +Libidn doc/tld/README -- Notes and definition of the TLD tables. +Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +Copyright (C) 2004 Free Software Foundation, Inc +See the end for copying conditions. + +This directory contain tables that specify which characters are valid +for each TLD. Each table is stored in a file XX.tld where XX doesn't +really matter, but is recommended to be the TLD name. For example, +the TLD table for .FR is stored in the file "fr.tld". + +The library finds all files matching *.tld automatically, so if you +install a file you only need to remove lib/tlds.c and type 'make' and +it will be incorporated in the library. + +Experimental tables for various TLDs can be found at +<http://tldchk.berlios.de>. + +The format for the files are as follows. Empty lines or those +starting with '#' are ignored. It is highly recommended to discuss +matters in a comment; to give the URL to the source of the table, +mention the copyright and copying conditions of the tables, etc. +Normal lines consist of valid Unicode code points for the TLD, +expressed as single numbers (like 123, 0xff, 0100) or inclusive +intervals (112-344 0xff-0100) using the usual C decimal, octal or hex +notations. + +Each TLD file must contain one line on the format 'tld XX'. The XX +should be the TLD name that the file defines. This is the string that +is used in the generated C source code. + +If definitions are shared among several TLDs or are constructed from +standard Unicode blocks, put the building blocks in a file of its own +and include it using 'include FILENAME' on a line by itself. + +All files, even included files, MUST contain a line 'version FOO' +where FOO is a human readable string that should be possible to use in +a string comparison to detect when the table has changed. The version +number must be changed whenever a backwards incompatible change is +made to the file. Don't change the version number just because the +comments are changed, or there is a new release of the library. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/doc/tld/fr.tld b/doc/tld/fr.tld new file mode 100644 index 0000000..720b420 --- /dev/null +++ b/doc/tld/fr.tld @@ -0,0 +1,86 @@ +# Copyright (C) 2004 Simon Josefsson +# Copyright (C) 2003 Stephane Bortzmeyer <bortzmeyer@nic.fr> / AFNIC +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. + +version "1.0" +tld fr + +# Variant table for the French language +# See Internet-Draft draft-hoffman-idn-reg-00 +# +# Designed at AFNIC + +# This table is built by starting from the characters that are +# actually used in French. + +# a-z +# a and its variants : à â +# á (a acute) does not seem to exist in French: for further study (town names?) +# a with ring above <U+00E5> does not exist in french but in picard +# <URL:http://www.picard.free.fr/lgpic/a-e.htm> +U+0061|U+00E0:U+00E2 +U+0062 +# c and ç +U+0063|U+00E7 +U+0064 +# e and its variants : è é ê ë +U+0065|U+00E8:U+00E9:U+00EA:U+00EB +U+0066 +U+0067 +U+0068 +# i and its variants : î ï +U+0069|U+00EE:U+00EF +U+006A +U+006B +U+006C +U+006D +# n +# ñ <U+00F1> does not exist in french but in breton +# <URL:http://www.ouest-france.fr/dossiershtm/cours-de-breton/lecture.htm> +# or in basque. +U+006E +# o and its variants : ô. ö <U+00F6> exists in French? No word uses +# it. +# ò <U+00F2> does not exist in french but in occitan +# <URL:http://occitanet.free.fr/fr/index.html> +U+006F|U+00F4 +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +# u and its variants : ù û ü +# ú (u acute) does not seem to exist in French: for further study +U+0075|U+00F9:U+00FB:U+00FC +U+0076 +U+0077 +U+0078 +# y. ÿ only in names? (L'Haÿ-les-Roses) +U+0079|U+00FF +U+007A +# 0-9 +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +# - (hyphen) +U+002D +# Ligature ae (æ). Only in names like Lætitia? +U+00E6|U+0061U+0065 +# Ligature oe (not in Latin-1) +U+0153|U+006FU+0065 + +# Some references: +# http://www.sdv.fr/orthonet/pages/informations_p6.html +# regional languages +# http://www.ouest-france.fr/dossiershtm/cours-de-breton/lecture.htm +# http://occitanet.free.fr/fr/index.html +# http://www.picard.free.fr/lgpic/a-e.htm diff --git a/doc/tld/no.tld b/doc/tld/no.tld new file mode 100644 index 0000000..ff6ae27 --- /dev/null +++ b/doc/tld/no.tld @@ -0,0 +1,59 @@ +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# Author: Thomas Jacob, Internet24.de. + +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice, this notice and the source URL list below are preserved. + +# See http://www.norid.no/domeneregistrering/idn/idn_nyetegn.html +# http://www.norid.no/regelverk/forslag/idn-2003/index.en.html +# http://www.norid.no/regelverk/forslag/idn-2003/2003-02-18.en.html + +# --- snip --- +# +# From Hilde.Thunem at uninett.no Tue Mar 9 14:12:49 2004 +# Message-Id: <200403091312.i29DClR3028354 at valgrind.uninett.no> +# Subject: Re: NI2004012700128 Copyright of IDN character set tables +# +# Hi. +# +# You may use the character list freely. The only thing we would ask of you is +# that you give some reference as to where you have found it. This is to ensure +# that people that want to see the latest updated list know where to go (it may +# change if the languages changes - although I doubt that will happen). It also +# gives the opportunity for those interested in the background for why those +# characters have been chosen (e.g. that the language councils of Norway has +# been involved) to read about the process. +# +# Kind regards, +# Hilde Thunem +# NORID +# +# --- snap --- + +version "1.0" +tld no + +U+00E1 # a med akutt aksent / á 00E1 +U+00E0 # a med gravis-aksent / à 00E0 +U+00E4 # a med omlyd / ä 00E4 +U+010D # c med caron +U+00E7 # c med cedille / ç 00E7 +U+0111 # d med strek +U+00E9 # e med akutt aksent / é +U+00E8 # e med gravis-aksent / è +U+00EA # e med circumflex-aksent / ê +U+014B # eng +U+0144 # n med akutt aksent +U+00F1 # n med tilde / ñ +U+00F3 # o med akutt aksent / ó +U+00F2 # o med gravis-aksent / ò +U+00F4 # o med circumflex-aksent / ô +U+00F6 # o med omlyd / ö +U+0161 # s med caron +U+0167 # t med strek +U+00FC # u med omlyd / ü +U+017E # z med caron +U+00E6 # æ +U+00F8 # ø +U+00E5 # å diff --git a/doc/version.texi b/doc/version.texi new file mode 100644 index 0000000..1001413 --- /dev/null +++ b/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 28 May 2009 +@set UPDATED-MONTH May 2009 +@set EDITION 1.15 +@set VERSION 1.15 diff --git a/examples/Makefile.am b/examples/Makefile.am new file mode 100644 index 0000000..218db74 --- /dev/null +++ b/examples/Makefile.am @@ -0,0 +1,28 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +EXTRA_DIST = README + +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib +LDADD = ../lib/libidn.la + +noinst_PROGRAMS = example example2 example3 example4 +if TLD +noinst_PROGRAMS += example5 +endif diff --git a/examples/Makefile.in b/examples/Makefile.in new file mode 100644 index 0000000..4a3652a --- /dev/null +++ b/examples/Makefile.in @@ -0,0 +1,822 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = example$(EXEEXT) example2$(EXEEXT) example3$(EXEEXT) \ + example4$(EXEEXT) $(am__EXEEXT_1) +@TLD_TRUE@am__append_1 = example5 +subdir = examples +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@TLD_TRUE@am__EXEEXT_1 = example5$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +example_SOURCES = example.c +example_OBJECTS = example.$(OBJEXT) +example_LDADD = $(LDADD) +example_DEPENDENCIES = ../lib/libidn.la +example2_SOURCES = example2.c +example2_OBJECTS = example2.$(OBJEXT) +example2_LDADD = $(LDADD) +example2_DEPENDENCIES = ../lib/libidn.la +example3_SOURCES = example3.c +example3_OBJECTS = example3.$(OBJEXT) +example3_LDADD = $(LDADD) +example3_DEPENDENCIES = ../lib/libidn.la +example4_SOURCES = example4.c +example4_OBJECTS = example4.$(OBJEXT) +example4_LDADD = $(LDADD) +example4_DEPENDENCIES = ../lib/libidn.la +example5_SOURCES = example5.c +example5_OBJECTS = example5.$(OBJEXT) +example5_LDADD = $(LDADD) +example5_DEPENDENCIES = ../lib/libidn.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = example.c example2.c example3.c example4.c example5.c +DIST_SOURCES = example.c example2.c example3.c example4.c example5.c +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = README +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib +LDADD = ../lib/libidn.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) + @rm -f example$(EXEEXT) + $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) +example2$(EXEEXT): $(example2_OBJECTS) $(example2_DEPENDENCIES) + @rm -f example2$(EXEEXT) + $(LINK) $(example2_OBJECTS) $(example2_LDADD) $(LIBS) +example3$(EXEEXT): $(example3_OBJECTS) $(example3_DEPENDENCIES) + @rm -f example3$(EXEEXT) + $(LINK) $(example3_OBJECTS) $(example3_LDADD) $(LIBS) +example4$(EXEEXT): $(example4_OBJECTS) $(example4_DEPENDENCIES) + @rm -f example4$(EXEEXT) + $(LINK) $(example4_OBJECTS) $(example4_LDADD) $(LIBS) +example5$(EXEEXT): $(example5_OBJECTS) $(example5_DEPENDENCIES) + @rm -f example5$(EXEEXT) + $(LINK) $(example5_OBJECTS) $(example5_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example5.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/examples/README b/examples/README new file mode 100644 index 0000000..103d844 --- /dev/null +++ b/examples/README @@ -0,0 +1,28 @@ +Libidn examples/README -- Information about files in examples/ directory. +Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +This directory contains examples on how to use Libidn. + +* Example 1:: Example using stringprep. +This example demonstrates how the stringprep functions are used. + +* Example 2:: Example using punycode. +This example demonstrates how the punycode functions are used. + +* Example 3:: Example using IDNA ToASCII. +This example demonstrates how the library is used to convert +internationalized domain names into ASCII compatible names. + +* Example 4:: Example using IDNA ToUnicode. +This example demonstrates how the library is used to convert ASCII +compatible names to internationalized domain names. + +* Example 5:: Example using TLD checking. +This example demonstrates how the library is used to check a string +for invalid characters within a specific TLD. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/examples/example.c b/examples/example.c new file mode 100644 index 0000000..bd093b1 --- /dev/null +++ b/examples/example.c @@ -0,0 +1,85 @@ +/* example.c --- Example code showing how to use stringprep(). + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> /* setlocale() */ +#include <stringprep.h> + +/* + * Compiling using libtool and pkg-config is recommended: + * + * $ libtool cc -o example example.c `pkg-config --cflags --libs libidn` + * $ ./example + * Input string encoded as `ISO-8859-1': ª + * Before locale2utf8 (length 2): aa 0a + * Before stringprep (length 3): c2 aa 0a + * After stringprep (length 2): 61 0a + * $ + * + */ + +int +main (void) +{ + char buf[BUFSIZ]; + char *p; + int rc; + size_t i; + + setlocale (LC_ALL, ""); + + printf ("Input string encoded as `%s': ", stringprep_locale_charset ()); + fflush (stdout); + fgets (buf, BUFSIZ, stdin); + + printf ("Before locale2utf8 (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + + p = stringprep_locale_to_utf8 (buf); + if (p) + { + strcpy (buf, p); + free (p); + } + else + printf ("Could not convert string to UTF-8, continuing anyway...\n"); + + printf ("Before stringprep (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + + rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep); + if (rc != STRINGPREP_OK) + printf ("Stringprep failed (%d): %s\n", rc, stringprep_strerror (rc)); + else + { + printf ("After stringprep (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + } + + return 0; +} diff --git a/examples/example2.c b/examples/example2.c new file mode 100644 index 0000000..df1a10e --- /dev/null +++ b/examples/example2.c @@ -0,0 +1,233 @@ +/* example2.c --- Example code showing how to use punycode. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * Copyright (C) 2002 Adam M. Costello + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include <locale.h> /* setlocale() */ + +/* + * This file is derived from RFC 3492 written by Adam M. Costello. + * + * Disclaimer and license: Regarding this entire document or any + * portion of it (including the pseudocode and C code), the author + * makes no guarantees and is not responsible for any damage resulting + * from its use. The author grants irrevocable permission to anyone + * to use, modify, and distribute it in any way that does not diminish + * the rights of anyone else to use, modify, and distribute it, + * provided that redistributed derivative works do not contain + * misleading author or version information. Derivative works need + * not be licensed under similar terms. + * + */ + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <punycode.h> + +/* For testing, we'll just set some compile-time limits rather than */ +/* use malloc(), and set a compile-time option rather than using a */ +/* command-line option. */ + +enum +{ + unicode_max_length = 256, + ace_max_length = 256 +}; + +static void +usage (char **argv) +{ + fprintf (stderr, + "\n" + "%s -e reads code points and writes a Punycode string.\n" + "%s -d reads a Punycode string and writes code points.\n" + "\n" + "Input and output are plain text in the native character set.\n" + "Code points are in the form u+hex separated by whitespace.\n" + "Although the specification allows Punycode strings to contain\n" + "any characters from the ASCII repertoire, this test code\n" + "supports only the printable characters, and needs the Punycode\n" + "string to be followed by a newline.\n" + "The case of the u in u+hex is the force-to-uppercase flag.\n", + argv[0], argv[0]); + exit (EXIT_FAILURE); +} + +static void +fail (const char *msg) +{ + fputs (msg, stderr); + exit (EXIT_FAILURE); +} + +static const char too_big[] = + "input or output is too large, recompile with larger limits\n"; +static const char invalid_input[] = "invalid input\n"; +static const char overflow[] = "arithmetic overflow\n"; +static const char io_error[] = "I/O error\n"; + +/* The following string is used to convert printable */ +/* characters between ASCII and the native charset: */ + +static const char print_ascii[] = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" " !\"#$%&'()*+,-./" "0123456789:;<=>?" "\0x40" /* at sign */ + "ABCDEFGHIJKLMNO" + "PQRSTUVWXYZ[\\]^_" "`abcdefghijklmno" "pqrstuvwxyz{|}~\n"; + +int +main (int argc, char **argv) +{ + enum punycode_status status; + int r; + size_t input_length, output_length, j; + unsigned char case_flags[unicode_max_length]; + + setlocale (LC_ALL, ""); + + if (argc != 2) + usage (argv); + if (argv[1][0] != '-') + usage (argv); + if (argv[1][2] != 0) + usage (argv); + + if (argv[1][1] == 'e') + { + uint32_t input[unicode_max_length]; + unsigned long codept; + char output[ace_max_length + 1], uplus[3]; + int c; + + /* Read the input code points: */ + + input_length = 0; + + for (;;) + { + r = scanf ("%2s%lx", uplus, &codept); + if (ferror (stdin)) + fail (io_error); + if (r == EOF || r == 0) + break; + + if (r != 2 || uplus[1] != '+' || codept > (uint32_t) - 1) + { + fail (invalid_input); + } + + if (input_length == unicode_max_length) + fail (too_big); + + if (uplus[0] == 'u') + case_flags[input_length] = 0; + else if (uplus[0] == 'U') + case_flags[input_length] = 1; + else + fail (invalid_input); + + input[input_length++] = codept; + } + + /* Encode: */ + + output_length = ace_max_length; + status = punycode_encode (input_length, input, case_flags, + &output_length, output); + if (status == punycode_bad_input) + fail (invalid_input); + if (status == punycode_big_output) + fail (too_big); + if (status == punycode_overflow) + fail (overflow); + assert (status == punycode_success); + + /* Convert to native charset and output: */ + + for (j = 0; j < output_length; ++j) + { + c = output[j]; + assert (c >= 0 && c <= 127); + if (print_ascii[c] == 0) + fail (invalid_input); + output[j] = print_ascii[c]; + } + + output[j] = 0; + r = puts (output); + if (r == EOF) + fail (io_error); + return EXIT_SUCCESS; + } + + if (argv[1][1] == 'd') + { + char input[ace_max_length + 2], *p, *pp; + uint32_t output[unicode_max_length]; + + /* Read the Punycode input string and convert to ASCII: */ + + fgets (input, ace_max_length + 2, stdin); + if (ferror (stdin)) + fail (io_error); + if (feof (stdin)) + fail (invalid_input); + input_length = strlen (input) - 1; + if (input[input_length] != '\n') + fail (too_big); + input[input_length] = 0; + + for (p = input; *p != 0; ++p) + { + pp = strchr (print_ascii, *p); + if (pp == 0) + fail (invalid_input); + *p = pp - print_ascii; + } + + /* Decode: */ + + output_length = unicode_max_length; + status = punycode_decode (input_length, input, &output_length, + output, case_flags); + if (status == punycode_bad_input) + fail (invalid_input); + if (status == punycode_big_output) + fail (too_big); + if (status == punycode_overflow) + fail (overflow); + assert (status == punycode_success); + + /* Output the result: */ + + for (j = 0; j < output_length; ++j) + { + r = printf ("%s+%04lX\n", + case_flags[j] ? "U" : "u", (unsigned long) output[j]); + if (r < 0) + fail (io_error); + } + + return EXIT_SUCCESS; + } + + usage (argv); + return EXIT_SUCCESS; /* not reached, but quiets compiler warning */ +} diff --git a/examples/example3.c b/examples/example3.c new file mode 100644 index 0000000..2342c7d --- /dev/null +++ b/examples/example3.c @@ -0,0 +1,76 @@ +/* example3.c --- Example ToASCII() code showing how to use Libidn. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> /* setlocale() */ +#include <stringprep.h> /* stringprep_locale_charset() */ +#include <idna.h> /* idna_to_ascii_lz() */ + +/* + * Compiling using libtool and pkg-config is recommended: + * + * $ libtool cc -o example3 example3.c `pkg-config --cflags --libs libidn` + * $ ./example3 + * Input domain encoded as `ISO-8859-1': www.räksmörgåsª.example + * Read string (length 23): 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 aa 2e 65 78 61 6d 70 6c 65 + * ACE label (length 33): 'www.xn--rksmrgsa-0zap8p.example' + * 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65 + * $ + * + */ + +int +main (void) +{ + char buf[BUFSIZ]; + char *p; + int rc; + size_t i; + + setlocale (LC_ALL, ""); + + printf ("Input domain encoded as `%s': ", stringprep_locale_charset ()); + fflush (stdout); + fgets (buf, BUFSIZ, stdin); + buf[strlen (buf) - 1] = '\0'; + + printf ("Read string (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + + rc = idna_to_ascii_lz (buf, &p, 0); + if (rc != IDNA_SUCCESS) + { + printf ("ToASCII() failed (%d): %s\n", rc, idna_strerror (rc)); + exit (1); + } + + printf ("ACE label (length %d): '%s'\n", strlen (p), p); + for (i = 0; i < strlen (p); i++) + printf ("%02x ", p[i] & 0xFF); + printf ("\n"); + + free (p); + + return 0; +} diff --git a/examples/example4.c b/examples/example4.c new file mode 100644 index 0000000..20e5c88 --- /dev/null +++ b/examples/example4.c @@ -0,0 +1,76 @@ +/* example4.c --- Example ToUnicode() code showing how to use Libidn. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> /* setlocale() */ +#include <stringprep.h> /* stringprep_locale_charset() */ +#include <idna.h> /* idna_to_unicode_lzlz() */ + +/* + * Compiling using libtool and pkg-config is recommended: + * + * $ libtool cc -o example4 example4.c `pkg-config --cflags --libs libidn` + * $ ./example4 + * Input domain encoded as `ISO-8859-1': www.xn--rksmrgsa-0zap8p.example + * Read string (length 33): 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65 + * ACE label (length 23): 'www.räksmörgåsa.example' + * 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 61 2e 65 78 61 6d 70 6c 65 + * $ + * + */ + +int +main (void) +{ + char buf[BUFSIZ]; + char *p; + int rc; + size_t i; + + setlocale (LC_ALL, ""); + + printf ("Input domain encoded as `%s': ", stringprep_locale_charset ()); + fflush (stdout); + fgets (buf, BUFSIZ, stdin); + buf[strlen (buf) - 1] = '\0'; + + printf ("Read string (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + + rc = idna_to_unicode_lzlz (buf, &p, 0); + if (rc != IDNA_SUCCESS) + { + printf ("ToUnicode() failed (%d): %s\n", rc, idna_strerror (rc)); + exit (1); + } + + printf ("ACE label (length %d): '%s'\n", strlen (p), p); + for (i = 0; i < strlen (p); i++) + printf ("%02x ", p[i] & 0xFF); + printf ("\n"); + + free (p); + + return 0; +} diff --git a/examples/example5.c b/examples/example5.c new file mode 100644 index 0000000..2b40052 --- /dev/null +++ b/examples/example5.c @@ -0,0 +1,121 @@ +/* example5.c --- Example TLD checking. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* Get stringprep_locale_charset, etc. */ +#include <stringprep.h> + +/* Get idna_to_ascii_8z, etc. */ +#include <idna.h> + +/* Get tld_check_4z. */ +#include <tld.h> + +/* + * Compiling using libtool and pkg-config is recommended: + * + * $ libtool cc -o example5 example5.c `pkg-config --cflags --libs libidn` + * $ ./example5 + * Input domain encoded as `UTF-8': fooß.no + * Read string (length 8): 66 6f 6f c3 9f 2e 6e 6f + * ToASCII string (length 8): fooss.no + * ToUnicode string: U+0066 U+006f U+006f U+0073 U+0073 U+002e U+006e U+006f + * Domain accepted by TLD check + * + * $ ./example5 + * Input domain encoded as `UTF-8': gr€€n.no + * Read string (length 12): 67 72 e2 82 ac e2 82 ac 6e 2e 6e 6f + * ToASCII string (length 16): xn--grn-l50aa.no + * ToUnicode string: U+0067 U+0072 U+20ac U+20ac U+006e U+002e U+006e U+006f + * Domain rejected by TLD check, Unicode position 2 + * + */ + +int +main (void) +{ + char buf[BUFSIZ]; + char *p; + uint32_t *r; + int rc; + size_t errpos, i; + + printf ("Input domain encoded as `%s': ", stringprep_locale_charset ()); + fflush (stdout); + fgets (buf, BUFSIZ, stdin); + buf[strlen (buf) - 1] = '\0'; + + printf ("Read string (length %d): ", strlen (buf)); + for (i = 0; i < strlen (buf); i++) + printf ("%02x ", buf[i] & 0xFF); + printf ("\n"); + + p = stringprep_locale_to_utf8 (buf); + if (p) + { + strcpy (buf, p); + free (p); + } + else + printf ("Could not convert string to UTF-8, continuing anyway...\n"); + + rc = idna_to_ascii_8z (buf, &p, 0); + if (rc != IDNA_SUCCESS) + { + printf ("idna_to_ascii_8z failed (%d): %s\n", rc, idna_strerror (rc)); + return 2; + } + + printf ("ToASCII string (length %d): %s\n", strlen (p), p); + + rc = idna_to_unicode_8z4z (p, &r, 0); + free (p); + if (rc != IDNA_SUCCESS) + { + printf ("idna_to_unicode_8z4z failed (%d): %s\n", + rc, idna_strerror (rc)); + return 2; + } + + printf ("ToUnicode string: "); + for (i = 0; r[i]; i++) + printf ("U+%04x ", r[i]); + printf ("\n"); + + rc = tld_check_4z (r, &errpos, NULL); + free (r); + if (rc == TLD_INVALID) + { + printf ("Domain rejected by TLD check, Unicode position %d\n", errpos); + return 1; + } + else if (rc != TLD_SUCCESS) + { + printf ("tld_check_4z() failed (%d): %s\n", rc, tld_strerror (rc)); + return 2; + } + + printf ("Domain accepted by TLD check\n"); + + return 0; +} diff --git a/gl/Makefile.am b/gl/Makefile.am new file mode 100644 index 0000000..105d9e1 --- /dev/null +++ b/gl/Makefile.am @@ -0,0 +1,372 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings + +AUTOMAKE_OPTIONS = 1.5 gnits + +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST += m4/gnulib-cache.m4 + +AM_CPPFLAGS = +AM_CFLAGS = + +noinst_LTLIBRARIES += libgnu.la + +libgnu_la_SOURCES = +libgnu_la_LIBADD = $(gl_LTLIBOBJS) +libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) +EXTRA_libgnu_la_SOURCES = +libgnu_la_LDFLAGS = $(AM_LDFLAGS) + +## begin gnulib module csharpcomp-script + + +EXTRA_DIST += $(top_srcdir)/build-aux/csharpcomp.sh.in + +## end gnulib module csharpcomp-script + +## begin gnulib module errno + +BUILT_SOURCES += $(ERRNO_H) + +# We need the following in order to create <errno.h> when the system +# doesn't have one that is POSIX compliant. +errno.h: errno.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ + -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ + -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ + -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ + -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ + -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ + -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ + < $(srcdir)/errno.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += errno.h errno.h-t + +EXTRA_DIST += errno.in.h + +## end gnulib module errno + +## begin gnulib module error + + +EXTRA_DIST += error.c error.h + +EXTRA_libgnu_la_SOURCES += error.c + +## end gnulib module error + +## begin gnulib module gendocs + + +EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh + +## end gnulib module gendocs + +## begin gnulib module getopt + +BUILT_SOURCES += $(GETOPT_H) + +# We need the following in order to create <getopt.h> when the system +# doesn't have one that works with the given compiler. +getopt.h: getopt.in.h + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/getopt.in.h; \ + } > $@-t + mv -f $@-t $@ +MOSTLYCLEANFILES += getopt.h getopt.h-t + +EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h + +EXTRA_libgnu_la_SOURCES += getopt.c getopt1.c + +## end gnulib module getopt + +## begin gnulib module gettext-h + +libgnu_la_SOURCES += gettext.h + +## end gnulib module gettext-h + +## begin gnulib module gnumakefile + +distclean-local: clean-GNUmakefile +clean-GNUmakefile: + test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || : + +EXTRA_DIST += $(top_srcdir)/GNUmakefile + +## end gnulib module gnumakefile + +## begin gnulib module gnupload + + +EXTRA_DIST += $(top_srcdir)/build-aux/gnupload + +## end gnulib module gnupload + +## begin gnulib module intprops + + +EXTRA_DIST += intprops.h + +## end gnulib module intprops + +## begin gnulib module link-warning + +LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h + +EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h + +## end gnulib module link-warning + +## begin gnulib module maintainer-makefile + +EXTRA_DIST += $(top_srcdir)/maint.mk + +## end gnulib module maintainer-makefile + +## begin gnulib module pmccabe2html + + +EXTRA_DIST += $(top_srcdir)/build-aux/pmccabe2html $(top_srcdir)/build-aux/pmccabe.css + +## end gnulib module pmccabe2html + +## begin gnulib module progname + +libgnu_la_SOURCES += progname.h progname.c + +## end gnulib module progname + +## begin gnulib module stdarg + +BUILT_SOURCES += $(STDARG_H) + +# We need the following in order to create <stdarg.h> when the system +# doesn't have one that works with the given compiler. +stdarg.h: stdarg.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ + < $(srcdir)/stdarg.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += stdarg.h stdarg.h-t + +EXTRA_DIST += stdarg.in.h + +## end gnulib module stdarg + +## begin gnulib module strerror + + +EXTRA_DIST += strerror.c + +EXTRA_libgnu_la_SOURCES += strerror.c + +## end gnulib module strerror + +## begin gnulib module string + +BUILT_SOURCES += string.h + +# We need the following in order to create <string.h> when the system +# doesn't have one that works with the given compiler. +string.h: string.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ + -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \ + -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \ + -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \ + -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \ + -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \ + -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \ + -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \ + -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \ + -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \ + -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \ + -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \ + -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ + -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ + -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ + -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ + -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ + -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ + -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \ + -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \ + -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \ + -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \ + -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \ + -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \ + -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \ + -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \ + -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \ + -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \ + -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \ + -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \ + -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \ + -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \ + -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \ + -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ + -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ + -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ + -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ + -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ + -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ + -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ + -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ + -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ + -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ + -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ + -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ + -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ + -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ + -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ + -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ + -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ + -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ + -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ + -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ + -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ + -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/string.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += string.h string.h-t + +EXTRA_DIST += string.in.h + +## end gnulib module string + +## begin gnulib module unistd + +BUILT_SOURCES += unistd.h + +# We need the following in order to create an empty placeholder for +# <unistd.h> when the system doesn't have one. +unistd.h: unistd.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ + -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \ + -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \ + -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \ + -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \ + -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \ + -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \ + -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \ + -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \ + -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \ + -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \ + -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \ + -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \ + -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \ + -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \ + -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \ + -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \ + -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \ + -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ + -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ + -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \ + -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \ + -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \ + -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ + -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ + -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ + -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ + -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \ + -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ + -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ + -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ + -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \ + -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ + -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ + -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ + -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ + -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ + -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ + -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ + -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ + -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ + -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \ + -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ + -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ + -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ + -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ + -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ + -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/unistd.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += unistd.h unistd.h-t + +EXTRA_DIST += unistd.in.h + +## end gnulib module unistd + +## begin gnulib module useless-if-before-free + + +EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free + +## end gnulib module useless-if-before-free + +## begin gnulib module vc-list-files + + +EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files + +## end gnulib module vc-list-files + +## begin gnulib module version-etc + +libgnu_la_SOURCES += version-etc.h version-etc.c + +## end gnulib module version-etc + + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : diff --git a/gl/Makefile.in b/gl/Makefile.in new file mode 100644 index 0000000..7c9e728 --- /dev/null +++ b/gl/Makefile.in @@ -0,0 +1,1167 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gl +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +LTLIBRARIES = $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am_libgnu_la_OBJECTS = progname.lo version-etc.lo +libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) +libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) +DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.5 gnits +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = libgnu.la +EXTRA_DIST = m4/gnulib-cache.m4 \ + $(top_srcdir)/build-aux/csharpcomp.sh.in errno.in.h error.c \ + error.h $(top_srcdir)/build-aux/gendocs.sh getopt.c \ + getopt.in.h getopt1.c getopt_int.h $(top_srcdir)/GNUmakefile \ + $(top_srcdir)/build-aux/gnupload intprops.h \ + $(top_srcdir)/build-aux/link-warning.h $(top_srcdir)/maint.mk \ + $(top_srcdir)/build-aux/pmccabe2html \ + $(top_srcdir)/build-aux/pmccabe.css stdarg.in.h strerror.c \ + string.in.h unistd.in.h \ + $(top_srcdir)/build-aux/useless-if-before-free \ + $(top_srcdir)/build-aux/vc-list-files +BUILT_SOURCES = $(ERRNO_H) $(GETOPT_H) $(STDARG_H) string.h unistd.h +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump errno.h errno.h-t getopt.h \ + getopt.h-t stdarg.h stdarg.h-t string.h string.h-t unistd.h \ + unistd.h-t +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +AM_CPPFLAGS = +AM_CFLAGS = +libgnu_la_SOURCES = gettext.h progname.h progname.c version-etc.h \ + version-etc.c +libgnu_la_LIBADD = $(gl_LTLIBOBJS) +libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) +EXTRA_libgnu_la_SOURCES = error.c getopt.c getopt1.c strerror.c +libgnu_la_LDFLAGS = $(AM_LDFLAGS) +LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits gl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits gl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) + $(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-libtool distclean-local distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# We need the following in order to create <errno.h> when the system +# doesn't have one that is POSIX compliant. +errno.h: errno.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ + -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ + -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ + -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ + -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ + -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ + -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ + < $(srcdir)/errno.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create <getopt.h> when the system +# doesn't have one that works with the given compiler. +getopt.h: getopt.in.h + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/getopt.in.h; \ + } > $@-t + mv -f $@-t $@ + +distclean-local: clean-GNUmakefile +clean-GNUmakefile: + test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || : + +# We need the following in order to create <stdarg.h> when the system +# doesn't have one that works with the given compiler. +stdarg.h: stdarg.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ + < $(srcdir)/stdarg.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create <string.h> when the system +# doesn't have one that works with the given compiler. +string.h: string.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ + -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \ + -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \ + -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \ + -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \ + -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \ + -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \ + -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \ + -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \ + -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \ + -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \ + -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \ + -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ + -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ + -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ + -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ + -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ + -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ + -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \ + -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \ + -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \ + -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \ + -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \ + -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \ + -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \ + -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \ + -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \ + -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \ + -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \ + -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \ + -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \ + -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \ + -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \ + -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ + -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ + -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ + -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ + -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ + -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ + -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ + -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ + -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ + -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ + -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ + -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ + -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ + -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ + -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ + -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ + -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ + -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ + -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ + -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ + -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ + -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/string.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create an empty placeholder for +# <unistd.h> when the system doesn't have one. +unistd.h: unistd.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ + -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \ + -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \ + -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \ + -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \ + -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \ + -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \ + -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \ + -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \ + -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \ + -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \ + -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \ + -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \ + -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \ + -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \ + -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \ + -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \ + -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \ + -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \ + -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \ + -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \ + -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \ + -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \ + -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ + -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ + -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ + -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ + -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \ + -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ + -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ + -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ + -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \ + -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ + -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ + -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ + -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ + -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ + -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ + -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ + -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ + -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ + -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \ + -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ + -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ + -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ + -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ + -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ + -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/unistd.in.h; \ + } > $@-t + mv $@-t $@ + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + 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: diff --git a/gl/errno.in.h b/gl/errno.in.h new file mode 100644 index 0000000..51ac662 --- /dev/null +++ b/gl/errno.in.h @@ -0,0 +1,155 @@ +/* A POSIX-like <errno.h>. + + Copyright (C) 2008 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_ERRNO_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_ERRNO_H@ + +#ifndef _GL_ERRNO_H +#define _GL_ERRNO_H + + +/* On native Windows platforms, many macros are not defined. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + +/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value. */ +# define EWOULDBLOCK EAGAIN + +/* Values >= 100 seem safe to use. */ +# define ETXTBSY 100 +# define GNULIB_defined_ETXTBSY 1 + +/* These are intentionally the same values as the WSA* error numbers, defined + in <winsock2.h>. */ +# define EINPROGRESS 10036 +# define EALREADY 10037 +# define ENOTSOCK 10038 +# define EDESTADDRREQ 10039 +# define EMSGSIZE 10040 +# define EPROTOTYPE 10041 +# define ENOPROTOOPT 10042 +# define EPROTONOSUPPORT 10043 +# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ +# define EOPNOTSUPP 10045 +# define EPFNOSUPPORT 10046 /* not required by POSIX */ +# define EAFNOSUPPORT 10047 +# define EADDRINUSE 10048 +# define EADDRNOTAVAIL 10049 +# define ENETDOWN 10050 +# define ENETUNREACH 10051 +# define ENETRESET 10052 +# define ECONNABORTED 10053 +# define ECONNRESET 10054 +# define ENOBUFS 10055 +# define EISCONN 10056 +# define ENOTCONN 10057 +# define ESHUTDOWN 10058 /* not required by POSIX */ +# define ETOOMANYREFS 10059 /* not required by POSIX */ +# define ETIMEDOUT 10060 +# define ECONNREFUSED 10061 +# define ELOOP 10062 +# define EHOSTDOWN 10064 /* not required by POSIX */ +# define EHOSTUNREACH 10065 +# define EPROCLIM 10067 /* not required by POSIX */ +# define EUSERS 10068 /* not required by POSIX */ +# define EDQUOT 10069 +# define ESTALE 10070 +# define EREMOTE 10071 /* not required by POSIX */ +# define GNULIB_defined_ESOCK 1 + +# endif + + +/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros + EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ +# if @EMULTIHOP_HIDDEN@ +# define EMULTIHOP @EMULTIHOP_VALUE@ +# define GNULIB_defined_EMULTIHOP 1 +# endif +# if @ENOLINK_HIDDEN@ +# define ENOLINK @ENOLINK_VALUE@ +# define GNULIB_defined_ENOLINK 1 +# endif +# if @EOVERFLOW_HIDDEN@ +# define EOVERFLOW @EOVERFLOW_VALUE@ +# define GNULIB_defined_EOVERFLOW 1 +# endif + + +/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, + EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. + Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, + HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. + + Note: When one of these systems defines some of these macros some day, + binaries will have to be recompiled so that they recognizes the new + errno values from the system. */ + +# ifndef ENOMSG +# define ENOMSG 2000 +# define GNULIB_defined_ENOMSG 1 +# endif + +# ifndef EIDRM +# define EIDRM 2001 +# define GNULIB_defined_EIDRM 1 +# endif + +# ifndef ENOLINK +# define ENOLINK 2002 +# define GNULIB_defined_ENOLINK 1 +# endif + +# ifndef EPROTO +# define EPROTO 2003 +# define GNULIB_defined_EPROTO 1 +# endif + +# ifndef EMULTIHOP +# define EMULTIHOP 2004 +# define GNULIB_defined_EMULTIHOP 1 +# endif + +# ifndef EBADMSG +# define EBADMSG 2005 +# define GNULIB_defined_EBADMSG 1 +# endif + +# ifndef EOVERFLOW +# define EOVERFLOW 2006 +# define GNULIB_defined_EOVERFLOW 1 +# endif + +# ifndef ENOTSUP +# define ENOTSUP 2007 +# define GNULIB_defined_ENOTSUP 1 +# endif + +# ifndef ECANCELED +# define ECANCELED 2008 +# define GNULIB_defined_ECANCELED 1 +# endif + + +#endif /* _GL_ERRNO_H */ +#endif /* _GL_ERRNO_H */ diff --git a/gl/error.c b/gl/error.c new file mode 100644 index 0000000..3177bd5 --- /dev/null +++ b/gl/error.c @@ -0,0 +1,338 @@ +/* Error handler for noninteractive utilities + Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */ + +#if !_LIBC +# include <config.h> +#endif + +#include "error.h" + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if !_LIBC && ENABLE_NLS +# include "gettext.h" +# define _(msgid) gettext (msgid) +#endif + +#ifdef _LIBC +# include <libintl.h> +# include <stdbool.h> +# include <stdint.h> +# include <wchar.h> +# define mbsrtowcs __mbsrtowcs +#endif + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + +#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) (void); + +/* 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 <errno.h> +# include <limits.h> +# include <libio/libioP.h> + +/* In GNU libc we want do not want to use the common name `error' directly. + Instead make it a weak alias. */ +extern void __error (int status, int errnum, const char *message, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern void __error_at_line (int status, int errnum, const char *file_name, + unsigned int line_number, const char *message, + ...) + __attribute__ ((__format__ (__printf__, 5, 6)));; +# define error __error +# define error_at_line __error_at_line + +# include <libio/iolibio.h> +# define fflush(s) INTUSE(_IO_fflush) (s) +# undef putc +# define putc(c, fp) INTUSE(_IO_putc) (c, fp) + +# include <bits/libc-lock.h> + +#else /* not _LIBC */ + +# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P +# ifndef HAVE_DECL_STRERROR_R +"this configure-time declaration test was not run" +# endif +char *strerror_r (); +# endif + +/* The calling program should define program_name and set it to the + name of the executing program. */ +extern char *program_name; + +# if HAVE_STRERROR_R || defined strerror_r +# define __strerror_r strerror_r +# endif /* HAVE_STRERROR_R || defined strerror_r */ +#endif /* not _LIBC */ + +static void +print_errno_message (int errnum) +{ + char const *s; + +#if defined HAVE_STRERROR_R || _LIBC + char errbuf[1024]; +# if STRERROR_R_CHAR_P || _LIBC + s = __strerror_r (errnum, errbuf, sizeof errbuf); +# else + if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) + s = errbuf; + else + s = 0; +# endif +#else + s = strerror (errnum); +#endif + +#if !_LIBC + if (! s) + s = _("Unknown system error"); +#endif + +#if _LIBC + __fxprintf (NULL, ": %s", s); +#else + fprintf (stderr, ": %s", s); +#endif +} + +static void +error_tail (int status, int errnum, const char *message, va_list args) +{ +#if _LIBC + if (_IO_fwide (stderr, 0) > 0) + { +# define ALLOCA_LIMIT 2000 + size_t len = strlen (message) + 1; + wchar_t *wmessage = NULL; + mbstate_t st; + size_t res; + const char *tmp; + bool use_malloc = false; + + while (1) + { + if (__libc_use_alloca (len * sizeof (wchar_t))) + wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); + else + { + if (!use_malloc) + wmessage = NULL; + + wchar_t *p = (wchar_t *) realloc (wmessage, + len * sizeof (wchar_t)); + if (p == NULL) + { + free (wmessage); + fputws_unlocked (L"out of memory\n", stderr); + return; + } + wmessage = p; + use_malloc = true; + } + + memset (&st, '\0', sizeof (st)); + tmp = message; + + res = mbsrtowcs (wmessage, &tmp, len, &st); + if (res != len) + break; + + if (__builtin_expect (len >= SIZE_MAX / 2, 0)) + { + /* This really should not happen if everything is fine. */ + res = (size_t) -1; + break; + } + + len *= 2; + } + + if (res == (size_t) -1) + { + /* The string cannot be converted. */ + if (use_malloc) + { + free (wmessage); + use_malloc = false; + } + wmessage = (wchar_t *) L"???"; + } + + __vfwprintf (stderr, wmessage, args); + + if (use_malloc) + free (wmessage); + } + else +#endif + vfprintf (stderr, message, args); + va_end (args); + + ++error_message_count; + if (errnum) + print_errno_message (errnum); +#if _LIBC + __fxprintf (NULL, "\n"); +#else + putc ('\n', stderr); +#endif + fflush (stderr); + if (status) + exit (status); +} + + +/* 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. */ +void +error (int status, int errnum, const char *message, ...) +{ + va_list args; + +#if defined _LIBC && defined __libc_ptf_call + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; + __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), + 0); +#endif + + fflush (stdout); +#ifdef _LIBC + _IO_flockfile (stderr); +#endif + if (error_print_progname) + (*error_print_progname) (); + else + { +#if _LIBC + __fxprintf (NULL, "%s: ", program_name); +#else + fprintf (stderr, "%s: ", program_name); +#endif + } + + va_start (args, message); + error_tail (status, errnum, message, args); + +#ifdef _LIBC + _IO_funlockfile (stderr); +# ifdef __libc_ptf_call + __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); +# endif +#endif +} + +/* 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 +error_at_line (int status, int errnum, const char *file_name, + unsigned int line_number, const char *message, ...) +{ + va_list args; + + 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) == 0)) + /* Simply return and print nothing. */ + return; + + old_file_name = file_name; + old_line_number = line_number; + } + +#if defined _LIBC && defined __libc_ptf_call + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ + int state = PTHREAD_CANCEL_ENABLE; + __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), + 0); +#endif + + fflush (stdout); +#ifdef _LIBC + _IO_flockfile (stderr); +#endif + if (error_print_progname) + (*error_print_progname) (); + else + { +#if _LIBC + __fxprintf (NULL, "%s:", program_name); +#else + fprintf (stderr, "%s:", program_name); +#endif + } + +#if _LIBC + __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ", + file_name, line_number); +#else + fprintf (stderr, file_name != NULL ? "%s:%d: " : " ", + file_name, line_number); +#endif + + va_start (args, message); + error_tail (status, errnum, message, args); + +#ifdef _LIBC + _IO_funlockfile (stderr); +# ifdef __libc_ptf_call + __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); +# endif +#endif +} + +#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 diff --git a/gl/error.h b/gl/error.h new file mode 100644 index 0000000..6d49681 --- /dev/null +++ b/gl/error.h @@ -0,0 +1,65 @@ +/* Declaration for error-reporting function + Copyright (C) 1995, 1996, 1997, 2003, 2006, 2008 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#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) +# 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 + +/* 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); + +/* 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 */ diff --git a/gl/getopt.c b/gl/getopt.c new file mode 100644 index 0000000..f1e6d1f --- /dev/null +++ b/gl/getopt.c @@ -0,0 +1,1186 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to drepper@gnu.org + before changing it! + Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006,2008 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#ifndef _LIBC +# include <config.h> +#endif + +#include "getopt.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#ifdef _LIBC +# include <libintl.h> +#else +# include "gettext.h" +# define _(msgid) gettext (msgid) +#endif + +#if defined _LIBC && defined USE_IN_LIBIO +# include <wchar.h> +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +/* Unlike standard Unix `getopt', functions like `getopt_long' + let the user intersperse the options with the other arguments. + + As `getopt_long' 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. + + Using `getopt' or setting the environment variable POSIXLY_CORRECT + disables permutation. + Then the application's 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_int.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; + +/* 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 = '?'; + +/* Keep a global copy of all internal members of getopt_data. */ + +static struct _getopt_data getopt_data; + + +#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV +extern char *getenv (); +#endif + +#ifdef _LIBC +/* Stored original parameters. + 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). */ +extern int __libc_argc; +extern char **__libc_argv; + +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +# ifdef USE_NONOPTION_FLAGS +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; +# endif + +# ifdef USE_NONOPTION_FLAGS +# define SWAP_FLAGS(ch1, ch2) \ + if (d->__nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +# else +# define SWAP_FLAGS(ch1, ch2) +# endif +#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. */ + +static void +exchange (char **argv, struct _getopt_data *d) +{ + int bottom = d->__first_nonopt; + int middle = d->__last_nonopt; + int top = d->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. */ + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + /* 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 (d->__nonoption_flags_len > 0 && top >= d->__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) + d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0; + else + { + memset (__mempcpy (new_str, __getopt_nonoption_flags, + d->__nonoption_flags_max_len), + '\0', top + 1 - d->__nonoption_flags_max_len); + d->__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. */ + + d->__first_nonopt += (d->optind - d->__last_nonopt); + d->__last_nonopt = d->optind; +} + +/* Initialize the internal data when the first call is made. */ + +static const char * +_getopt_initialize (int argc, char **argv, const char *optstring, + int posixly_correct, struct _getopt_data *d) +{ + /* 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. */ + + d->__first_nonopt = d->__last_nonopt = d->optind; + + d->__nextchar = NULL; + + d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + d->__ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + d->__ordering = REQUIRE_ORDER; + ++optstring; + } + else if (d->__posixly_correct) + d->__ordering = REQUIRE_ORDER; + else + d->__ordering = PERMUTE; + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + if (!d->__posixly_correct + && argc == __libc_argc && argv == __libc_argv) + { + if (d->__nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + d->__nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = d->__nonoption_flags_max_len = strlen (orig_str); + if (d->__nonoption_flags_max_len < argc) + d->__nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (d->__nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + d->__nonoption_flags_max_len = -1; + else + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', d->__nonoption_flags_max_len - len); + } + } + d->__nonoption_flags_len = d->__nonoption_flags_max_len; + } + else + d->__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. + + 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. + + If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT + environment variable were set. */ + +int +_getopt_internal_r (int argc, char **argv, const char *optstring, + const struct option *longopts, int *longind, + int long_only, int posixly_correct, struct _getopt_data *d) +{ + int print_errors = d->opterr; + if (optstring[0] == ':') + print_errors = 0; + + if (argc < 1) + return -1; + + d->optarg = NULL; + + if (d->optind == 0 || !d->__initialized) + { + if (d->optind == 0) + d->optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring, + posixly_correct, d); + d->__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. */ +#if defined _LIBC && defined USE_NONOPTION_FLAGS +# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \ + || (d->optind < d->__nonoption_flags_len \ + && __getopt_nonoption_flags[d->optind] == '1')) +#else +# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0') +#endif + + if (d->__nextchar == NULL || *d->__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 (d->__last_nonopt > d->optind) + d->__last_nonopt = d->optind; + if (d->__first_nonopt > d->optind) + d->__first_nonopt = d->optind; + + if (d->__ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (d->__first_nonopt != d->__last_nonopt + && d->__last_nonopt != d->optind) + exchange ((char **) argv, d); + else if (d->__last_nonopt != d->optind) + d->__first_nonopt = d->optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (d->optind < argc && NONOPTION_P) + d->optind++; + d->__last_nonopt = d->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 (d->optind != argc && !strcmp (argv[d->optind], "--")) + { + d->optind++; + + if (d->__first_nonopt != d->__last_nonopt + && d->__last_nonopt != d->optind) + exchange ((char **) argv, d); + else if (d->__first_nonopt == d->__last_nonopt) + d->__first_nonopt = d->optind; + d->__last_nonopt = argc; + + d->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 (d->optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (d->__first_nonopt != d->__last_nonopt) + d->optind = d->__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 (d->__ordering == REQUIRE_ORDER) + return -1; + d->optarg = argv[d->optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + d->__nextchar = (argv[d->optind] + 1 + + (longopts != NULL && argv[d->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[d->optind][1] == '-' + || (long_only && (argv[d->optind][2] + || !strchr (optstring, argv[d->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 = d->__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, d->__nextchar, nameend - d->__nextchar)) + { + if ((unsigned int) (nameend - d->__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 if (long_only + || pfound->has_arg != p->has_arg + || pfound->flag != p->flag + || pfound->val != p->val) + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[d->optind]) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[d->optind]); +#endif + } + d->__nextchar += strlen (d->__nextchar); + d->optind++; + d->optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + d->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) + d->optarg = nameend + 1; + else + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + + if (argv[d->optind - 1][1] == '-') + { + /* --option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("\ +%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); +#else + fprintf (stderr, _("\ +%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); +#endif + } + else + { + /* +option or -option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("\ +%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[d->optind - 1][0], + pfound->name); +#else + fprintf (stderr, _("\ +%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[d->optind - 1][0], + pfound->name); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 + |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#endif + } + + d->__nextchar += strlen (d->__nextchar); + + d->optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (d->optind < argc) + d->optarg = argv[d->optind++]; + else + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `%s' requires an argument\n"), + argv[0], argv[d->optind - 1]) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 + |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[d->optind - 1]); +#endif + } + d->__nextchar += strlen (d->__nextchar); + d->optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + d->__nextchar += strlen (d->__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[d->optind][1] == '-' + || strchr (optstring, *d->__nextchar) == NULL) + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + + if (argv[d->optind][1] == '-') + { + /* --option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"), + argv[0], d->__nextchar); +#else + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], d->__nextchar); +#endif + } + else + { + /* +option or -option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[d->optind][0], d->__nextchar); +#else + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[d->optind][0], d->__nextchar); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#endif + } + d->__nextchar = (char *) ""; + d->optind++; + d->optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *d->__nextchar++; + char *temp = strchr (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*d->__nextchar == '\0') + ++d->optind; + + if (temp == NULL || c == ':') + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + + if (d->__posixly_correct) + { + /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: illegal option -- %c\n"), + argv[0], c); +#else + fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); +#endif + } + else + { +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: invalid option -- %c\n"), + argv[0], c); +#else + fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#endif + } + d->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 (*d->__nextchar != '\0') + { + d->optarg = d->__nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + d->optind++; + } + else if (d->optind == argc) + { + if (print_errors) + { + /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, + _("%s: option requires an argument -- %c\n"), + argv[0], c) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); +#endif + } + d->optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `d->optind' once; + increment it again when taking next ARGV-elt as argument. */ + d->optarg = argv[d->optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (d->__nextchar = nameend = d->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, d->__nextchar, nameend - d->__nextchar)) + { + if ((unsigned int) (nameend - d->__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 (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[d->optind]) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[d->optind]); +#endif + } + d->__nextchar += strlen (d->__nextchar); + d->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) + d->optarg = nameend + 1; + else + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 + |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); +#endif + } + + d->__nextchar += strlen (d->__nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (d->optind < argc) + d->optarg = argv[d->optind++]; + else + { + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `%s' requires an argument\n"), + argv[0], argv[d->optind - 1]) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 + |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[d->optind - 1]); +#endif + } + d->__nextchar += strlen (d->__nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + d->__nextchar += strlen (d->__nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + d->__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 (*d->__nextchar != '\0') + { + d->optarg = d->__nextchar; + d->optind++; + } + else + d->optarg = NULL; + d->__nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*d->__nextchar != '\0') + { + d->optarg = d->__nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + d->optind++; + } + else if (d->optind == argc) + { + if (print_errors) + { + /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option requires an argument -- %c\n"), + argv[0], c) >= 0) + { + _IO_flockfile (stderr); + + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + __fxprintf (NULL, "%s", buf); + + ((_IO_FILE *) stderr)->_flags2 = old_flags2; + _IO_funlockfile (stderr); + + free (buf); + } +#else + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); +#endif + } + d->optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + d->optarg = argv[d->optind++]; + d->__nextchar = NULL; + } + } + return c; + } +} + +int +_getopt_internal (int argc, char **argv, const char *optstring, + const struct option *longopts, int *longind, + int long_only, int posixly_correct) +{ + int result; + + getopt_data.optind = optind; + getopt_data.opterr = opterr; + + result = _getopt_internal_r (argc, argv, optstring, longopts, longind, + long_only, posixly_correct, &getopt_data); + + optind = getopt_data.optind; + optarg = getopt_data.optarg; + optopt = getopt_data.optopt; + + return result; +} + +/* glibc gets a LSB-compliant getopt. + Standalone applications get a POSIX-compliant getopt. */ +#if _LIBC +enum { POSIXLY_CORRECT = 0 }; +#else +enum { POSIXLY_CORRECT = 1 }; +#endif + +int +getopt (int argc, char *const *argv, const char *optstring) +{ + return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0, + POSIXLY_CORRECT); +} + + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (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 */ diff --git a/gl/getopt.in.h b/gl/getopt.in.h new file mode 100644 index 0000000..d2d3e6e --- /dev/null +++ b/gl/getopt.in.h @@ -0,0 +1,225 @@ +/* Declarations for getopt. + Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#ifndef _GETOPT_H + +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif + +/* Standalone applications should #define __GETOPT_PREFIX to an + identifier that prefixes the external functions and variables + defined in this header. When this happens, include the + headers that might declare getopt so that they will not cause + confusion if included after this file. Then systematically rename + identifiers so that they do not collide with the system functions + and variables. Renaming avoids problems with some compilers and + linkers. */ +#if defined __GETOPT_PREFIX && !defined __need_getopt +# include <stdlib.h> +# include <stdio.h> +# include <unistd.h> +# undef __need_getopt +# undef getopt +# undef getopt_long +# undef getopt_long_only +# undef optarg +# undef opterr +# undef optind +# undef optopt +# define __GETOPT_CONCAT(x, y) x ## y +# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) +# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) +# define getopt __GETOPT_ID (getopt) +# define getopt_long __GETOPT_ID (getopt_long) +# define getopt_long_only __GETOPT_ID (getopt_long_only) +# define optarg __GETOPT_ID (optarg) +# define opterr __GETOPT_ID (opterr) +# define optind __GETOPT_ID (optind) +# define optopt __GETOPT_ID (optopt) +#endif + +/* Standalone applications get correct prototypes for getopt_long and + getopt_long_only; they declare "char **argv". libc uses prototypes + with "char *const *argv" that are incorrect because getopt_long and + getopt_long_only can permute argv; this is required for backward + compatibility (e.g., for LSB 2.0.1). + + This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt', + but it caused redefinition warnings if both unistd.h and getopt.h were + included, since unistd.h includes getopt.h having previously defined + __need_getopt. + + The only place where __getopt_argv_const is used is in definitions + of getopt_long and getopt_long_only below, but these are visible + only if __need_getopt is not defined, so it is quite safe to rewrite + the conditional as follows: +*/ +#if !defined __need_getopt +# if defined __GETOPT_PREFIX +# define __getopt_argv_const /* empty */ +# else +# define __getopt_argv_const const +# endif +#endif + +/* If __GNU_LIBRARY__ is not already defined, either we are being used + standalone, or this is the first header included in the source file. + If we are being used with glibc, we need to include <features.h>, but + that does not exist if we are standalone. So: if __GNU_LIBRARY__ is + not defined, include <ctype.h>, which will pull in <features.h> for us + if it's from glibc. (Why ctype.h? It's guaranteed to exist and it + doesn't flood the namespace with stuff the way some other headers do.) */ +#if !defined __GNU_LIBRARY__ +# include <ctype.h> +#endif + +#ifndef __THROW +# ifndef __GNUC_PREREQ +# define __GNUC_PREREQ(maj, min) (0) +# endif +# if defined __cplusplus && __GNUC_PREREQ (2,8) +# define __THROW throw () +# else +# define __THROW +# endif +#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 +{ + const char *name; + /* 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 '\1'. This behavior is specific to the GNU + `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in + the environment, then do not permute arguments. */ + +extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) + __THROW; + +#ifndef __need_getopt +extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, + const char *__shortopts, + const struct option *__longopts, int *__longind) + __THROW; +extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, + const char *__shortopts, + const struct option *__longopts, int *__longind) + __THROW; + +#endif + +#ifdef __cplusplus +} +#endif + +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/gl/getopt1.c b/gl/getopt1.c new file mode 100644 index 0000000..ba115c4 --- /dev/null +++ b/gl/getopt1.c @@ -0,0 +1,170 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006,2009 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#ifdef _LIBC +# include <getopt.h> +#else +# include <config.h> +# include "getopt.h" +#endif +#include "getopt_int.h" + +#include <stdio.h> + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include <stdlib.h> +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (int argc, char *__getopt_argv_const *argv, const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, (char **) argv, options, long_options, + opt_index, 0, 0); +} + +int +_getopt_long_r (int argc, char **argv, const char *options, + const struct option *long_options, int *opt_index, + struct _getopt_data *d) +{ + return _getopt_internal_r (argc, argv, options, long_options, opt_index, + 0, 0, d); +} + +/* 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 (int argc, char *__getopt_argv_const *argv, + const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, (char **) argv, options, long_options, + opt_index, 1, 0); +} + +int +_getopt_long_only_r (int argc, char **argv, const char *options, + const struct option *long_options, int *opt_index, + struct _getopt_data *d) +{ + return _getopt_internal_r (argc, argv, options, long_options, opt_index, + 1, 0, d); +} + + +#ifdef TEST + +#include <stdio.h> + +int +main (int argc, char **argv) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static const 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 */ diff --git a/gl/getopt_int.h b/gl/getopt_int.h new file mode 100644 index 0000000..3c6628b --- /dev/null +++ b/gl/getopt_int.h @@ -0,0 +1,130 @@ +/* Internal declarations for getopt. + Copyright (C) 1989-1994,1996-1999,2001,2003,2004 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#ifndef _GETOPT_INT_H +#define _GETOPT_INT_H 1 + +extern int _getopt_internal (int ___argc, char **___argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only, int __posixly_correct); + + +/* Reentrant versions which can handle parsing multiple argument + vectors at the same time. */ + +/* Data type for reentrant functions. */ +struct _getopt_data +{ + /* These have exactly the same meaning as the corresponding global + variables, except that they are used for the reentrant + versions of getopt. */ + int optind; + int opterr; + int optopt; + char *optarg; + + /* Internal members. */ + + /* True if the internal members have been initialized. */ + int __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. */ + char *__nextchar; + + /* 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, or by calling getopt. + + 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. */ + + enum + { + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER + } __ordering; + + /* If the POSIXLY_CORRECT environment variable is set + or getopt was called. */ + int __posixly_correct; + + + /* 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. */ + + int __first_nonopt; + int __last_nonopt; + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + int __nonoption_flags_max_len; + int __nonoption_flags_len; +# endif +}; + +/* The initializer is necessary to set OPTIND and OPTERR to their + default values and to clear the initialization flag. */ +#define _GETOPT_DATA_INITIALIZER { 1, 1 } + +extern int _getopt_internal_r (int ___argc, char **___argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only, int __posixly_correct, + struct _getopt_data *__data); + +extern int _getopt_long_r (int ___argc, char **___argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + struct _getopt_data *__data); + +extern int _getopt_long_only_r (int ___argc, char **___argv, + const char *__shortopts, + const struct option *__longopts, + int *__longind, + struct _getopt_data *__data); + +#endif /* getopt_int.h */ diff --git a/gl/gettext.h b/gl/gettext.h new file mode 100644 index 0000000..41c0ae1 --- /dev/null +++ b/gl/gettext.h @@ -0,0 +1,174 @@ +/* Convenience header for conditional use of GNU <libintl.h>. + Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include <libintl.h> + +/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by + the gettext() and ngettext() macros. This is an alternative to calling + textdomain(), and is useful for libraries. */ +# ifdef DEFAULT_TEXT_DOMAIN +# undef gettext +# define gettext(Msgid) \ + dgettext (DEFAULT_TEXT_DOMAIN, Msgid) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) +# endif + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of <locale.h> a NOP. We don't include <libintl.h> + as well because people using "gettext.h" will not include <libintl.h>, + and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> + is OK. */ +#if defined(__sun) +# include <locale.h> +#endif + +/* Many header files from the libstdc++ coming with g++ 3.3 or newer include + <libintl.h>, which chokes if dcgettext is defined as a macro. So include + it now, to make later inclusions of <libintl.h> a NOP. */ +#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) +# include <cstdlib> +# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H +# include <libintl.h> +# endif +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# undef gettext +# define gettext(Msgid) ((const char *) (Msgid)) +# undef dgettext +# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) +# undef dcgettext +# define dcgettext(Domainname, Msgid, Category) \ + ((void) (Category), dgettext (Domainname, Msgid)) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 \ + ? ((void) (Msgid2), (const char *) (Msgid1)) \ + : ((void) (Msgid1), (const char *) (Msgid2))) +# undef dngettext +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) +# undef dcngettext +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N)) +# undef textdomain +# define textdomain(Domainname) ((const char *) (Domainname)) +# undef bindtextdomain +# define bindtextdomain(Domainname, Dirname) \ + ((void) (Domainname), (const char *) (Dirname)) +# undef bind_textdomain_codeset +# define bind_textdomain_codeset(Domainname, Codeset) \ + ((void) (Domainname), (const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +/* The separator between msgctxt and msgid in a .mo file. */ +#define GETTEXT_CONTEXT_GLUE "\004" + +/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a + MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be + short and rarely need to change. + The letter 'p' stands for 'particular' or 'special'. */ +#ifdef DEFAULT_TEXT_DOMAIN +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#else +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#endif +#define dpgettext(Domainname, Msgctxt, Msgid) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) +#ifdef DEFAULT_TEXT_DOMAIN +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#else +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#endif +#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +pgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + int category) +{ + const char *translation = dcgettext (domain, msg_ctxt_id, category); + if (translation == msg_ctxt_id) + return msgid; + else + return translation; +} + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +npgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + const char *msgid_plural, unsigned long int n, + int category) +{ + const char *translation = + dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); + if (translation == msg_ctxt_id || translation == msgid_plural) + return (n == 1 ? msgid : msgid_plural); + else + return translation; +} + +#endif /* _LIBGETTEXT_H */ diff --git a/gl/intprops.h b/gl/intprops.h new file mode 100644 index 0000000..002161e --- /dev/null +++ b/gl/intprops.h @@ -0,0 +1,77 @@ +/* intprops.h -- properties of integer types + + Copyright (C) 2001, 2002, 2003, 2004, 2005 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Paul Eggert. */ + +#include <limits.h> + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the arithmetic type T is an integer type. bool counts as + an integer. */ +#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) + +/* True if negative values of the signed integer type T use two's + complement, ones' complement, or signed magnitude representation, + respectively. Much GNU code assumes two's complement, but some + people like to be portable to all possible C hosts. */ +#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) +#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) +#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) + +/* True if the arithmetic type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* The maximum and minimum values for the integer type T. These + macros have undefined behavior if T is signed and has padding bits. + If this is a problem for you, please let us know how to fix it for + your host. */ +#define TYPE_MINIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) 0 \ + : TYPE_SIGNED_MAGNITUDE (t) \ + ? ~ (t) 0 \ + : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) + +/* Return zero if T can be determined to be an unsigned type. + Otherwise, return 1. + When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a + tighter bound. Otherwise, it overestimates the true bound by one byte + when applied to unsigned types of size 2, 4, 16, ... bytes. + The symbol signed_type_or_expr__ is private to this header file. */ +#if __GNUC__ >= 2 +# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t)) +#else +# define signed_type_or_expr__(t) 1 +#endif + +/* Bound on length of the string representing an integer type or expression T. + Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485; + add 1 for integer division truncation; add 1 more for a minus sign + if needed. */ +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \ + + signed_type_or_expr__ (t) + 1) + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) diff --git a/gl/m4/00gnulib.m4 b/gl/m4/00gnulib.m4 new file mode 100644 index 0000000..d4d04d1 --- /dev/null +++ b/gl/m4/00gnulib.m4 @@ -0,0 +1,30 @@ +# 00gnulib.m4 serial 2 +dnl Copyright (C) 2009 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 file must be named something that sorts before all other +dnl gnulib-provided .m4 files. It is needed until such time as we can +dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics. + +# AC_DEFUN_ONCE([NAME], VALUE) +# ---------------------------- +# Define NAME to expand to VALUE on the first use (whether by direct +# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. +# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This +# definition is slower than the version in Autoconf 2.64, because it +# can only use interfaces that existed since 2.59; but it achieves the +# same effect. Quoting is necessary to avoid confusing Automake. +m4_version_prereq([2.63.263], [], +[m4_define([AC][_DEFUN_ONCE], + [AC][_DEFUN([$1], + [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], + [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl +[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) + +# gl_00GNULIB +# ----------- +# Witness macro that this file has been included. Needed to force +# Automake to include this file prior to all other gnulib .m4 files. +AC_DEFUN([gl_00GNULIB]) diff --git a/gl/m4/autobuild.m4 b/gl/m4/autobuild.m4 new file mode 100644 index 0000000..a025e73 --- /dev/null +++ b/gl/m4/autobuild.m4 @@ -0,0 +1,39 @@ +# autobuild.m4 serial 7 +dnl Copyright (C) 2004, 2006, 2007, 2008 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 From Simon Josefsson + +# Usage: AB_INIT([MODE]). +AC_DEFUN([AB_INIT], +[ + AC_REQUIRE([AC_CANONICAL_BUILD]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + if test -z "$AB_PACKAGE"; then + AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} + fi + AC_MSG_NOTICE([autobuild project... $AB_PACKAGE]) + + if test -z "$AB_VERSION"; then + AB_VERSION=${PACKAGE_VERSION:-$VERSION} + fi + AC_MSG_NOTICE([autobuild revision... $AB_VERSION]) + + hostname=`hostname` + if test "$hostname"; then + AC_MSG_NOTICE([autobuild hostname... $hostname]) + fi + + ifelse([$1],[],,[AC_MSG_NOTICE([autobuild mode... $1])]) + + date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` + if test "$?" != 0; then + date=`date` + fi + if test "$date"; then + AC_MSG_NOTICE([autobuild timestamp... $date]) + fi +]) diff --git a/gl/m4/csharp.m4 b/gl/m4/csharp.m4 new file mode 100644 index 0000000..48fc3ab --- /dev/null +++ b/gl/m4/csharp.m4 @@ -0,0 +1,28 @@ +# csharp.m4 serial 3 +dnl Copyright (C) 2004-2005, 2009 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. + +# Sets CSHARP_CHOICE to the preferred C# implementation: +# 'pnet' or 'mono' or 'any' or 'no'. +AC_DEFUN([gt_CSHARP_CHOICE], +[ + AC_MSG_CHECKING([for preferred C[#] implementation]) + AC_ARG_ENABLE([csharp], + [ --enable-csharp[[=IMPL]] choose preferred C[#] implementation (pnet or mono)], + [CSHARP_CHOICE="$enableval"], + CSHARP_CHOICE=any) + AC_SUBST([CSHARP_CHOICE]) + AC_MSG_RESULT([$CSHARP_CHOICE]) + case "$CSHARP_CHOICE" in + pnet) + AC_DEFINE([CSHARP_CHOICE_PNET], [1], + [Define if pnet is the preferred C# implementation.]) + ;; + mono) + AC_DEFINE([CSHARP_CHOICE_MONO], [1], + [Define if mono is the preferred C# implementation.]) + ;; + esac +]) diff --git a/gl/m4/csharpcomp.m4 b/gl/m4/csharpcomp.m4 new file mode 100644 index 0000000..ebb1de4 --- /dev/null +++ b/gl/m4/csharpcomp.m4 @@ -0,0 +1,78 @@ +# csharpcomp.m4 serial 8 +dnl Copyright (C) 2003-2005, 2007, 2009 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. + +# Prerequisites of csharpcomp.sh. +# Checks for a C# compiler. +# Sets at most one of HAVE_CSCC, HAVE_MCS, HAVE_CSC. +# Sets HAVE_CSHARPCOMP to nonempty if csharpcomp.sh will work. +# Also sets CSHARPCOMPFLAGS. +AC_DEFUN([gt_CSHARPCOMP], +[ + AC_REQUIRE([gt_CSHARP_CHOICE]) + AC_MSG_CHECKING([for C[#] compiler]) + HAVE_CSHARPCOMP=1 + pushdef([AC_MSG_CHECKING],[:])dnl + pushdef([AC_CHECKING],[:])dnl + pushdef([AC_MSG_RESULT],[:])dnl + AC_CHECK_PROG([HAVE_CSCC_IN_PATH], [cscc], [yes]) + AC_CHECK_PROG([HAVE_MCS_IN_PATH], [mcs], [yes]) + AC_CHECK_PROG([HAVE_CSC_IN_PATH], [csc], [yes]) + popdef([AC_MSG_RESULT])dnl + popdef([AC_CHECKING])dnl + popdef([AC_MSG_CHECKING])dnl + for impl in "$CSHARP_CHOICE" pnet mono sscli no; do + case "$impl" in + pnet) + if test -n "$HAVE_CSCC_IN_PATH" \ + && cscc --version >/dev/null 2>/dev/null \ + && ( + # See if pnetlib is well installed. + echo 'class ConfTest { static void Main() { } }' > conftest.cs + cscc -o conftest.exe conftest.cs 2>/dev/null + error=$? + rm -f conftest.cs conftest.exe + exit $error + ); then + HAVE_CSCC=1 + ac_result="cscc" + break + fi + ;; + mono) + if test -n "$HAVE_MCS_IN_PATH" \ + && mcs --version >/dev/null 2>/dev/null \ + && mcs --version 2>/dev/null | grep Mono >/dev/null; then + HAVE_MCS=1 + ac_result="mcs" + break + fi + ;; + sscli) + if test -n "$HAVE_CSC_IN_PATH" \ + && csc -help >/dev/null 2>/dev/null \ + && { if csc -help 2>/dev/null | grep -i chicken > /dev/null; then false; else true; fi; }; then + HAVE_CSC=1 + ac_result="csc" + break + fi + ;; + no) + HAVE_CSHARPCOMP= + ac_result="no" + break + ;; + esac + done + AC_MSG_RESULT([$ac_result]) + AC_SUBST([HAVE_CSCC]) + AC_SUBST([HAVE_MCS]) + AC_SUBST([HAVE_CSC]) + dnl Provide a default for CSHARPCOMPFLAGS. + if test -z "${CSHARPCOMPFLAGS+set}"; then + CSHARPCOMPFLAGS="-O -g" + fi + AC_SUBST([CSHARPCOMPFLAGS]) +]) diff --git a/gl/m4/errno_h.m4 b/gl/m4/errno_h.m4 new file mode 100644 index 0000000..16188d9 --- /dev/null +++ b/gl/m4/errno_h.m4 @@ -0,0 +1,112 @@ +# errno_h.m4 serial 5 +dnl Copyright (C) 2004, 2006, 2008, 2009 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. + +AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ + AC_EGREP_CPP([booboo],[ +#include <errno.h> +#if !defined ENOMSG +booboo +#endif +#if !defined EIDRM +booboo +#endif +#if !defined ENOLINK +booboo +#endif +#if !defined EPROTO +booboo +#endif +#if !defined EMULTIHOP +booboo +#endif +#if !defined EBADMSG +booboo +#endif +#if !defined EOVERFLOW +booboo +#endif +#if !defined ENOTSUP +booboo +#endif +#if !defined ECANCELED +booboo +#endif + ], + [gl_cv_header_errno_h_complete=no], + [gl_cv_header_errno_h_complete=yes]) + ]) + if test $gl_cv_header_errno_h_complete = yes; then + ERRNO_H='' + else + gl_CHECK_NEXT_HEADERS([errno.h]) + ERRNO_H='errno.h' + fi + AC_SUBST([ERRNO_H]) + gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) + gl_REPLACE_ERRNO_VALUE([ENOLINK]) + gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) +]) + +# Assuming $1 = EOVERFLOW. +# The EOVERFLOW errno value ought to be defined in <errno.h>, according to +# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and +# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. +# Check for the value of EOVERFLOW. +# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. +AC_DEFUN([gl_REPLACE_ERRNO_VALUE], +[ + if test -n "$ERRNO_H"; then + AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ + AC_EGREP_CPP([yes],[ +#include <errno.h> +#ifdef ]$1[ +yes +#endif + ], + [gl_cv_header_errno_h_]$1[=yes], + [gl_cv_header_errno_h_]$1[=no]) + if test $gl_cv_header_errno_h_]$1[ = no; then + AC_EGREP_CPP([yes],[ +#define _XOPEN_SOURCE_EXTENDED 1 +#include <errno.h> +#ifdef ]$1[ +yes +#endif + ], [gl_cv_header_errno_h_]$1[=hidden]) + if test $gl_cv_header_errno_h_]$1[ = hidden; then + dnl The macro exists but is hidden. + dnl Define it to the same value. + AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ +#define _XOPEN_SOURCE_EXTENDED 1 +#include <errno.h> +/* The following two lines are a workaround against an autoconf-2.52 bug. */ +#include <stdio.h> +#include <stdlib.h> +]) + fi + fi + ]) + case $gl_cv_header_errno_h_]$1[ in + yes | no) + ]$1[_HIDDEN=0; ]$1[_VALUE= + ;; + *) + ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" + ;; + esac + AC_SUBST($1[_HIDDEN]) + AC_SUBST($1[_VALUE]) + fi +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) diff --git a/gl/m4/error.m4 b/gl/m4/error.m4 new file mode 100644 index 0000000..7c7746e --- /dev/null +++ b/gl/m4/error.m4 @@ -0,0 +1,22 @@ +#serial 11 + +# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004 Free Software +# Foundation, Inc. +# +# This file 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. + +AC_DEFUN([gl_ERROR], +[ + AC_FUNC_ERROR_AT_LINE + dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]). + gl_PREREQ_ERROR +]) + +# Prerequisites of lib/error.c. +AC_DEFUN([gl_PREREQ_ERROR], +[ + AC_REQUIRE([AC_FUNC_STRERROR_R]) + : +]) diff --git a/gl/m4/extensions.m4 b/gl/m4/extensions.m4 new file mode 100644 index 0000000..ba6d5e1 --- /dev/null +++ b/gl/m4/extensions.m4 @@ -0,0 +1,104 @@ +# serial 8 -*- Autoconf -*- +# Enable extensions on systems that normally disable them. + +# Copyright (C) 2003, 2006-2009 Free Software Foundation, Inc. +# This file 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 definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS +# Autoconf. Perhaps we can remove this once we can assume Autoconf +# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly +# enough in this area it's likely we'll need to redefine +# AC_USE_SYSTEM_EXTENSIONS for quite some time. + +# AC_USE_SYSTEM_EXTENSIONS +# ------------------------ +# Enable extensions on systems that normally disable them, +# typically due to standards-conformance issues. +# Remember that #undef in AH_VERBATIM gets replaced with #define by +# AC_DEFINE. The goal here is to define all known feature-enabling +# macros, then, if reports of conflicts are made, disable macros that +# cause problems on some platforms (such as __EXTENSIONS__). +AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], +[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_RUN_IFELSE])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + + AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) + if test "$MINIX" = yes; then + AC_DEFINE([_POSIX_SOURCE], [1], + [Define to 1 if you need to in order for `stat' and other + things to work.]) + AC_DEFINE([_POSIX_1_SOURCE], [2], + [Define to 2 if the system does not provide POSIX.1 features + except with this defined.]) + AC_DEFINE([_MINIX], [1], + [Define to 1 if on MINIX.]) + fi + + dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, + dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already + dnl provided. + case "$host_os" in + hpux*) + AC_DEFINE([_XOPEN_SOURCE], [500], + [Define to 500 only on HP-UX.]) + ;; + esac + + AH_VERBATIM([__EXTENSIONS__], +[/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +]) + AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], + [ac_cv_safe_to_define___extensions__], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +# define __EXTENSIONS__ 1 + ]AC_INCLUDES_DEFAULT])], + [ac_cv_safe_to_define___extensions__=yes], + [ac_cv_safe_to_define___extensions__=no])]) + test $ac_cv_safe_to_define___extensions__ = yes && + AC_DEFINE([__EXTENSIONS__]) + AC_DEFINE([_ALL_SOURCE]) + AC_DEFINE([_GNU_SOURCE]) + AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) + AC_DEFINE([_TANDEM_SOURCE]) +])# AC_USE_SYSTEM_EXTENSIONS + +# gl_USE_SYSTEM_EXTENSIONS +# ------------------------ +# Enable extensions on systems that normally disable them, +# typically due to standards-conformance issues. +AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], +[ + dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. + dnl gnulib does not need it. But if it gets required by third-party macros + dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a + dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". + dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, + dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. + AC_REQUIRE([AC_GNU_SOURCE]) + + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) +]) diff --git a/gl/m4/getopt.m4 b/gl/m4/getopt.m4 new file mode 100644 index 0000000..9b683c2 --- /dev/null +++ b/gl/m4/getopt.m4 @@ -0,0 +1,83 @@ +# getopt.m4 serial 14 +dnl Copyright (C) 2002-2006, 2008 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. + +# The getopt module assume you want GNU getopt, with getopt_long etc, +# rather than vanilla POSIX getopt. This means your code should +# always include <getopt.h> for the getopt prototypes. + +AC_DEFUN([gl_GETOPT_SUBSTITUTE], +[ + AC_LIBOBJ([getopt]) + AC_LIBOBJ([getopt1]) + gl_GETOPT_SUBSTITUTE_HEADER + gl_PREREQ_GETOPT +]) + +AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], +[ + GETOPT_H=getopt.h + AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], + [Define to rpl_ if the getopt replacement functions and variables + should be used.]) + AC_SUBST([GETOPT_H]) +]) + +AC_DEFUN([gl_GETOPT_CHECK_HEADERS], +[ + if test -z "$GETOPT_H"; then + AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h]) + fi + + if test -z "$GETOPT_H"; then + AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h]) + fi + + dnl BSD getopt_long uses an incompatible method to reset option processing, + dnl and (as of 2004-10-15) mishandles optional option-arguments. + if test -z "$GETOPT_H"; then + AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>]) + fi + + dnl Solaris 10 getopt doesn't handle `+' as a leading character in an + dnl option string (as of 2005-05-05). + if test -z "$GETOPT_H"; then + AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[#include <getopt.h>]], + [[ + char *myargv[3]; + myargv[0] = "conftest"; + myargv[1] = "-+"; + myargv[2] = 0; + return getopt (2, myargv, "+a") != '?'; + ]])], + [gl_cv_func_gnu_getopt=yes], + [gl_cv_func_gnu_getopt=no], + [dnl cross compiling - pessimistically guess based on decls + dnl Solaris 10 getopt doesn't handle `+' as a leading character in an + dnl option string (as of 2005-05-05). + AC_CHECK_DECL([getopt_clip], + [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes], + [#include <getopt.h>])])]) + if test "$gl_cv_func_gnu_getopt" = "no"; then + GETOPT_H=getopt.h + fi + fi +]) + +AC_DEFUN([gl_GETOPT_IFELSE], +[ + AC_REQUIRE([gl_GETOPT_CHECK_HEADERS]) + AS_IF([test -n "$GETOPT_H"], [$1], [$2]) +]) + +AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])]) + +# Prerequisites of lib/getopt*. +AC_DEFUN([gl_PREREQ_GETOPT], +[ + AC_CHECK_DECLS_ONCE([getenv]) +]) diff --git a/gl/m4/gnulib-cache.m4 b/gl/m4/gnulib-cache.m4 new file mode 100644 index 0000000..ee13be4 --- /dev/null +++ b/gl/m4/gnulib-cache.m4 @@ -0,0 +1,53 @@ +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the specification of how gnulib-tool is used. +# It acts as a cache: It is written and read by gnulib-tool. +# In projects using CVS, this file is meant to be stored in CVS, +# like the configure.ac and various Makefile.am files. + + +# Specification in the form of a command-line invocation: +# gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings + +# Specification in the form of a few gnulib-tool.m4 macro invocations: +gl_LOCAL_DIR([gl/override]) +gl_MODULES([ + autobuild + csharpcomp-script + error + fdl-1.3 + gendocs + getopt + gnupload + gpl-3.0 + lgpl-2.1 + maintainer-makefile + manywarnings + pmccabe2html + progname + useless-if-before-free + vc-list-files + version-etc + warnings +]) +gl_AVOID([]) +gl_SOURCE_BASE([gl]) +gl_M4_BASE([gl/m4]) +gl_PO_BASE([]) +gl_DOC_BASE([doc]) +gl_TESTS_BASE([gltests]) +gl_WITH_TESTS +gl_LIB([libgnu]) +gl_MAKEFILE_NAME([]) +gl_LIBTOOL +gl_MACRO_PREFIX([gl]) +gl_PO_DOMAIN([]) +gl_VC_FILES([false]) diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4 new file mode 100644 index 0000000..c8fda20 --- /dev/null +++ b/gl/m4/gnulib-common.m4 @@ -0,0 +1,124 @@ +# gnulib-common.m4 serial 11 +dnl Copyright (C) 2007-2009 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. + +# gl_COMMON +# is expanded unconditionally through gnulib-tool magic. +AC_DEFUN([gl_COMMON], [ + dnl Use AC_REQUIRE here, so that the code is expanded once only. + AC_REQUIRE([gl_00GNULIB]) + AC_REQUIRE([gl_COMMON_BODY]) +]) +AC_DEFUN([gl_COMMON_BODY], [ + AH_VERBATIM([isoc99_inline], +[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for MacOS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) + AH_VERBATIM([unused_parameter], +[/* Define as a marker that can be attached to function parameter declarations + for parameters that are not used. This helps to reduce warnings, such as + from GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _UNUSED_PARAMETER_ __attribute__ ((__unused__)) +#else +# define _UNUSED_PARAMETER_ +#endif +]) +]) + +# gl_MODULE_INDICATOR([modulename]) +# defines a C macro indicating the presence of the given module. +AC_DEFUN([gl_MODULE_INDICATOR], +[ + AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], + [Define to 1 when using the gnulib module ]$1[.]) +]) + +# m4_foreach_w +# is a backport of autoconf-2.59c's m4_foreach_w. +# Remove this macro when we can assume autoconf >= 2.60. +m4_ifndef([m4_foreach_w], + [m4_define([m4_foreach_w], + [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) + +# AC_PROG_MKDIR_P +# is a backport of autoconf-2.60's AC_PROG_MKDIR_P. +# Remove this macro when we can assume autoconf >= 2.60. +m4_ifdef([AC_PROG_MKDIR_P], [], [ + AC_DEFUN_ONCE([AC_PROG_MKDIR_P], + [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + MKDIR_P='$(mkdir_p)' + AC_SUBST([MKDIR_P])])]) + +# AC_C_RESTRICT +# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, +# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ +# works. +# This definition can be removed once autoconf >= 2.62 can be assumed. +AC_DEFUN([AC_C_RESTRICT], +[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], + [ac_cv_c_restrict=no + # The order here caters to the fact that C++ does not require restrict. + for ac_kw in __restrict __restrict__ _Restrict restrict; do + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[typedef int * int_ptr; + int foo (int_ptr $ac_kw ip) { + return ip[0]; + }]], + [[int s[1]; + int * $ac_kw t = s; + t[0] = 0; + return foo(t)]])], + [ac_cv_c_restrict=$ac_kw]) + test "$ac_cv_c_restrict" != no && break + done + ]) + AH_VERBATIM([restrict], +[/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#undef restrict +/* Work around a bug in Sun C++: it does not support _Restrict, even + though the corresponding Sun C compiler does, which causes + "#define restrict _Restrict" in the previous line. Perhaps some future + version of Sun C++ will work with _Restrict; if so, it'll probably + define __RESTRICT, just as Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +#endif]) + case $ac_cv_c_restrict in + restrict) ;; + no) AC_DEFINE([restrict], []) ;; + *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; + esac +]) + +# gl_BIGENDIAN +# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. +# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some +# macros invoke AC_C_BIGENDIAN with arguments. +AC_DEFUN([gl_BIGENDIAN], +[ + AC_C_BIGENDIAN +]) + +# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) +# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not +# output a spurious "(cached)" mark in the midst of other configure output. +# This macro should be used instead of AC_CACHE_VAL when it is not surrounded +# by an AC_MSG_CHECKING/AC_MSG_RESULT pair. +AC_DEFUN([gl_CACHE_VAL_SILENT], +[ + saved_as_echo_n="$as_echo_n" + as_echo_n=':' + AC_CACHE_VAL([$1], [$2]) + as_echo_n="$saved_as_echo_n" +]) diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4 new file mode 100644 index 0000000..b1c6c08 --- /dev/null +++ b/gl/m4/gnulib-comp.m4 @@ -0,0 +1,263 @@ +# DO NOT EDIT! GENERATED AUTOMATICALLY! +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the compiled summary of the specification in +# gnulib-cache.m4. It lists the computed macro invocations that need +# to be invoked from configure.ac. +# In projects using CVS, this file can be treated like other built files. + + +# This macro should be invoked from ./configure.ac, in the section +# "Checks for programs", right after AC_PROG_CC, and certainly before +# any checks for libraries, header files, types and library functions. +AC_DEFUN([gl_EARLY], +[ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + AC_REQUIRE([AC_PROG_RANLIB]) + AB_INIT + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode + dnl for the builtin va_copy to work. With Autoconf 2.60 or later, + dnl AC_PROG_CC_STDC arranges for this. With older Autoconf AC_PROG_CC_STDC + dnl shouldn't hurt, though installers are on their own to set c99 mode. + AC_REQUIRE([AC_PROG_CC_STDC]) +]) + +# This macro should be invoked from ./configure.ac, in the section +# "Check for header files, types and library functions". +AC_DEFUN([gl_INIT], +[ + AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) + gl_cond_libtool=true + m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) + m4_pushdef([gl_LIBSOURCES_LIST], []) + m4_pushdef([gl_LIBSOURCES_DIR], []) + gl_COMMON + gl_source_base='gl' + AC_REQUIRE([gt_CSHARPCOMP]) + AC_CONFIG_FILES([csharpcomp.sh:build-aux/csharpcomp.sh.in]) + gl_HEADER_ERRNO_H + gl_ERROR + m4_ifdef([AM_XGETTEXT_OPTION], + [AM_XGETTEXT_OPTION([--flag=error:3:c-format]) + AM_XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) + gl_GETOPT + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + # Autoconf 2.61a.99 and earlier don't support linking a file only + # in VPATH builds. But since GNUmakefile is for maintainer use + # only, it does not matter if we skip the link with older autoconf. + # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH + # builds, so use a shell variable to bypass this. + GNUmakefile=GNUmakefile + m4_if(m4_version_compare([2.61a.100], + m4_defn([m4_PACKAGE_VERSION])), [1], [], + [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], + [GNUmakefile=$GNUmakefile])]) + gl_PMCCABE2HTML + gl_STDARG_H + gl_FUNC_STRERROR + gl_STRING_MODULE_INDICATOR([strerror]) + gl_HEADER_STRING_H + gl_UNISTD_H + gl_VERSION_ETC + AC_SUBST([WARN_CFLAGS]) + m4_ifval(gl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || + for gl_file in ]gl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([gl_LIBSOURCES_DIR]) + m4_popdef([gl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gl_libobjs= + gl_ltlibobjs= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + done + fi + AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) + AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) + ]) + gltests_libdeps= + gltests_ltlibdeps= + m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) + m4_pushdef([gltests_LIBSOURCES_LIST], []) + m4_pushdef([gltests_LIBSOURCES_DIR], []) + gl_COMMON + gl_source_base='gltests' + abs_aux_dir=`cd "$ac_aux_dir"; pwd` + AC_SUBST([abs_aux_dir]) + m4_ifval(gltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || + for gl_file in ]gltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([gltests_LIBSOURCES_DIR]) + m4_popdef([gltests_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gltests_libobjs= + gltests_ltlibobjs= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + done + fi + AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) + AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) + ]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_LIBOBJ], [ + AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl + gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gl_LIBSOURCES_DIR], [gl]) + m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl + gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gltests_LIBSOURCES_DIR], [gltests]) + m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# This macro records the list of files which have been installed by +# gnulib-tool and may be removed by future gnulib-tool invocations. +AC_DEFUN([gl_FILE_LIST], [ + build-aux/csharpcomp.sh.in + build-aux/gendocs.sh + build-aux/gnupload + build-aux/link-warning.h + build-aux/pmccabe.css + build-aux/pmccabe2html + build-aux/useless-if-before-free + build-aux/vc-list-files + doc/fdl-1.3.texi + doc/gendocs_template + doc/gpl-3.0.texi + doc/lgpl-2.1.texi + lib/errno.in.h + lib/error.c + lib/error.h + lib/getopt.c + lib/getopt.in.h + lib/getopt1.c + lib/getopt_int.h + lib/gettext.h + lib/intprops.h + lib/progname.c + lib/progname.h + lib/stdarg.in.h + lib/strerror.c + lib/string.in.h + lib/unistd.in.h + lib/version-etc.c + lib/version-etc.h + m4/00gnulib.m4 + m4/autobuild.m4 + m4/csharp.m4 + m4/csharpcomp.m4 + m4/errno_h.m4 + m4/error.m4 + m4/extensions.m4 + m4/getopt.m4 + m4/gnulib-common.m4 + m4/include_next.m4 + m4/manywarnings.m4 + m4/pmccabe2html.m4 + m4/stdarg.m4 + m4/strerror.m4 + m4/string_h.m4 + m4/unistd_h.m4 + m4/version-etc.m4 + m4/warnings.m4 + tests/test-errno.c + tests/test-strerror.c + tests/test-string.c + tests/test-unistd.c + tests/test-vc-list-files-cvs.sh + tests/test-vc-list-files-git.sh + top/GNUmakefile + top/maint.mk +]) diff --git a/gl/m4/include_next.m4 b/gl/m4/include_next.m4 new file mode 100644 index 0000000..5e22ded --- /dev/null +++ b/gl/m4/include_next.m4 @@ -0,0 +1,187 @@ +# include_next.m4 serial 14 +dnl Copyright (C) 2006-2009 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 From Paul Eggert and Derek Price. + +dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. +dnl +dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to +dnl 'include' otherwise. +dnl +dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler +dnl supports it in the special case that it is the first include directive in +dnl the given file, or to 'include' otherwise. +dnl +dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, +dnl so as to avoid GCC warnings when the gcc option -pedantic is used. +dnl '#pragma GCC system_header' has the same effect as if the file was found +dnl through the include search path specified with '-isystem' options (as +dnl opposed to the search path specified with '-I' options). Namely, gcc +dnl does not warn about some things, and on some systems (Solaris and Interix) +dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side +dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead +dnl of plain '__STDC__'. + +AC_DEFUN([gl_INCLUDE_NEXT], +[ + AC_LANG_PREPROC_REQUIRE() + AC_CACHE_CHECK([whether the preprocessor supports include_next], + [gl_cv_have_include_next], + [rm -rf conftestd1a conftestd1b conftestd2 + mkdir conftestd1a conftestd1b conftestd2 + dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on + dnl AIX 6.1 support include_next when used as first preprocessor directive + dnl in a file, but not when preceded by another include directive. Check + dnl for this bug by including <stdio.h>. + dnl Additionally, with this same compiler, include_next is a no-op when + dnl used in a header file that was included by specifying its absolute + dnl file name. Despite these two bugs, include_next is used in the + dnl compiler's <math.h>. By virtue of the second bug, we need to use + dnl include_next as well in this case. + cat <<EOF > conftestd1a/conftest.h +#define DEFINED_IN_CONFTESTD1 +#include_next <conftest.h> +#ifdef DEFINED_IN_CONFTESTD2 +int foo; +#else +#error "include_next doesn't work" +#endif +EOF + cat <<EOF > conftestd1b/conftest.h +#define DEFINED_IN_CONFTESTD1 +#include <stdio.h> +#include_next <conftest.h> +#ifdef DEFINED_IN_CONFTESTD2 +int foo; +#else +#error "include_next doesn't work" +#endif +EOF + cat <<EOF > conftestd2/conftest.h +#ifndef DEFINED_IN_CONFTESTD1 +#error "include_next test doesn't work" +#endif +#define DEFINED_IN_CONFTESTD2 +EOF + gl_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" + AC_COMPILE_IFELSE([#include <conftest.h>], + [gl_cv_have_include_next=yes], + [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" + AC_COMPILE_IFELSE([#include <conftest.h>], + [gl_cv_have_include_next=buggy], + [gl_cv_have_include_next=no]) + ]) + CPPFLAGS="$gl_save_CPPFLAGS" + rm -rf conftestd1a conftestd1b conftestd2 + ]) + PRAGMA_SYSTEM_HEADER= + if test $gl_cv_have_include_next = yes; then + INCLUDE_NEXT=include_next + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next + if test -n "$GCC"; then + PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' + fi + else + if test $gl_cv_have_include_next = buggy; then + INCLUDE_NEXT=include + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next + else + INCLUDE_NEXT=include + INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include + fi + fi + AC_SUBST([INCLUDE_NEXT]) + AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) + AC_SUBST([PRAGMA_SYSTEM_HEADER]) +]) + +# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) +# ------------------------------------------ +# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be +# '<foo.h>'; otherwise define it to be +# '"///usr/include/foo.h"', or whatever other absolute file name is suitable. +# Also, if #include_next works as first preprocessing directive in a file, +# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to +# be +# '"///usr/include/foo.h"', or whatever other absolute file name is suitable. +# That way, a header file with the following line: +# #@INCLUDE_NEXT@ @NEXT_FOO_H@ +# or +# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ +# behaves (after sed substitution) as if it contained +# #include_next <foo.h> +# even if the compiler does not support include_next. +# The three "///" are to pacify Sun C 5.8, which otherwise would say +# "warning: #include of /usr/include/... may be non-portable". +# Use `""', not `<>', so that the /// cannot be confused with a C99 comment. +# Note: This macro assumes that the header file is not empty after +# preprocessing, i.e. it does not only define preprocessor macros but also +# provides some type/enum definitions or function/variable declarations. +AC_DEFUN([gl_CHECK_NEXT_HEADERS], +[ + AC_REQUIRE([gl_INCLUDE_NEXT]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_CHECK_HEADERS_ONCE([$1]) + + m4_foreach_w([gl_HEADER_NAME], [$1], + [AS_VAR_PUSHDEF([gl_next_header], + [gl_cv_next_]m4_defn([gl_HEADER_NAME])) + if test $gl_cv_have_include_next = yes; then + AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) + else + AC_CACHE_CHECK( + [absolute name of <]m4_defn([gl_HEADER_NAME])[>], + m4_defn([gl_next_header]), + [AS_VAR_PUSHDEF([gl_header_exists], + [ac_cv_header_]m4_defn([gl_HEADER_NAME])) + if test AS_VAR_GET(gl_header_exists) = yes; then + AC_LANG_CONFTEST( + [AC_LANG_SOURCE( + [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]] + )]) + dnl AIX "xlc -E" and "cc -E" omit #line directives for header files + dnl that contain only a #include of other header files and no + dnl non-comment tokens of their own. This leads to a failure to + dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h> + dnl and others. The workaround is to force preservation of comments + dnl through option -C. This ensures all necessary #line directives + dnl are present. GCC supports option -C as well. + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + dnl eval is necessary to expand gl_absname_cpp. + dnl Ultrix and Pyramid sh refuse to redirect output of eval, + dnl so use subshell. + AS_VAR_SET([gl_next_header], + ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | + sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{ + s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1# + s#^/[^/]#//&# + p + q + }'`'"']) + else + AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) + fi + AS_VAR_POPDEF([gl_header_exists])]) + fi + AC_SUBST( + AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), + [AS_VAR_GET([gl_next_header])]) + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'gl_HEADER_NAME'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=AS_VAR_GET([gl_next_header]) + fi + AC_SUBST( + AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), + [$gl_next_as_first_directive]) + AS_VAR_POPDEF([gl_next_header])]) +]) diff --git a/gl/m4/manywarnings.m4 b/gl/m4/manywarnings.m4 new file mode 100644 index 0000000..7f36fb4 --- /dev/null +++ b/gl/m4/manywarnings.m4 @@ -0,0 +1,108 @@ +# manywarnings.m4 serial 1 +dnl Copyright (C) 2008, 2009 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 From Simon Josefsson + +# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR) +# -------------------------------------------------- +# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR. +# Elements separated by whitespace. In set logic terms, the function +# does OUTVAR = LISTVAR \ REMOVEVAR. +AC_DEFUN([gl_MANYWARN_COMPLEMENT], +[ + gl_warn_set= + set x $2; shift + for gl_warn_item + do + case " $3 " in + *" $gl_warn_item "*) + ;; + *) + gl_warn_set="$gl_warn_set $gl_warn_item" + ;; + esac + done + $1=$gl_warn_set +]) + +# gl_MANYWARN_ALL_GCC(VARIABLE) +# ----------------------------- +# Add all documented GCC (currently as per version 4.4) warning +# parameters to variable VARIABLE. Note that you need to test them +# using gl_WARN_ADD if you want to make sure your gcc understands it. +AC_DEFUN([gl_MANYWARN_ALL_GCC], +[ + gl_manywarn_set= + for gl_manywarn_item in \ + -Wall \ + -W \ + -Wformat-y2k \ + -Wformat-nonliteral \ + -Wformat-security \ + -Winit-self \ + -Wmissing-include-dirs \ + -Wswitch-default \ + -Wswitch-enum \ + -Wunused \ + -Wunknown-pragmas \ + -Wstrict-aliasing \ + -Wstrict-overflow \ + -Wsystem-headers \ + -Wfloat-equal \ + -Wtraditional \ + -Wtraditional-conversion \ + -Wdeclaration-after-statement \ + -Wundef \ + -Wshadow \ + -Wunsafe-loop-optimizations \ + -Wpointer-arith \ + -Wbad-function-cast \ + -Wc++-compat \ + -Wcast-qual \ + -Wcast-align \ + -Wwrite-strings \ + -Wconversion \ + -Wsign-conversion \ + -Wlogical-op \ + -Waggregate-return \ + -Wstrict-prototypes \ + -Wold-style-definition \ + -Wmissing-prototypes \ + -Wmissing-declarations \ + -Wmissing-noreturn \ + -Wmissing-format-attribute \ + -Wpacked \ + -Wpadded \ + -Wredundant-decls \ + -Wnested-externs \ + -Wunreachable-code \ + -Winline \ + -Winvalid-pch \ + -Wlong-long \ + -Wvla \ + -Wvolatile-register-var \ + -Wdisabled-optimization \ + -Wstack-protector \ + -Woverlength-strings \ + -Wbuiltin-macro-redefined \ + -Wmudflap \ + -Wpacked-bitfield-compat \ + -Wsync-nand \ + ; do + gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" + done + # The following are not documented in the manual but are included in + # output from gcc --help=warnings. + for gl_manywarn_item in \ + -Wattributes \ + -Wcoverage-mismatch \ + -Wmultichar \ + -Wunused-macros \ + ; do + gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" + done + $1=$gl_manywarn_set +]) diff --git a/gl/m4/pmccabe2html.m4 b/gl/m4/pmccabe2html.m4 new file mode 100644 index 0000000..2985f7c --- /dev/null +++ b/gl/m4/pmccabe2html.m4 @@ -0,0 +1,14 @@ +# pmccabe2html.m4 serial 2 +dnl Copyright (C) 2008, 2009 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 From Simon Josefsson + +# Usage: gl_PMCCABE2HTML([]). +AC_DEFUN([gl_PMCCABE2HTML], +[ + AC_REQUIRE([AC_PROG_AWK]) + AC_PATH_PROG([PMCCABE], [pmccabe], [false]) +]) diff --git a/gl/m4/stdarg.m4 b/gl/m4/stdarg.m4 new file mode 100644 index 0000000..a9ada4f --- /dev/null +++ b/gl/m4/stdarg.m4 @@ -0,0 +1,67 @@ +# stdarg.m4 serial 3 +dnl Copyright (C) 2006, 2008-2009 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 From Bruno Haible. +dnl Provide a working va_copy in combination with <stdarg.h>. + +AC_DEFUN([gl_STDARG_H], +[ + STDARG_H=''; AC_SUBST([STDARG_H]) + NEXT_STDARG_H='<stdarg.h>'; AC_SUBST([NEXT_STDARG_H]) + AC_MSG_CHECKING([for va_copy]) + AC_CACHE_VAL([gl_cv_func_va_copy], [ + AC_TRY_COMPILE([#include <stdarg.h>], [ +#ifndef va_copy +void (*func) (va_list, va_list) = va_copy; +#endif +], + [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])]) + AC_MSG_RESULT([$gl_cv_func_va_copy]) + if test $gl_cv_func_va_copy = no; then + dnl Provide a substitute. + dnl Usually a simple definition in <config.h> is enough. Not so on AIX 5 + dnl with some versions of the /usr/vac/bin/cc compiler. It has an <stdarg.h> + dnl which does '#undef va_copy', leading to a missing va_copy symbol. For + dnl this platform, we use an <stdarg.h> substitute. But we cannot use this + dnl approach on other platforms, because <stdarg.h> often defines only + dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do + dnl not work in this situation. + AC_EGREP_CPP([vaccine], + [#if defined _AIX && !defined __GNUC__ + AIX vaccine + #endif + ], [gl_aixcc=yes], [gl_aixcc=no]) + if test $gl_aixcc = yes; then + dnl Provide a substitute <stdarg.h> file. + STDARG_H=stdarg.h + gl_CHECK_NEXT_HEADERS([stdarg.h]) + dnl Fallback for the case when <stdarg.h> contains only macro definitions. + if test "$gl_cv_next_stdarg_h" = '""'; then + gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' + NEXT_STDARG_H="$gl_cv_next_stdarg_h" + fi + else + dnl Provide a substitute in <config.h>, either __va_copy or as a simple + dnl assignment. + gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [ + AC_TRY_COMPILE([#include <stdarg.h>], [ +#ifndef __va_copy +error, bail out +#endif +], + [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])]) + if test $gl_cv_func___va_copy = yes; then + AC_DEFINE([va_copy], [__va_copy], + [Define as a macro for copying va_list variables.]) + else + AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed. */ +#define gl_va_copy(a,b) ((a) = (b))]) + AC_DEFINE([va_copy], [gl_va_copy], + [Define as a macro for copying va_list variables.]) + fi + fi + fi +]) diff --git a/gl/m4/strerror.m4 b/gl/m4/strerror.m4 new file mode 100644 index 0000000..8c16ca9 --- /dev/null +++ b/gl/m4/strerror.m4 @@ -0,0 +1,68 @@ +# strerror.m4 serial 9 +dnl Copyright (C) 2002, 2007-2008 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. + +AC_DEFUN([gl_FUNC_STRERROR], +[ + AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE]) + if test $REPLACE_STRERROR = 1; then + AC_LIBOBJ([strerror]) + AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR], + [Define this to 1 if strerror is broken.]) + fi +]) + +# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ). +AC_DEFUN([gl_FUNC_STRERROR_SEPARATE], +[ + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + AC_REQUIRE([gl_HEADER_ERRNO_H]) + if test -z "$ERRNO_H"; then + AC_CACHE_CHECK([for working strerror function], + [gl_cv_func_working_strerror], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include <string.h> + ]], + [[return !*strerror (-2);]])], + [gl_cv_func_working_strerror=yes], + [gl_cv_func_working_strerror=no], + [dnl Assume crossbuild works if it compiles. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <string.h> + ]], + [[return !*strerror (-2);]])], + [gl_cv_func_working_strerror=yes], + [gl_cv_func_working_strerror=no]) + ]) + ]) + if test $gl_cv_func_working_strerror = no; then + dnl The system's strerror() fails to return a string for out-of-range + dnl integers. Replace it. + REPLACE_STRERROR=1 + fi + else + dnl The system's strerror() cannot know about the new errno values we add + dnl to <errno.h>. Replace it. + REPLACE_STRERROR=1 + fi + if test $REPLACE_STRERROR = 1; then + gl_PREREQ_STRERROR + fi +]) + +# Prerequisites of lib/strerror.c. +AC_DEFUN([gl_PREREQ_STRERROR], [ + AC_CHECK_DECLS([strerror]) + AC_CHECK_HEADERS_ONCE([sys/socket.h]) + if test $ac_cv_header_sys_socket_h != yes; then + dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make + dnl the check for those headers unconditional; yet cygwin reports + dnl that the headers are present but cannot be compiled (since on + dnl cygwin, all socket information should come from sys/socket.h). + AC_CHECK_HEADERS([winsock2.h]) + fi +]) diff --git a/gl/m4/string_h.m4 b/gl/m4/string_h.m4 new file mode 100644 index 0000000..2d5553c --- /dev/null +++ b/gl/m4/string_h.m4 @@ -0,0 +1,92 @@ +# Configure a GNU-like replacement for <string.h>. + +# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# This file 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. + +# serial 6 + +# Written by Paul Eggert. + +AC_DEFUN([gl_HEADER_STRING_H], +[ + dnl Use AC_REQUIRE here, so that the default behavior below is expanded + dnl once only, before all statements that occur in other macros. + AC_REQUIRE([gl_HEADER_STRING_H_BODY]) +]) + +AC_DEFUN([gl_HEADER_STRING_H_BODY], +[ + AC_REQUIRE([AC_C_RESTRICT]) + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + gl_CHECK_NEXT_HEADERS([string.h]) +]) + +AC_DEFUN([gl_STRING_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1 +]) + +AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], +[ + GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) + GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) + GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) + GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) + GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) + GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) + GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) + GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) + GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) + GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) + GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) + GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) + GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) + GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) + GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) + GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) + GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) + GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) + GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) + GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) + GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) + GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) + GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) + GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) + GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) + GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) + GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) + GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) + GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) + GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) + GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) + GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) + HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) + HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) + HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) + HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) + HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) + HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) + HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) + HAVE_STRNDUP=1; AC_SUBST([HAVE_STRNDUP]) + HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) + HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) + HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) + HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) + HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) + HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) + HAVE_DECL_STRERROR=1; AC_SUBST([HAVE_DECL_STRERROR]) + HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) + HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) + REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) + REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) + REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) + REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) + REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) + REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) +]) diff --git a/gl/m4/unistd_h.m4 b/gl/m4/unistd_h.m4 new file mode 100644 index 0000000..ff9a4ea --- /dev/null +++ b/gl/m4/unistd_h.m4 @@ -0,0 +1,83 @@ +# unistd_h.m4 serial 17 +dnl Copyright (C) 2006-2009 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 Written by Simon Josefsson, Bruno Haible. + +AC_DEFUN([gl_UNISTD_H], +[ + dnl Use AC_REQUIRE here, so that the default behavior below is expanded + dnl once only, before all statements that occur in other macros. + AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) + + gl_CHECK_NEXT_HEADERS([unistd.h]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + if test $ac_cv_header_unistd_h = yes; then + HAVE_UNISTD_H=1 + else + HAVE_UNISTD_H=0 + fi + AC_SUBST([HAVE_UNISTD_H]) +]) + +AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1 +]) + +AC_DEFUN([gl_UNISTD_H_DEFAULTS], +[ + GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) + GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) + GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) + GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) + GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) + GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) + GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) + GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) + GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) + GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) + GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) + GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) + GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) + GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) + GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) + GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) + GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) + GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) + GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) + GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) + GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) + GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) + HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) + HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) + HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) + HAVE_GETDOMAINNAME=1; AC_SUBST([HAVE_GETDOMAINNAME]) + HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) + HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) + HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) + HAVE_GETUSERSHELL=1; AC_SUBST([HAVE_GETUSERSHELL]) + HAVE_LINK=1; AC_SUBST([HAVE_LINK]) + HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) + HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) + HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) + HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) + HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) + HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) + REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) + REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) + REPLACE_FCHDIR=0; AC_SUBST([REPLACE_FCHDIR]) + REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) + REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) + REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) + REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) + REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) + UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) +]) diff --git a/gl/m4/version-etc.m4 b/gl/m4/version-etc.m4 new file mode 100644 index 0000000..14d6eb6 --- /dev/null +++ b/gl/m4/version-etc.m4 @@ -0,0 +1,33 @@ +# version-etc.m4 serial 1 +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file 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. + +dnl $1 - configure flag and define name +dnl $2 - human readable description +m4_define([gl_VERSION_ETC_FLAG], +[dnl + AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])], + [dnl + case $withval in + yes|no) ;; + *) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;; + esac + ]) +]) + +AC_DEFUN([gl_VERSION_ETC], +[dnl + gl_VERSION_ETC_FLAG([packager], + [String identifying the packager of this software]) + gl_VERSION_ETC_FLAG([packager-version], + [Packager-specific version information]) + gl_VERSION_ETC_FLAG([packager-bug-reports], + [Packager info for bug reports (URL/e-mail/...)]) + if test "X$with_packager" = "X" && \ + test "X$with_packager_version$with_packager_bug_reports" != "X" + then + AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager]) + fi +]) diff --git a/gl/m4/warnings.m4 b/gl/m4/warnings.m4 new file mode 100644 index 0000000..c32cf4e --- /dev/null +++ b/gl/m4/warnings.m4 @@ -0,0 +1,44 @@ +# warnings.m4 serial 2 +dnl Copyright (C) 2008 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 From Simon Josefsson + +# gl_AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) +# ---------------------------------------------------- +# Provide the functionality of AS_VAR_IF if Autoconf does not have it. +m4_ifdef([AS_VAR_IF], +[m4_copy([AS_VAR_IF], [gl_AS_VAR_IF])], +[m4_define([gl_AS_VAR_IF], +[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) + +# gl_AS_VAR_APPEND(VAR, VALUE) +# ---------------------------- +# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. +m4_ifdef([AS_VAR_APPEND], +[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])], +[m4_define([gl_AS_VAR_APPEND], +[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])]) + +# gl_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS]) +# ------------------------------------------------ +# Adds parameter to WARN_CFLAGS if the compiler supports it. For example, +# gl_WARN_ADD([-Wparentheses]). +AC_DEFUN([gl_WARN_ADD], +[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_$1])dnl +AC_CACHE_CHECK([whether compiler handles $1], [gl_Warn], [ + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} $1" + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])], + [AS_VAR_SET([gl_Warn], [yes])], + [AS_VAR_SET([gl_Warn], [no])]) + CPPFLAGS="$save_CPPFLAGS" +]) +AS_VAR_PUSHDEF([gl_Flags], m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]))dnl +gl_AS_VAR_IF([gl_Warn], [yes], [gl_AS_VAR_APPEND([gl_Flags], [" $1"])]) +AS_VAR_POPDEF([gl_Flags])dnl +AS_VAR_POPDEF([gl_Warn])dnl +m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl +]) diff --git a/gl/progname.c b/gl/progname.c new file mode 100644 index 0000000..9854b5e --- /dev/null +++ b/gl/progname.c @@ -0,0 +1,63 @@ +/* Program name management. + Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc. + Written by Bruno Haible <haible@clisp.cons.org>, 2001. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + + +#include <config.h> + +/* Specification. */ +#undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */ +#include "progname.h" + +#include <string.h> + + +/* String containing name the program is called with. + To be initialized by main(). */ +const char *program_name = NULL; + +/* Set program_name, based on argv[0]. */ +void +set_program_name (const char *argv0) +{ + /* libtool creates a temporary executable whose name is sometimes prefixed + with "lt-" (depends on the platform). It also makes argv[0] absolute. + But the name of the temporary executable is a detail that should not be + visible to the end user and to the test suite. + Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here. */ + const char *slash; + const char *base; + + slash = strrchr (argv0, '/'); + base = (slash != NULL ? slash + 1 : argv0); + if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0) + { + argv0 = base; + if (strncmp (base, "lt-", 3) == 0) + argv0 = base + 3; + } + + /* But don't strip off a leading <dirname>/ in general, because when the user + runs + /some/hidden/place/bin/cp foo foo + he should get the error message + /some/hidden/place/bin/cp: `foo' and `foo' are the same file + not + cp: `foo' and `foo' are the same file + */ + + program_name = argv0; +} diff --git a/gl/progname.h b/gl/progname.h new file mode 100644 index 0000000..c5983f6 --- /dev/null +++ b/gl/progname.h @@ -0,0 +1,60 @@ +/* Program name management. + Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc. + Written by Bruno Haible <haible@clisp.cons.org>, 2001. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#ifndef _PROGNAME_H +#define _PROGNAME_H + +/* Programs using this file should do the following in main(): + set_program_name (argv[0]); + */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* String containing name the program is called with. */ +extern const char *program_name; + +/* Set program_name, based on argv[0]. */ +extern void set_program_name (const char *argv0); + +#if defined(ENABLE_RELOCATABLE) && ENABLE_RELOCATABLE + +/* Set program_name, based on argv[0], and original installation prefix and + directory, for relocatability. */ +extern void set_program_name_and_installdir (const char *argv0, + const char *orig_installprefix, + const char *orig_installdir); +#undef set_program_name +#define set_program_name(ARG0) \ + set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR) + +/* Return the full pathname of the current executable, based on the earlier + call to set_program_name_and_installdir. Return NULL if unknown. */ +extern char *get_full_program_name (void); + +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* _PROGNAME_H */ diff --git a/gl/stdarg.in.h b/gl/stdarg.in.h new file mode 100644 index 0000000..186a495 --- /dev/null +++ b/gl/stdarg.in.h @@ -0,0 +1,35 @@ +/* Substitute for and wrapper around <stdarg.h>. + Copyright (C) 2008 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_STDARG_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_STDARG_H@ + +#ifndef _GL_STDARG_H +#define _GL_STDARG_H + +#ifndef va_copy +# define va_copy(a,b) ((a) = (b)) +#endif + +#endif /* _GL_STDARG_H */ +#endif /* _GL_STDARG_H */ diff --git a/gl/strerror.c b/gl/strerror.c new file mode 100644 index 0000000..798d854 --- /dev/null +++ b/gl/strerror.c @@ -0,0 +1,341 @@ +/* strerror.c --- POSIX compatible system error routine + + Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#if REPLACE_STRERROR + +# include <errno.h> +# include <stdio.h> + +# if GNULIB_defined_ESOCK /* native Windows platforms */ +# if HAVE_WINSOCK2_H +# include <winsock2.h> +# endif +# endif + +# include "intprops.h" + +# undef strerror +# if ! HAVE_DECL_STRERROR +# define strerror(n) NULL +# endif + +char * +rpl_strerror (int n) +{ + char const *msg = NULL; + /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ + switch (n) + { +# if GNULIB_defined_ETXTBSY + case ETXTBSY: + msg = "Text file busy"; + break; +# endif + +# if GNULIB_defined_ESOCK /* native Windows platforms */ + /* EWOULDBLOCK is the same as EAGAIN. */ + case EINPROGRESS: + msg = "Operation now in progress"; + break; + case EALREADY: + msg = "Operation already in progress"; + break; + case ENOTSOCK: + msg = "Socket operation on non-socket"; + break; + case EDESTADDRREQ: + msg = "Destination address required"; + break; + case EMSGSIZE: + msg = "Message too long"; + break; + case EPROTOTYPE: + msg = "Protocol wrong type for socket"; + break; + case ENOPROTOOPT: + msg = "Protocol not available"; + break; + case EPROTONOSUPPORT: + msg = "Protocol not supported"; + break; + case ESOCKTNOSUPPORT: + msg = "Socket type not supported"; + break; + case EOPNOTSUPP: + msg = "Operation not supported"; + break; + case EPFNOSUPPORT: + msg = "Protocol family not supported"; + break; + case EAFNOSUPPORT: + msg = "Address family not supported by protocol"; + break; + case EADDRINUSE: + msg = "Address already in use"; + break; + case EADDRNOTAVAIL: + msg = "Cannot assign requested address"; + break; + case ENETDOWN: + msg = "Network is down"; + break; + case ENETUNREACH: + msg = "Network is unreachable"; + break; + case ENETRESET: + msg = "Network dropped connection on reset"; + break; + case ECONNABORTED: + msg = "Software caused connection abort"; + break; + case ECONNRESET: + msg = "Connection reset by peer"; + break; + case ENOBUFS: + msg = "No buffer space available"; + break; + case EISCONN: + msg = "Transport endpoint is already connected"; + break; + case ENOTCONN: + msg = "Transport endpoint is not connected"; + break; + case ESHUTDOWN: + msg = "Cannot send after transport endpoint shutdown"; + break; + case ETOOMANYREFS: + msg = "Too many references: cannot splice"; + break; + case ETIMEDOUT: + msg = "Connection timed out"; + break; + case ECONNREFUSED: + msg = "Connection refused"; + break; + case ELOOP: + msg = "Too many levels of symbolic links"; + break; + case EHOSTDOWN: + msg = "Host is down"; + break; + case EHOSTUNREACH: + msg = "No route to host"; + break; + case EPROCLIM: + msg = "Too many processes"; + break; + case EUSERS: + msg = "Too many users"; + break; + case EDQUOT: + msg = "Disk quota exceeded"; + break; + case ESTALE: + msg = "Stale NFS file handle"; + break; + case EREMOTE: + msg = "Object is remote"; + break; +# if HAVE_WINSOCK2_H + /* WSA_INVALID_HANDLE maps to EBADF */ + /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ + /* WSA_INVALID_PARAMETER maps to EINVAL */ + case WSA_OPERATION_ABORTED: + msg = "Overlapped operation aborted"; + break; + case WSA_IO_INCOMPLETE: + msg = "Overlapped I/O event object not in signaled state"; + break; + case WSA_IO_PENDING: + msg = "Overlapped operations will complete later"; + break; + /* WSAEINTR maps to EINTR */ + /* WSAEBADF maps to EBADF */ + /* WSAEACCES maps to EACCES */ + /* WSAEFAULT maps to EFAULT */ + /* WSAEINVAL maps to EINVAL */ + /* WSAEMFILE maps to EMFILE */ + /* WSAEWOULDBLOCK maps to EWOULDBLOCK */ + /* WSAEINPROGRESS is EINPROGRESS */ + /* WSAEALREADY is EALREADY */ + /* WSAENOTSOCK is ENOTSOCK */ + /* WSAEDESTADDRREQ is EDESTADDRREQ */ + /* WSAEMSGSIZE is EMSGSIZE */ + /* WSAEPROTOTYPE is EPROTOTYPE */ + /* WSAENOPROTOOPT is ENOPROTOOPT */ + /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */ + /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */ + /* WSAEOPNOTSUPP is EOPNOTSUPP */ + /* WSAEPFNOSUPPORT is EPFNOSUPPORT */ + /* WSAEAFNOSUPPORT is EAFNOSUPPORT */ + /* WSAEADDRINUSE is EADDRINUSE */ + /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */ + /* WSAENETDOWN is ENETDOWN */ + /* WSAENETUNREACH is ENETUNREACH */ + /* WSAENETRESET is ENETRESET */ + /* WSAECONNABORTED is ECONNABORTED */ + /* WSAECONNRESET is ECONNRESET */ + /* WSAENOBUFS is ENOBUFS */ + /* WSAEISCONN is EISCONN */ + /* WSAENOTCONN is ENOTCONN */ + /* WSAESHUTDOWN is ESHUTDOWN */ + /* WSAETOOMANYREFS is ETOOMANYREFS */ + /* WSAETIMEDOUT is ETIMEDOUT */ + /* WSAECONNREFUSED is ECONNREFUSED */ + /* WSAELOOP is ELOOP */ + /* WSAENAMETOOLONG maps to ENAMETOOLONG */ + /* WSAEHOSTDOWN is EHOSTDOWN */ + /* WSAEHOSTUNREACH is EHOSTUNREACH */ + /* WSAENOTEMPTY maps to ENOTEMPTY */ + /* WSAEPROCLIM is EPROCLIM */ + /* WSAEUSERS is EUSERS */ + /* WSAEDQUOT is EDQUOT */ + /* WSAESTALE is ESTALE */ + /* WSAEREMOTE is EREMOTE */ + case WSASYSNOTREADY: + msg = "Network subsystem is unavailable"; + break; + case WSAVERNOTSUPPORTED: + msg = "Winsock.dll version out of range"; + break; + case WSANOTINITIALISED: + msg = "Successful WSAStartup not yet performed"; + break; + case WSAEDISCON: + msg = "Graceful shutdown in progress"; + break; + case WSAENOMORE: case WSA_E_NO_MORE: + msg = "No more results"; + break; + case WSAECANCELLED: case WSA_E_CANCELLED: + msg = "Call was canceled"; + break; + case WSAEINVALIDPROCTABLE: + msg = "Procedure call table is invalid"; + break; + case WSAEINVALIDPROVIDER: + msg = "Service provider is invalid"; + break; + case WSAEPROVIDERFAILEDINIT: + msg = "Service provider failed to initialize"; + break; + case WSASYSCALLFAILURE: + msg = "System call failure"; + break; + case WSASERVICE_NOT_FOUND: + msg = "Service not found"; + break; + case WSATYPE_NOT_FOUND: + msg = "Class type not found"; + break; + case WSAEREFUSED: + msg = "Database query was refused"; + break; + case WSAHOST_NOT_FOUND: + msg = "Host not found"; + break; + case WSATRY_AGAIN: + msg = "Nonauthoritative host not found"; + break; + case WSANO_RECOVERY: + msg = "Nonrecoverable error"; + break; + case WSANO_DATA: + msg = "Valid name, no data record of requested type"; + break; + /* WSA_QOS_* omitted */ +# endif +# endif + +# if GNULIB_defined_ENOMSG + case ENOMSG: + msg = "No message of desired type"; + break; +# endif + +# if GNULIB_defined_EIDRM + case EIDRM: + msg = "Identifier removed"; + break; +# endif + +# if GNULIB_defined_ENOLINK + case ENOLINK: + msg = "Link has been severed"; + break; +# endif + +# if GNULIB_defined_EPROTO + case EPROTO: + msg = "Protocol error"; + break; +# endif + +# if GNULIB_defined_EMULTIHOP + case EMULTIHOP: + msg = "Multihop attempted"; + break; +# endif + +# if GNULIB_defined_EBADMSG + case EBADMSG: + msg = "Bad message"; + break; +# endif + +# if GNULIB_defined_EOVERFLOW + case EOVERFLOW: + msg = "Value too large for defined data type"; + break; +# endif + +# if GNULIB_defined_ENOTSUP + case ENOTSUP: + msg = "Not supported"; + break; +# endif + +# if GNULIB_defined_ + case ECANCELED: + msg = "Operation canceled"; + break; +# endif + } + + if (msg) + return (char *) msg; + + { + char *result = strerror (n); + + if (result == NULL || result[0] == '\0') + { + static char const fmt[] = "Unknown error (%d)"; + static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)]; + sprintf (msg_buf, fmt, n); + return msg_buf; + } + + return result; + } +} + +#endif diff --git a/gl/string.in.h b/gl/string.in.h new file mode 100644 index 0000000..f021a3e --- /dev/null +++ b/gl/string.in.h @@ -0,0 +1,605 @@ +/* A GNU-like <string.h>. + + Copyright (C) 1995-1996, 2001-2008 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_STRING_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_STRING_H@ + +#ifndef _GL_STRING_H +#define _GL_STRING_H + + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +# define __attribute__(Spec) /* empty */ +# endif +/* The attribute __pure__ was added in gcc 2.96. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) +# define __pure__ /* empty */ +# endif +#endif + + +/* The definition of GL_LINK_WARNING is copied here. */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Return the first occurrence of NEEDLE in HAYSTACK. */ +#if @GNULIB_MEMMEM@ +# if @REPLACE_MEMMEM@ +# define memmem rpl_memmem +# endif +# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@ +extern void *memmem (void const *__haystack, size_t __haystack_len, + void const *__needle, size_t __needle_len) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef memmem +# define memmem(a,al,b,bl) \ + (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \ + "use gnulib module memmem-simple for portability, " \ + "and module memmem for speed" ), \ + memmem (a, al, b, bl)) +#endif + +/* Copy N bytes of SRC to DEST, return pointer to bytes after the + last written byte. */ +#if @GNULIB_MEMPCPY@ +# if ! @HAVE_MEMPCPY@ +extern void *mempcpy (void *restrict __dest, void const *restrict __src, + size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mempcpy +# define mempcpy(a,b,n) \ + (GL_LINK_WARNING ("mempcpy is unportable - " \ + "use gnulib module mempcpy for portability"), \ + mempcpy (a, b, n)) +#endif + +/* Search backwards through a block for a byte (specified as an int). */ +#if @GNULIB_MEMRCHR@ +# if ! @HAVE_DECL_MEMRCHR@ +extern void *memrchr (void const *, int, size_t) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef memrchr +# define memrchr(a,b,c) \ + (GL_LINK_WARNING ("memrchr is unportable - " \ + "use gnulib module memrchr for portability"), \ + memrchr (a, b, c)) +#endif + +/* Find the first occurrence of C in S. More efficient than + memchr(S,C,N), at the expense of undefined behavior if C does not + occur within N bytes. */ +#if @GNULIB_RAWMEMCHR@ +# if ! @HAVE_RAWMEMCHR@ +extern void *rawmemchr (void const *__s, int __c_in) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef rawmemchr +# define rawmemchr(a,b) \ + (GL_LINK_WARNING ("rawmemchr is unportable - " \ + "use gnulib module rawmemchr for portability"), \ + rawmemchr (a, b)) +#endif + +/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ +#if @GNULIB_STPCPY@ +# if ! @HAVE_STPCPY@ +extern char *stpcpy (char *restrict __dst, char const *restrict __src); +# endif +#elif defined GNULIB_POSIXCHECK +# undef stpcpy +# define stpcpy(a,b) \ + (GL_LINK_WARNING ("stpcpy is unportable - " \ + "use gnulib module stpcpy for portability"), \ + stpcpy (a, b)) +#endif + +/* Copy no more than N bytes of SRC to DST, returning a pointer past the + last non-NUL byte written into DST. */ +#if @GNULIB_STPNCPY@ +# if ! @HAVE_STPNCPY@ +# define stpncpy gnu_stpncpy +extern char *stpncpy (char *restrict __dst, char const *restrict __src, + size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef stpncpy +# define stpncpy(a,b,n) \ + (GL_LINK_WARNING ("stpncpy is unportable - " \ + "use gnulib module stpncpy for portability"), \ + stpncpy (a, b, n)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strchr() does not work with multibyte strings if the locale encoding is + GB18030 and the character to be searched is a digit. */ +# undef strchr +# define strchr(s,c) \ + (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \ + "in some multibyte locales - " \ + "use mbschr if you care about internationalization"), \ + strchr (s, c)) +#endif + +/* Find the first occurrence of C in S or the final NUL byte. */ +#if @GNULIB_STRCHRNUL@ +# if ! @HAVE_STRCHRNUL@ +extern char *strchrnul (char const *__s, int __c_in) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strchrnul +# define strchrnul(a,b) \ + (GL_LINK_WARNING ("strchrnul is unportable - " \ + "use gnulib module strchrnul for portability"), \ + strchrnul (a, b)) +#endif + +/* Duplicate S, returning an identical malloc'd string. */ +#if @GNULIB_STRDUP@ +# if @REPLACE_STRDUP@ +# undef strdup +# define strdup rpl_strdup +# endif +# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@ +extern char *strdup (char const *__s); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strdup +# define strdup(a) \ + (GL_LINK_WARNING ("strdup is unportable - " \ + "use gnulib module strdup for portability"), \ + strdup (a)) +#endif + +/* Return a newly allocated copy of at most N bytes of STRING. */ +#if @GNULIB_STRNDUP@ +# if ! @HAVE_STRNDUP@ +# undef strndup +# define strndup rpl_strndup +# endif +# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@ +extern char *strndup (char const *__string, size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strndup +# define strndup(a,n) \ + (GL_LINK_WARNING ("strndup is unportable - " \ + "use gnulib module strndup for portability"), \ + strndup (a, n)) +#endif + +/* Find the length (number of bytes) of STRING, but scan at most + MAXLEN bytes. If no '\0' terminator is found in that many bytes, + return MAXLEN. */ +#if @GNULIB_STRNLEN@ +# if ! @HAVE_DECL_STRNLEN@ +extern size_t strnlen (char const *__string, size_t __maxlen) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strnlen +# define strnlen(a,n) \ + (GL_LINK_WARNING ("strnlen is unportable - " \ + "use gnulib module strnlen for portability"), \ + strnlen (a, n)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strcspn() assumes the second argument is a list of single-byte characters. + Even in this simple case, it does not work with multibyte strings if the + locale encoding is GB18030 and one of the characters to be searched is a + digit. */ +# undef strcspn +# define strcspn(s,a) \ + (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbscspn if you care about internationalization"), \ + strcspn (s, a)) +#endif + +/* Find the first occurrence in S of any character in ACCEPT. */ +#if @GNULIB_STRPBRK@ +# if ! @HAVE_STRPBRK@ +extern char *strpbrk (char const *__s, char const *__accept) + __attribute__ ((__pure__)); +# endif +# if defined GNULIB_POSIXCHECK +/* strpbrk() assumes the second argument is a list of single-byte characters. + Even in this simple case, it does not work with multibyte strings if the + locale encoding is GB18030 and one of the characters to be searched is a + digit. */ +# undef strpbrk +# define strpbrk(s,a) \ + (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbspbrk if you care about internationalization"), \ + strpbrk (s, a)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strpbrk +# define strpbrk(s,a) \ + (GL_LINK_WARNING ("strpbrk is unportable - " \ + "use gnulib module strpbrk for portability"), \ + strpbrk (s, a)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strspn() assumes the second argument is a list of single-byte characters. + Even in this simple case, it cannot work with multibyte strings. */ +# undef strspn +# define strspn(s,a) \ + (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbsspn if you care about internationalization"), \ + strspn (s, a)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strrchr() does not work with multibyte strings if the locale encoding is + GB18030 and the character to be searched is a digit. */ +# undef strrchr +# define strrchr(s,c) \ + (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \ + "in some multibyte locales - " \ + "use mbsrchr if you care about internationalization"), \ + strrchr (s, c)) +#endif + +/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. + If one is found, overwrite it with a NUL, and advance *STRINGP + to point to the next char after it. Otherwise, set *STRINGP to NULL. + If *STRINGP was already NULL, nothing happens. + Return the old value of *STRINGP. + + This is a variant of strtok() that is multithread-safe and supports + empty fields. + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + Caveat: It doesn't work with multibyte strings unless all of the delimiter + characters are ASCII characters < 0x30. + + See also strtok_r(). */ +#if @GNULIB_STRSEP@ +# if ! @HAVE_STRSEP@ +extern char *strsep (char **restrict __stringp, char const *restrict __delim); +# endif +# if defined GNULIB_POSIXCHECK +# undef strsep +# define strsep(s,d) \ + (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbssep if you care about internationalization"), \ + strsep (s, d)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strsep +# define strsep(s,d) \ + (GL_LINK_WARNING ("strsep is unportable - " \ + "use gnulib module strsep for portability"), \ + strsep (s, d)) +#endif + +#if @GNULIB_STRSTR@ +# if @REPLACE_STRSTR@ +# define strstr rpl_strstr +char *strstr (const char *haystack, const char *needle) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +/* strstr() does not work with multibyte strings if the locale encoding is + different from UTF-8: + POSIX says that it operates on "strings", and "string" in POSIX is defined + as a sequence of bytes, not of characters. */ +# undef strstr +# define strstr(a,b) \ + (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \ + "work correctly on character strings in most " \ + "multibyte locales - " \ + "use mbsstr if you care about internationalization, " \ + "or use strstr if you care about speed"), \ + strstr (a, b)) +#endif + +/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive + comparison. */ +#if @GNULIB_STRCASESTR@ +# if @REPLACE_STRCASESTR@ +# define strcasestr rpl_strcasestr +# endif +# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@ +extern char *strcasestr (const char *haystack, const char *needle) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +/* strcasestr() does not work with multibyte strings: + It is a glibc extension, and glibc implements it only for unibyte + locales. */ +# undef strcasestr +# define strcasestr(a,b) \ + (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \ + "in multibyte locales - " \ + "use mbscasestr if you care about " \ + "internationalization, or use c-strcasestr if you want " \ + "a locale independent function"), \ + strcasestr (a, b)) +#endif + +/* Parse S into tokens separated by characters in DELIM. + If S is NULL, the saved pointer in SAVE_PTR is used as + the next starting point. For example: + char s[] = "-abc-=-def"; + char *sp; + x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" + x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL + x = strtok_r(NULL, "=", &sp); // x = NULL + // s = "abc\0-def\0" + + This is a variant of strtok() that is multithread-safe. + + For the POSIX documentation for this function, see: + http://www.opengroup.org/susv3xsh/strtok.html + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + Caveat: It doesn't work with multibyte strings unless all of the delimiter + characters are ASCII characters < 0x30. + + See also strsep(). */ +#if @GNULIB_STRTOK_R@ +# if ! @HAVE_DECL_STRTOK_R@ +extern char *strtok_r (char *restrict s, char const *restrict delim, + char **restrict save_ptr); +# endif +# if defined GNULIB_POSIXCHECK +# undef strtok_r +# define strtok_r(s,d,p) \ + (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbstok_r if you care about internationalization"), \ + strtok_r (s, d, p)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strtok_r +# define strtok_r(s,d,p) \ + (GL_LINK_WARNING ("strtok_r is unportable - " \ + "use gnulib module strtok_r for portability"), \ + strtok_r (s, d, p)) +#endif + + +/* The following functions are not specified by POSIX. They are gnulib + extensions. */ + +#if @GNULIB_MBSLEN@ +/* Return the number of multibyte characters in the character string STRING. + This considers multibyte characters, unlike strlen, which counts bytes. */ +extern size_t mbslen (const char *string); +#endif + +#if @GNULIB_MBSNLEN@ +/* Return the number of multibyte characters in the character string starting + at STRING and ending at STRING + LEN. */ +extern size_t mbsnlen (const char *string, size_t len); +#endif + +#if @GNULIB_MBSCHR@ +/* Locate the first single-byte character C in the character string STRING, + and return a pointer to it. Return NULL if C is not found in STRING. + Unlike strchr(), this function works correctly in multibyte locales with + encodings such as GB18030. */ +# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ +extern char * mbschr (const char *string, int c); +#endif + +#if @GNULIB_MBSRCHR@ +/* Locate the last single-byte character C in the character string STRING, + and return a pointer to it. Return NULL if C is not found in STRING. + Unlike strrchr(), this function works correctly in multibyte locales with + encodings such as GB18030. */ +# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */ +extern char * mbsrchr (const char *string, int c); +#endif + +#if @GNULIB_MBSSTR@ +/* Find the first occurrence of the character string NEEDLE in the character + string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. + Unlike strstr(), this function works correctly in multibyte locales with + encodings different from UTF-8. */ +extern char * mbsstr (const char *haystack, const char *needle); +#endif + +#if @GNULIB_MBSCASECMP@ +/* Compare the character strings S1 and S2, ignoring case, returning less than, + equal to or greater than zero if S1 is lexicographically less than, equal to + or greater than S2. + Note: This function may, in multibyte locales, return 0 for strings of + different lengths! + Unlike strcasecmp(), this function works correctly in multibyte locales. */ +extern int mbscasecmp (const char *s1, const char *s2); +#endif + +#if @GNULIB_MBSNCASECMP@ +/* Compare the initial segment of the character string S1 consisting of at most + N characters with the initial segment of the character string S2 consisting + of at most N characters, ignoring case, returning less than, equal to or + greater than zero if the initial segment of S1 is lexicographically less + than, equal to or greater than the initial segment of S2. + Note: This function may, in multibyte locales, return 0 for initial segments + of different lengths! + Unlike strncasecmp(), this function works correctly in multibyte locales. + But beware that N is not a byte count but a character count! */ +extern int mbsncasecmp (const char *s1, const char *s2, size_t n); +#endif + +#if @GNULIB_MBSPCASECMP@ +/* Compare the initial segment of the character string STRING consisting of + at most mbslen (PREFIX) characters with the character string PREFIX, + ignoring case, returning less than, equal to or greater than zero if this + initial segment is lexicographically less than, equal to or greater than + PREFIX. + Note: This function may, in multibyte locales, return 0 if STRING is of + smaller length than PREFIX! + Unlike strncasecmp(), this function works correctly in multibyte + locales. */ +extern char * mbspcasecmp (const char *string, const char *prefix); +#endif + +#if @GNULIB_MBSCASESTR@ +/* Find the first occurrence of the character string NEEDLE in the character + string HAYSTACK, using case-insensitive comparison. + Note: This function may, in multibyte locales, return success even if + strlen (haystack) < strlen (needle) ! + Unlike strcasestr(), this function works correctly in multibyte locales. */ +extern char * mbscasestr (const char *haystack, const char *needle); +#endif + +#if @GNULIB_MBSCSPN@ +/* Find the first occurrence in the character string STRING of any character + in the character string ACCEPT. Return the number of bytes from the + beginning of the string to this occurrence, or to the end of the string + if none exists. + Unlike strcspn(), this function works correctly in multibyte locales. */ +extern size_t mbscspn (const char *string, const char *accept); +#endif + +#if @GNULIB_MBSPBRK@ +/* Find the first occurrence in the character string STRING of any character + in the character string ACCEPT. Return the pointer to it, or NULL if none + exists. + Unlike strpbrk(), this function works correctly in multibyte locales. */ +# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ +extern char * mbspbrk (const char *string, const char *accept); +#endif + +#if @GNULIB_MBSSPN@ +/* Find the first occurrence in the character string STRING of any character + not in the character string REJECT. Return the number of bytes from the + beginning of the string to this occurrence, or to the end of the string + if none exists. + Unlike strspn(), this function works correctly in multibyte locales. */ +extern size_t mbsspn (const char *string, const char *reject); +#endif + +#if @GNULIB_MBSSEP@ +/* Search the next delimiter (multibyte character listed in the character + string DELIM) starting at the character string *STRINGP. + If one is found, overwrite it with a NUL, and advance *STRINGP to point + to the next multibyte character after it. Otherwise, set *STRINGP to NULL. + If *STRINGP was already NULL, nothing happens. + Return the old value of *STRINGP. + + This is a variant of mbstok_r() that supports empty fields. + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + + See also mbstok_r(). */ +extern char * mbssep (char **stringp, const char *delim); +#endif + +#if @GNULIB_MBSTOK_R@ +/* Parse the character string STRING into tokens separated by characters in + the character string DELIM. + If STRING is NULL, the saved pointer in SAVE_PTR is used as + the next starting point. For example: + char s[] = "-abc-=-def"; + char *sp; + x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" + x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL + x = mbstok_r(NULL, "=", &sp); // x = NULL + // s = "abc\0-def\0" + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + + See also mbssep(). */ +extern char * mbstok_r (char *string, const char *delim, char **save_ptr); +#endif + +/* Map any int, typically from errno, into an error message. */ +#if @GNULIB_STRERROR@ +# if @REPLACE_STRERROR@ +# undef strerror +# define strerror rpl_strerror +extern char *strerror (int); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strerror +# define strerror(e) \ + (GL_LINK_WARNING ("strerror is unportable - " \ + "use gnulib module strerror to guarantee non-NULL result"), \ + strerror (e)) +#endif + +#if @GNULIB_STRSIGNAL@ +# if @REPLACE_STRSIGNAL@ +# define strsignal rpl_strsignal +# endif +# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@ +extern char *strsignal (int __sig); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strsignal +# define strsignal(a) \ + (GL_LINK_WARNING ("strsignal is unportable - " \ + "use gnulib module strsignal for portability"), \ + strsignal (a)) +#endif + +#if @GNULIB_STRVERSCMP@ +# if !@HAVE_STRVERSCMP@ +extern int strverscmp (const char *, const char *); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strverscmp +# define strverscmp(a, b) \ + (GL_LINK_WARNING ("strverscmp is unportable - " \ + "use gnulib module strverscmp for portability"), \ + strverscmp (a, b)) +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _GL_STRING_H */ +#endif /* _GL_STRING_H */ diff --git a/gl/unistd.in.h b/gl/unistd.in.h new file mode 100644 index 0000000..fa8d84a --- /dev/null +++ b/gl/unistd.in.h @@ -0,0 +1,578 @@ +/* Substitute for and wrapper around <unistd.h>. + Copyright (C) 2003-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_UNISTD_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#if @HAVE_UNISTD_H@ +# @INCLUDE_NEXT@ @NEXT_UNISTD_H@ +#endif + +#ifndef _GL_UNISTD_H +#define _GL_UNISTD_H + +/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */ +#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) +# include <stdio.h> +#endif + +/* mingw fails to declare _exit in <unistd.h>. */ +/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */ +#include <stdlib.h> + +#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@ +/* Get ssize_t. */ +# include <sys/types.h> +#endif + +#if @GNULIB_GETHOSTNAME@ +/* Get all possible declarations of gethostname(). */ +# if @UNISTD_H_HAVE_WINSOCK2_H@ +# include <winsock2.h> +# if !defined _GL_SYS_SOCKET_H +# undef socket +# define socket socket_used_without_including_sys_socket_h +# undef connect +# define connect connect_used_without_including_sys_socket_h +# undef accept +# define accept accept_used_without_including_sys_socket_h +# undef bind +# define bind bind_used_without_including_sys_socket_h +# undef getpeername +# define getpeername getpeername_used_without_including_sys_socket_h +# undef getsockname +# define getsockname getsockname_used_without_including_sys_socket_h +# undef getsockopt +# define getsockopt getsockopt_used_without_including_sys_socket_h +# undef listen +# define listen listen_used_without_including_sys_socket_h +# undef recv +# define recv recv_used_without_including_sys_socket_h +# undef send +# define send send_used_without_including_sys_socket_h +# undef recvfrom +# define recvfrom recvfrom_used_without_including_sys_socket_h +# undef sendto +# define sendto sendto_used_without_including_sys_socket_h +# undef setsockopt +# define setsockopt setsockopt_used_without_including_sys_socket_h +# undef shutdown +# define shutdown shutdown_used_without_including_sys_socket_h +# endif +# if !defined _GL_SYS_SELECT_H +# undef select +# define select select_used_without_including_sys_select_h +# endif +# endif +#endif + +/* The definition of GL_LINK_WARNING is copied here. */ + + +/* OS/2 EMX lacks these macros. */ +#ifndef STDIN_FILENO +# define STDIN_FILENO 0 +#endif +#ifndef STDOUT_FILENO +# define STDOUT_FILENO 1 +#endif +#ifndef STDERR_FILENO +# define STDERR_FILENO 2 +#endif + +/* Declare overridden functions. */ + +#ifdef __cplusplus +extern "C" { +#endif + + +#if @GNULIB_CHOWN@ +# if @REPLACE_CHOWN@ +# ifndef REPLACE_CHOWN +# define REPLACE_CHOWN 1 +# endif +# if REPLACE_CHOWN +/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE + to GID (if GID is not -1). Follow symbolic links. + Return 0 if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/chown.html>. */ +# define chown rpl_chown +extern int chown (const char *file, uid_t uid, gid_t gid); +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# undef chown +# define chown(f,u,g) \ + (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \ + "doesn't treat a uid or gid of -1 on some systems - " \ + "use gnulib module chown for portability"), \ + chown (f, u, g)) +#endif + + +#if @GNULIB_CLOSE@ +# if @REPLACE_CLOSE@ +/* Automatically included by modules that need a replacement for close. */ +# undef close +# define close rpl_close +extern int close (int); +# endif +#elif @UNISTD_H_HAVE_WINSOCK2_H@ +# undef close +# define close close_used_without_requesting_gnulib_module_close +#elif defined GNULIB_POSIXCHECK +# undef close +# define close(f) \ + (GL_LINK_WARNING ("close does not portably work on sockets - " \ + "use gnulib module close for portability"), \ + close (f)) +#endif + + +#if @GNULIB_DUP2@ +# if !@HAVE_DUP2@ +/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if + NEWFD = OLDFD, otherwise close NEWFD first if it is open. + Return 0 if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/dup2.html>. */ +extern int dup2 (int oldfd, int newfd); +# endif +#elif defined GNULIB_POSIXCHECK +# undef dup2 +# define dup2(o,n) \ + (GL_LINK_WARNING ("dup2 is unportable - " \ + "use gnulib module dup2 for portability"), \ + dup2 (o, n)) +#endif + + +#if @GNULIB_ENVIRON@ +# if !@HAVE_DECL_ENVIRON@ +/* Set of environment variables and values. An array of strings of the form + "VARIABLE=VALUE", terminated with a NULL. */ +# if defined __APPLE__ && defined __MACH__ +# include <crt_externs.h> +# define environ (*_NSGetEnviron ()) +# else +extern char **environ; +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# undef environ +# define environ \ + (GL_LINK_WARNING ("environ is unportable - " \ + "use gnulib module environ for portability"), \ + environ) +#endif + + +#if @GNULIB_EUIDACCESS@ +# if !@HAVE_EUIDACCESS@ +/* Like access(), except that is uses the effective user id and group id of + the current process. */ +extern int euidaccess (const char *filename, int mode); +# endif +#elif defined GNULIB_POSIXCHECK +# undef euidaccess +# define euidaccess(f,m) \ + (GL_LINK_WARNING ("euidaccess is unportable - " \ + "use gnulib module euidaccess for portability"), \ + euidaccess (f, m)) +#endif + + +#if @GNULIB_FCHDIR@ +# if @REPLACE_FCHDIR@ + +/* Change the process' current working directory to the directory on which + the given file descriptor is open. + Return 0 if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/fchdir.html>. */ +extern int fchdir (int /*fd*/); + +# define dup rpl_dup +extern int dup (int); +# define dup2 rpl_dup2 +extern int dup2 (int, int); + +# endif +#elif defined GNULIB_POSIXCHECK +# undef fchdir +# define fchdir(f) \ + (GL_LINK_WARNING ("fchdir is unportable - " \ + "use gnulib module fchdir for portability"), \ + fchdir (f)) +#endif + + +#if @GNULIB_FSYNC@ +/* Synchronize changes to a file. + Return 0 if successful, otherwise -1 and errno set. + See POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/fsync.html>. */ +# if !@HAVE_FSYNC@ +extern int fsync (int fd); +# endif +#elif defined GNULIB_POSIXCHECK +# undef fsync +# define fsync(fd) \ + (GL_LINK_WARNING ("fsync is unportable - " \ + "use gnulib module fsync for portability"), \ + fsync (fd)) +#endif + + +#if @GNULIB_FTRUNCATE@ +# if !@HAVE_FTRUNCATE@ +/* Change the size of the file to which FD is opened to become equal to LENGTH. + Return 0 if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/ftruncate.html>. */ +extern int ftruncate (int fd, off_t length); +# endif +#elif defined GNULIB_POSIXCHECK +# undef ftruncate +# define ftruncate(f,l) \ + (GL_LINK_WARNING ("ftruncate is unportable - " \ + "use gnulib module ftruncate for portability"), \ + ftruncate (f, l)) +#endif + + +#if @GNULIB_GETCWD@ +/* Include the headers that might declare getcwd so that they will not + cause confusion if included after this file. */ +# include <stdlib.h> +# if @REPLACE_GETCWD@ +/* Get the name of the current working directory, and put it in SIZE bytes + of BUF. + Return BUF if successful, or NULL if the directory couldn't be determined + or SIZE was too small. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/getcwd.html>. + Additionally, the gnulib module 'getcwd' guarantees the following GNU + extension: If BUF is NULL, an array is allocated with 'malloc'; the array + is SIZE bytes long, unless SIZE == 0, in which case it is as big as + necessary. */ +# define getcwd rpl_getcwd +extern char * getcwd (char *buf, size_t size); +# endif +#elif defined GNULIB_POSIXCHECK +# undef getcwd +# define getcwd(b,s) \ + (GL_LINK_WARNING ("getcwd is unportable - " \ + "use gnulib module getcwd for portability"), \ + getcwd (b, s)) +#endif + + +#if @GNULIB_GETDOMAINNAME@ +/* Return the NIS domain name of the machine. + WARNING! The NIS domain name is unrelated to the fully qualified host name + of the machine. It is also unrelated to email addresses. + WARNING! The NIS domain name is usually the empty string or "(none)" when + not using NIS. + + Put up to LEN bytes of the NIS domain name into NAME. + Null terminate it if the name is shorter than LEN. + If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. + Return 0 if successful, otherwise set errno and return -1. */ +# if !@HAVE_GETDOMAINNAME@ +extern int getdomainname(char *name, size_t len); +# endif +#elif defined GNULIB_POSIXCHECK +# undef getdomainname +# define getdomainname(n,l) \ + (GL_LINK_WARNING ("getdomainname is unportable - " \ + "use gnulib module getdomainname for portability"), \ + getdomainname (n, l)) +#endif + + +#if @GNULIB_GETDTABLESIZE@ +# if !@HAVE_GETDTABLESIZE@ +/* Return the maximum number of file descriptors in the current process. */ +extern int getdtablesize (void); +# endif +#elif defined GNULIB_POSIXCHECK +# undef getdtablesize +# define getdtablesize() \ + (GL_LINK_WARNING ("getdtablesize is unportable - " \ + "use gnulib module getdtablesize for portability"), \ + getdtablesize ()) +#endif + + +#if @GNULIB_GETHOSTNAME@ +/* Return the standard host name of the machine. + WARNING! The host name may or may not be fully qualified. + + Put up to LEN bytes of the host name into NAME. + Null terminate it if the name is shorter than LEN. + If the host name is longer than LEN, set errno = EINVAL and return -1. + Return 0 if successful, otherwise set errno and return -1. */ +# if @UNISTD_H_HAVE_WINSOCK2_H@ +# undef gethostname +# define gethostname rpl_gethostname +# endif +# if @UNISTD_H_HAVE_WINSOCK2_H@ || !@HAVE_GETHOSTNAME@ +extern int gethostname(char *name, size_t len); +# endif +#elif @UNISTD_H_HAVE_WINSOCK2_H@ +# undef gethostname +# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname +#elif defined GNULIB_POSIXCHECK +# undef gethostname +# define gethostname(n,l) \ + (GL_LINK_WARNING ("gethostname is unportable - " \ + "use gnulib module gethostname for portability"), \ + gethostname (n, l)) +#endif + + +#if @GNULIB_GETLOGIN_R@ +/* Copies the user's login name to NAME. + The array pointed to by NAME has room for SIZE bytes. + + Returns 0 if successful. Upon error, an error number is returned, or -1 in + the case that the login name cannot be found but no specific error is + provided (this case is hopefully rare but is left open by the POSIX spec). + + See <http://www.opengroup.org/susv3xsh/getlogin.html>. + */ +# if !@HAVE_DECL_GETLOGIN_R@ +# include <stddef.h> +extern int getlogin_r (char *name, size_t size); +# endif +#elif defined GNULIB_POSIXCHECK +# undef getlogin_r +# define getlogin_r(n,s) \ + (GL_LINK_WARNING ("getlogin_r is unportable - " \ + "use gnulib module getlogin_r for portability"), \ + getlogin_r (n, s)) +#endif + + +#if @GNULIB_GETPAGESIZE@ +# if @REPLACE_GETPAGESIZE@ +# define getpagesize rpl_getpagesize +extern int getpagesize (void); +# elif !@HAVE_GETPAGESIZE@ +/* This is for POSIX systems. */ +# if !defined getpagesize && defined _SC_PAGESIZE +# if ! (defined __VMS && __VMS_VER < 70000000) +# define getpagesize() sysconf (_SC_PAGESIZE) +# endif +# endif +/* This is for older VMS. */ +# if !defined getpagesize && defined __VMS +# ifdef __ALPHA +# define getpagesize() 8192 +# else +# define getpagesize() 512 +# endif +# endif +/* This is for BeOS. */ +# if !defined getpagesize && @HAVE_OS_H@ +# include <OS.h> +# if defined B_PAGE_SIZE +# define getpagesize() B_PAGE_SIZE +# endif +# endif +/* This is for AmigaOS4.0. */ +# if !defined getpagesize && defined __amigaos4__ +# define getpagesize() 2048 +# endif +/* This is for older Unix systems. */ +# if !defined getpagesize && @HAVE_SYS_PARAM_H@ +# include <sys/param.h> +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else +# ifdef NBPG +# ifndef CLSIZE +# define CLSIZE 1 +# endif +# define getpagesize() (NBPG * CLSIZE) +# else +# ifdef NBPC +# define getpagesize() NBPC +# endif +# endif +# endif +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# undef getpagesize +# define getpagesize() \ + (GL_LINK_WARNING ("getpagesize is unportable - " \ + "use gnulib module getpagesize for portability"), \ + getpagesize ()) +#endif + + +#if @GNULIB_GETUSERSHELL@ +# if !@HAVE_GETUSERSHELL@ +/* Return the next valid login shell on the system, or NULL when the end of + the list has been reached. */ +extern char *getusershell (void); +/* Rewind to pointer that is advanced at each getusershell() call. */ +extern void setusershell (void); +/* Free the pointer that is advanced at each getusershell() call and + associated resources. */ +extern void endusershell (void); +# endif +#elif defined GNULIB_POSIXCHECK +# undef getusershell +# define getusershell() \ + (GL_LINK_WARNING ("getusershell is unportable - " \ + "use gnulib module getusershell for portability"), \ + getusershell ()) +# undef setusershell +# define setusershell() \ + (GL_LINK_WARNING ("setusershell is unportable - " \ + "use gnulib module getusershell for portability"), \ + setusershell ()) +# undef endusershell +# define endusershell() \ + (GL_LINK_WARNING ("endusershell is unportable - " \ + "use gnulib module getusershell for portability"), \ + endusershell ()) +#endif + + +#if @GNULIB_LCHOWN@ +# if @REPLACE_LCHOWN@ +/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE + to GID (if GID is not -1). Do not follow symbolic links. + Return 0 if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/lchown.html>. */ +# define lchown rpl_lchown +extern int lchown (char const *file, uid_t owner, gid_t group); +# endif +#elif defined GNULIB_POSIXCHECK +# undef lchown +# define lchown(f,u,g) \ + (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \ + "systems - use gnulib module lchown for portability"), \ + lchown (f, u, g)) +#endif + + +#if @GNULIB_LINK@ +/* Create a new hard link for an existing file. + Return 0 if successful, otherwise -1 and errno set. + See POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/link.html>. */ +# if !@HAVE_LINK@ +extern int link (const char *path1, const char *path2); +# endif +#elif defined GNULIB_POSIXCHECK +# undef link +# define link(path1,path2) \ + (GL_LINK_WARNING ("link is unportable - " \ + "use gnulib module link for portability"), \ + link (path1, path2)) +#endif + + +#if @GNULIB_LSEEK@ +# if @REPLACE_LSEEK@ +/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. + Return the new offset if successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/lseek.html>. */ +# define lseek rpl_lseek + extern off_t lseek (int fd, off_t offset, int whence); +# endif +#elif defined GNULIB_POSIXCHECK +# undef lseek +# define lseek(f,o,w) \ + (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \ + "systems - use gnulib module lseek for portability"), \ + lseek (f, o, w)) +#endif + + +#if @GNULIB_READLINK@ +/* Read the contents of the symbolic link FILE and place the first BUFSIZE + bytes of it into BUF. Return the number of bytes placed into BUF if + successful, otherwise -1 and errno set. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/readlink.html>. */ +# if !@HAVE_READLINK@ +# include <stddef.h> +extern int readlink (const char *file, char *buf, size_t bufsize); +# endif +#elif defined GNULIB_POSIXCHECK +# undef readlink +# define readlink(f,b,s) \ + (GL_LINK_WARNING ("readlink is unportable - " \ + "use gnulib module readlink for portability"), \ + readlink (f, b, s)) +#endif + + +#if @GNULIB_SLEEP@ +/* Pause the execution of the current thread for N seconds. + Returns the number of seconds left to sleep. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/sleep.html>. */ +# if !@HAVE_SLEEP@ +extern unsigned int sleep (unsigned int n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef sleep +# define sleep(n) \ + (GL_LINK_WARNING ("sleep is unportable - " \ + "use gnulib module sleep for portability"), \ + sleep (n)) +#endif + + +#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@ +/* Write up to COUNT bytes starting at BUF to file descriptor FD. + See the POSIX:2001 specification + <http://www.opengroup.org/susv3xsh/write.html>. */ +# undef write +# define write rpl_write +extern ssize_t write (int fd, const void *buf, size_t count); +#endif + + +#ifdef FCHDIR_REPLACEMENT +/* gnulib internal function. */ +extern void _gl_unregister_fd (int fd); +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* _GL_UNISTD_H */ +#endif /* _GL_UNISTD_H */ diff --git a/gl/version-etc.c b/gl/version-etc.c new file mode 100644 index 0000000..c3b0289 --- /dev/null +++ b/gl/version-etc.c @@ -0,0 +1,199 @@ +/* Print --version and bug-reporting information in a consistent format. + Copyright (C) 1999-2009 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Jim Meyering. */ + +#include <config.h> + +/* Specification. */ +#include "version-etc.h" + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + +#include "gettext.h" +#define _(msgid) gettext (msgid) + +enum { COPYRIGHT_YEAR = 2009 }; + +/* Like version_etc, below, but with the NULL-terminated author list + provided via a variable of type va_list. */ +void +version_etc_va (FILE *stream, + const char *command_name, const char *package, + const char *version, va_list authors) +{ + size_t n_authors; + + /* Count the number of authors. */ + { + va_list tmp_authors; + + va_copy (tmp_authors, authors); + + n_authors = 0; + while (va_arg (tmp_authors, const char *) != NULL) + ++n_authors; + } + + if (command_name) + fprintf (stream, "%s (%s) %s\n", command_name, package, version); + else + fprintf (stream, "%s %s\n", package, version); + +#ifdef PACKAGE_PACKAGER +# ifdef PACKAGE_PACKAGER_VERSION + fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER, + PACKAGE_PACKAGER_VERSION); +# else + fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER); +# endif +#endif + + /* TRANSLATORS: Translate "(C)" to the copyright symbol + (C-in-a-circle), if this symbol is available in the user's + locale. Otherwise, do not translate "(C)"; leave it as-is. */ + fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR); + + fputs (_("\ +\n\ +License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n\ +This is free software: you are free to change and redistribute it.\n\ +There is NO WARRANTY, to the extent permitted by law.\n\ +\n\ +"), + stream); + + switch (n_authors) + { + case 0: + /* The caller must provide at least one author name. */ + abort (); + case 1: + /* TRANSLATORS: %s denotes an author name. */ + vfprintf (stream, _("Written by %s.\n"), authors); + break; + case 2: + /* TRANSLATORS: Each %s denotes an author name. */ + vfprintf (stream, _("Written by %s and %s.\n"), authors); + break; + case 3: + /* TRANSLATORS: Each %s denotes an author name. */ + vfprintf (stream, _("Written by %s, %s, and %s.\n"), authors); + break; + case 4: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors); + break; + case 5: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors); + break; + case 6: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"), + authors); + break; + case 7: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"), + authors); + break; + case 8: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"), + authors); + break; + case 9: + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"), + authors); + break; + default: + /* 10 or more authors. Use an abbreviation, since the human reader + will probably not want to read the entire list anyway. */ + /* TRANSLATORS: Each %s denotes an author name. + You can use line breaks, estimating that each author name occupies + ca. 16 screen columns and that a screen line has ca. 80 columns. */ + vfprintf (stream, _("\ +Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"), + authors); + break; + } + va_end (authors); +} + + +/* Display the --version information the standard way. + + If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of + the program. The formats are therefore: + + PACKAGE VERSION + + or + + COMMAND_NAME (PACKAGE) VERSION. + + The author names are passed as separate arguments, with an additional + NULL argument at the end. */ +void +version_etc (FILE *stream, + const char *command_name, const char *package, + const char *version, /* const char *author1, ...*/ ...) +{ + va_list authors; + + va_start (authors, version); + version_etc_va (stream, command_name, package, version, authors); +} + +void +emit_bug_reporting_address (void) +{ + /* TRANSLATORS: The placeholder indicates the bug-reporting address + for this package. Please add _another line_ saying + "Report translation bugs to <...>\n" with the address for translation + bugs (typically your translation team's web or email address). */ + printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT); +#ifdef PACKAGE_PACKAGER_BUG_REPORTS + printf (_("Report %s bugs to <%s>.\n"), PACKAGE_PACKAGER, + PACKAGE_PACKAGER_BUG_REPORTS); +#endif + printf (_("%s home page: <http://www.gnu.org/software/%s/>.\n"), + PACKAGE_NAME, PACKAGE); + fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>.\n"), + stdout); +} diff --git a/gl/version-etc.h b/gl/version-etc.h new file mode 100644 index 0000000..33a8e7f --- /dev/null +++ b/gl/version-etc.h @@ -0,0 +1,38 @@ +/* Print --version and bug-reporting information in a consistent format. + Copyright (C) 1999, 2003, 2005, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Jim Meyering. */ + +#ifndef VERSION_ETC_H +# define VERSION_ETC_H 1 + +# include <stdarg.h> +# include <stdio.h> + +extern const char version_etc_copyright[]; + +extern void version_etc_va (FILE *stream, + const char *command_name, const char *package, + const char *version, va_list authors); + +extern void version_etc (FILE *stream, + const char *command_name, const char *package, + const char *version, + /* const char *author1, ...*/ ...); + +extern void emit_bug_reporting_address (void); + +#endif /* VERSION_ETC_H */ diff --git a/gltests/Makefile.am b/gltests/Makefile.am new file mode 100644 index 0000000..c0012e1 --- /dev/null +++ b/gltests/Makefile.am @@ -0,0 +1,92 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + +AUTOMAKE_OPTIONS = 1.5 foreign + +SUBDIRS = +TESTS = +TESTS_ENVIRONMENT = +noinst_PROGRAMS = +check_PROGRAMS = +noinst_HEADERS = +noinst_LIBRARIES = +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +AM_CPPFLAGS = \ + -I. -I$(srcdir) \ + -I.. -I$(srcdir)/.. \ + -I../gl -I$(srcdir)/../gl + +LDADD = ../gl/libgnu.la + +## begin gnulib module errno-tests + +TESTS += test-errno +check_PROGRAMS += test-errno + +EXTRA_DIST += test-errno.c + +## end gnulib module errno-tests + +## begin gnulib module strerror-tests + +TESTS += test-strerror +check_PROGRAMS += test-strerror +EXTRA_DIST += test-strerror.c + +## end gnulib module strerror-tests + +## begin gnulib module string-tests + +TESTS += test-string +check_PROGRAMS += test-string + +EXTRA_DIST += test-string.c + +## end gnulib module string-tests + +## begin gnulib module unistd-tests + +TESTS += test-unistd +check_PROGRAMS += test-unistd + +EXTRA_DIST += test-unistd.c + +## end gnulib module unistd-tests + +## begin gnulib module vc-list-files-tests + +TESTS += test-vc-list-files-git.sh +TESTS += test-vc-list-files-cvs.sh +TESTS_ENVIRONMENT += PATH='$(abs_aux_dir)'$(PATH_SEPARATOR)"$$PATH" +EXTRA_DIST += test-vc-list-files-git.sh test-vc-list-files-cvs.sh + +## end gnulib module vc-list-files-tests + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : diff --git a/gltests/Makefile.in b/gltests/Makefile.in new file mode 100644 index 0000000..e148ee0 --- /dev/null +++ b/gltests/Makefile.in @@ -0,0 +1,1114 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = test-errno$(EXEEXT) test-strerror$(EXEEXT) \ + test-string$(EXEEXT) test-unistd$(EXEEXT) \ + test-vc-list-files-git.sh test-vc-list-files-cvs.sh +noinst_PROGRAMS = +check_PROGRAMS = test-errno$(EXEEXT) test-strerror$(EXEEXT) \ + test-string$(EXEEXT) test-unistd$(EXEEXT) +subdir = gltests +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +PROGRAMS = $(noinst_PROGRAMS) +test_errno_SOURCES = test-errno.c +test_errno_OBJECTS = test-errno.$(OBJEXT) +test_errno_LDADD = $(LDADD) +test_errno_DEPENDENCIES = ../gl/libgnu.la +test_strerror_SOURCES = test-strerror.c +test_strerror_OBJECTS = test-strerror.$(OBJEXT) +test_strerror_LDADD = $(LDADD) +test_strerror_DEPENDENCIES = ../gl/libgnu.la +test_string_SOURCES = test-string.c +test_string_OBJECTS = test-string.$(OBJEXT) +test_string_LDADD = $(LDADD) +test_string_DEPENDENCIES = ../gl/libgnu.la +test_unistd_SOURCES = test-unistd.c +test_unistd_OBJECTS = test-unistd.$(OBJEXT) +test_unistd_LDADD = $(LDADD) +test_unistd_DEPENDENCIES = ../gl/libgnu.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = test-errno.c test-strerror.c test-string.c test-unistd.c +DIST_SOURCES = test-errno.c test-strerror.c test-string.c \ + test-unistd.c +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.5 foreign +SUBDIRS = +TESTS_ENVIRONMENT = PATH='$(abs_aux_dir)'$(PATH_SEPARATOR)"$$PATH" +noinst_HEADERS = +noinst_LIBRARIES = +EXTRA_DIST = test-errno.c test-strerror.c test-string.c test-unistd.c \ + test-vc-list-files-git.sh test-vc-list-files-cvs.sh +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +AM_CPPFLAGS = \ + -I. -I$(srcdir) \ + -I.. -I$(srcdir)/.. \ + -I../gl -I$(srcdir)/../gl + +LDADD = ../gl/libgnu.la +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gltests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign gltests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES) + @rm -f test-errno$(EXEEXT) + $(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS) +test-strerror$(EXEEXT): $(test_strerror_OBJECTS) $(test_strerror_DEPENDENCIES) + @rm -f test-strerror$(EXEEXT) + $(LINK) $(test_strerror_OBJECTS) $(test_strerror_LDADD) $(LIBS) +test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES) + @rm -f test-string$(EXEEXT) + $(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS) +test-unistd$(EXEEXT): $(test_unistd_OBJECTS) $(test_unistd_DEPENDENCIES) + @rm -f test-unistd$(EXEEXT) + $(LINK) $(test_unistd_OBJECTS) $(test_unistd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unistd.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + clean-noinstLIBRARIES clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + check-am ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am + + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + 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: diff --git a/gltests/test-errno.c b/gltests/test-errno.c new file mode 100644 index 0000000..4642027 --- /dev/null +++ b/gltests/test-errno.c @@ -0,0 +1,117 @@ +/* Test of <errno.h> substitute. + Copyright (C) 2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <errno.h> + +/* Verify that the POSIX mandated errno values exist and can be used as + initializers outside of a function. + The variable names happen to match the Linux/x86 error numbers. */ +int e1 = EPERM; +int e2 = ENOENT; +int e3 = ESRCH; +int e4 = EINTR; +int e5 = EIO; +int e6 = ENXIO; +int e7 = E2BIG; +int e8 = ENOEXEC; +int e9 = EBADF; +int e10 = ECHILD; +int e11 = EAGAIN; +int e11a = EWOULDBLOCK; +int e12 = ENOMEM; +int e13 = EACCES; +int e14 = EFAULT; +int e16 = EBUSY; +int e17 = EEXIST; +int e18 = EXDEV; +int e19 = ENODEV; +int e20 = ENOTDIR; +int e21 = EISDIR; +int e22 = EINVAL; +int e23 = ENFILE; +int e24 = EMFILE; +int e25 = ENOTTY; +int e26 = ETXTBSY; +int e27 = EFBIG; +int e28 = ENOSPC; +int e29 = ESPIPE; +int e30 = EROFS; +int e31 = EMLINK; +int e32 = EPIPE; +int e33 = EDOM; +int e34 = ERANGE; +int e35 = EDEADLK; +int e36 = ENAMETOOLONG; +int e37 = ENOLCK; +int e38 = ENOSYS; +int e39 = ENOTEMPTY; +int e40 = ELOOP; +int e42 = ENOMSG; +int e43 = EIDRM; +int e67 = ENOLINK; +int e71 = EPROTO; +int e72 = EMULTIHOP; +int e74 = EBADMSG; +int e75 = EOVERFLOW; +int e84 = EILSEQ; +int e88 = ENOTSOCK; +int e89 = EDESTADDRREQ; +int e90 = EMSGSIZE; +int e91 = EPROTOTYPE; +int e92 = ENOPROTOOPT; +int e93 = EPROTONOSUPPORT; +int e95 = EOPNOTSUPP; +int e95a = ENOTSUP; +int e97 = EAFNOSUPPORT; +int e98 = EADDRINUSE; +int e99 = EADDRNOTAVAIL; +int e100 = ENETDOWN; +int e101 = ENETUNREACH; +int e102 = ENETRESET; +int e103 = ECONNABORTED; +int e104 = ECONNRESET; +int e105 = ENOBUFS; +int e106 = EISCONN; +int e107 = ENOTCONN; +int e110 = ETIMEDOUT; +int e111 = ECONNREFUSED; +int e113 = EHOSTUNREACH; +int e114 = EALREADY; +int e115 = EINPROGRESS; +int e116 = ESTALE; +int e122 = EDQUOT; +int e125 = ECANCELED; + +/* Don't verify that these errno values are all different, except for possibly + EWOULDBLOCK == EAGAIN. Even Linux/x86 does not pass this check: it has + ENOTSUP == EOPNOTSUPP. */ + +int +main () +{ + /* Verify that errno can be assigned. */ + errno = EOVERFLOW; + + /* snprintf() callers want to distinguish EINVAL and EOVERFLOW. */ + if (errno == EINVAL) + return 1; + + return 0; +} diff --git a/gltests/test-strerror.c b/gltests/test-strerror.c new file mode 100644 index 0000000..3d9814d --- /dev/null +++ b/gltests/test-strerror.c @@ -0,0 +1,65 @@ +/* Test of strerror() function. + Copyright (C) 2007-2008 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2007. */ + +#include <config.h> + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main (int argc, char **argv) +{ + char *str; + + str = strerror (EACCES); + ASSERT (str); + ASSERT (*str); + + str = strerror (ETIMEDOUT); + ASSERT (str); + ASSERT (*str); + + str = strerror (EOVERFLOW); + ASSERT (str); + ASSERT (*str); + + str = strerror (0); + ASSERT (str); + ASSERT (*str); + + str = strerror (-3); + ASSERT (str); + ASSERT (*str); + + return 0; +} diff --git a/gltests/test-string.c b/gltests/test-string.c new file mode 100644 index 0000000..68014f5 --- /dev/null +++ b/gltests/test-string.c @@ -0,0 +1,27 @@ +/* Test of <string.h> substitute. + Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +int +main () +{ + return 0; +} diff --git a/gltests/test-unistd.c b/gltests/test-unistd.c new file mode 100644 index 0000000..5fed15c --- /dev/null +++ b/gltests/test-unistd.c @@ -0,0 +1,50 @@ +/* Test of <unistd.h> substitute. + Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <unistd.h> + +/* Check that the various SEEK_* macros are defined. */ +int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; + +/* Check that the various *_FILENO macros are defined. */ +#if ! (defined STDIN_FILENO \ + && (STDIN_FILENO + STDOUT_FILENO + STDERR_FILENO == 3)) +missing or broken *_FILENO macros +#endif + +/* Check that the types are all defined. */ +size_t t1; +ssize_t t2; +#ifdef TODO /* Not implemented in gnulib yet */ +uid_t t3; +gid_t t4; +#endif +off_t t5; +pid_t t6; +#ifdef TODO +useconds_t t7; +intptr_t t8; +#endif + +int +main () +{ + return 0; +} diff --git a/gltests/test-vc-list-files-cvs.sh b/gltests/test-vc-list-files-cvs.sh new file mode 100755 index 0000000..12c9366 --- /dev/null +++ b/gltests/test-vc-list-files-cvs.sh @@ -0,0 +1,62 @@ +#!/bin/sh +# Unit tests for vc-list-files +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. */ + +tmpdir=vc-cvs-$$ +trap 'st=$?; cd '"`pwd`"' && rm -rf $tmpdir; exit $st' 0 +trap '(exit $?); exit $?' 1 2 13 15 + +if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then + compare() { diff -u "$@"; } +elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then + compare() { cmp -s "$@"; } +else + compare() { cmp "$@"; } +fi + +repo=`pwd`/$tmpdir/repo + +fail=0 +for i in with-cvsu without; do + # On the first iteration, test using cvsu, if it's in your path. + # On the second iteration, ensure that cvsu fails, so we'll + # exercise the awk-using code. + if test $i = without; then + printf '%s\n' '#!/bin/sh' 'exit 1' > cvsu + chmod a+x cvsu + PATH=`pwd`:$PATH + export PATH + fi + ok=0 + mkdir $tmpdir && cd $tmpdir && + # without cvs, skip the test + # The double use of 'exit' is needed for the reference to $? inside the trap. + { ( cvs -Q -d "$repo" init ) > /dev/null 2>&1 \ + || { echo "Skipping test: cvs not found in PATH"; (exit 77); exit 77; }; } && + mkdir w && cd w && + mkdir d && + touch d/a b c && + cvs -Q -d "$repo" import -m imp m M M0 && + cvs -Q -d "$repo" co m && cd m && + printf '%s\n' b c d/a > expected && + vc-list-files | sort > actual && + compare expected actual && + ok=1 + test $ok = 0 && fail=1 +done + +(exit $fail); exit $fail diff --git a/gltests/test-vc-list-files-git.sh b/gltests/test-vc-list-files-git.sh new file mode 100755 index 0000000..f1627e7 --- /dev/null +++ b/gltests/test-vc-list-files-git.sh @@ -0,0 +1,48 @@ +#!/bin/sh +# Unit tests for vc-list-files +# Copyright (C) 2008, 2009 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. */ + +if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then + compare() { diff -u "$@"; } +elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then + compare() { cmp -s "$@"; } +else + compare() { cmp "$@"; } +fi + +tmpdir=vc-git-$$ +trap 'st=$?; cd '"`pwd`"' && rm -rf $tmpdir; exit $st' 0 +trap '(exit $?); exit $?' 1 2 13 15 + +fail=1 +mkdir $tmpdir && cd $tmpdir && + # without git, skip the test + # The double use of 'exit' is needed for the reference to $? inside the trap. + { ( git init -q ) > /dev/null 2>&1 \ + || { echo "Skipping test: git not found in PATH"; (exit 77); exit 77; }; } && + mkdir d && + touch d/a b c && + git config user.email "you@example.com" + git config user.name "Your Name" + git add . > /dev/null && + git commit -q -a -m log && + printf '%s\n' b c d/a > expected && + vc-list-files > actual && + compare expected actual && + fail=0 + +(exit $fail); exit $fail diff --git a/gtk-doc.make b/gtk-doc.make new file mode 100644 index 0000000..6646365 --- /dev/null +++ b/gtk-doc.make @@ -0,0 +1,193 @@ +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### + +if GTK_DOC_USE_LIBTOOL +GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = $(LIBTOOL) --mode=execute +else +GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = +endif + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) + +TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) + +EXTRA_DIST = \ + $(content_files) \ + $(HTML_IMAGES) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + +DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ + $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) + +if ENABLE_GTK_DOC +all-local: html-build.stamp +else +all-local: +endif + +docs: html-build.stamp + +$(REPORT_FILES): sgml-build.stamp + +#### scan #### + +scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) + @echo 'gtk-doc: Scanning header files' + @-chmod -R u+w $(srcdir) + @cd $(srcdir) && \ + gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES) + @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ + else \ + cd $(srcdir) ; \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + @touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +#### templates #### + +tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt + @echo 'gtk-doc: Rebuilding template files' + @-chmod -R u+w $(srcdir) + @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) + @touch tmpl-build.stamp + +tmpl.stamp: tmpl-build.stamp + @true + +$(srcdir)/tmpl/*.sgml: + @true + +#### xml #### + +sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) + @echo 'gtk-doc: Building XML' + @-chmod -R u+w $(srcdir) + @cd $(srcdir) && \ + gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS) + @touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +#### html #### + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) + @echo 'gtk-doc: Building HTML' + @-chmod -R u+w $(srcdir) + @rm -rf $(srcdir)/html + @mkdir $(srcdir)/html + @mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$(?)" = "0"; then \ + mkhtml_options=--path="$(srcdir)"; \ + fi; \ + cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) + @echo 'gtk-doc: Fixing cross-references' + @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + @touch html-build.stamp + +############## + +clean-local: + rm -f *~ *.bak + rm -rf .libs + +distclean-local: + cd $(srcdir) && \ + rm -rf xml $(REPORT_FILES) \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + +maintainer-clean-local: clean + cd $(srcdir) && rm -rf xml html + +install-data-local: + @installfiles=`echo $(srcdir)/html/*`; \ + if test "$$installfiles" = '$(srcdir)/html/*'; \ + then echo '-- Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo '-- Installing '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + mv -f $${installdir}/$(DOC_MODULE).devhelp \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi + +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +if ENABLE_GTK_DOC +dist-check-gtkdoc: +else +dist-check-gtkdoc: + @echo "*** gtk-doc must be installed and enabled in order to make dist" + @false +endif + +dist-hook: dist-check-gtkdoc dist-hook-local + mkdir $(distdir)/tmpl + mkdir $(distdir)/xml + mkdir $(distdir)/html + -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl + -cp $(srcdir)/xml/*.xml $(distdir)/xml + cp $(srcdir)/html/* $(distdir)/html + -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ + -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ + cd $(distdir) && rm -f $(DISTCLEANFILES) + $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs diff --git a/java/Makefile b/java/Makefile new file mode 100644 index 0000000..dbec29e --- /dev/null +++ b/java/Makefile @@ -0,0 +1,952 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# java/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +#am__append_1 = install-jar +subdir = java +DIST_COMMON = $(am__dist_libidn_jar_DATA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__dist_libidn_jar_DATA_DIST = libidn-$(VERSION).jar +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libidn_jardir)" +DATA = $(dist_libidn_jar_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/java +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/java +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +SUBDIRS = gnu . misc +INSTALL_TARGETS = $(am__append_1) +#libidn_jardir = $(datadir)/java +#dist_libidn_jar_DATA = libidn-$(VERSION).jar +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_libidn_jarDATA: $(dist_libidn_jar_DATA) + @$(NORMAL_INSTALL) + test -z "$(libidn_jardir)" || $(MKDIR_P) "$(DESTDIR)$(libidn_jardir)" + @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libidn_jardir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(libidn_jardir)" || exit $$?; \ + done + +uninstall-dist_libidn_jarDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libidn_jardir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libidn_jardir)" && rm -f $$files + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libidn_jardir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-local: +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-dist_libidn_jarDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_libidn_jarDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-local ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dist_libidn_jarDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-dist_libidn_jarDATA + + +#libidn-$(VERSION).jar: +# $(JAR) cf $@ gnu/inet/encoding/CombiningClass.class \ +# gnu/inet/encoding/Composition.class \ +# gnu/inet/encoding/DecompositionKeys.class \ +# gnu/inet/encoding/DecompositionMappings.class \ +# gnu/inet/encoding/IDNA.class \ +# gnu/inet/encoding/IDNAException.class \ +# gnu/inet/encoding/NFKC.class \ +# gnu/inet/encoding/Punycode.class \ +# gnu/inet/encoding/PunycodeException.class \ +# gnu/inet/encoding/RFC3454.class \ +# gnu/inet/encoding/Stringprep.class \ +# gnu/inet/encoding/StringprepException.class +#install-jar: +# install -d -m 755 $(DESTDIR)$(libidn_jardir) +# ln -sf libidn-$(VERSION).jar $(DESTDIR)$(libidn_jardir)/libidn.jar + +#clean-local: +# rm -f $(libidn_jar_DATA) + +# Invoked by ../doc/java/Makefile. +#.PHONY: javadoc +#javadoc: +# cd $(srcdir) && $(GJDOC) -d $(top_builddir)/doc/java gnu/inet/encoding/*.java + +install-data-local: $(INSTALL_TARGETS) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/Makefile.am b/java/Makefile.am new file mode 100644 index 0000000..ba455fd --- /dev/null +++ b/java/Makefile.am @@ -0,0 +1,56 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +SUBDIRS = gnu . misc + +INSTALL_TARGETS = + +if JAVA +libidn_jardir = $(datadir)/java +dist_libidn_jar_DATA = libidn-$(VERSION).jar + +libidn-$(VERSION).jar: + $(JAR) cf $@ gnu/inet/encoding/CombiningClass.class \ + gnu/inet/encoding/Composition.class \ + gnu/inet/encoding/DecompositionKeys.class \ + gnu/inet/encoding/DecompositionMappings.class \ + gnu/inet/encoding/IDNA.class \ + gnu/inet/encoding/IDNAException.class \ + gnu/inet/encoding/NFKC.class \ + gnu/inet/encoding/Punycode.class \ + gnu/inet/encoding/PunycodeException.class \ + gnu/inet/encoding/RFC3454.class \ + gnu/inet/encoding/Stringprep.class \ + gnu/inet/encoding/StringprepException.class + +INSTALL_TARGETS += install-jar +install-jar: + install -d -m 755 $(DESTDIR)$(libidn_jardir) + ln -sf libidn-$(VERSION).jar $(DESTDIR)$(libidn_jardir)/libidn.jar + +clean-local: + rm -f $(libidn_jar_DATA) + +# Invoked by ../doc/java/Makefile. +.PHONY: javadoc +javadoc: + cd $(srcdir) && $(GJDOC) -d $(top_builddir)/doc/java gnu/inet/encoding/*.java +endif + +install-data-local: $(INSTALL_TARGETS) diff --git a/java/Makefile.in b/java/Makefile.in new file mode 100644 index 0000000..97e08ca --- /dev/null +++ b/java/Makefile.in @@ -0,0 +1,952 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@JAVA_TRUE@am__append_1 = install-jar +subdir = java +DIST_COMMON = $(am__dist_libidn_jar_DATA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__dist_libidn_jar_DATA_DIST = libidn-$(VERSION).jar +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libidn_jardir)" +DATA = $(dist_libidn_jar_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = gnu . misc +INSTALL_TARGETS = $(am__append_1) +@JAVA_TRUE@libidn_jardir = $(datadir)/java +@JAVA_TRUE@dist_libidn_jar_DATA = libidn-$(VERSION).jar +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_libidn_jarDATA: $(dist_libidn_jar_DATA) + @$(NORMAL_INSTALL) + test -z "$(libidn_jardir)" || $(MKDIR_P) "$(DESTDIR)$(libidn_jardir)" + @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libidn_jardir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(libidn_jardir)" || exit $$?; \ + done + +uninstall-dist_libidn_jarDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libidn_jardir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libidn_jardir)" && rm -f $$files + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libidn_jardir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@JAVA_FALSE@clean-local: +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-dist_libidn_jarDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_libidn_jarDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-local ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-dist_libidn_jarDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-dist_libidn_jarDATA + + +@JAVA_TRUE@libidn-$(VERSION).jar: +@JAVA_TRUE@ $(JAR) cf $@ gnu/inet/encoding/CombiningClass.class \ +@JAVA_TRUE@ gnu/inet/encoding/Composition.class \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionKeys.class \ +@JAVA_TRUE@ gnu/inet/encoding/DecompositionMappings.class \ +@JAVA_TRUE@ gnu/inet/encoding/IDNA.class \ +@JAVA_TRUE@ gnu/inet/encoding/IDNAException.class \ +@JAVA_TRUE@ gnu/inet/encoding/NFKC.class \ +@JAVA_TRUE@ gnu/inet/encoding/Punycode.class \ +@JAVA_TRUE@ gnu/inet/encoding/PunycodeException.class \ +@JAVA_TRUE@ gnu/inet/encoding/RFC3454.class \ +@JAVA_TRUE@ gnu/inet/encoding/Stringprep.class \ +@JAVA_TRUE@ gnu/inet/encoding/StringprepException.class +@JAVA_TRUE@install-jar: +@JAVA_TRUE@ install -d -m 755 $(DESTDIR)$(libidn_jardir) +@JAVA_TRUE@ ln -sf libidn-$(VERSION).jar $(DESTDIR)$(libidn_jardir)/libidn.jar + +@JAVA_TRUE@clean-local: +@JAVA_TRUE@ rm -f $(libidn_jar_DATA) + +# Invoked by ../doc/java/Makefile. +@JAVA_TRUE@.PHONY: javadoc +@JAVA_TRUE@javadoc: +@JAVA_TRUE@ cd $(srcdir) && $(GJDOC) -d $(top_builddir)/doc/java gnu/inet/encoding/*.java + +install-data-local: $(INSTALL_TARGETS) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/Makefile b/java/gnu/Makefile new file mode 100644 index 0000000..625f9df --- /dev/null +++ b/java/gnu/Makefile @@ -0,0 +1,852 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# java/gnu/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = java/gnu +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +SUBDIRS = inet +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/Makefile.am b/java/gnu/Makefile.am new file mode 100644 index 0000000..021f2b8 --- /dev/null +++ b/java/gnu/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = inet diff --git a/java/gnu/Makefile.in b/java/gnu/Makefile.in new file mode 100644 index 0000000..1e11b40 --- /dev/null +++ b/java/gnu/Makefile.in @@ -0,0 +1,852 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = java/gnu +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = inet +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/inet/Makefile b/java/gnu/inet/Makefile new file mode 100644 index 0000000..cd5c86a --- /dev/null +++ b/java/gnu/inet/Makefile @@ -0,0 +1,852 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# java/gnu/inet/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = java/gnu/inet +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu/inet +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu/inet +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../../ +top_builddir = ../../.. +top_srcdir = ../../.. +SUBDIRS = encoding +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/inet/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/inet/Makefile.am b/java/gnu/inet/Makefile.am new file mode 100644 index 0000000..9807577 --- /dev/null +++ b/java/gnu/inet/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = encoding diff --git a/java/gnu/inet/Makefile.in b/java/gnu/inet/Makefile.in new file mode 100644 index 0000000..e2c4cbf --- /dev/null +++ b/java/gnu/inet/Makefile.in @@ -0,0 +1,852 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = java/gnu/inet +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = encoding +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/inet/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/inet/encoding/CombiningClass.java b/java/gnu/inet/encoding/CombiningClass.java new file mode 100644 index 0000000..b0d1055 --- /dev/null +++ b/java/gnu/inet/encoding/CombiningClass.java @@ -0,0 +1,462 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit GenerateNFKC.java and re-run. */ + +package gnu.inet.encoding; + +/** + * Auto-generated class containing Unicode NFKC tables. + */ +public class CombiningClass +{ + public final static int[][] c = new int[][] { + { /* Page 3 */ + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, + 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, + 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 4 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 5 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, + 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, + 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, + 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 7 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, + 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 9 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 11 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 12 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 13 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 14 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, + 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 16 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 23 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 24 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 32 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, + 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 48 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 251 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { /* Page 254 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }; + + public final static int[] i = new int[] { + -1, + -1, + -1, + 0, + 1, + 2, + 3, + 4, + -1, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + -1, + -1, + -1, + -1, + -1, + -1, + 13, + 14, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 16, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 17, + -1, + -1, + 18, + -1, + }; +} diff --git a/java/gnu/inet/encoding/Composition.java b/java/gnu/inet/encoding/Composition.java new file mode 100644 index 0000000..93528eb --- /dev/null +++ b/java/gnu/inet/encoding/Composition.java @@ -0,0 +1,728 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit GenerateNFKC.java and re-run. */ + +package gnu.inet.encoding; + +/** + * Auto-generated class containing Unicode NFKC tables. + */ +public class Composition +{ + public final static char[][] multiFirst = new char[][] { + { '\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u0100', '\u0102', '\u0226', '\u00C4', '\u1EA2', '\u00C5', '\u01CD', '\u0200', '\u0202', '\u1EA0', '\u1E00', '\u0104', }, + { 0, 0, 0, 0, 0, 0, '\u1E02', 0, 0, 0, 0, 0, 0, '\u1E04', 0, 0, '\u1E06', }, + { 0, '\u0106', '\u0108', 0, 0, 0, '\u010A', 0, 0, 0, '\u010C', 0, 0, 0, 0, 0, 0, '\u00C7', }, + { 0, 0, 0, 0, 0, 0, '\u1E0A', 0, 0, 0, '\u010E', 0, 0, '\u1E0C', 0, 0, '\u1E0E', '\u1E10', '\u1E12', }, + { '\u00C8', '\u00C9', '\u00CA', '\u1EBC', '\u0112', '\u0114', '\u0116', '\u00CB', '\u1EBA', 0, '\u011A', '\u0204', '\u0206', '\u1EB8', 0, '\u0118', 0, '\u0228', '\u1E18', '\u1E1A', }, + { 0, '\u01F4', '\u011C', 0, '\u1E20', '\u011E', '\u0120', 0, 0, 0, '\u01E6', 0, 0, 0, 0, 0, 0, '\u0122', }, + { 0, 0, '\u0124', 0, 0, 0, '\u1E22', '\u1E26', 0, 0, '\u021E', 0, 0, '\u1E24', 0, 0, 0, '\u1E28', 0, 0, '\u1E2A', }, + { '\u00CC', '\u00CD', '\u00CE', '\u0128', '\u012A', '\u012C', '\u0130', '\u00CF', '\u1EC8', 0, '\u01CF', '\u0208', '\u020A', '\u1ECA', 0, '\u012E', 0, 0, 0, '\u1E2C', }, + { 0, '\u1E30', 0, 0, 0, 0, 0, 0, 0, 0, '\u01E8', 0, 0, '\u1E32', 0, 0, '\u1E34', '\u0136', }, + { 0, '\u0139', 0, 0, 0, 0, 0, 0, 0, 0, '\u013D', 0, 0, '\u1E36', 0, 0, '\u1E3A', '\u013B', '\u1E3C', }, + { 0, '\u1E3E', 0, 0, 0, 0, '\u1E40', 0, 0, 0, 0, 0, 0, '\u1E42', }, + { '\u01F8', '\u0143', 0, '\u00D1', 0, 0, '\u1E44', 0, 0, 0, '\u0147', 0, 0, '\u1E46', 0, 0, '\u1E48', '\u0145', '\u1E4A', }, + { '\u00D2', '\u00D3', '\u00D4', '\u00D5', '\u014C', '\u014E', '\u022E', '\u00D6', '\u1ECE', 0, '\u01D1', '\u020C', '\u020E', '\u1ECC', 0, '\u01EA', 0, 0, 0, 0, 0, '\u0150', '\u01A0', }, + { 0, '\u1E54', 0, 0, 0, 0, '\u1E56', }, + { 0, '\u0154', 0, 0, 0, 0, '\u1E58', 0, 0, 0, '\u0158', '\u0210', '\u0212', '\u1E5A', 0, 0, '\u1E5E', '\u0156', }, + { 0, '\u015A', '\u015C', 0, 0, 0, '\u1E60', 0, 0, 0, '\u0160', 0, 0, '\u1E62', 0, 0, 0, '\u015E', 0, 0, 0, 0, 0, '\u0218', }, + { 0, 0, 0, 0, 0, 0, '\u1E6A', 0, 0, 0, '\u0164', 0, 0, '\u1E6C', 0, 0, '\u1E6E', '\u0162', '\u1E70', 0, 0, 0, 0, '\u021A', }, + { '\u00D9', '\u00DA', '\u00DB', '\u0168', '\u016A', '\u016C', 0, '\u00DC', '\u1EE6', '\u016E', '\u01D3', '\u0214', '\u0216', '\u1EE4', 0, '\u0172', 0, 0, '\u1E76', '\u1E74', 0, '\u0170', '\u01AF', 0, '\u1E72', }, + { 0, 0, 0, '\u1E7C', 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1E7E', }, + { '\u1E80', '\u1E82', '\u0174', 0, 0, 0, '\u1E86', '\u1E84', 0, 0, 0, 0, 0, '\u1E88', }, + { 0, 0, 0, 0, 0, 0, '\u1E8A', '\u1E8C', }, + { '\u1EF2', '\u00DD', '\u0176', '\u1EF8', '\u0232', 0, '\u1E8E', '\u0178', '\u1EF6', 0, 0, 0, 0, '\u1EF4', }, + { 0, '\u0179', '\u1E90', 0, 0, 0, '\u017B', 0, 0, 0, '\u017D', 0, 0, '\u1E92', 0, 0, '\u1E94', }, + { '\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u0101', '\u0103', '\u0227', '\u00E4', '\u1EA3', '\u00E5', '\u01CE', '\u0201', '\u0203', '\u1EA1', '\u1E01', '\u0105', }, + { 0, 0, 0, 0, 0, 0, '\u1E03', 0, 0, 0, 0, 0, 0, '\u1E05', 0, 0, '\u1E07', }, + { 0, '\u0107', '\u0109', 0, 0, 0, '\u010B', 0, 0, 0, '\u010D', 0, 0, 0, 0, 0, 0, '\u00E7', }, + { 0, 0, 0, 0, 0, 0, '\u1E0B', 0, 0, 0, '\u010F', 0, 0, '\u1E0D', 0, 0, '\u1E0F', '\u1E11', '\u1E13', }, + { '\u00E8', '\u00E9', '\u00EA', '\u1EBD', '\u0113', '\u0115', '\u0117', '\u00EB', '\u1EBB', 0, '\u011B', '\u0205', '\u0207', '\u1EB9', 0, '\u0119', 0, '\u0229', '\u1E19', '\u1E1B', }, + { 0, '\u01F5', '\u011D', 0, '\u1E21', '\u011F', '\u0121', 0, 0, 0, '\u01E7', 0, 0, 0, 0, 0, 0, '\u0123', }, + { 0, 0, '\u0125', 0, 0, 0, '\u1E23', '\u1E27', 0, 0, '\u021F', 0, 0, '\u1E25', 0, 0, '\u1E96', '\u1E29', 0, 0, '\u1E2B', }, + { '\u00EC', '\u00ED', '\u00EE', '\u0129', '\u012B', '\u012D', 0, '\u00EF', '\u1EC9', 0, '\u01D0', '\u0209', '\u020B', '\u1ECB', 0, '\u012F', 0, 0, 0, '\u1E2D', }, + { 0, 0, '\u0135', 0, 0, 0, 0, 0, 0, 0, '\u01F0', }, + { 0, '\u1E31', 0, 0, 0, 0, 0, 0, 0, 0, '\u01E9', 0, 0, '\u1E33', 0, 0, '\u1E35', '\u0137', }, + { 0, '\u013A', 0, 0, 0, 0, 0, 0, 0, 0, '\u013E', 0, 0, '\u1E37', 0, 0, '\u1E3B', '\u013C', '\u1E3D', }, + { 0, '\u1E3F', 0, 0, 0, 0, '\u1E41', 0, 0, 0, 0, 0, 0, '\u1E43', }, + { '\u01F9', '\u0144', 0, '\u00F1', 0, 0, '\u1E45', 0, 0, 0, '\u0148', 0, 0, '\u1E47', 0, 0, '\u1E49', '\u0146', '\u1E4B', }, + { '\u00F2', '\u00F3', '\u00F4', '\u00F5', '\u014D', '\u014F', '\u022F', '\u00F6', '\u1ECF', 0, '\u01D2', '\u020D', '\u020F', '\u1ECD', 0, '\u01EB', 0, 0, 0, 0, 0, '\u0151', '\u01A1', }, + { 0, '\u1E55', 0, 0, 0, 0, '\u1E57', }, + { 0, '\u0155', 0, 0, 0, 0, '\u1E59', 0, 0, 0, '\u0159', '\u0211', '\u0213', '\u1E5B', 0, 0, '\u1E5F', '\u0157', }, + { 0, '\u015B', '\u015D', 0, 0, 0, '\u1E61', 0, 0, 0, '\u0161', 0, 0, '\u1E63', 0, 0, 0, '\u015F', 0, 0, 0, 0, 0, '\u0219', }, + { 0, 0, 0, 0, 0, 0, '\u1E6B', '\u1E97', 0, 0, '\u0165', 0, 0, '\u1E6D', 0, 0, '\u1E6F', '\u0163', '\u1E71', 0, 0, 0, 0, '\u021B', }, + { '\u00F9', '\u00FA', '\u00FB', '\u0169', '\u016B', '\u016D', 0, '\u00FC', '\u1EE7', '\u016F', '\u01D4', '\u0215', '\u0217', '\u1EE5', 0, '\u0173', 0, 0, '\u1E77', '\u1E75', 0, '\u0171', '\u01B0', 0, '\u1E73', }, + { 0, 0, 0, '\u1E7D', 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1E7F', }, + { '\u1E81', '\u1E83', '\u0175', 0, 0, 0, '\u1E87', '\u1E85', 0, '\u1E98', 0, 0, 0, '\u1E89', }, + { 0, 0, 0, 0, 0, 0, '\u1E8B', '\u1E8D', }, + { '\u1EF3', '\u00FD', '\u0177', '\u1EF9', '\u0233', 0, '\u1E8F', '\u00FF', '\u1EF7', '\u1E99', 0, 0, 0, '\u1EF5', }, + { 0, '\u017A', '\u1E91', 0, 0, 0, '\u017C', 0, 0, 0, '\u017E', 0, 0, '\u1E93', 0, 0, '\u1E95', }, + { '\u1FED', '\u0385', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FC1', }, + { '\u1EA6', '\u1EA4', 0, '\u1EAA', 0, 0, 0, 0, '\u1EA8', }, + { 0, '\u01FC', 0, 0, '\u01E2', }, + { '\u1EC0', '\u1EBE', 0, '\u1EC4', 0, 0, 0, 0, '\u1EC2', }, + { '\u1ED2', '\u1ED0', 0, '\u1ED6', 0, 0, 0, 0, '\u1ED4', }, + { 0, '\u1E4C', 0, 0, '\u022C', 0, 0, '\u1E4E', }, + { '\u01DB', '\u01D7', 0, 0, '\u01D5', 0, 0, 0, 0, 0, '\u01D9', }, + { '\u1EA7', '\u1EA5', 0, '\u1EAB', 0, 0, 0, 0, '\u1EA9', }, + { 0, '\u01FD', 0, 0, '\u01E3', }, + { '\u1EC1', '\u1EBF', 0, '\u1EC5', 0, 0, 0, 0, '\u1EC3', }, + { '\u1ED3', '\u1ED1', 0, '\u1ED7', 0, 0, 0, 0, '\u1ED5', }, + { 0, '\u1E4D', 0, 0, '\u022D', 0, 0, '\u1E4F', }, + { '\u01DC', '\u01D8', 0, 0, '\u01D6', 0, 0, 0, 0, 0, '\u01DA', }, + { '\u1EB0', '\u1EAE', 0, '\u1EB4', 0, 0, 0, 0, '\u1EB2', }, + { '\u1EB1', '\u1EAF', 0, '\u1EB5', 0, 0, 0, 0, '\u1EB3', }, + { '\u1E14', '\u1E16', }, + { '\u1E15', '\u1E17', }, + { '\u1E50', '\u1E52', }, + { '\u1E51', '\u1E53', }, + { '\u1EDC', '\u1EDA', 0, '\u1EE0', 0, 0, 0, 0, '\u1EDE', 0, 0, 0, 0, '\u1EE2', }, + { '\u1EDD', '\u1EDB', 0, '\u1EE1', 0, 0, 0, 0, '\u1EDF', 0, 0, 0, 0, '\u1EE3', }, + { '\u1EEA', '\u1EE8', 0, '\u1EEE', 0, 0, 0, 0, '\u1EEC', 0, 0, 0, 0, '\u1EF0', }, + { '\u1EEB', '\u1EE9', 0, '\u1EEF', 0, 0, 0, 0, '\u1EED', 0, 0, 0, 0, '\u1EF1', }, + { '\u1FBA', '\u0386', 0, 0, '\u1FB9', '\u1FB8', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F08', '\u1F09', '\u1FBC', }, + { '\u1FC8', '\u0388', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F18', '\u1F19', }, + { '\u1FCA', '\u0389', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F28', '\u1F29', '\u1FCC', }, + { '\u1FDA', '\u038A', 0, 0, '\u1FD9', '\u1FD8', 0, '\u03AA', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F38', '\u1F39', }, + { '\u1FF8', '\u038C', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F48', '\u1F49', }, + { '\u1FEA', '\u038E', 0, 0, '\u1FE9', '\u1FE8', 0, '\u03AB', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F59', }, + { '\u1FFA', '\u038F', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F68', '\u1F69', '\u1FFC', }, + { '\u1F70', '\u03AC', 0, 0, '\u1FB1', '\u1FB0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FB6', '\u1F00', '\u1F01', '\u1FB3', }, + { '\u1F72', '\u03AD', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F10', '\u1F11', }, + { '\u1F74', '\u03AE', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FC6', '\u1F20', '\u1F21', '\u1FC3', }, + { '\u1F76', '\u03AF', 0, 0, '\u1FD1', '\u1FD0', 0, '\u03CA', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FD6', '\u1F30', '\u1F31', }, + { '\u1F78', '\u03CC', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F40', '\u1F41', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FE4', '\u1FE5', }, + { '\u1F7A', '\u03CD', 0, 0, '\u1FE1', '\u1FE0', 0, '\u03CB', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FE6', '\u1F50', '\u1F51', }, + { '\u1F7C', '\u03CE', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FF6', '\u1F60', '\u1F61', '\u1FF3', }, + { '\u1FD2', '\u0390', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FD7', }, + { '\u1FE2', '\u03B0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FE7', }, + { 0, '\u03D3', 0, 0, 0, 0, 0, '\u03D4', }, + { 0, 0, 0, 0, 0, '\u04D0', 0, '\u04D2', }, + { '\u0400', 0, 0, 0, 0, '\u04D6', 0, '\u0401', }, + { 0, 0, 0, 0, 0, '\u04C1', 0, '\u04DC', }, + { '\u040D', 0, 0, 0, '\u04E2', '\u0419', 0, '\u04E4', }, + { 0, 0, 0, 0, '\u04EE', '\u040E', 0, '\u04F0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u04F2', }, + { 0, 0, 0, 0, 0, '\u04D1', 0, '\u04D3', }, + { '\u0450', 0, 0, 0, 0, '\u04D7', 0, '\u0451', }, + { 0, 0, 0, 0, 0, '\u04C2', 0, '\u04DD', }, + { '\u045D', 0, 0, 0, '\u04E3', '\u0439', 0, '\u04E5', }, + { 0, 0, 0, 0, '\u04EF', '\u045E', 0, '\u04F1', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u04F3', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u0623', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u0BCA', '\u0BCC', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u0CC7', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u0D4A', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u0DDA', }, + { 0, 0, '\u1EAC', 0, 0, '\u1EB6', }, + { 0, 0, '\u1EAD', 0, 0, '\u1EB7', }, + { '\u1F02', '\u1F04', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F06', 0, 0, '\u1F80', }, + { '\u1F03', '\u1F05', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F07', 0, 0, '\u1F81', }, + { '\u1F0A', '\u1F0C', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F0E', 0, 0, '\u1F88', }, + { '\u1F0B', '\u1F0D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F0F', 0, 0, '\u1F89', }, + { '\u1F12', '\u1F14', }, + { '\u1F13', '\u1F15', }, + { '\u1F1A', '\u1F1C', }, + { '\u1F1B', '\u1F1D', }, + { '\u1F22', '\u1F24', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F26', 0, 0, '\u1F90', }, + { '\u1F23', '\u1F25', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F27', 0, 0, '\u1F91', }, + { '\u1F2A', '\u1F2C', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F2E', 0, 0, '\u1F98', }, + { '\u1F2B', '\u1F2D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F2F', 0, 0, '\u1F99', }, + { '\u1F32', '\u1F34', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F36', }, + { '\u1F33', '\u1F35', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F37', }, + { '\u1F3A', '\u1F3C', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F3E', }, + { '\u1F3B', '\u1F3D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F3F', }, + { '\u1F42', '\u1F44', }, + { '\u1F43', '\u1F45', }, + { '\u1F4A', '\u1F4C', }, + { '\u1F4B', '\u1F4D', }, + { '\u1F52', '\u1F54', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F56', }, + { '\u1F53', '\u1F55', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F57', }, + { '\u1F5B', '\u1F5D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F5F', }, + { '\u1F62', '\u1F64', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F66', 0, 0, '\u1FA0', }, + { '\u1F63', '\u1F65', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F67', 0, 0, '\u1FA1', }, + { '\u1F6A', '\u1F6C', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F6E', 0, 0, '\u1FA8', }, + { '\u1F6B', '\u1F6D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1F6F', 0, 0, '\u1FA9', }, + { '\u1FCD', '\u1FCE', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FCF', }, + { '\u1FDD', '\u1FDE', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u1FDF', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u3070', '\u3071', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u3073', '\u3074', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u3076', '\u3077', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u3079', '\u307A', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u307C', '\u307D', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u30D0', '\u30D1', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u30D3', '\u30D4', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u30D6', '\u30D7', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u30D9', '\u30DA', }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\u30DC', '\u30DD', }, + }; + public final static char[][] singleFirst = new char[][] { + { '\u0338', '\u226E' }, + { '\u0338', '\u2260' }, + { '\u0338', '\u226F' }, + { '\u0307', '\u1E1E' }, + { '\u0302', '\u0134' }, + { '\u0307', '\u1E1F' }, + { '\u0304', '\u01DE' }, + { '\u0301', '\u01FA' }, + { '\u0301', '\u1E08' }, + { '\u0301', '\u1E2E' }, + { '\u0304', '\u022A' }, + { '\u0301', '\u01FE' }, + { '\u0304', '\u01DF' }, + { '\u0301', '\u01FB' }, + { '\u0301', '\u1E09' }, + { '\u0301', '\u1E2F' }, + { '\u0304', '\u022B' }, + { '\u0301', '\u01FF' }, + { '\u0307', '\u1E64' }, + { '\u0307', '\u1E65' }, + { '\u0307', '\u1E66' }, + { '\u0307', '\u1E67' }, + { '\u0301', '\u1E78' }, + { '\u0301', '\u1E79' }, + { '\u0308', '\u1E7A' }, + { '\u0308', '\u1E7B' }, + { '\u0307', '\u1E9B' }, + { '\u030C', '\u01EE' }, + { '\u0304', '\u01EC' }, + { '\u0304', '\u01ED' }, + { '\u0304', '\u01E0' }, + { '\u0304', '\u01E1' }, + { '\u0306', '\u1E1C' }, + { '\u0306', '\u1E1D' }, + { '\u0304', '\u0230' }, + { '\u0304', '\u0231' }, + { '\u030C', '\u01EF' }, + { '\u0314', '\u1FEC' }, + { '\u0345', '\u1FB4' }, + { '\u0345', '\u1FC4' }, + { '\u0345', '\u1FF4' }, + { '\u0308', '\u0407' }, + { '\u0301', '\u0403' }, + { '\u0308', '\u04DE' }, + { '\u0301', '\u040C' }, + { '\u0308', '\u04E6' }, + { '\u0308', '\u04F4' }, + { '\u0308', '\u04F8' }, + { '\u0308', '\u04EC' }, + { '\u0301', '\u0453' }, + { '\u0308', '\u04DF' }, + { '\u0301', '\u045C' }, + { '\u0308', '\u04E7' }, + { '\u0308', '\u04F5' }, + { '\u0308', '\u04F9' }, + { '\u0308', '\u04ED' }, + { '\u0308', '\u0457' }, + { '\u030F', '\u0476' }, + { '\u030F', '\u0477' }, + { '\u0308', '\u04DA' }, + { '\u0308', '\u04DB' }, + { '\u0308', '\u04EA' }, + { '\u0308', '\u04EB' }, + { '\u0654', '\u0624' }, + { '\u0654', '\u0626' }, + { '\u0654', '\u06C2' }, + { '\u0654', '\u06D3' }, + { '\u0654', '\u06C0' }, + { '\u093C', '\u0929' }, + { '\u093C', '\u0931' }, + { '\u093C', '\u0934' }, + { '\u0BD7', '\u0B94' }, + { '\u0BBE', '\u0BCB' }, + { '\u0C56', '\u0C48' }, + { '\u0CD5', '\u0CC0' }, + { '\u0CD5', '\u0CCB' }, + { '\u0D3E', '\u0D4B' }, + { '\u0DCA', '\u0DDD' }, + { '\u102E', '\u1026' }, + { '\u0304', '\u1E38' }, + { '\u0304', '\u1E39' }, + { '\u0304', '\u1E5C' }, + { '\u0304', '\u1E5D' }, + { '\u0307', '\u1E68' }, + { '\u0307', '\u1E69' }, + { '\u0302', '\u1EC6' }, + { '\u0302', '\u1EC7' }, + { '\u0302', '\u1ED8' }, + { '\u0302', '\u1ED9' }, + { '\u0345', '\u1F82' }, + { '\u0345', '\u1F83' }, + { '\u0345', '\u1F84' }, + { '\u0345', '\u1F85' }, + { '\u0345', '\u1F86' }, + { '\u0345', '\u1F87' }, + { '\u0345', '\u1F8A' }, + { '\u0345', '\u1F8B' }, + { '\u0345', '\u1F8C' }, + { '\u0345', '\u1F8D' }, + { '\u0345', '\u1F8E' }, + { '\u0345', '\u1F8F' }, + { '\u0345', '\u1F92' }, + { '\u0345', '\u1F93' }, + { '\u0345', '\u1F94' }, + { '\u0345', '\u1F95' }, + { '\u0345', '\u1F96' }, + { '\u0345', '\u1F97' }, + { '\u0345', '\u1F9A' }, + { '\u0345', '\u1F9B' }, + { '\u0345', '\u1F9C' }, + { '\u0345', '\u1F9D' }, + { '\u0345', '\u1F9E' }, + { '\u0345', '\u1F9F' }, + { '\u0345', '\u1FA2' }, + { '\u0345', '\u1FA3' }, + { '\u0345', '\u1FA4' }, + { '\u0345', '\u1FA5' }, + { '\u0345', '\u1FA6' }, + { '\u0345', '\u1FA7' }, + { '\u0345', '\u1FAA' }, + { '\u0345', '\u1FAB' }, + { '\u0345', '\u1FAC' }, + { '\u0345', '\u1FAD' }, + { '\u0345', '\u1FAE' }, + { '\u0345', '\u1FAF' }, + { '\u0345', '\u1FB2' }, + { '\u0345', '\u1FC2' }, + { '\u0345', '\u1FF2' }, + { '\u0345', '\u1FB7' }, + { '\u0345', '\u1FC7' }, + { '\u0345', '\u1FF7' }, + { '\u0338', '\u219A' }, + { '\u0338', '\u219B' }, + { '\u0338', '\u21AE' }, + { '\u0338', '\u21CD' }, + { '\u0338', '\u21CF' }, + { '\u0338', '\u21CE' }, + { '\u0338', '\u2204' }, + { '\u0338', '\u2209' }, + { '\u0338', '\u220C' }, + { '\u0338', '\u2224' }, + { '\u0338', '\u2226' }, + { '\u0338', '\u2241' }, + { '\u0338', '\u2244' }, + { '\u0338', '\u2247' }, + { '\u0338', '\u2249' }, + { '\u0338', '\u226D' }, + { '\u0338', '\u2262' }, + { '\u0338', '\u2270' }, + { '\u0338', '\u2271' }, + { '\u0338', '\u2274' }, + { '\u0338', '\u2275' }, + { '\u0338', '\u2278' }, + { '\u0338', '\u2279' }, + { '\u0338', '\u2280' }, + { '\u0338', '\u2281' }, + { '\u0338', '\u22E0' }, + { '\u0338', '\u22E1' }, + { '\u0338', '\u2284' }, + { '\u0338', '\u2285' }, + { '\u0338', '\u2288' }, + { '\u0338', '\u2289' }, + { '\u0338', '\u22E2' }, + { '\u0338', '\u22E3' }, + { '\u0338', '\u22AC' }, + { '\u0338', '\u22AD' }, + { '\u0338', '\u22AE' }, + { '\u0338', '\u22AF' }, + { '\u0338', '\u22EA' }, + { '\u0338', '\u22EB' }, + { '\u0338', '\u22EC' }, + { '\u0338', '\u22ED' }, + { '\u3099', '\u3094' }, + { '\u3099', '\u304C' }, + { '\u3099', '\u304E' }, + { '\u3099', '\u3050' }, + { '\u3099', '\u3052' }, + { '\u3099', '\u3054' }, + { '\u3099', '\u3056' }, + { '\u3099', '\u3058' }, + { '\u3099', '\u305A' }, + { '\u3099', '\u305C' }, + { '\u3099', '\u305E' }, + { '\u3099', '\u3060' }, + { '\u3099', '\u3062' }, + { '\u3099', '\u3065' }, + { '\u3099', '\u3067' }, + { '\u3099', '\u3069' }, + { '\u3099', '\u309E' }, + { '\u3099', '\u30F4' }, + { '\u3099', '\u30AC' }, + { '\u3099', '\u30AE' }, + { '\u3099', '\u30B0' }, + { '\u3099', '\u30B2' }, + { '\u3099', '\u30B4' }, + { '\u3099', '\u30B6' }, + { '\u3099', '\u30B8' }, + { '\u3099', '\u30BA' }, + { '\u3099', '\u30BC' }, + { '\u3099', '\u30BE' }, + { '\u3099', '\u30C0' }, + { '\u3099', '\u30C2' }, + { '\u3099', '\u30C5' }, + { '\u3099', '\u30C7' }, + { '\u3099', '\u30C9' }, + { '\u3099', '\u30F7' }, + { '\u3099', '\u30F8' }, + { '\u3099', '\u30F9' }, + { '\u3099', '\u30FA' }, + { '\u3099', '\u30FE' }, + }; + public final static char[][] singleSecond = new char[][] { + { '\u0627', '\u0622' }, + { '\u0627', '\u0625' }, + { '\u09C7', '\u09CB' }, + { '\u09C7', '\u09CC' }, + { '\u0B47', '\u0B4B' }, + { '\u0B47', '\u0B48' }, + { '\u0B47', '\u0B4C' }, + { '\u0CC6', '\u0CCA' }, + { '\u0CC6', '\u0CC8' }, + { '\u0D46', '\u0D4C' }, + { '\u0DD9', '\u0DDC' }, + { '\u0DD9', '\u0DDE' }, + }; + public final static int multiSecondStart = 144; + public final static int singleFirstStart = 181; + public final static int singleSecondStart = 391; + public final static int[] composePage = new int[] { + 0, + 1, + 2, + 3, + 4, + -1, + 5, + -1, + -1, + 6, + -1, + 7, + 8, + 9, + -1, + -1, + 10, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 11, + 12, + -1, + 13, + 14, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 15, + -1, + }; + public final static int[][] composeData = new int[][] { + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, 182, 183, -1, + -1, 0, 1, 2, 3, 4, 184, 5, 6, 7, 185, 8, 9, 10, 11, 12, + 13, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 186, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 48, -1, 187, 188, 49, 189, -1, -1, 50, -1, -1, -1, -1, 190, + -1, -1, -1, -1, 51, 52, 191, -1, 192, -1, -1, -1, 53, -1, -1, -1, + -1, -1, 54, -1, 193, 194, 55, 195, -1, -1, 56, -1, -1, -1, -1, 196, + -1, -1, -1, -1, 57, 58, 197, -1, 198, -1, -1, -1, 59, -1, -1, -1, + }, + { + -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, 200, -1, -1, -1, -1, + 201, 202, -1, -1, -1, -1, -1, -1, 203, 204, 205, 206, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, + 69, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, -1, -1, -1, -1, 215, 216, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + 144, 145, 146, 147, 148, -1, 149, 150, 151, 152, 153, 165, 154, -1, -1, 155, + -1, 156, -1, 170, 171, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, + -1, -1, -1, 157, 168, 158, 167, 161, 159, -1, -1, -1, -1, 162, 164, -1, + 163, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 169, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 70, -1, -1, -1, 71, -1, 72, -1, 73, -1, -1, -1, -1, -1, 74, + -1, 218, -1, -1, -1, 75, -1, -1, -1, 76, -1, -1, 219, -1, 220, -1, + -1, 77, -1, -1, -1, 78, -1, 79, -1, 80, -1, -1, -1, -1, -1, 81, + -1, 82, -1, -1, -1, 83, -1, -1, -1, 84, 85, 86, -1, -1, 221, -1, + -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 88, -1, -1, 223, -1, 89, 90, 224, 91, -1, 225, -1, -1, -1, 226, -1, + -1, -1, -1, 92, -1, -1, -1, 227, -1, -1, -1, 228, -1, 229, -1, -1, + 93, -1, -1, 230, -1, 94, 95, 231, 96, -1, 232, -1, -1, -1, 233, -1, + -1, -1, -1, 97, -1, -1, -1, 234, -1, -1, -1, 235, -1, 236, -1, -1, + -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 245, -1, -1, -1, -1, -1, + -1, -1, -1, 391, 173, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 247, -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, + 250, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, + -1, -1, -1, -1, -1, -1, 99, 253, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, 398, -1, -1, -1, 100, -1, -1, -1, 256, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 176, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, + -1, -1, -1, -1, -1, -1, 101, 257, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, 401, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, -1, -1, 258, -1, -1, 402, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, -1, -1, -1, -1, + -1, -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + 105, 106, 270, 271, 272, 273, 274, 275, 107, 108, 276, 277, 278, 279, 280, 281, + 109, 110, -1, -1, -1, -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, + 113, 114, 282, 283, 284, 285, 286, 287, 115, 116, 288, 289, 290, 291, 292, 293, + 117, 118, -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, -1, -1, + 121, 122, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, + 125, 126, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, + 128, 129, 294, 295, 296, 297, 298, 299, 130, 131, 300, 301, 302, 303, 304, 305, + 306, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, 132, + -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, 133, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 312, -1, 313, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 315, -1, 316, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, 318, -1, -1, -1, -1, 319, -1, -1, 320, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 321, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, + -1, -1, -1, 324, -1, 325, -1, -1, 326, -1, -1, -1, -1, 327, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 328, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, 332, -1, -1, 333, 334, -1, -1, 335, 336, 337, 338, -1, -1, + -1, -1, 339, 340, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 345, -1, -1, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, + -1, -1, 349, 350, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }, + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, 354, -1, 355, -1, 356, + -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, + -1, 365, -1, -1, 366, -1, 367, -1, 368, -1, -1, -1, -1, -1, -1, 134, + -1, -1, 135, -1, -1, 136, -1, -1, 137, -1, -1, 138, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, -1, 369, -1, -1, + -1, -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, 371, -1, 372, -1, 373, + -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, 380, -1, 381, + -1, 382, -1, -1, 383, -1, 384, -1, 385, -1, -1, -1, -1, -1, -1, 139, + -1, -1, 140, -1, -1, 141, -1, -1, 142, -1, -1, 143, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, + 387, 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, + }, + }; +} diff --git a/java/gnu/inet/encoding/DecompositionKeys.java b/java/gnu/inet/encoding/DecompositionKeys.java new file mode 100644 index 0000000..dabff6d --- /dev/null +++ b/java/gnu/inet/encoding/DecompositionKeys.java @@ -0,0 +1,3610 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit GenerateNFKC.java and re-run. */ + +package gnu.inet.encoding; + +/** + * Auto-generated class containing Unicode NFKC tables. + */ +public class DecompositionKeys +{ + public final static int[] k = new int[] { + '\u00A0', 0, + '\u00A8', 1, + '\u00AA', 2, + '\u00AF', 3, + '\u00B2', 4, + '\u00B3', 5, + '\u00B4', 6, + '\u00B5', 7, + '\u00B8', 8, + '\u00B9', 9, + '\u00BA', 10, + '\u00BC', 11, + '\u00BD', 12, + '\u00BE', 13, + '\u00C0', 14, + '\u00C1', 15, + '\u00C2', 16, + '\u00C3', 17, + '\u00C4', 18, + '\u00C5', 19, + '\u00C7', 20, + '\u00C8', 21, + '\u00C9', 22, + '\u00CA', 23, + '\u00CB', 24, + '\u00CC', 25, + '\u00CD', 26, + '\u00CE', 27, + '\u00CF', 28, + '\u00D1', 29, + '\u00D2', 30, + '\u00D3', 31, + '\u00D4', 32, + '\u00D5', 33, + '\u00D6', 34, + '\u00D9', 35, + '\u00DA', 36, + '\u00DB', 37, + '\u00DC', 38, + '\u00DD', 39, + '\u00E0', 40, + '\u00E1', 41, + '\u00E2', 42, + '\u00E3', 43, + '\u00E4', 44, + '\u00E5', 45, + '\u00E7', 46, + '\u00E8', 47, + '\u00E9', 48, + '\u00EA', 49, + '\u00EB', 50, + '\u00EC', 51, + '\u00ED', 52, + '\u00EE', 53, + '\u00EF', 54, + '\u00F1', 55, + '\u00F2', 56, + '\u00F3', 57, + '\u00F4', 58, + '\u00F5', 59, + '\u00F6', 60, + '\u00F9', 61, + '\u00FA', 62, + '\u00FB', 63, + '\u00FC', 64, + '\u00FD', 65, + '\u00FF', 66, + '\u0100', 67, + '\u0101', 68, + '\u0102', 69, + '\u0103', 70, + '\u0104', 71, + '\u0105', 72, + '\u0106', 73, + '\u0107', 74, + '\u0108', 75, + '\u0109', 76, + '\u010A', 77, + '\u010B', 78, + '\u010C', 79, + '\u010D', 80, + '\u010E', 81, + '\u010F', 82, + '\u0112', 83, + '\u0113', 84, + '\u0114', 85, + '\u0115', 86, + '\u0116', 87, + '\u0117', 88, + '\u0118', 89, + '\u0119', 90, + '\u011A', 91, + '\u011B', 92, + '\u011C', 93, + '\u011D', 94, + '\u011E', 95, + '\u011F', 96, + '\u0120', 97, + '\u0121', 98, + '\u0122', 99, + '\u0123', 100, + '\u0124', 101, + '\u0125', 102, + '\u0128', 103, + '\u0129', 104, + '\u012A', 105, + '\u012B', 106, + '\u012C', 107, + '\u012D', 108, + '\u012E', 109, + '\u012F', 110, + '\u0130', 111, + '\u0132', 112, + '\u0133', 113, + '\u0134', 114, + '\u0135', 115, + '\u0136', 116, + '\u0137', 117, + '\u0139', 118, + '\u013A', 119, + '\u013B', 120, + '\u013C', 121, + '\u013D', 122, + '\u013E', 123, + '\u013F', 124, + '\u0140', 125, + '\u0143', 126, + '\u0144', 127, + '\u0145', 128, + '\u0146', 129, + '\u0147', 130, + '\u0148', 131, + '\u0149', 132, + '\u014C', 133, + '\u014D', 134, + '\u014E', 135, + '\u014F', 136, + '\u0150', 137, + '\u0151', 138, + '\u0154', 139, + '\u0155', 140, + '\u0156', 141, + '\u0157', 142, + '\u0158', 143, + '\u0159', 144, + '\u015A', 145, + '\u015B', 146, + '\u015C', 147, + '\u015D', 148, + '\u015E', 149, + '\u015F', 150, + '\u0160', 151, + '\u0161', 152, + '\u0162', 153, + '\u0163', 154, + '\u0164', 155, + '\u0165', 156, + '\u0168', 157, + '\u0169', 158, + '\u016A', 159, + '\u016B', 160, + '\u016C', 161, + '\u016D', 162, + '\u016E', 163, + '\u016F', 164, + '\u0170', 165, + '\u0171', 166, + '\u0172', 167, + '\u0173', 168, + '\u0174', 169, + '\u0175', 170, + '\u0176', 171, + '\u0177', 172, + '\u0178', 173, + '\u0179', 174, + '\u017A', 175, + '\u017B', 176, + '\u017C', 177, + '\u017D', 178, + '\u017E', 179, + '\u017F', 180, + '\u01A0', 181, + '\u01A1', 182, + '\u01AF', 183, + '\u01B0', 184, + '\u01C4', 185, + '\u01C5', 186, + '\u01C6', 187, + '\u01C7', 188, + '\u01C8', 189, + '\u01C9', 190, + '\u01CA', 191, + '\u01CB', 192, + '\u01CC', 193, + '\u01CD', 194, + '\u01CE', 195, + '\u01CF', 196, + '\u01D0', 197, + '\u01D1', 198, + '\u01D2', 199, + '\u01D3', 200, + '\u01D4', 201, + '\u01D5', 202, + '\u01D6', 203, + '\u01D7', 204, + '\u01D8', 205, + '\u01D9', 206, + '\u01DA', 207, + '\u01DB', 208, + '\u01DC', 209, + '\u01DE', 210, + '\u01DF', 211, + '\u01E0', 212, + '\u01E1', 213, + '\u01E2', 214, + '\u01E3', 215, + '\u01E6', 216, + '\u01E7', 217, + '\u01E8', 218, + '\u01E9', 219, + '\u01EA', 220, + '\u01EB', 221, + '\u01EC', 222, + '\u01ED', 223, + '\u01EE', 224, + '\u01EF', 225, + '\u01F0', 226, + '\u01F1', 227, + '\u01F2', 228, + '\u01F3', 229, + '\u01F4', 230, + '\u01F5', 231, + '\u01F8', 232, + '\u01F9', 233, + '\u01FA', 234, + '\u01FB', 235, + '\u01FC', 236, + '\u01FD', 237, + '\u01FE', 238, + '\u01FF', 239, + '\u0200', 240, + '\u0201', 241, + '\u0202', 242, + '\u0203', 243, + '\u0204', 244, + '\u0205', 245, + '\u0206', 246, + '\u0207', 247, + '\u0208', 248, + '\u0209', 249, + '\u020A', 250, + '\u020B', 251, + '\u020C', 252, + '\u020D', 253, + '\u020E', 254, + '\u020F', 255, + '\u0210', 256, + '\u0211', 257, + '\u0212', 258, + '\u0213', 259, + '\u0214', 260, + '\u0215', 261, + '\u0216', 262, + '\u0217', 263, + '\u0218', 264, + '\u0219', 265, + '\u021A', 266, + '\u021B', 267, + '\u021E', 268, + '\u021F', 269, + '\u0226', 270, + '\u0227', 271, + '\u0228', 272, + '\u0229', 273, + '\u022A', 274, + '\u022B', 275, + '\u022C', 276, + '\u022D', 277, + '\u022E', 278, + '\u022F', 279, + '\u0230', 280, + '\u0231', 281, + '\u0232', 282, + '\u0233', 283, + '\u02B0', 284, + '\u02B1', 285, + '\u02B2', 286, + '\u02B3', 287, + '\u02B4', 288, + '\u02B5', 289, + '\u02B6', 290, + '\u02B7', 291, + '\u02B8', 292, + '\u02D8', 293, + '\u02D9', 294, + '\u02DA', 295, + '\u02DB', 296, + '\u02DC', 297, + '\u02DD', 298, + '\u02E0', 299, + '\u02E1', 300, + '\u02E2', 180, + '\u02E3', 301, + '\u02E4', 302, + '\u0340', 303, + '\u0341', 304, + '\u0343', 305, + '\u0344', 306, + '\u0374', 307, + '\u037A', 308, + '\u037E', 309, + '\u0384', 6, + '\u0385', 310, + '\u0386', 311, + '\u0387', 312, + '\u0388', 313, + '\u0389', 314, + '\u038A', 315, + '\u038C', 316, + '\u038E', 317, + '\u038F', 318, + '\u0390', 319, + '\u03AA', 320, + '\u03AB', 321, + '\u03AC', 322, + '\u03AD', 323, + '\u03AE', 324, + '\u03AF', 325, + '\u03B0', 326, + '\u03CA', 327, + '\u03CB', 328, + '\u03CC', 329, + '\u03CD', 330, + '\u03CE', 331, + '\u03D0', 332, + '\u03D1', 333, + '\u03D2', 334, + '\u03D3', 317, + '\u03D4', 321, + '\u03D5', 335, + '\u03D6', 336, + '\u03F0', 337, + '\u03F1', 338, + '\u03F2', 339, + '\u03F4', 340, + '\u03F5', 341, + '\u0400', 342, + '\u0401', 343, + '\u0403', 344, + '\u0407', 345, + '\u040C', 346, + '\u040D', 347, + '\u040E', 348, + '\u0419', 349, + '\u0439', 350, + '\u0450', 351, + '\u0451', 352, + '\u0453', 353, + '\u0457', 354, + '\u045C', 355, + '\u045D', 356, + '\u045E', 357, + '\u0476', 358, + '\u0477', 359, + '\u04C1', 360, + '\u04C2', 361, + '\u04D0', 362, + '\u04D1', 363, + '\u04D2', 364, + '\u04D3', 365, + '\u04D6', 366, + '\u04D7', 367, + '\u04DA', 368, + '\u04DB', 369, + '\u04DC', 370, + '\u04DD', 371, + '\u04DE', 372, + '\u04DF', 373, + '\u04E2', 374, + '\u04E3', 375, + '\u04E4', 376, + '\u04E5', 377, + '\u04E6', 378, + '\u04E7', 379, + '\u04EA', 380, + '\u04EB', 381, + '\u04EC', 382, + '\u04ED', 383, + '\u04EE', 384, + '\u04EF', 385, + '\u04F0', 386, + '\u04F1', 387, + '\u04F2', 388, + '\u04F3', 389, + '\u04F4', 390, + '\u04F5', 391, + '\u04F8', 392, + '\u04F9', 393, + '\u0587', 394, + '\u0622', 395, + '\u0623', 396, + '\u0624', 397, + '\u0625', 398, + '\u0626', 399, + '\u0675', 400, + '\u0676', 401, + '\u0677', 402, + '\u0678', 403, + '\u06C0', 404, + '\u06C2', 405, + '\u06D3', 406, + '\u0929', 407, + '\u0931', 408, + '\u0934', 409, + '\u0958', 410, + '\u0959', 411, + '\u095A', 412, + '\u095B', 413, + '\u095C', 414, + '\u095D', 415, + '\u095E', 416, + '\u095F', 417, + '\u09CB', 418, + '\u09CC', 419, + '\u09DC', 420, + '\u09DD', 421, + '\u09DF', 422, + '\u0A33', 423, + '\u0A36', 424, + '\u0A59', 425, + '\u0A5A', 426, + '\u0A5B', 427, + '\u0A5E', 428, + '\u0B48', 429, + '\u0B4B', 430, + '\u0B4C', 431, + '\u0B5C', 432, + '\u0B5D', 433, + '\u0B94', 434, + '\u0BCA', 435, + '\u0BCB', 436, + '\u0BCC', 437, + '\u0C48', 438, + '\u0CC0', 439, + '\u0CC7', 440, + '\u0CC8', 441, + '\u0CCA', 442, + '\u0CCB', 443, + '\u0D4A', 444, + '\u0D4B', 445, + '\u0D4C', 446, + '\u0DDA', 447, + '\u0DDC', 448, + '\u0DDD', 449, + '\u0DDE', 450, + '\u0E33', 451, + '\u0EB3', 452, + '\u0EDC', 453, + '\u0EDD', 454, + '\u0F0C', 455, + '\u0F43', 456, + '\u0F4D', 457, + '\u0F52', 458, + '\u0F57', 459, + '\u0F5C', 460, + '\u0F69', 461, + '\u0F73', 462, + '\u0F75', 463, + '\u0F76', 464, + '\u0F77', 465, + '\u0F78', 466, + '\u0F79', 467, + '\u0F81', 468, + '\u0F93', 469, + '\u0F9D', 470, + '\u0FA2', 471, + '\u0FA7', 472, + '\u0FAC', 473, + '\u0FB9', 474, + '\u1026', 475, + '\u1E00', 476, + '\u1E01', 477, + '\u1E02', 478, + '\u1E03', 479, + '\u1E04', 480, + '\u1E05', 481, + '\u1E06', 482, + '\u1E07', 483, + '\u1E08', 484, + '\u1E09', 485, + '\u1E0A', 486, + '\u1E0B', 487, + '\u1E0C', 488, + '\u1E0D', 489, + '\u1E0E', 490, + '\u1E0F', 491, + '\u1E10', 492, + '\u1E11', 493, + '\u1E12', 494, + '\u1E13', 495, + '\u1E14', 496, + '\u1E15', 497, + '\u1E16', 498, + '\u1E17', 499, + '\u1E18', 500, + '\u1E19', 501, + '\u1E1A', 502, + '\u1E1B', 503, + '\u1E1C', 504, + '\u1E1D', 505, + '\u1E1E', 506, + '\u1E1F', 507, + '\u1E20', 508, + '\u1E21', 509, + '\u1E22', 510, + '\u1E23', 511, + '\u1E24', 512, + '\u1E25', 513, + '\u1E26', 514, + '\u1E27', 515, + '\u1E28', 516, + '\u1E29', 517, + '\u1E2A', 518, + '\u1E2B', 519, + '\u1E2C', 520, + '\u1E2D', 521, + '\u1E2E', 522, + '\u1E2F', 523, + '\u1E30', 524, + '\u1E31', 525, + '\u1E32', 526, + '\u1E33', 527, + '\u1E34', 528, + '\u1E35', 529, + '\u1E36', 530, + '\u1E37', 531, + '\u1E38', 532, + '\u1E39', 533, + '\u1E3A', 534, + '\u1E3B', 535, + '\u1E3C', 536, + '\u1E3D', 537, + '\u1E3E', 538, + '\u1E3F', 539, + '\u1E40', 540, + '\u1E41', 541, + '\u1E42', 542, + '\u1E43', 543, + '\u1E44', 544, + '\u1E45', 545, + '\u1E46', 546, + '\u1E47', 547, + '\u1E48', 548, + '\u1E49', 549, + '\u1E4A', 550, + '\u1E4B', 551, + '\u1E4C', 552, + '\u1E4D', 553, + '\u1E4E', 554, + '\u1E4F', 555, + '\u1E50', 556, + '\u1E51', 557, + '\u1E52', 558, + '\u1E53', 559, + '\u1E54', 560, + '\u1E55', 561, + '\u1E56', 562, + '\u1E57', 563, + '\u1E58', 564, + '\u1E59', 565, + '\u1E5A', 566, + '\u1E5B', 567, + '\u1E5C', 568, + '\u1E5D', 569, + '\u1E5E', 570, + '\u1E5F', 571, + '\u1E60', 572, + '\u1E61', 573, + '\u1E62', 574, + '\u1E63', 575, + '\u1E64', 576, + '\u1E65', 577, + '\u1E66', 578, + '\u1E67', 579, + '\u1E68', 580, + '\u1E69', 581, + '\u1E6A', 582, + '\u1E6B', 583, + '\u1E6C', 584, + '\u1E6D', 585, + '\u1E6E', 586, + '\u1E6F', 587, + '\u1E70', 588, + '\u1E71', 589, + '\u1E72', 590, + '\u1E73', 591, + '\u1E74', 592, + '\u1E75', 593, + '\u1E76', 594, + '\u1E77', 595, + '\u1E78', 596, + '\u1E79', 597, + '\u1E7A', 598, + '\u1E7B', 599, + '\u1E7C', 600, + '\u1E7D', 601, + '\u1E7E', 602, + '\u1E7F', 603, + '\u1E80', 604, + '\u1E81', 605, + '\u1E82', 606, + '\u1E83', 607, + '\u1E84', 608, + '\u1E85', 609, + '\u1E86', 610, + '\u1E87', 611, + '\u1E88', 612, + '\u1E89', 613, + '\u1E8A', 614, + '\u1E8B', 615, + '\u1E8C', 616, + '\u1E8D', 617, + '\u1E8E', 618, + '\u1E8F', 619, + '\u1E90', 620, + '\u1E91', 621, + '\u1E92', 622, + '\u1E93', 623, + '\u1E94', 624, + '\u1E95', 625, + '\u1E96', 626, + '\u1E97', 627, + '\u1E98', 628, + '\u1E99', 629, + '\u1E9A', 630, + '\u1E9B', 573, + '\u1EA0', 631, + '\u1EA1', 632, + '\u1EA2', 633, + '\u1EA3', 634, + '\u1EA4', 635, + '\u1EA5', 636, + '\u1EA6', 637, + '\u1EA7', 638, + '\u1EA8', 639, + '\u1EA9', 640, + '\u1EAA', 641, + '\u1EAB', 642, + '\u1EAC', 643, + '\u1EAD', 644, + '\u1EAE', 645, + '\u1EAF', 646, + '\u1EB0', 647, + '\u1EB1', 648, + '\u1EB2', 649, + '\u1EB3', 650, + '\u1EB4', 651, + '\u1EB5', 652, + '\u1EB6', 653, + '\u1EB7', 654, + '\u1EB8', 655, + '\u1EB9', 656, + '\u1EBA', 657, + '\u1EBB', 658, + '\u1EBC', 659, + '\u1EBD', 660, + '\u1EBE', 661, + '\u1EBF', 662, + '\u1EC0', 663, + '\u1EC1', 664, + '\u1EC2', 665, + '\u1EC3', 666, + '\u1EC4', 667, + '\u1EC5', 668, + '\u1EC6', 669, + '\u1EC7', 670, + '\u1EC8', 671, + '\u1EC9', 672, + '\u1ECA', 673, + '\u1ECB', 674, + '\u1ECC', 675, + '\u1ECD', 676, + '\u1ECE', 677, + '\u1ECF', 678, + '\u1ED0', 679, + '\u1ED1', 680, + '\u1ED2', 681, + '\u1ED3', 682, + '\u1ED4', 683, + '\u1ED5', 684, + '\u1ED6', 685, + '\u1ED7', 686, + '\u1ED8', 687, + '\u1ED9', 688, + '\u1EDA', 689, + '\u1EDB', 690, + '\u1EDC', 691, + '\u1EDD', 692, + '\u1EDE', 693, + '\u1EDF', 694, + '\u1EE0', 695, + '\u1EE1', 696, + '\u1EE2', 697, + '\u1EE3', 698, + '\u1EE4', 699, + '\u1EE5', 700, + '\u1EE6', 701, + '\u1EE7', 702, + '\u1EE8', 703, + '\u1EE9', 704, + '\u1EEA', 705, + '\u1EEB', 706, + '\u1EEC', 707, + '\u1EED', 708, + '\u1EEE', 709, + '\u1EEF', 710, + '\u1EF0', 711, + '\u1EF1', 712, + '\u1EF2', 713, + '\u1EF3', 714, + '\u1EF4', 715, + '\u1EF5', 716, + '\u1EF6', 717, + '\u1EF7', 718, + '\u1EF8', 719, + '\u1EF9', 720, + '\u1F00', 721, + '\u1F01', 722, + '\u1F02', 723, + '\u1F03', 724, + '\u1F04', 725, + '\u1F05', 726, + '\u1F06', 727, + '\u1F07', 728, + '\u1F08', 729, + '\u1F09', 730, + '\u1F0A', 731, + '\u1F0B', 732, + '\u1F0C', 733, + '\u1F0D', 734, + '\u1F0E', 735, + '\u1F0F', 736, + '\u1F10', 737, + '\u1F11', 738, + '\u1F12', 739, + '\u1F13', 740, + '\u1F14', 741, + '\u1F15', 742, + '\u1F18', 743, + '\u1F19', 744, + '\u1F1A', 745, + '\u1F1B', 746, + '\u1F1C', 747, + '\u1F1D', 748, + '\u1F20', 749, + '\u1F21', 750, + '\u1F22', 751, + '\u1F23', 752, + '\u1F24', 753, + '\u1F25', 754, + '\u1F26', 755, + '\u1F27', 756, + '\u1F28', 757, + '\u1F29', 758, + '\u1F2A', 759, + '\u1F2B', 760, + '\u1F2C', 761, + '\u1F2D', 762, + '\u1F2E', 763, + '\u1F2F', 764, + '\u1F30', 765, + '\u1F31', 766, + '\u1F32', 767, + '\u1F33', 768, + '\u1F34', 769, + '\u1F35', 770, + '\u1F36', 771, + '\u1F37', 772, + '\u1F38', 773, + '\u1F39', 774, + '\u1F3A', 775, + '\u1F3B', 776, + '\u1F3C', 777, + '\u1F3D', 778, + '\u1F3E', 779, + '\u1F3F', 780, + '\u1F40', 781, + '\u1F41', 782, + '\u1F42', 783, + '\u1F43', 784, + '\u1F44', 785, + '\u1F45', 786, + '\u1F48', 787, + '\u1F49', 788, + '\u1F4A', 789, + '\u1F4B', 790, + '\u1F4C', 791, + '\u1F4D', 792, + '\u1F50', 793, + '\u1F51', 794, + '\u1F52', 795, + '\u1F53', 796, + '\u1F54', 797, + '\u1F55', 798, + '\u1F56', 799, + '\u1F57', 800, + '\u1F59', 801, + '\u1F5B', 802, + '\u1F5D', 803, + '\u1F5F', 804, + '\u1F60', 805, + '\u1F61', 806, + '\u1F62', 807, + '\u1F63', 808, + '\u1F64', 809, + '\u1F65', 810, + '\u1F66', 811, + '\u1F67', 812, + '\u1F68', 813, + '\u1F69', 814, + '\u1F6A', 815, + '\u1F6B', 816, + '\u1F6C', 817, + '\u1F6D', 818, + '\u1F6E', 819, + '\u1F6F', 820, + '\u1F70', 821, + '\u1F71', 322, + '\u1F72', 822, + '\u1F73', 323, + '\u1F74', 823, + '\u1F75', 324, + '\u1F76', 824, + '\u1F77', 325, + '\u1F78', 825, + '\u1F79', 329, + '\u1F7A', 826, + '\u1F7B', 330, + '\u1F7C', 827, + '\u1F7D', 331, + '\u1F80', 828, + '\u1F81', 829, + '\u1F82', 830, + '\u1F83', 831, + '\u1F84', 832, + '\u1F85', 833, + '\u1F86', 834, + '\u1F87', 835, + '\u1F88', 836, + '\u1F89', 837, + '\u1F8A', 838, + '\u1F8B', 839, + '\u1F8C', 840, + '\u1F8D', 841, + '\u1F8E', 842, + '\u1F8F', 843, + '\u1F90', 844, + '\u1F91', 845, + '\u1F92', 846, + '\u1F93', 847, + '\u1F94', 848, + '\u1F95', 849, + '\u1F96', 850, + '\u1F97', 851, + '\u1F98', 852, + '\u1F99', 853, + '\u1F9A', 854, + '\u1F9B', 855, + '\u1F9C', 856, + '\u1F9D', 857, + '\u1F9E', 858, + '\u1F9F', 859, + '\u1FA0', 860, + '\u1FA1', 861, + '\u1FA2', 862, + '\u1FA3', 863, + '\u1FA4', 864, + '\u1FA5', 865, + '\u1FA6', 866, + '\u1FA7', 867, + '\u1FA8', 868, + '\u1FA9', 869, + '\u1FAA', 870, + '\u1FAB', 871, + '\u1FAC', 872, + '\u1FAD', 873, + '\u1FAE', 874, + '\u1FAF', 875, + '\u1FB0', 876, + '\u1FB1', 877, + '\u1FB2', 878, + '\u1FB3', 879, + '\u1FB4', 880, + '\u1FB6', 881, + '\u1FB7', 882, + '\u1FB8', 883, + '\u1FB9', 884, + '\u1FBA', 885, + '\u1FBB', 311, + '\u1FBC', 886, + '\u1FBD', 887, + '\u1FBE', 888, + '\u1FBF', 887, + '\u1FC0', 889, + '\u1FC1', 890, + '\u1FC2', 891, + '\u1FC3', 892, + '\u1FC4', 893, + '\u1FC6', 894, + '\u1FC7', 895, + '\u1FC8', 896, + '\u1FC9', 313, + '\u1FCA', 897, + '\u1FCB', 314, + '\u1FCC', 898, + '\u1FCD', 899, + '\u1FCE', 900, + '\u1FCF', 901, + '\u1FD0', 902, + '\u1FD1', 903, + '\u1FD2', 904, + '\u1FD3', 319, + '\u1FD6', 905, + '\u1FD7', 906, + '\u1FD8', 907, + '\u1FD9', 908, + '\u1FDA', 909, + '\u1FDB', 315, + '\u1FDD', 910, + '\u1FDE', 911, + '\u1FDF', 912, + '\u1FE0', 913, + '\u1FE1', 914, + '\u1FE2', 915, + '\u1FE3', 326, + '\u1FE4', 916, + '\u1FE5', 917, + '\u1FE6', 918, + '\u1FE7', 919, + '\u1FE8', 920, + '\u1FE9', 921, + '\u1FEA', 922, + '\u1FEB', 317, + '\u1FEC', 923, + '\u1FED', 924, + '\u1FEE', 310, + '\u1FEF', 925, + '\u1FF2', 926, + '\u1FF3', 927, + '\u1FF4', 928, + '\u1FF6', 929, + '\u1FF7', 930, + '\u1FF8', 931, + '\u1FF9', 316, + '\u1FFA', 932, + '\u1FFB', 318, + '\u1FFC', 933, + '\u1FFD', 6, + '\u1FFE', 934, + '\u2000', 0, + '\u2001', 0, + '\u2002', 0, + '\u2003', 0, + '\u2004', 0, + '\u2005', 0, + '\u2006', 0, + '\u2007', 0, + '\u2008', 0, + '\u2009', 0, + '\u200A', 0, + '\u2011', 935, + '\u2017', 936, + '\u2024', 937, + '\u2025', 938, + '\u2026', 939, + '\u202F', 0, + '\u2033', 940, + '\u2034', 941, + '\u2036', 942, + '\u2037', 943, + '\u203C', 944, + '\u203E', 945, + '\u2047', 946, + '\u2048', 947, + '\u2049', 948, + '\u2057', 949, + '\u205F', 0, + '\u2070', 950, + '\u2071', 951, + '\u2074', 952, + '\u2075', 953, + '\u2076', 954, + '\u2077', 955, + '\u2078', 956, + '\u2079', 957, + '\u207A', 958, + '\u207B', 959, + '\u207C', 960, + '\u207D', 961, + '\u207E', 962, + '\u207F', 963, + '\u2080', 950, + '\u2081', 9, + '\u2082', 4, + '\u2083', 5, + '\u2084', 952, + '\u2085', 953, + '\u2086', 954, + '\u2087', 955, + '\u2088', 956, + '\u2089', 957, + '\u208A', 958, + '\u208B', 959, + '\u208C', 960, + '\u208D', 961, + '\u208E', 962, + '\u20A8', 964, + '\u2100', 965, + '\u2101', 966, + '\u2102', 967, + '\u2103', 968, + '\u2105', 969, + '\u2106', 970, + '\u2107', 971, + '\u2109', 972, + '\u210A', 973, + '\u210B', 974, + '\u210C', 974, + '\u210D', 974, + '\u210E', 284, + '\u210F', 975, + '\u2110', 976, + '\u2111', 976, + '\u2112', 977, + '\u2113', 300, + '\u2115', 978, + '\u2116', 979, + '\u2119', 980, + '\u211A', 981, + '\u211B', 982, + '\u211C', 982, + '\u211D', 982, + '\u2120', 983, + '\u2121', 984, + '\u2122', 985, + '\u2124', 986, + '\u2126', 987, + '\u2128', 986, + '\u212A', 988, + '\u212B', 19, + '\u212C', 989, + '\u212D', 967, + '\u212F', 990, + '\u2130', 991, + '\u2131', 992, + '\u2133', 993, + '\u2134', 10, + '\u2135', 994, + '\u2136', 995, + '\u2137', 996, + '\u2138', 997, + '\u2139', 951, + '\u213D', 998, + '\u213E', 999, + '\u213F', 1000, + '\u2140', 1001, + '\u2145', 1002, + '\u2146', 1003, + '\u2147', 990, + '\u2148', 951, + '\u2149', 286, + '\u2153', 1004, + '\u2154', 1005, + '\u2155', 1006, + '\u2156', 1007, + '\u2157', 1008, + '\u2158', 1009, + '\u2159', 1010, + '\u215A', 1011, + '\u215B', 1012, + '\u215C', 1013, + '\u215D', 1014, + '\u215E', 1015, + '\u215F', 1016, + '\u2160', 976, + '\u2161', 1017, + '\u2162', 1018, + '\u2163', 1019, + '\u2164', 1020, + '\u2165', 1021, + '\u2166', 1022, + '\u2167', 1023, + '\u2168', 1024, + '\u2169', 1025, + '\u216A', 1026, + '\u216B', 1027, + '\u216C', 977, + '\u216D', 967, + '\u216E', 1002, + '\u216F', 993, + '\u2170', 951, + '\u2171', 1028, + '\u2172', 1029, + '\u2173', 1030, + '\u2174', 1031, + '\u2175', 1032, + '\u2176', 1033, + '\u2177', 1034, + '\u2178', 1035, + '\u2179', 301, + '\u217A', 1036, + '\u217B', 1037, + '\u217C', 300, + '\u217D', 1038, + '\u217E', 1003, + '\u217F', 1039, + '\u219A', 1040, + '\u219B', 1041, + '\u21AE', 1042, + '\u21CD', 1043, + '\u21CE', 1044, + '\u21CF', 1045, + '\u2204', 1046, + '\u2209', 1047, + '\u220C', 1048, + '\u2224', 1049, + '\u2226', 1050, + '\u222C', 1051, + '\u222D', 1052, + '\u222F', 1053, + '\u2230', 1054, + '\u2241', 1055, + '\u2244', 1056, + '\u2247', 1057, + '\u2249', 1058, + '\u2260', 1059, + '\u2262', 1060, + '\u226D', 1061, + '\u226E', 1062, + '\u226F', 1063, + '\u2270', 1064, + '\u2271', 1065, + '\u2274', 1066, + '\u2275', 1067, + '\u2278', 1068, + '\u2279', 1069, + '\u2280', 1070, + '\u2281', 1071, + '\u2284', 1072, + '\u2285', 1073, + '\u2288', 1074, + '\u2289', 1075, + '\u22AC', 1076, + '\u22AD', 1077, + '\u22AE', 1078, + '\u22AF', 1079, + '\u22E0', 1080, + '\u22E1', 1081, + '\u22E2', 1082, + '\u22E3', 1083, + '\u22EA', 1084, + '\u22EB', 1085, + '\u22EC', 1086, + '\u22ED', 1087, + '\u2329', 1088, + '\u232A', 1089, + '\u2460', 9, + '\u2461', 4, + '\u2462', 5, + '\u2463', 952, + '\u2464', 953, + '\u2465', 954, + '\u2466', 955, + '\u2467', 956, + '\u2468', 957, + '\u2469', 1090, + '\u246A', 1091, + '\u246B', 1092, + '\u246C', 1093, + '\u246D', 1094, + '\u246E', 1095, + '\u246F', 1096, + '\u2470', 1097, + '\u2471', 1098, + '\u2472', 1099, + '\u2473', 1100, + '\u2474', 1101, + '\u2475', 1102, + '\u2476', 1103, + '\u2477', 1104, + '\u2478', 1105, + '\u2479', 1106, + '\u247A', 1107, + '\u247B', 1108, + '\u247C', 1109, + '\u247D', 1110, + '\u247E', 1111, + '\u247F', 1112, + '\u2480', 1113, + '\u2481', 1114, + '\u2482', 1115, + '\u2483', 1116, + '\u2484', 1117, + '\u2485', 1118, + '\u2486', 1119, + '\u2487', 1120, + '\u2488', 1121, + '\u2489', 1122, + '\u248A', 1123, + '\u248B', 1124, + '\u248C', 1125, + '\u248D', 1126, + '\u248E', 1127, + '\u248F', 1128, + '\u2490', 1129, + '\u2491', 1130, + '\u2492', 1131, + '\u2493', 1132, + '\u2494', 1133, + '\u2495', 1134, + '\u2496', 1135, + '\u2497', 1136, + '\u2498', 1137, + '\u2499', 1138, + '\u249A', 1139, + '\u249B', 1140, + '\u249C', 1141, + '\u249D', 1142, + '\u249E', 1143, + '\u249F', 1144, + '\u24A0', 1145, + '\u24A1', 1146, + '\u24A2', 1147, + '\u24A3', 1148, + '\u24A4', 1149, + '\u24A5', 1150, + '\u24A6', 1151, + '\u24A7', 1152, + '\u24A8', 1153, + '\u24A9', 1154, + '\u24AA', 1155, + '\u24AB', 1156, + '\u24AC', 1157, + '\u24AD', 1158, + '\u24AE', 1159, + '\u24AF', 1160, + '\u24B0', 1161, + '\u24B1', 1162, + '\u24B2', 1163, + '\u24B3', 1164, + '\u24B4', 1165, + '\u24B5', 1166, + '\u24B6', 1167, + '\u24B7', 989, + '\u24B8', 967, + '\u24B9', 1002, + '\u24BA', 991, + '\u24BB', 992, + '\u24BC', 1168, + '\u24BD', 974, + '\u24BE', 976, + '\u24BF', 1169, + '\u24C0', 988, + '\u24C1', 977, + '\u24C2', 993, + '\u24C3', 978, + '\u24C4', 1170, + '\u24C5', 980, + '\u24C6', 981, + '\u24C7', 982, + '\u24C8', 1171, + '\u24C9', 1172, + '\u24CA', 1173, + '\u24CB', 1020, + '\u24CC', 1174, + '\u24CD', 1025, + '\u24CE', 1175, + '\u24CF', 986, + '\u24D0', 2, + '\u24D1', 1176, + '\u24D2', 1038, + '\u24D3', 1003, + '\u24D4', 990, + '\u24D5', 1177, + '\u24D6', 973, + '\u24D7', 284, + '\u24D8', 951, + '\u24D9', 286, + '\u24DA', 1178, + '\u24DB', 300, + '\u24DC', 1039, + '\u24DD', 963, + '\u24DE', 10, + '\u24DF', 1179, + '\u24E0', 1180, + '\u24E1', 287, + '\u24E2', 180, + '\u24E3', 1181, + '\u24E4', 1182, + '\u24E5', 1031, + '\u24E6', 291, + '\u24E7', 301, + '\u24E8', 292, + '\u24E9', 1183, + '\u24EA', 950, + '\u2A0C', 1184, + '\u2A74', 1185, + '\u2A75', 1186, + '\u2A76', 1187, + '\u2ADC', 1188, + '\u2E9F', 1189, + '\u2EF3', 1190, + '\u2F00', 1191, + '\u2F01', 1192, + '\u2F02', 1193, + '\u2F03', 1194, + '\u2F04', 1195, + '\u2F05', 1196, + '\u2F06', 1197, + '\u2F07', 1198, + '\u2F08', 1199, + '\u2F09', 1200, + '\u2F0A', 1201, + '\u2F0B', 1202, + '\u2F0C', 1203, + '\u2F0D', 1204, + '\u2F0E', 1205, + '\u2F0F', 1206, + '\u2F10', 1207, + '\u2F11', 1208, + '\u2F12', 1209, + '\u2F13', 1210, + '\u2F14', 1211, + '\u2F15', 1212, + '\u2F16', 1213, + '\u2F17', 1214, + '\u2F18', 1215, + '\u2F19', 1216, + '\u2F1A', 1217, + '\u2F1B', 1218, + '\u2F1C', 1219, + '\u2F1D', 1220, + '\u2F1E', 1221, + '\u2F1F', 1222, + '\u2F20', 1223, + '\u2F21', 1224, + '\u2F22', 1225, + '\u2F23', 1226, + '\u2F24', 1227, + '\u2F25', 1228, + '\u2F26', 1229, + '\u2F27', 1230, + '\u2F28', 1231, + '\u2F29', 1232, + '\u2F2A', 1233, + '\u2F2B', 1234, + '\u2F2C', 1235, + '\u2F2D', 1236, + '\u2F2E', 1237, + '\u2F2F', 1238, + '\u2F30', 1239, + '\u2F31', 1240, + '\u2F32', 1241, + '\u2F33', 1242, + '\u2F34', 1243, + '\u2F35', 1244, + '\u2F36', 1245, + '\u2F37', 1246, + '\u2F38', 1247, + '\u2F39', 1248, + '\u2F3A', 1249, + '\u2F3B', 1250, + '\u2F3C', 1251, + '\u2F3D', 1252, + '\u2F3E', 1253, + '\u2F3F', 1254, + '\u2F40', 1255, + '\u2F41', 1256, + '\u2F42', 1257, + '\u2F43', 1258, + '\u2F44', 1259, + '\u2F45', 1260, + '\u2F46', 1261, + '\u2F47', 1262, + '\u2F48', 1263, + '\u2F49', 1264, + '\u2F4A', 1265, + '\u2F4B', 1266, + '\u2F4C', 1267, + '\u2F4D', 1268, + '\u2F4E', 1269, + '\u2F4F', 1270, + '\u2F50', 1271, + '\u2F51', 1272, + '\u2F52', 1273, + '\u2F53', 1274, + '\u2F54', 1275, + '\u2F55', 1276, + '\u2F56', 1277, + '\u2F57', 1278, + '\u2F58', 1279, + '\u2F59', 1280, + '\u2F5A', 1281, + '\u2F5B', 1282, + '\u2F5C', 1283, + '\u2F5D', 1284, + '\u2F5E', 1285, + '\u2F5F', 1286, + '\u2F60', 1287, + '\u2F61', 1288, + '\u2F62', 1289, + '\u2F63', 1290, + '\u2F64', 1291, + '\u2F65', 1292, + '\u2F66', 1293, + '\u2F67', 1294, + '\u2F68', 1295, + '\u2F69', 1296, + '\u2F6A', 1297, + '\u2F6B', 1298, + '\u2F6C', 1299, + '\u2F6D', 1300, + '\u2F6E', 1301, + '\u2F6F', 1302, + '\u2F70', 1303, + '\u2F71', 1304, + '\u2F72', 1305, + '\u2F73', 1306, + '\u2F74', 1307, + '\u2F75', 1308, + '\u2F76', 1309, + '\u2F77', 1310, + '\u2F78', 1311, + '\u2F79', 1312, + '\u2F7A', 1313, + '\u2F7B', 1314, + '\u2F7C', 1315, + '\u2F7D', 1316, + '\u2F7E', 1317, + '\u2F7F', 1318, + '\u2F80', 1319, + '\u2F81', 1320, + '\u2F82', 1321, + '\u2F83', 1322, + '\u2F84', 1323, + '\u2F85', 1324, + '\u2F86', 1325, + '\u2F87', 1326, + '\u2F88', 1327, + '\u2F89', 1328, + '\u2F8A', 1329, + '\u2F8B', 1330, + '\u2F8C', 1331, + '\u2F8D', 1332, + '\u2F8E', 1333, + '\u2F8F', 1334, + '\u2F90', 1335, + '\u2F91', 1336, + '\u2F92', 1337, + '\u2F93', 1338, + '\u2F94', 1339, + '\u2F95', 1340, + '\u2F96', 1341, + '\u2F97', 1342, + '\u2F98', 1343, + '\u2F99', 1344, + '\u2F9A', 1345, + '\u2F9B', 1346, + '\u2F9C', 1347, + '\u2F9D', 1348, + '\u2F9E', 1349, + '\u2F9F', 1350, + '\u2FA0', 1351, + '\u2FA1', 1352, + '\u2FA2', 1353, + '\u2FA3', 1354, + '\u2FA4', 1355, + '\u2FA5', 1356, + '\u2FA6', 1357, + '\u2FA7', 1358, + '\u2FA8', 1359, + '\u2FA9', 1360, + '\u2FAA', 1361, + '\u2FAB', 1362, + '\u2FAC', 1363, + '\u2FAD', 1364, + '\u2FAE', 1365, + '\u2FAF', 1366, + '\u2FB0', 1367, + '\u2FB1', 1368, + '\u2FB2', 1369, + '\u2FB3', 1370, + '\u2FB4', 1371, + '\u2FB5', 1372, + '\u2FB6', 1373, + '\u2FB7', 1374, + '\u2FB8', 1375, + '\u2FB9', 1376, + '\u2FBA', 1377, + '\u2FBB', 1378, + '\u2FBC', 1379, + '\u2FBD', 1380, + '\u2FBE', 1381, + '\u2FBF', 1382, + '\u2FC0', 1383, + '\u2FC1', 1384, + '\u2FC2', 1385, + '\u2FC3', 1386, + '\u2FC4', 1387, + '\u2FC5', 1388, + '\u2FC6', 1389, + '\u2FC7', 1390, + '\u2FC8', 1391, + '\u2FC9', 1392, + '\u2FCA', 1393, + '\u2FCB', 1394, + '\u2FCC', 1395, + '\u2FCD', 1396, + '\u2FCE', 1397, + '\u2FCF', 1398, + '\u2FD0', 1399, + '\u2FD1', 1400, + '\u2FD2', 1401, + '\u2FD3', 1402, + '\u2FD4', 1403, + '\u2FD5', 1404, + '\u3000', 0, + '\u3036', 1405, + '\u3038', 1214, + '\u3039', 1406, + '\u303A', 1407, + '\u304C', 1408, + '\u304E', 1409, + '\u3050', 1410, + '\u3052', 1411, + '\u3054', 1412, + '\u3056', 1413, + '\u3058', 1414, + '\u305A', 1415, + '\u305C', 1416, + '\u305E', 1417, + '\u3060', 1418, + '\u3062', 1419, + '\u3065', 1420, + '\u3067', 1421, + '\u3069', 1422, + '\u3070', 1423, + '\u3071', 1424, + '\u3073', 1425, + '\u3074', 1426, + '\u3076', 1427, + '\u3077', 1428, + '\u3079', 1429, + '\u307A', 1430, + '\u307C', 1431, + '\u307D', 1432, + '\u3094', 1433, + '\u309B', 1434, + '\u309C', 1435, + '\u309E', 1436, + '\u309F', 1437, + '\u30AC', 1438, + '\u30AE', 1439, + '\u30B0', 1440, + '\u30B2', 1441, + '\u30B4', 1442, + '\u30B6', 1443, + '\u30B8', 1444, + '\u30BA', 1445, + '\u30BC', 1446, + '\u30BE', 1447, + '\u30C0', 1448, + '\u30C2', 1449, + '\u30C5', 1450, + '\u30C7', 1451, + '\u30C9', 1452, + '\u30D0', 1453, + '\u30D1', 1454, + '\u30D3', 1455, + '\u30D4', 1456, + '\u30D6', 1457, + '\u30D7', 1458, + '\u30D9', 1459, + '\u30DA', 1460, + '\u30DC', 1461, + '\u30DD', 1462, + '\u30F4', 1463, + '\u30F7', 1464, + '\u30F8', 1465, + '\u30F9', 1466, + '\u30FA', 1467, + '\u30FE', 1468, + '\u30FF', 1469, + '\u3131', 1470, + '\u3132', 1471, + '\u3133', 1472, + '\u3134', 1473, + '\u3135', 1474, + '\u3136', 1475, + '\u3137', 1476, + '\u3138', 1477, + '\u3139', 1478, + '\u313A', 1479, + '\u313B', 1480, + '\u313C', 1481, + '\u313D', 1482, + '\u313E', 1483, + '\u313F', 1484, + '\u3140', 1485, + '\u3141', 1486, + '\u3142', 1487, + '\u3143', 1488, + '\u3144', 1489, + '\u3145', 1490, + '\u3146', 1491, + '\u3147', 1492, + '\u3148', 1493, + '\u3149', 1494, + '\u314A', 1495, + '\u314B', 1496, + '\u314C', 1497, + '\u314D', 1498, + '\u314E', 1499, + '\u314F', 1500, + '\u3150', 1501, + '\u3151', 1502, + '\u3152', 1503, + '\u3153', 1504, + '\u3154', 1505, + '\u3155', 1506, + '\u3156', 1507, + '\u3157', 1508, + '\u3158', 1509, + '\u3159', 1510, + '\u315A', 1511, + '\u315B', 1512, + '\u315C', 1513, + '\u315D', 1514, + '\u315E', 1515, + '\u315F', 1516, + '\u3160', 1517, + '\u3161', 1518, + '\u3162', 1519, + '\u3163', 1520, + '\u3164', 1521, + '\u3165', 1522, + '\u3166', 1523, + '\u3167', 1524, + '\u3168', 1525, + '\u3169', 1526, + '\u316A', 1527, + '\u316B', 1528, + '\u316C', 1529, + '\u316D', 1530, + '\u316E', 1531, + '\u316F', 1532, + '\u3170', 1533, + '\u3171', 1534, + '\u3172', 1535, + '\u3173', 1536, + '\u3174', 1537, + '\u3175', 1538, + '\u3176', 1539, + '\u3177', 1540, + '\u3178', 1541, + '\u3179', 1542, + '\u317A', 1543, + '\u317B', 1544, + '\u317C', 1545, + '\u317D', 1546, + '\u317E', 1547, + '\u317F', 1548, + '\u3180', 1549, + '\u3181', 1550, + '\u3182', 1551, + '\u3183', 1552, + '\u3184', 1553, + '\u3185', 1554, + '\u3186', 1555, + '\u3187', 1556, + '\u3188', 1557, + '\u3189', 1558, + '\u318A', 1559, + '\u318B', 1560, + '\u318C', 1561, + '\u318D', 1562, + '\u318E', 1563, + '\u3192', 1191, + '\u3193', 1197, + '\u3194', 1564, + '\u3195', 1565, + '\u3196', 1566, + '\u3197', 1567, + '\u3198', 1568, + '\u3199', 1569, + '\u319A', 1195, + '\u319B', 1570, + '\u319C', 1571, + '\u319D', 1572, + '\u319E', 1573, + '\u319F', 1199, + '\u3200', 1574, + '\u3201', 1575, + '\u3202', 1576, + '\u3203', 1577, + '\u3204', 1578, + '\u3205', 1579, + '\u3206', 1580, + '\u3207', 1581, + '\u3208', 1582, + '\u3209', 1583, + '\u320A', 1584, + '\u320B', 1585, + '\u320C', 1586, + '\u320D', 1587, + '\u320E', 1588, + '\u320F', 1589, + '\u3210', 1590, + '\u3211', 1591, + '\u3212', 1592, + '\u3213', 1593, + '\u3214', 1594, + '\u3215', 1595, + '\u3216', 1596, + '\u3217', 1597, + '\u3218', 1598, + '\u3219', 1599, + '\u321A', 1600, + '\u321B', 1601, + '\u321C', 1602, + '\u3220', 1603, + '\u3221', 1604, + '\u3222', 1605, + '\u3223', 1606, + '\u3224', 1607, + '\u3225', 1608, + '\u3226', 1609, + '\u3227', 1610, + '\u3228', 1611, + '\u3229', 1612, + '\u322A', 1613, + '\u322B', 1614, + '\u322C', 1615, + '\u322D', 1616, + '\u322E', 1617, + '\u322F', 1618, + '\u3230', 1619, + '\u3231', 1620, + '\u3232', 1621, + '\u3233', 1622, + '\u3234', 1623, + '\u3235', 1624, + '\u3236', 1625, + '\u3237', 1626, + '\u3238', 1627, + '\u3239', 1628, + '\u323A', 1629, + '\u323B', 1630, + '\u323C', 1631, + '\u323D', 1632, + '\u323E', 1633, + '\u323F', 1634, + '\u3240', 1635, + '\u3241', 1636, + '\u3242', 1637, + '\u3243', 1638, + '\u3251', 1639, + '\u3252', 1640, + '\u3253', 1641, + '\u3254', 1642, + '\u3255', 1643, + '\u3256', 1644, + '\u3257', 1645, + '\u3258', 1646, + '\u3259', 1647, + '\u325A', 1648, + '\u325B', 1649, + '\u325C', 1650, + '\u325D', 1651, + '\u325E', 1652, + '\u325F', 1653, + '\u3260', 1470, + '\u3261', 1473, + '\u3262', 1476, + '\u3263', 1478, + '\u3264', 1486, + '\u3265', 1487, + '\u3266', 1490, + '\u3267', 1492, + '\u3268', 1493, + '\u3269', 1495, + '\u326A', 1496, + '\u326B', 1497, + '\u326C', 1498, + '\u326D', 1499, + '\u326E', 1654, + '\u326F', 1655, + '\u3270', 1656, + '\u3271', 1657, + '\u3272', 1658, + '\u3273', 1659, + '\u3274', 1660, + '\u3275', 1661, + '\u3276', 1662, + '\u3277', 1663, + '\u3278', 1664, + '\u3279', 1665, + '\u327A', 1666, + '\u327B', 1667, + '\u3280', 1191, + '\u3281', 1197, + '\u3282', 1564, + '\u3283', 1565, + '\u3284', 1668, + '\u3285', 1669, + '\u3286', 1670, + '\u3287', 1202, + '\u3288', 1671, + '\u3289', 1214, + '\u328A', 1264, + '\u328B', 1276, + '\u328C', 1275, + '\u328D', 1265, + '\u328E', 1357, + '\u328F', 1222, + '\u3290', 1262, + '\u3291', 1672, + '\u3292', 1673, + '\u3293', 1674, + '\u3294', 1675, + '\u3295', 1676, + '\u3296', 1677, + '\u3297', 1678, + '\u3298', 1679, + '\u3299', 1680, + '\u329A', 1681, + '\u329B', 1228, + '\u329C', 1682, + '\u329D', 1683, + '\u329E', 1684, + '\u329F', 1685, + '\u32A0', 1686, + '\u32A1', 1687, + '\u32A2', 1688, + '\u32A3', 1689, + '\u32A4', 1566, + '\u32A5', 1567, + '\u32A6', 1568, + '\u32A7', 1690, + '\u32A8', 1691, + '\u32A9', 1692, + '\u32AA', 1693, + '\u32AB', 1694, + '\u32AC', 1695, + '\u32AD', 1696, + '\u32AE', 1697, + '\u32AF', 1698, + '\u32B0', 1699, + '\u32B1', 1700, + '\u32B2', 1701, + '\u32B3', 1702, + '\u32B4', 1703, + '\u32B5', 1704, + '\u32B6', 1705, + '\u32B7', 1706, + '\u32B8', 1707, + '\u32B9', 1708, + '\u32BA', 1709, + '\u32BB', 1710, + '\u32BC', 1711, + '\u32BD', 1712, + '\u32BE', 1713, + '\u32BF', 1714, + '\u32C0', 1715, + '\u32C1', 1716, + '\u32C2', 1717, + '\u32C3', 1718, + '\u32C4', 1719, + '\u32C5', 1720, + '\u32C6', 1721, + '\u32C7', 1722, + '\u32C8', 1723, + '\u32C9', 1724, + '\u32CA', 1725, + '\u32CB', 1726, + '\u32D0', 1727, + '\u32D1', 1728, + '\u32D2', 1729, + '\u32D3', 1730, + '\u32D4', 1731, + '\u32D5', 1732, + '\u32D6', 1733, + '\u32D7', 1734, + '\u32D8', 1735, + '\u32D9', 1736, + '\u32DA', 1737, + '\u32DB', 1738, + '\u32DC', 1739, + '\u32DD', 1740, + '\u32DE', 1741, + '\u32DF', 1742, + '\u32E0', 1743, + '\u32E1', 1744, + '\u32E2', 1745, + '\u32E3', 1746, + '\u32E4', 1747, + '\u32E5', 1748, + '\u32E6', 1749, + '\u32E7', 1750, + '\u32E8', 1751, + '\u32E9', 1752, + '\u32EA', 1753, + '\u32EB', 1754, + '\u32EC', 1755, + '\u32ED', 1756, + '\u32EE', 1757, + '\u32EF', 1758, + '\u32F0', 1759, + '\u32F1', 1760, + '\u32F2', 1761, + '\u32F3', 1762, + '\u32F4', 1763, + '\u32F5', 1764, + '\u32F6', 1765, + '\u32F7', 1766, + '\u32F8', 1767, + '\u32F9', 1768, + '\u32FA', 1769, + '\u32FB', 1770, + '\u32FC', 1771, + '\u32FD', 1772, + '\u32FE', 1773, + '\u3300', 1774, + '\u3301', 1775, + '\u3302', 1776, + '\u3303', 1777, + '\u3304', 1778, + '\u3305', 1779, + '\u3306', 1780, + '\u3307', 1781, + '\u3308', 1782, + '\u3309', 1783, + '\u330A', 1784, + '\u330B', 1785, + '\u330C', 1786, + '\u330D', 1787, + '\u330E', 1788, + '\u330F', 1789, + '\u3310', 1790, + '\u3311', 1791, + '\u3312', 1792, + '\u3313', 1793, + '\u3314', 1794, + '\u3315', 1795, + '\u3316', 1796, + '\u3317', 1797, + '\u3318', 1798, + '\u3319', 1799, + '\u331A', 1800, + '\u331B', 1801, + '\u331C', 1802, + '\u331D', 1803, + '\u331E', 1804, + '\u331F', 1805, + '\u3320', 1806, + '\u3321', 1807, + '\u3322', 1808, + '\u3323', 1809, + '\u3324', 1810, + '\u3325', 1811, + '\u3326', 1812, + '\u3327', 1813, + '\u3328', 1814, + '\u3329', 1815, + '\u332A', 1816, + '\u332B', 1817, + '\u332C', 1818, + '\u332D', 1819, + '\u332E', 1820, + '\u332F', 1821, + '\u3330', 1822, + '\u3331', 1823, + '\u3332', 1824, + '\u3333', 1825, + '\u3334', 1826, + '\u3335', 1827, + '\u3336', 1828, + '\u3337', 1829, + '\u3338', 1830, + '\u3339', 1831, + '\u333A', 1832, + '\u333B', 1833, + '\u333C', 1834, + '\u333D', 1835, + '\u333E', 1836, + '\u333F', 1837, + '\u3340', 1838, + '\u3341', 1839, + '\u3342', 1840, + '\u3343', 1841, + '\u3344', 1842, + '\u3345', 1843, + '\u3346', 1844, + '\u3347', 1845, + '\u3348', 1846, + '\u3349', 1847, + '\u334A', 1848, + '\u334B', 1849, + '\u334C', 1850, + '\u334D', 1851, + '\u334E', 1852, + '\u334F', 1853, + '\u3350', 1854, + '\u3351', 1855, + '\u3352', 1856, + '\u3353', 1857, + '\u3354', 1858, + '\u3355', 1859, + '\u3356', 1860, + '\u3357', 1861, + '\u3358', 1862, + '\u3359', 1863, + '\u335A', 1864, + '\u335B', 1865, + '\u335C', 1866, + '\u335D', 1867, + '\u335E', 1868, + '\u335F', 1869, + '\u3360', 1870, + '\u3361', 1871, + '\u3362', 1872, + '\u3363', 1873, + '\u3364', 1874, + '\u3365', 1875, + '\u3366', 1876, + '\u3367', 1877, + '\u3368', 1878, + '\u3369', 1879, + '\u336A', 1880, + '\u336B', 1881, + '\u336C', 1882, + '\u336D', 1883, + '\u336E', 1884, + '\u336F', 1885, + '\u3370', 1886, + '\u3371', 1887, + '\u3372', 1888, + '\u3373', 1889, + '\u3374', 1890, + '\u3375', 1891, + '\u3376', 1892, + '\u337B', 1893, + '\u337C', 1894, + '\u337D', 1895, + '\u337E', 1896, + '\u337F', 1897, + '\u3380', 1898, + '\u3381', 1899, + '\u3382', 1900, + '\u3383', 1901, + '\u3384', 1902, + '\u3385', 1903, + '\u3386', 1904, + '\u3387', 1905, + '\u3388', 1906, + '\u3389', 1907, + '\u338A', 1908, + '\u338B', 1909, + '\u338C', 1910, + '\u338D', 1911, + '\u338E', 1912, + '\u338F', 1913, + '\u3390', 1914, + '\u3391', 1915, + '\u3392', 1916, + '\u3393', 1917, + '\u3394', 1918, + '\u3395', 1919, + '\u3396', 1920, + '\u3397', 1921, + '\u3398', 1922, + '\u3399', 1923, + '\u339A', 1924, + '\u339B', 1925, + '\u339C', 1926, + '\u339D', 1927, + '\u339E', 1928, + '\u339F', 1929, + '\u33A0', 1930, + '\u33A1', 1931, + '\u33A2', 1932, + '\u33A3', 1933, + '\u33A4', 1934, + '\u33A5', 1935, + '\u33A6', 1936, + '\u33A7', 1937, + '\u33A8', 1938, + '\u33A9', 1939, + '\u33AA', 1940, + '\u33AB', 1941, + '\u33AC', 1942, + '\u33AD', 1943, + '\u33AE', 1944, + '\u33AF', 1945, + '\u33B0', 1946, + '\u33B1', 1947, + '\u33B2', 1948, + '\u33B3', 1949, + '\u33B4', 1950, + '\u33B5', 1951, + '\u33B6', 1952, + '\u33B7', 1953, + '\u33B8', 1954, + '\u33B9', 1955, + '\u33BA', 1956, + '\u33BB', 1957, + '\u33BC', 1958, + '\u33BD', 1959, + '\u33BE', 1960, + '\u33BF', 1961, + '\u33C0', 1962, + '\u33C1', 1963, + '\u33C2', 1964, + '\u33C3', 1965, + '\u33C4', 1966, + '\u33C5', 1967, + '\u33C6', 1968, + '\u33C7', 1969, + '\u33C8', 1970, + '\u33C9', 1971, + '\u33CA', 1972, + '\u33CB', 1973, + '\u33CC', 1974, + '\u33CD', 1975, + '\u33CE', 1976, + '\u33CF', 1977, + '\u33D0', 1978, + '\u33D1', 1979, + '\u33D2', 1980, + '\u33D3', 1981, + '\u33D4', 1982, + '\u33D5', 1983, + '\u33D6', 1984, + '\u33D7', 1985, + '\u33D8', 1986, + '\u33D9', 1987, + '\u33DA', 1988, + '\u33DB', 1989, + '\u33DC', 1990, + '\u33DD', 1991, + '\u33E0', 1992, + '\u33E1', 1993, + '\u33E2', 1994, + '\u33E3', 1995, + '\u33E4', 1996, + '\u33E5', 1997, + '\u33E6', 1998, + '\u33E7', 1999, + '\u33E8', 2000, + '\u33E9', 2001, + '\u33EA', 2002, + '\u33EB', 2003, + '\u33EC', 2004, + '\u33ED', 2005, + '\u33EE', 2006, + '\u33EF', 2007, + '\u33F0', 2008, + '\u33F1', 2009, + '\u33F2', 2010, + '\u33F3', 2011, + '\u33F4', 2012, + '\u33F5', 2013, + '\u33F6', 2014, + '\u33F7', 2015, + '\u33F8', 2016, + '\u33F9', 2017, + '\u33FA', 2018, + '\u33FB', 2019, + '\u33FC', 2020, + '\u33FD', 2021, + '\u33FE', 2022, + '\uF900', 2023, + '\uF901', 2024, + '\uF902', 1349, + '\uF903', 2025, + '\uF904', 2026, + '\uF905', 2027, + '\uF906', 2028, + '\uF907', 1403, + '\uF908', 1403, + '\uF909', 2029, + '\uF90A', 1357, + '\uF90B', 2030, + '\uF90C', 2031, + '\uF90D', 2032, + '\uF90E', 2033, + '\uF90F', 2034, + '\uF910', 2035, + '\uF911', 2036, + '\uF912', 2037, + '\uF913', 2038, + '\uF914', 2039, + '\uF915', 2040, + '\uF916', 2041, + '\uF917', 2042, + '\uF918', 2043, + '\uF919', 2044, + '\uF91A', 2045, + '\uF91B', 2046, + '\uF91C', 2047, + '\uF91D', 2048, + '\uF91E', 2049, + '\uF91F', 2050, + '\uF920', 2051, + '\uF921', 2052, + '\uF922', 2053, + '\uF923', 2054, + '\uF924', 2055, + '\uF925', 2056, + '\uF926', 2057, + '\uF927', 2058, + '\uF928', 2059, + '\uF929', 2060, + '\uF92A', 2061, + '\uF92B', 2062, + '\uF92C', 2063, + '\uF92D', 2064, + '\uF92E', 2065, + '\uF92F', 2066, + '\uF930', 2067, + '\uF931', 2068, + '\uF932', 2069, + '\uF933', 2070, + '\uF934', 1315, + '\uF935', 2071, + '\uF936', 2072, + '\uF937', 2073, + '\uF938', 2074, + '\uF939', 2075, + '\uF93A', 2076, + '\uF93B', 2077, + '\uF93C', 2078, + '\uF93D', 2079, + '\uF93E', 2080, + '\uF93F', 2081, + '\uF940', 1388, + '\uF941', 2082, + '\uF942', 2083, + '\uF943', 2084, + '\uF944', 2085, + '\uF945', 2086, + '\uF946', 2087, + '\uF947', 2088, + '\uF948', 2089, + '\uF949', 2090, + '\uF94A', 2091, + '\uF94B', 2092, + '\uF94C', 2093, + '\uF94D', 2094, + '\uF94E', 2095, + '\uF94F', 2096, + '\uF950', 2097, + '\uF951', 2098, + '\uF952', 2099, + '\uF953', 2100, + '\uF954', 2101, + '\uF955', 2102, + '\uF956', 2103, + '\uF957', 2104, + '\uF958', 2105, + '\uF959', 2106, + '\uF95A', 2107, + '\uF95B', 2108, + '\uF95C', 2039, + '\uF95D', 2109, + '\uF95E', 2110, + '\uF95F', 2111, + '\uF960', 2112, + '\uF961', 2113, + '\uF962', 2114, + '\uF963', 2115, + '\uF964', 2116, + '\uF965', 2117, + '\uF966', 2118, + '\uF967', 2119, + '\uF968', 2120, + '\uF969', 2121, + '\uF96A', 2122, + '\uF96B', 2123, + '\uF96C', 2124, + '\uF96D', 2125, + '\uF96E', 2126, + '\uF96F', 2127, + '\uF970', 2128, + '\uF971', 1351, + '\uF972', 2129, + '\uF973', 2130, + '\uF974', 2131, + '\uF975', 2132, + '\uF976', 2133, + '\uF977', 2134, + '\uF978', 2135, + '\uF979', 2136, + '\uF97A', 2137, + '\uF97B', 2138, + '\uF97C', 2139, + '\uF97D', 2140, + '\uF97E', 2141, + '\uF97F', 2142, + '\uF980', 2143, + '\uF981', 1228, + '\uF982', 2144, + '\uF983', 2145, + '\uF984', 2146, + '\uF985', 2147, + '\uF986', 2148, + '\uF987', 2149, + '\uF988', 2150, + '\uF989', 2151, + '\uF98A', 1209, + '\uF98B', 2152, + '\uF98C', 2153, + '\uF98D', 2154, + '\uF98E', 2155, + '\uF98F', 2156, + '\uF990', 2157, + '\uF991', 2158, + '\uF992', 2159, + '\uF993', 2160, + '\uF994', 2161, + '\uF995', 2162, + '\uF996', 2163, + '\uF997', 2164, + '\uF998', 2165, + '\uF999', 2166, + '\uF99A', 2167, + '\uF99B', 2168, + '\uF99C', 2169, + '\uF99D', 2170, + '\uF99E', 2171, + '\uF99F', 2172, + '\uF9A0', 2173, + '\uF9A1', 2127, + '\uF9A2', 2174, + '\uF9A3', 2175, + '\uF9A4', 2176, + '\uF9A5', 2177, + '\uF9A6', 2178, + '\uF9A7', 2179, + '\uF9A8', 2180, + '\uF9A9', 2181, + '\uF9AA', 2111, + '\uF9AB', 2182, + '\uF9AC', 2183, + '\uF9AD', 2184, + '\uF9AE', 2185, + '\uF9AF', 2186, + '\uF9B0', 2187, + '\uF9B1', 2188, + '\uF9B2', 2189, + '\uF9B3', 2190, + '\uF9B4', 2191, + '\uF9B5', 2192, + '\uF9B6', 2193, + '\uF9B7', 2194, + '\uF9B8', 2195, + '\uF9B9', 2196, + '\uF9BA', 2197, + '\uF9BB', 2198, + '\uF9BC', 2199, + '\uF9BD', 2200, + '\uF9BE', 2201, + '\uF9BF', 2039, + '\uF9C0', 2202, + '\uF9C1', 2203, + '\uF9C2', 2204, + '\uF9C3', 2205, + '\uF9C4', 1402, + '\uF9C5', 2206, + '\uF9C6', 2207, + '\uF9C7', 2208, + '\uF9C8', 2209, + '\uF9C9', 2210, + '\uF9CA', 2211, + '\uF9CB', 2212, + '\uF9CC', 2213, + '\uF9CD', 2214, + '\uF9CE', 2215, + '\uF9CF', 2216, + '\uF9D0', 2217, + '\uF9D1', 1669, + '\uF9D2', 2218, + '\uF9D3', 2219, + '\uF9D4', 2220, + '\uF9D5', 2221, + '\uF9D6', 2222, + '\uF9D7', 2223, + '\uF9D8', 2224, + '\uF9D9', 2225, + '\uF9DA', 2226, + '\uF9DB', 2113, + '\uF9DC', 2227, + '\uF9DD', 2228, + '\uF9DE', 2229, + '\uF9DF', 2230, + '\uF9E0', 2231, + '\uF9E1', 2232, + '\uF9E2', 2233, + '\uF9E3', 2234, + '\uF9E4', 2235, + '\uF9E5', 2236, + '\uF9E6', 2237, + '\uF9E7', 2238, + '\uF9E8', 2239, + '\uF9E9', 1356, + '\uF9EA', 2240, + '\uF9EB', 2241, + '\uF9EC', 2242, + '\uF9ED', 2243, + '\uF9EE', 2244, + '\uF9EF', 2245, + '\uF9F0', 2246, + '\uF9F1', 2247, + '\uF9F2', 2248, + '\uF9F3', 2249, + '\uF9F4', 2250, + '\uF9F5', 2251, + '\uF9F6', 2252, + '\uF9F7', 1307, + '\uF9F8', 2253, + '\uF9F9', 2254, + '\uF9FA', 2255, + '\uF9FB', 2256, + '\uF9FC', 2257, + '\uF9FD', 2258, + '\uF9FE', 2259, + '\uF9FF', 2260, + '\uFA00', 2261, + '\uFA01', 2262, + '\uFA02', 2263, + '\uFA03', 2264, + '\uFA04', 2265, + '\uFA05', 2266, + '\uFA06', 2267, + '\uFA07', 2268, + '\uFA08', 1334, + '\uFA09', 2269, + '\uFA0A', 1337, + '\uFA0B', 2270, + '\uFA0C', 2271, + '\uFA0D', 2272, + '\uFA10', 2273, + '\uFA12', 2274, + '\uFA15', 2275, + '\uFA16', 2276, + '\uFA17', 2277, + '\uFA18', 2278, + '\uFA19', 2279, + '\uFA1A', 2280, + '\uFA1B', 2281, + '\uFA1C', 2282, + '\uFA1D', 2283, + '\uFA1E', 1314, + '\uFA20', 2284, + '\uFA22', 2285, + '\uFA25', 2286, + '\uFA26', 2287, + '\uFA2A', 2288, + '\uFA2B', 2289, + '\uFA2C', 2290, + '\uFA2D', 2291, + '\uFA30', 2292, + '\uFA31', 2293, + '\uFA32', 2294, + '\uFA33', 2295, + '\uFA34', 2296, + '\uFA35', 2297, + '\uFA36', 2298, + '\uFA37', 2299, + '\uFA38', 2300, + '\uFA39', 2301, + '\uFA3A', 2302, + '\uFA3B', 2303, + '\uFA3C', 1235, + '\uFA3D', 2304, + '\uFA3E', 2305, + '\uFA3F', 2306, + '\uFA40', 2307, + '\uFA41', 2308, + '\uFA42', 2309, + '\uFA43', 2310, + '\uFA44', 2311, + '\uFA45', 2312, + '\uFA46', 2313, + '\uFA47', 2314, + '\uFA48', 2315, + '\uFA49', 2316, + '\uFA4A', 2317, + '\uFA4B', 2318, + '\uFA4C', 1674, + '\uFA4D', 2319, + '\uFA4E', 2320, + '\uFA4F', 2321, + '\uFA50', 2322, + '\uFA51', 1678, + '\uFA52', 2323, + '\uFA53', 2324, + '\uFA54', 2325, + '\uFA55', 2326, + '\uFA56', 2327, + '\uFA57', 2163, + '\uFA58', 2328, + '\uFA59', 2329, + '\uFA5A', 2330, + '\uFA5B', 2331, + '\uFA5C', 2332, + '\uFA5D', 2333, + '\uFA5E', 2333, + '\uFA5F', 2334, + '\uFA60', 2335, + '\uFA61', 2336, + '\uFA62', 2337, + '\uFA63', 2338, + '\uFA64', 2339, + '\uFA65', 2340, + '\uFA66', 2341, + '\uFA67', 2286, + '\uFA68', 2342, + '\uFA69', 2343, + '\uFA6A', 2344, + '\uFB00', 2345, + '\uFB01', 2346, + '\uFB02', 2347, + '\uFB03', 2348, + '\uFB04', 2349, + '\uFB05', 2350, + '\uFB06', 2350, + '\uFB13', 2351, + '\uFB14', 2352, + '\uFB15', 2353, + '\uFB16', 2354, + '\uFB17', 2355, + '\uFB1D', 2356, + '\uFB1F', 2357, + '\uFB20', 2358, + '\uFB21', 994, + '\uFB22', 997, + '\uFB23', 2359, + '\uFB24', 2360, + '\uFB25', 2361, + '\uFB26', 2362, + '\uFB27', 2363, + '\uFB28', 2364, + '\uFB29', 958, + '\uFB2A', 2365, + '\uFB2B', 2366, + '\uFB2C', 2367, + '\uFB2D', 2368, + '\uFB2E', 2369, + '\uFB2F', 2370, + '\uFB30', 2371, + '\uFB31', 2372, + '\uFB32', 2373, + '\uFB33', 2374, + '\uFB34', 2375, + '\uFB35', 2376, + '\uFB36', 2377, + '\uFB38', 2378, + '\uFB39', 2379, + '\uFB3A', 2380, + '\uFB3B', 2381, + '\uFB3C', 2382, + '\uFB3E', 2383, + '\uFB40', 2384, + '\uFB41', 2385, + '\uFB43', 2386, + '\uFB44', 2387, + '\uFB46', 2388, + '\uFB47', 2389, + '\uFB48', 2390, + '\uFB49', 2391, + '\uFB4A', 2392, + '\uFB4B', 2393, + '\uFB4C', 2394, + '\uFB4D', 2395, + '\uFB4E', 2396, + '\uFB4F', 2397, + '\uFB50', 2398, + '\uFB51', 2398, + '\uFB52', 2399, + '\uFB53', 2399, + '\uFB54', 2399, + '\uFB55', 2399, + '\uFB56', 2400, + '\uFB57', 2400, + '\uFB58', 2400, + '\uFB59', 2400, + '\uFB5A', 2401, + '\uFB5B', 2401, + '\uFB5C', 2401, + '\uFB5D', 2401, + '\uFB5E', 2402, + '\uFB5F', 2402, + '\uFB60', 2402, + '\uFB61', 2402, + '\uFB62', 2403, + '\uFB63', 2403, + '\uFB64', 2403, + '\uFB65', 2403, + '\uFB66', 2404, + '\uFB67', 2404, + '\uFB68', 2404, + '\uFB69', 2404, + '\uFB6A', 2405, + '\uFB6B', 2405, + '\uFB6C', 2405, + '\uFB6D', 2405, + '\uFB6E', 2406, + '\uFB6F', 2406, + '\uFB70', 2406, + '\uFB71', 2406, + '\uFB72', 2407, + '\uFB73', 2407, + '\uFB74', 2407, + '\uFB75', 2407, + '\uFB76', 2408, + '\uFB77', 2408, + '\uFB78', 2408, + '\uFB79', 2408, + '\uFB7A', 2409, + '\uFB7B', 2409, + '\uFB7C', 2409, + '\uFB7D', 2409, + '\uFB7E', 2410, + '\uFB7F', 2410, + '\uFB80', 2410, + '\uFB81', 2410, + '\uFB82', 2411, + '\uFB83', 2411, + '\uFB84', 2412, + '\uFB85', 2412, + '\uFB86', 2413, + '\uFB87', 2413, + '\uFB88', 2414, + '\uFB89', 2414, + '\uFB8A', 2415, + '\uFB8B', 2415, + '\uFB8C', 2416, + '\uFB8D', 2416, + '\uFB8E', 2417, + '\uFB8F', 2417, + '\uFB90', 2417, + '\uFB91', 2417, + '\uFB92', 2418, + '\uFB93', 2418, + '\uFB94', 2418, + '\uFB95', 2418, + '\uFB96', 2419, + '\uFB97', 2419, + '\uFB98', 2419, + '\uFB99', 2419, + '\uFB9A', 2420, + '\uFB9B', 2420, + '\uFB9C', 2420, + '\uFB9D', 2420, + '\uFB9E', 2421, + '\uFB9F', 2421, + '\uFBA0', 2422, + '\uFBA1', 2422, + '\uFBA2', 2422, + '\uFBA3', 2422, + '\uFBA4', 404, + '\uFBA5', 404, + '\uFBA6', 2423, + '\uFBA7', 2423, + '\uFBA8', 2423, + '\uFBA9', 2423, + '\uFBAA', 2424, + '\uFBAB', 2424, + '\uFBAC', 2424, + '\uFBAD', 2424, + '\uFBAE', 2425, + '\uFBAF', 2425, + '\uFBB0', 406, + '\uFBB1', 406, + '\uFBD3', 2426, + '\uFBD4', 2426, + '\uFBD5', 2426, + '\uFBD6', 2426, + '\uFBD7', 2427, + '\uFBD8', 2427, + '\uFBD9', 2428, + '\uFBDA', 2428, + '\uFBDB', 2429, + '\uFBDC', 2429, + '\uFBDD', 402, + '\uFBDE', 2430, + '\uFBDF', 2430, + '\uFBE0', 2431, + '\uFBE1', 2431, + '\uFBE2', 2432, + '\uFBE3', 2432, + '\uFBE4', 2433, + '\uFBE5', 2433, + '\uFBE6', 2433, + '\uFBE7', 2433, + '\uFBE8', 2434, + '\uFBE9', 2434, + '\uFBEA', 2435, + '\uFBEB', 2435, + '\uFBEC', 2436, + '\uFBED', 2436, + '\uFBEE', 2437, + '\uFBEF', 2437, + '\uFBF0', 2438, + '\uFBF1', 2438, + '\uFBF2', 2439, + '\uFBF3', 2439, + '\uFBF4', 2440, + '\uFBF5', 2440, + '\uFBF6', 2441, + '\uFBF7', 2441, + '\uFBF8', 2441, + '\uFBF9', 2442, + '\uFBFA', 2442, + '\uFBFB', 2442, + '\uFBFC', 2443, + '\uFBFD', 2443, + '\uFBFE', 2443, + '\uFBFF', 2443, + '\uFC00', 2444, + '\uFC01', 2445, + '\uFC02', 2446, + '\uFC03', 2442, + '\uFC04', 2447, + '\uFC05', 2448, + '\uFC06', 2449, + '\uFC07', 2450, + '\uFC08', 2451, + '\uFC09', 2452, + '\uFC0A', 2453, + '\uFC0B', 2454, + '\uFC0C', 2455, + '\uFC0D', 2456, + '\uFC0E', 2457, + '\uFC0F', 2458, + '\uFC10', 2459, + '\uFC11', 2460, + '\uFC12', 2461, + '\uFC13', 2462, + '\uFC14', 2463, + '\uFC15', 2464, + '\uFC16', 2465, + '\uFC17', 2466, + '\uFC18', 2467, + '\uFC19', 2468, + '\uFC1A', 2469, + '\uFC1B', 2470, + '\uFC1C', 2471, + '\uFC1D', 2472, + '\uFC1E', 2473, + '\uFC1F', 2474, + '\uFC20', 2475, + '\uFC21', 2476, + '\uFC22', 2477, + '\uFC23', 2478, + '\uFC24', 2479, + '\uFC25', 2480, + '\uFC26', 2481, + '\uFC27', 2482, + '\uFC28', 2483, + '\uFC29', 2484, + '\uFC2A', 2485, + '\uFC2B', 2486, + '\uFC2C', 2487, + '\uFC2D', 2488, + '\uFC2E', 2489, + '\uFC2F', 2490, + '\uFC30', 2491, + '\uFC31', 2492, + '\uFC32', 2493, + '\uFC33', 2494, + '\uFC34', 2495, + '\uFC35', 2496, + '\uFC36', 2497, + '\uFC37', 2498, + '\uFC38', 2499, + '\uFC39', 2500, + '\uFC3A', 2501, + '\uFC3B', 2502, + '\uFC3C', 2503, + '\uFC3D', 2504, + '\uFC3E', 2505, + '\uFC3F', 2506, + '\uFC40', 2507, + '\uFC41', 2508, + '\uFC42', 2509, + '\uFC43', 2510, + '\uFC44', 2511, + '\uFC45', 2512, + '\uFC46', 2513, + '\uFC47', 2514, + '\uFC48', 2515, + '\uFC49', 2516, + '\uFC4A', 2517, + '\uFC4B', 2518, + '\uFC4C', 2519, + '\uFC4D', 2520, + '\uFC4E', 2521, + '\uFC4F', 2522, + '\uFC50', 2523, + '\uFC51', 2524, + '\uFC52', 2525, + '\uFC53', 2526, + '\uFC54', 2527, + '\uFC55', 2528, + '\uFC56', 2529, + '\uFC57', 2530, + '\uFC58', 2531, + '\uFC59', 2532, + '\uFC5A', 2533, + '\uFC5B', 2534, + '\uFC5C', 2535, + '\uFC5D', 2536, + '\uFC5E', 2537, + '\uFC5F', 2538, + '\uFC60', 2539, + '\uFC61', 2540, + '\uFC62', 2541, + '\uFC63', 2542, + '\uFC64', 2543, + '\uFC65', 2544, + '\uFC66', 2446, + '\uFC67', 2545, + '\uFC68', 2442, + '\uFC69', 2447, + '\uFC6A', 2546, + '\uFC6B', 2547, + '\uFC6C', 2451, + '\uFC6D', 2548, + '\uFC6E', 2452, + '\uFC6F', 2453, + '\uFC70', 2549, + '\uFC71', 2550, + '\uFC72', 2457, + '\uFC73', 2551, + '\uFC74', 2458, + '\uFC75', 2459, + '\uFC76', 2552, + '\uFC77', 2553, + '\uFC78', 2461, + '\uFC79', 2554, + '\uFC7A', 2462, + '\uFC7B', 2463, + '\uFC7C', 2492, + '\uFC7D', 2493, + '\uFC7E', 2496, + '\uFC7F', 2497, + '\uFC80', 2498, + '\uFC81', 2502, + '\uFC82', 2503, + '\uFC83', 2504, + '\uFC84', 2505, + '\uFC85', 2509, + '\uFC86', 2510, + '\uFC87', 2511, + '\uFC88', 2555, + '\uFC89', 2515, + '\uFC8A', 2556, + '\uFC8B', 2557, + '\uFC8C', 2521, + '\uFC8D', 2558, + '\uFC8E', 2522, + '\uFC8F', 2523, + '\uFC90', 2536, + '\uFC91', 2559, + '\uFC92', 2560, + '\uFC93', 2531, + '\uFC94', 2561, + '\uFC95', 2532, + '\uFC96', 2533, + '\uFC97', 2444, + '\uFC98', 2445, + '\uFC99', 2562, + '\uFC9A', 2446, + '\uFC9B', 2563, + '\uFC9C', 2448, + '\uFC9D', 2449, + '\uFC9E', 2450, + '\uFC9F', 2451, + '\uFCA0', 2564, + '\uFCA1', 2454, + '\uFCA2', 2455, + '\uFCA3', 2456, + '\uFCA4', 2457, + '\uFCA5', 2565, + '\uFCA6', 2461, + '\uFCA7', 2464, + '\uFCA8', 2465, + '\uFCA9', 2466, + '\uFCAA', 2467, + '\uFCAB', 2468, + '\uFCAC', 2470, + '\uFCAD', 2471, + '\uFCAE', 2472, + '\uFCAF', 2473, + '\uFCB0', 2474, + '\uFCB1', 2475, + '\uFCB2', 2566, + '\uFCB3', 2476, + '\uFCB4', 2477, + '\uFCB5', 2478, + '\uFCB6', 2479, + '\uFCB7', 2480, + '\uFCB8', 2481, + '\uFCB9', 2483, + '\uFCBA', 2484, + '\uFCBB', 2485, + '\uFCBC', 2486, + '\uFCBD', 2487, + '\uFCBE', 2488, + '\uFCBF', 2489, + '\uFCC0', 2490, + '\uFCC1', 2491, + '\uFCC2', 2494, + '\uFCC3', 2495, + '\uFCC4', 2499, + '\uFCC5', 2500, + '\uFCC6', 2501, + '\uFCC7', 2502, + '\uFCC8', 2503, + '\uFCC9', 2506, + '\uFCCA', 2507, + '\uFCCB', 2508, + '\uFCCC', 2509, + '\uFCCD', 2567, + '\uFCCE', 2512, + '\uFCCF', 2513, + '\uFCD0', 2514, + '\uFCD1', 2515, + '\uFCD2', 2518, + '\uFCD3', 2519, + '\uFCD4', 2520, + '\uFCD5', 2521, + '\uFCD6', 2568, + '\uFCD7', 2524, + '\uFCD8', 2525, + '\uFCD9', 2569, + '\uFCDA', 2528, + '\uFCDB', 2529, + '\uFCDC', 2530, + '\uFCDD', 2531, + '\uFCDE', 2570, + '\uFCDF', 2446, + '\uFCE0', 2563, + '\uFCE1', 2451, + '\uFCE2', 2564, + '\uFCE3', 2457, + '\uFCE4', 2565, + '\uFCE5', 2461, + '\uFCE6', 2571, + '\uFCE7', 2474, + '\uFCE8', 2572, + '\uFCE9', 2573, + '\uFCEA', 2574, + '\uFCEB', 2502, + '\uFCEC', 2503, + '\uFCED', 2509, + '\uFCEE', 2521, + '\uFCEF', 2568, + '\uFCF0', 2531, + '\uFCF1', 2570, + '\uFCF2', 2575, + '\uFCF3', 2576, + '\uFCF4', 2577, + '\uFCF5', 2578, + '\uFCF6', 2579, + '\uFCF7', 2580, + '\uFCF8', 2581, + '\uFCF9', 2582, + '\uFCFA', 2583, + '\uFCFB', 2584, + '\uFCFC', 2585, + '\uFCFD', 2586, + '\uFCFE', 2587, + '\uFCFF', 2588, + '\uFD00', 2589, + '\uFD01', 2590, + '\uFD02', 2591, + '\uFD03', 2592, + '\uFD04', 2593, + '\uFD05', 2594, + '\uFD06', 2595, + '\uFD07', 2596, + '\uFD08', 2597, + '\uFD09', 2598, + '\uFD0A', 2599, + '\uFD0B', 2600, + '\uFD0C', 2573, + '\uFD0D', 2601, + '\uFD0E', 2602, + '\uFD0F', 2603, + '\uFD10', 2604, + '\uFD11', 2578, + '\uFD12', 2579, + '\uFD13', 2580, + '\uFD14', 2581, + '\uFD15', 2582, + '\uFD16', 2583, + '\uFD17', 2584, + '\uFD18', 2585, + '\uFD19', 2586, + '\uFD1A', 2587, + '\uFD1B', 2588, + '\uFD1C', 2589, + '\uFD1D', 2590, + '\uFD1E', 2591, + '\uFD1F', 2592, + '\uFD20', 2593, + '\uFD21', 2594, + '\uFD22', 2595, + '\uFD23', 2596, + '\uFD24', 2597, + '\uFD25', 2598, + '\uFD26', 2599, + '\uFD27', 2600, + '\uFD28', 2573, + '\uFD29', 2601, + '\uFD2A', 2602, + '\uFD2B', 2603, + '\uFD2C', 2604, + '\uFD2D', 2598, + '\uFD2E', 2599, + '\uFD2F', 2600, + '\uFD30', 2573, + '\uFD31', 2572, + '\uFD32', 2574, + '\uFD33', 2482, + '\uFD34', 2471, + '\uFD35', 2472, + '\uFD36', 2473, + '\uFD37', 2598, + '\uFD38', 2599, + '\uFD39', 2600, + '\uFD3A', 2482, + '\uFD3B', 2483, + '\uFD3C', 2605, + '\uFD3D', 2605, + '\uFD50', 2606, + '\uFD51', 2607, + '\uFD52', 2607, + '\uFD53', 2608, + '\uFD54', 2609, + '\uFD55', 2610, + '\uFD56', 2611, + '\uFD57', 2612, + '\uFD58', 2613, + '\uFD59', 2613, + '\uFD5A', 2614, + '\uFD5B', 2615, + '\uFD5C', 2616, + '\uFD5D', 2617, + '\uFD5E', 2618, + '\uFD5F', 2619, + '\uFD60', 2619, + '\uFD61', 2620, + '\uFD62', 2621, + '\uFD63', 2621, + '\uFD64', 2622, + '\uFD65', 2622, + '\uFD66', 2623, + '\uFD67', 2624, + '\uFD68', 2624, + '\uFD69', 2625, + '\uFD6A', 2626, + '\uFD6B', 2626, + '\uFD6C', 2627, + '\uFD6D', 2627, + '\uFD6E', 2628, + '\uFD6F', 2629, + '\uFD70', 2629, + '\uFD71', 2630, + '\uFD72', 2630, + '\uFD73', 2631, + '\uFD74', 2632, + '\uFD75', 2633, + '\uFD76', 2634, + '\uFD77', 2634, + '\uFD78', 2635, + '\uFD79', 2636, + '\uFD7A', 2637, + '\uFD7B', 2638, + '\uFD7C', 2639, + '\uFD7D', 2639, + '\uFD7E', 2640, + '\uFD7F', 2641, + '\uFD80', 2642, + '\uFD81', 2643, + '\uFD82', 2644, + '\uFD83', 2645, + '\uFD84', 2645, + '\uFD85', 2646, + '\uFD86', 2646, + '\uFD87', 2647, + '\uFD88', 2647, + '\uFD89', 2648, + '\uFD8A', 2649, + '\uFD8B', 2650, + '\uFD8C', 2651, + '\uFD8D', 2652, + '\uFD8E', 2653, + '\uFD8F', 2654, + '\uFD92', 2655, + '\uFD93', 2656, + '\uFD94', 2657, + '\uFD95', 2658, + '\uFD96', 2659, + '\uFD97', 2660, + '\uFD98', 2660, + '\uFD99', 2661, + '\uFD9A', 2662, + '\uFD9B', 2663, + '\uFD9C', 2664, + '\uFD9D', 2664, + '\uFD9E', 2665, + '\uFD9F', 2666, + '\uFDA0', 2667, + '\uFDA1', 2668, + '\uFDA2', 2669, + '\uFDA3', 2670, + '\uFDA4', 2671, + '\uFDA5', 2672, + '\uFDA6', 2673, + '\uFDA7', 2674, + '\uFDA8', 2675, + '\uFDA9', 2676, + '\uFDAA', 2677, + '\uFDAB', 2678, + '\uFDAC', 2679, + '\uFDAD', 2680, + '\uFDAE', 2681, + '\uFDAF', 2682, + '\uFDB0', 2683, + '\uFDB1', 2684, + '\uFDB2', 2685, + '\uFDB3', 2686, + '\uFDB4', 2640, + '\uFDB5', 2642, + '\uFDB6', 2687, + '\uFDB7', 2688, + '\uFDB8', 2689, + '\uFDB9', 2690, + '\uFDBA', 2691, + '\uFDBB', 2692, + '\uFDBC', 2691, + '\uFDBD', 2689, + '\uFDBE', 2693, + '\uFDBF', 2694, + '\uFDC0', 2695, + '\uFDC1', 2696, + '\uFDC2', 2697, + '\uFDC3', 2692, + '\uFDC4', 2633, + '\uFDC5', 2623, + '\uFDC6', 2698, + '\uFDC7', 2699, + '\uFDF0', 2700, + '\uFDF1', 2701, + '\uFDF2', 2702, + '\uFDF3', 2703, + '\uFDF4', 2704, + '\uFDF5', 2705, + '\uFDF6', 2706, + '\uFDF7', 2707, + '\uFDF8', 2708, + '\uFDF9', 2709, + '\uFDFA', 2710, + '\uFDFB', 2711, + '\uFDFC', 2712, + '\uFE30', 938, + '\uFE31', 2713, + '\uFE32', 2714, + '\uFE33', 2715, + '\uFE34', 2715, + '\uFE35', 961, + '\uFE36', 962, + '\uFE37', 2716, + '\uFE38', 2717, + '\uFE39', 2718, + '\uFE3A', 2719, + '\uFE3B', 2720, + '\uFE3C', 2721, + '\uFE3D', 2722, + '\uFE3E', 2723, + '\uFE3F', 1088, + '\uFE40', 1089, + '\uFE41', 2724, + '\uFE42', 2725, + '\uFE43', 2726, + '\uFE44', 2727, + '\uFE49', 945, + '\uFE4A', 945, + '\uFE4B', 945, + '\uFE4C', 945, + '\uFE4D', 2715, + '\uFE4E', 2715, + '\uFE4F', 2715, + '\uFE50', 2728, + '\uFE51', 2729, + '\uFE52', 937, + '\uFE54', 309, + '\uFE55', 2730, + '\uFE56', 2731, + '\uFE57', 2732, + '\uFE58', 2713, + '\uFE59', 961, + '\uFE5A', 962, + '\uFE5B', 2716, + '\uFE5C', 2717, + '\uFE5D', 2718, + '\uFE5E', 2719, + '\uFE5F', 2733, + '\uFE60', 2734, + '\uFE61', 2735, + '\uFE62', 958, + '\uFE63', 2736, + '\uFE64', 2737, + '\uFE65', 2738, + '\uFE66', 960, + '\uFE68', 2739, + '\uFE69', 2740, + '\uFE6A', 2741, + '\uFE6B', 2742, + '\uFE70', 2743, + '\uFE71', 2744, + '\uFE72', 2745, + '\uFE74', 2746, + '\uFE76', 2747, + '\uFE77', 2748, + '\uFE78', 2749, + '\uFE79', 2750, + '\uFE7A', 2751, + '\uFE7B', 2752, + '\uFE7C', 2753, + '\uFE7D', 2754, + '\uFE7E', 2755, + '\uFE7F', 2756, + '\uFE80', 2757, + '\uFE81', 395, + '\uFE82', 395, + '\uFE83', 396, + '\uFE84', 396, + '\uFE85', 397, + '\uFE86', 397, + '\uFE87', 398, + '\uFE88', 398, + '\uFE89', 399, + '\uFE8A', 399, + '\uFE8B', 399, + '\uFE8C', 399, + '\uFE8D', 2758, + '\uFE8E', 2758, + '\uFE8F', 2759, + '\uFE90', 2759, + '\uFE91', 2759, + '\uFE92', 2759, + '\uFE93', 2760, + '\uFE94', 2760, + '\uFE95', 2761, + '\uFE96', 2761, + '\uFE97', 2761, + '\uFE98', 2761, + '\uFE99', 2762, + '\uFE9A', 2762, + '\uFE9B', 2762, + '\uFE9C', 2762, + '\uFE9D', 2763, + '\uFE9E', 2763, + '\uFE9F', 2763, + '\uFEA0', 2763, + '\uFEA1', 2764, + '\uFEA2', 2764, + '\uFEA3', 2764, + '\uFEA4', 2764, + '\uFEA5', 2765, + '\uFEA6', 2765, + '\uFEA7', 2765, + '\uFEA8', 2765, + '\uFEA9', 2766, + '\uFEAA', 2766, + '\uFEAB', 2767, + '\uFEAC', 2767, + '\uFEAD', 2768, + '\uFEAE', 2768, + '\uFEAF', 2769, + '\uFEB0', 2769, + '\uFEB1', 2770, + '\uFEB2', 2770, + '\uFEB3', 2770, + '\uFEB4', 2770, + '\uFEB5', 2771, + '\uFEB6', 2771, + '\uFEB7', 2771, + '\uFEB8', 2771, + '\uFEB9', 2772, + '\uFEBA', 2772, + '\uFEBB', 2772, + '\uFEBC', 2772, + '\uFEBD', 2773, + '\uFEBE', 2773, + '\uFEBF', 2773, + '\uFEC0', 2773, + '\uFEC1', 2774, + '\uFEC2', 2774, + '\uFEC3', 2774, + '\uFEC4', 2774, + '\uFEC5', 2775, + '\uFEC6', 2775, + '\uFEC7', 2775, + '\uFEC8', 2775, + '\uFEC9', 2776, + '\uFECA', 2776, + '\uFECB', 2776, + '\uFECC', 2776, + '\uFECD', 2777, + '\uFECE', 2777, + '\uFECF', 2777, + '\uFED0', 2777, + '\uFED1', 2778, + '\uFED2', 2778, + '\uFED3', 2778, + '\uFED4', 2778, + '\uFED5', 2779, + '\uFED6', 2779, + '\uFED7', 2779, + '\uFED8', 2779, + '\uFED9', 2780, + '\uFEDA', 2780, + '\uFEDB', 2780, + '\uFEDC', 2780, + '\uFEDD', 2781, + '\uFEDE', 2781, + '\uFEDF', 2781, + '\uFEE0', 2781, + '\uFEE1', 2782, + '\uFEE2', 2782, + '\uFEE3', 2782, + '\uFEE4', 2782, + '\uFEE5', 2783, + '\uFEE6', 2783, + '\uFEE7', 2783, + '\uFEE8', 2783, + '\uFEE9', 2784, + '\uFEEA', 2784, + '\uFEEB', 2784, + '\uFEEC', 2784, + '\uFEED', 2785, + '\uFEEE', 2785, + '\uFEEF', 2434, + '\uFEF0', 2434, + '\uFEF1', 2786, + '\uFEF2', 2786, + '\uFEF3', 2786, + '\uFEF4', 2786, + '\uFEF5', 2787, + '\uFEF6', 2787, + '\uFEF7', 2788, + '\uFEF8', 2788, + '\uFEF9', 2789, + '\uFEFA', 2789, + '\uFEFB', 2790, + '\uFEFC', 2790, + '\uFF01', 2732, + '\uFF02', 2791, + '\uFF03', 2733, + '\uFF04', 2740, + '\uFF05', 2741, + '\uFF06', 2734, + '\uFF07', 2792, + '\uFF08', 961, + '\uFF09', 962, + '\uFF0A', 2735, + '\uFF0B', 958, + '\uFF0C', 2728, + '\uFF0D', 2736, + '\uFF0E', 937, + '\uFF0F', 2793, + '\uFF10', 950, + '\uFF11', 9, + '\uFF12', 4, + '\uFF13', 5, + '\uFF14', 952, + '\uFF15', 953, + '\uFF16', 954, + '\uFF17', 955, + '\uFF18', 956, + '\uFF19', 957, + '\uFF1A', 2730, + '\uFF1B', 309, + '\uFF1C', 2737, + '\uFF1D', 960, + '\uFF1E', 2738, + '\uFF1F', 2731, + '\uFF20', 2742, + '\uFF21', 1167, + '\uFF22', 989, + '\uFF23', 967, + '\uFF24', 1002, + '\uFF25', 991, + '\uFF26', 992, + '\uFF27', 1168, + '\uFF28', 974, + '\uFF29', 976, + '\uFF2A', 1169, + '\uFF2B', 988, + '\uFF2C', 977, + '\uFF2D', 993, + '\uFF2E', 978, + '\uFF2F', 1170, + '\uFF30', 980, + '\uFF31', 981, + '\uFF32', 982, + '\uFF33', 1171, + '\uFF34', 1172, + '\uFF35', 1173, + '\uFF36', 1020, + '\uFF37', 1174, + '\uFF38', 1025, + '\uFF39', 1175, + '\uFF3A', 986, + '\uFF3B', 2794, + '\uFF3C', 2739, + '\uFF3D', 2795, + '\uFF3E', 2796, + '\uFF3F', 2715, + '\uFF40', 925, + '\uFF41', 2, + '\uFF42', 1176, + '\uFF43', 1038, + '\uFF44', 1003, + '\uFF45', 990, + '\uFF46', 1177, + '\uFF47', 973, + '\uFF48', 284, + '\uFF49', 951, + '\uFF4A', 286, + '\uFF4B', 1178, + '\uFF4C', 300, + '\uFF4D', 1039, + '\uFF4E', 963, + '\uFF4F', 10, + '\uFF50', 1179, + '\uFF51', 1180, + '\uFF52', 287, + '\uFF53', 180, + '\uFF54', 1181, + '\uFF55', 1182, + '\uFF56', 1031, + '\uFF57', 291, + '\uFF58', 301, + '\uFF59', 292, + '\uFF5A', 1183, + '\uFF5B', 2716, + '\uFF5C', 2797, + '\uFF5D', 2717, + '\uFF5E', 2798, + '\uFF5F', 2799, + '\uFF60', 2800, + '\uFF61', 2801, + '\uFF62', 2724, + '\uFF63', 2725, + '\uFF64', 2729, + '\uFF65', 2802, + '\uFF66', 1773, + '\uFF67', 2803, + '\uFF68', 2804, + '\uFF69', 2805, + '\uFF6A', 2806, + '\uFF6B', 2807, + '\uFF6C', 2808, + '\uFF6D', 2809, + '\uFF6E', 2810, + '\uFF6F', 2811, + '\uFF70', 2812, + '\uFF71', 1727, + '\uFF72', 1728, + '\uFF73', 1729, + '\uFF74', 1730, + '\uFF75', 1731, + '\uFF76', 1732, + '\uFF77', 1733, + '\uFF78', 1734, + '\uFF79', 1735, + '\uFF7A', 1736, + '\uFF7B', 1737, + '\uFF7C', 1738, + '\uFF7D', 1739, + '\uFF7E', 1740, + '\uFF7F', 1741, + '\uFF80', 1742, + '\uFF81', 1743, + '\uFF82', 1744, + '\uFF83', 1745, + '\uFF84', 1746, + '\uFF85', 1747, + '\uFF86', 1748, + '\uFF87', 1749, + '\uFF88', 1750, + '\uFF89', 1751, + '\uFF8A', 1752, + '\uFF8B', 1753, + '\uFF8C', 1754, + '\uFF8D', 1755, + '\uFF8E', 1756, + '\uFF8F', 1757, + '\uFF90', 1758, + '\uFF91', 1759, + '\uFF92', 1760, + '\uFF93', 1761, + '\uFF94', 1762, + '\uFF95', 1763, + '\uFF96', 1764, + '\uFF97', 1765, + '\uFF98', 1766, + '\uFF99', 1767, + '\uFF9A', 1768, + '\uFF9B', 1769, + '\uFF9C', 1770, + '\uFF9D', 2813, + '\uFF9E', 2814, + '\uFF9F', 2815, + '\uFFA0', 1521, + '\uFFA1', 1470, + '\uFFA2', 1471, + '\uFFA3', 1472, + '\uFFA4', 1473, + '\uFFA5', 1474, + '\uFFA6', 1475, + '\uFFA7', 1476, + '\uFFA8', 1477, + '\uFFA9', 1478, + '\uFFAA', 1479, + '\uFFAB', 1480, + '\uFFAC', 1481, + '\uFFAD', 1482, + '\uFFAE', 1483, + '\uFFAF', 1484, + '\uFFB0', 1485, + '\uFFB1', 1486, + '\uFFB2', 1487, + '\uFFB3', 1488, + '\uFFB4', 1489, + '\uFFB5', 1490, + '\uFFB6', 1491, + '\uFFB7', 1492, + '\uFFB8', 1493, + '\uFFB9', 1494, + '\uFFBA', 1495, + '\uFFBB', 1496, + '\uFFBC', 1497, + '\uFFBD', 1498, + '\uFFBE', 1499, + '\uFFC2', 1500, + '\uFFC3', 1501, + '\uFFC4', 1502, + '\uFFC5', 1503, + '\uFFC6', 1504, + '\uFFC7', 1505, + '\uFFCA', 1506, + '\uFFCB', 1507, + '\uFFCC', 1508, + '\uFFCD', 1509, + '\uFFCE', 1510, + '\uFFCF', 1511, + '\uFFD2', 1512, + '\uFFD3', 1513, + '\uFFD4', 1514, + '\uFFD5', 1515, + '\uFFD6', 1516, + '\uFFD7', 1517, + '\uFFDA', 1518, + '\uFFDB', 1519, + '\uFFDC', 1520, + '\uFFE0', 2816, + '\uFFE1', 2817, + '\uFFE2', 2818, + '\uFFE3', 3, + '\uFFE4', 2819, + '\uFFE5', 2820, + '\uFFE6', 2821, + '\uFFE8', 2822, + '\uFFE9', 2823, + '\uFFEA', 2824, + '\uFFEB', 2825, + '\uFFEC', 2826, + '\uFFED', 2827, + '\uFFEE', 2828, + }; +} diff --git a/java/gnu/inet/encoding/DecompositionMappings.java b/java/gnu/inet/encoding/DecompositionMappings.java new file mode 100644 index 0000000..0a70efc --- /dev/null +++ b/java/gnu/inet/encoding/DecompositionMappings.java @@ -0,0 +1,2842 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit GenerateNFKC.java and re-run. */ + +package gnu.inet.encoding; + +/** + * Auto-generated class containing Unicode NFKC tables. + */ +public class DecompositionMappings +{ + public final static String[] m = new String[] { + "\u0020", + "\u0020\u0308", + "\u0061", + "\u0020\u0304", + "\u0032", + "\u0033", + "\u0020\u0301", + "\u03BC", + "\u0020\u0327", + "\u0031", + "\u006F", + "\u0031\u2044\u0034", + "\u0031\u2044\u0032", + "\u0033\u2044\u0034", + "\u0041\u0300", + "\u0041\u0301", + "\u0041\u0302", + "\u0041\u0303", + "\u0041\u0308", + "\u0041\u030A", + "\u0043\u0327", + "\u0045\u0300", + "\u0045\u0301", + "\u0045\u0302", + "\u0045\u0308", + "\u0049\u0300", + "\u0049\u0301", + "\u0049\u0302", + "\u0049\u0308", + "\u004E\u0303", + "\u004F\u0300", + "\u004F\u0301", + "\u004F\u0302", + "\u004F\u0303", + "\u004F\u0308", + "\u0055\u0300", + "\u0055\u0301", + "\u0055\u0302", + "\u0055\u0308", + "\u0059\u0301", + "\u0061\u0300", + "\u0061\u0301", + "\u0061\u0302", + "\u0061\u0303", + "\u0061\u0308", + "\u0061\u030A", + "\u0063\u0327", + "\u0065\u0300", + "\u0065\u0301", + "\u0065\u0302", + "\u0065\u0308", + "\u0069\u0300", + "\u0069\u0301", + "\u0069\u0302", + "\u0069\u0308", + "\u006E\u0303", + "\u006F\u0300", + "\u006F\u0301", + "\u006F\u0302", + "\u006F\u0303", + "\u006F\u0308", + "\u0075\u0300", + "\u0075\u0301", + "\u0075\u0302", + "\u0075\u0308", + "\u0079\u0301", + "\u0079\u0308", + "\u0041\u0304", + "\u0061\u0304", + "\u0041\u0306", + "\u0061\u0306", + "\u0041\u0328", + "\u0061\u0328", + "\u0043\u0301", + "\u0063\u0301", + "\u0043\u0302", + "\u0063\u0302", + "\u0043\u0307", + "\u0063\u0307", + "\u0043\u030C", + "\u0063\u030C", + "\u0044\u030C", + "\u0064\u030C", + "\u0045\u0304", + "\u0065\u0304", + "\u0045\u0306", + "\u0065\u0306", + "\u0045\u0307", + "\u0065\u0307", + "\u0045\u0328", + "\u0065\u0328", + "\u0045\u030C", + "\u0065\u030C", + "\u0047\u0302", + "\u0067\u0302", + "\u0047\u0306", + "\u0067\u0306", + "\u0047\u0307", + "\u0067\u0307", + "\u0047\u0327", + "\u0067\u0327", + "\u0048\u0302", + "\u0068\u0302", + "\u0049\u0303", + "\u0069\u0303", + "\u0049\u0304", + "\u0069\u0304", + "\u0049\u0306", + "\u0069\u0306", + "\u0049\u0328", + "\u0069\u0328", + "\u0049\u0307", + "\u0049\u004A", + "\u0069\u006A", + "\u004A\u0302", + "\u006A\u0302", + "\u004B\u0327", + "\u006B\u0327", + "\u004C\u0301", + "\u006C\u0301", + "\u004C\u0327", + "\u006C\u0327", + "\u004C\u030C", + "\u006C\u030C", + "\u004C\u00B7", + "\u006C\u00B7", + "\u004E\u0301", + "\u006E\u0301", + "\u004E\u0327", + "\u006E\u0327", + "\u004E\u030C", + "\u006E\u030C", + "\u02BC\u006E", + "\u004F\u0304", + "\u006F\u0304", + "\u004F\u0306", + "\u006F\u0306", + "\u004F\u030B", + "\u006F\u030B", + "\u0052\u0301", + "\u0072\u0301", + "\u0052\u0327", + "\u0072\u0327", + "\u0052\u030C", + "\u0072\u030C", + "\u0053\u0301", + "\u0073\u0301", + "\u0053\u0302", + "\u0073\u0302", + "\u0053\u0327", + "\u0073\u0327", + "\u0053\u030C", + "\u0073\u030C", + "\u0054\u0327", + "\u0074\u0327", + "\u0054\u030C", + "\u0074\u030C", + "\u0055\u0303", + "\u0075\u0303", + "\u0055\u0304", + "\u0075\u0304", + "\u0055\u0306", + "\u0075\u0306", + "\u0055\u030A", + "\u0075\u030A", + "\u0055\u030B", + "\u0075\u030B", + "\u0055\u0328", + "\u0075\u0328", + "\u0057\u0302", + "\u0077\u0302", + "\u0059\u0302", + "\u0079\u0302", + "\u0059\u0308", + "\u005A\u0301", + "\u007A\u0301", + "\u005A\u0307", + "\u007A\u0307", + "\u005A\u030C", + "\u007A\u030C", + "\u0073", + "\u004F\u031B", + "\u006F\u031B", + "\u0055\u031B", + "\u0075\u031B", + "\u0044\u005A\u030C", + "\u0044\u007A\u030C", + "\u0064\u007A\u030C", + "\u004C\u004A", + "\u004C\u006A", + "\u006C\u006A", + "\u004E\u004A", + "\u004E\u006A", + "\u006E\u006A", + "\u0041\u030C", + "\u0061\u030C", + "\u0049\u030C", + "\u0069\u030C", + "\u004F\u030C", + "\u006F\u030C", + "\u0055\u030C", + "\u0075\u030C", + "\u0055\u0308\u0304", + "\u0075\u0308\u0304", + "\u0055\u0308\u0301", + "\u0075\u0308\u0301", + "\u0055\u0308\u030C", + "\u0075\u0308\u030C", + "\u0055\u0308\u0300", + "\u0075\u0308\u0300", + "\u0041\u0308\u0304", + "\u0061\u0308\u0304", + "\u0041\u0307\u0304", + "\u0061\u0307\u0304", + "\u00C6\u0304", + "\u00E6\u0304", + "\u0047\u030C", + "\u0067\u030C", + "\u004B\u030C", + "\u006B\u030C", + "\u004F\u0328", + "\u006F\u0328", + "\u004F\u0328\u0304", + "\u006F\u0328\u0304", + "\u01B7\u030C", + "\u0292\u030C", + "\u006A\u030C", + "\u0044\u005A", + "\u0044\u007A", + "\u0064\u007A", + "\u0047\u0301", + "\u0067\u0301", + "\u004E\u0300", + "\u006E\u0300", + "\u0041\u030A\u0301", + "\u0061\u030A\u0301", + "\u00C6\u0301", + "\u00E6\u0301", + "\u00D8\u0301", + "\u00F8\u0301", + "\u0041\u030F", + "\u0061\u030F", + "\u0041\u0311", + "\u0061\u0311", + "\u0045\u030F", + "\u0065\u030F", + "\u0045\u0311", + "\u0065\u0311", + "\u0049\u030F", + "\u0069\u030F", + "\u0049\u0311", + "\u0069\u0311", + "\u004F\u030F", + "\u006F\u030F", + "\u004F\u0311", + "\u006F\u0311", + "\u0052\u030F", + "\u0072\u030F", + "\u0052\u0311", + "\u0072\u0311", + "\u0055\u030F", + "\u0075\u030F", + "\u0055\u0311", + "\u0075\u0311", + "\u0053\u0326", + "\u0073\u0326", + "\u0054\u0326", + "\u0074\u0326", + "\u0048\u030C", + "\u0068\u030C", + "\u0041\u0307", + "\u0061\u0307", + "\u0045\u0327", + "\u0065\u0327", + "\u004F\u0308\u0304", + "\u006F\u0308\u0304", + "\u004F\u0303\u0304", + "\u006F\u0303\u0304", + "\u004F\u0307", + "\u006F\u0307", + "\u004F\u0307\u0304", + "\u006F\u0307\u0304", + "\u0059\u0304", + "\u0079\u0304", + "\u0068", + "\u0266", + "\u006A", + "\u0072", + "\u0279", + "\u027B", + "\u0281", + "\u0077", + "\u0079", + "\u0020\u0306", + "\u0020\u0307", + "\u0020\u030A", + "\u0020\u0328", + "\u0020\u0303", + "\u0020\u030B", + "\u0263", + "\u006C", + "\u0078", + "\u0295", + "\u0300", + "\u0301", + "\u0313", + "\u0308\u0301", + "\u02B9", + "\u0020\u0345", + "\u003B", + "\u0020\u0308\u0301", + "\u0391\u0301", + "\u00B7", + "\u0395\u0301", + "\u0397\u0301", + "\u0399\u0301", + "\u039F\u0301", + "\u03A5\u0301", + "\u03A9\u0301", + "\u03B9\u0308\u0301", + "\u0399\u0308", + "\u03A5\u0308", + "\u03B1\u0301", + "\u03B5\u0301", + "\u03B7\u0301", + "\u03B9\u0301", + "\u03C5\u0308\u0301", + "\u03B9\u0308", + "\u03C5\u0308", + "\u03BF\u0301", + "\u03C5\u0301", + "\u03C9\u0301", + "\u03B2", + "\u03B8", + "\u03A5", + "\u03C6", + "\u03C0", + "\u03BA", + "\u03C1", + "\u03C2", + "\u0398", + "\u03B5", + "\u0415\u0300", + "\u0415\u0308", + "\u0413\u0301", + "\u0406\u0308", + "\u041A\u0301", + "\u0418\u0300", + "\u0423\u0306", + "\u0418\u0306", + "\u0438\u0306", + "\u0435\u0300", + "\u0435\u0308", + "\u0433\u0301", + "\u0456\u0308", + "\u043A\u0301", + "\u0438\u0300", + "\u0443\u0306", + "\u0474\u030F", + "\u0475\u030F", + "\u0416\u0306", + "\u0436\u0306", + "\u0410\u0306", + "\u0430\u0306", + "\u0410\u0308", + "\u0430\u0308", + "\u0415\u0306", + "\u0435\u0306", + "\u04D8\u0308", + "\u04D9\u0308", + "\u0416\u0308", + "\u0436\u0308", + "\u0417\u0308", + "\u0437\u0308", + "\u0418\u0304", + "\u0438\u0304", + "\u0418\u0308", + "\u0438\u0308", + "\u041E\u0308", + "\u043E\u0308", + "\u04E8\u0308", + "\u04E9\u0308", + "\u042D\u0308", + "\u044D\u0308", + "\u0423\u0304", + "\u0443\u0304", + "\u0423\u0308", + "\u0443\u0308", + "\u0423\u030B", + "\u0443\u030B", + "\u0427\u0308", + "\u0447\u0308", + "\u042B\u0308", + "\u044B\u0308", + "\u0565\u0582", + "\u0627\u0653", + "\u0627\u0654", + "\u0648\u0654", + "\u0627\u0655", + "\u064A\u0654", + "\u0627\u0674", + "\u0648\u0674", + "\u06C7\u0674", + "\u064A\u0674", + "\u06D5\u0654", + "\u06C1\u0654", + "\u06D2\u0654", + "\u0928\u093C", + "\u0930\u093C", + "\u0933\u093C", + "\u0915\u093C", + "\u0916\u093C", + "\u0917\u093C", + "\u091C\u093C", + "\u0921\u093C", + "\u0922\u093C", + "\u092B\u093C", + "\u092F\u093C", + "\u09C7\u09BE", + "\u09C7\u09D7", + "\u09A1\u09BC", + "\u09A2\u09BC", + "\u09AF\u09BC", + "\u0A32\u0A3C", + "\u0A38\u0A3C", + "\u0A16\u0A3C", + "\u0A17\u0A3C", + "\u0A1C\u0A3C", + "\u0A2B\u0A3C", + "\u0B47\u0B56", + "\u0B47\u0B3E", + "\u0B47\u0B57", + "\u0B21\u0B3C", + "\u0B22\u0B3C", + "\u0B92\u0BD7", + "\u0BC6\u0BBE", + "\u0BC7\u0BBE", + "\u0BC6\u0BD7", + "\u0C46\u0C56", + "\u0CBF\u0CD5", + "\u0CC6\u0CD5", + "\u0CC6\u0CD6", + "\u0CC6\u0CC2", + "\u0CC6\u0CC2\u0CD5", + "\u0D46\u0D3E", + "\u0D47\u0D3E", + "\u0D46\u0D57", + "\u0DD9\u0DCA", + "\u0DD9\u0DCF", + "\u0DD9\u0DCF\u0DCA", + "\u0DD9\u0DDF", + "\u0E4D\u0E32", + "\u0ECD\u0EB2", + "\u0EAB\u0E99", + "\u0EAB\u0EA1", + "\u0F0B", + "\u0F42\u0FB7", + "\u0F4C\u0FB7", + "\u0F51\u0FB7", + "\u0F56\u0FB7", + "\u0F5B\u0FB7", + "\u0F40\u0FB5", + "\u0F71\u0F72", + "\u0F71\u0F74", + "\u0FB2\u0F80", + "\u0FB2\u0F71\u0F80", + "\u0FB3\u0F80", + "\u0FB3\u0F71\u0F80", + "\u0F71\u0F80", + "\u0F92\u0FB7", + "\u0F9C\u0FB7", + "\u0FA1\u0FB7", + "\u0FA6\u0FB7", + "\u0FAB\u0FB7", + "\u0F90\u0FB5", + "\u1025\u102E", + "\u0041\u0325", + "\u0061\u0325", + "\u0042\u0307", + "\u0062\u0307", + "\u0042\u0323", + "\u0062\u0323", + "\u0042\u0331", + "\u0062\u0331", + "\u0043\u0327\u0301", + "\u0063\u0327\u0301", + "\u0044\u0307", + "\u0064\u0307", + "\u0044\u0323", + "\u0064\u0323", + "\u0044\u0331", + "\u0064\u0331", + "\u0044\u0327", + "\u0064\u0327", + "\u0044\u032D", + "\u0064\u032D", + "\u0045\u0304\u0300", + "\u0065\u0304\u0300", + "\u0045\u0304\u0301", + "\u0065\u0304\u0301", + "\u0045\u032D", + "\u0065\u032D", + "\u0045\u0330", + "\u0065\u0330", + "\u0045\u0327\u0306", + "\u0065\u0327\u0306", + "\u0046\u0307", + "\u0066\u0307", + "\u0047\u0304", + "\u0067\u0304", + "\u0048\u0307", + "\u0068\u0307", + "\u0048\u0323", + "\u0068\u0323", + "\u0048\u0308", + "\u0068\u0308", + "\u0048\u0327", + "\u0068\u0327", + "\u0048\u032E", + "\u0068\u032E", + "\u0049\u0330", + "\u0069\u0330", + "\u0049\u0308\u0301", + "\u0069\u0308\u0301", + "\u004B\u0301", + "\u006B\u0301", + "\u004B\u0323", + "\u006B\u0323", + "\u004B\u0331", + "\u006B\u0331", + "\u004C\u0323", + "\u006C\u0323", + "\u004C\u0323\u0304", + "\u006C\u0323\u0304", + "\u004C\u0331", + "\u006C\u0331", + "\u004C\u032D", + "\u006C\u032D", + "\u004D\u0301", + "\u006D\u0301", + "\u004D\u0307", + "\u006D\u0307", + "\u004D\u0323", + "\u006D\u0323", + "\u004E\u0307", + "\u006E\u0307", + "\u004E\u0323", + "\u006E\u0323", + "\u004E\u0331", + "\u006E\u0331", + "\u004E\u032D", + "\u006E\u032D", + "\u004F\u0303\u0301", + "\u006F\u0303\u0301", + "\u004F\u0303\u0308", + "\u006F\u0303\u0308", + "\u004F\u0304\u0300", + "\u006F\u0304\u0300", + "\u004F\u0304\u0301", + "\u006F\u0304\u0301", + "\u0050\u0301", + "\u0070\u0301", + "\u0050\u0307", + "\u0070\u0307", + "\u0052\u0307", + "\u0072\u0307", + "\u0052\u0323", + "\u0072\u0323", + "\u0052\u0323\u0304", + "\u0072\u0323\u0304", + "\u0052\u0331", + "\u0072\u0331", + "\u0053\u0307", + "\u0073\u0307", + "\u0053\u0323", + "\u0073\u0323", + "\u0053\u0301\u0307", + "\u0073\u0301\u0307", + "\u0053\u030C\u0307", + "\u0073\u030C\u0307", + "\u0053\u0323\u0307", + "\u0073\u0323\u0307", + "\u0054\u0307", + "\u0074\u0307", + "\u0054\u0323", + "\u0074\u0323", + "\u0054\u0331", + "\u0074\u0331", + "\u0054\u032D", + "\u0074\u032D", + "\u0055\u0324", + "\u0075\u0324", + "\u0055\u0330", + "\u0075\u0330", + "\u0055\u032D", + "\u0075\u032D", + "\u0055\u0303\u0301", + "\u0075\u0303\u0301", + "\u0055\u0304\u0308", + "\u0075\u0304\u0308", + "\u0056\u0303", + "\u0076\u0303", + "\u0056\u0323", + "\u0076\u0323", + "\u0057\u0300", + "\u0077\u0300", + "\u0057\u0301", + "\u0077\u0301", + "\u0057\u0308", + "\u0077\u0308", + "\u0057\u0307", + "\u0077\u0307", + "\u0057\u0323", + "\u0077\u0323", + "\u0058\u0307", + "\u0078\u0307", + "\u0058\u0308", + "\u0078\u0308", + "\u0059\u0307", + "\u0079\u0307", + "\u005A\u0302", + "\u007A\u0302", + "\u005A\u0323", + "\u007A\u0323", + "\u005A\u0331", + "\u007A\u0331", + "\u0068\u0331", + "\u0074\u0308", + "\u0077\u030A", + "\u0079\u030A", + "\u0061\u02BE", + "\u0041\u0323", + "\u0061\u0323", + "\u0041\u0309", + "\u0061\u0309", + "\u0041\u0302\u0301", + "\u0061\u0302\u0301", + "\u0041\u0302\u0300", + "\u0061\u0302\u0300", + "\u0041\u0302\u0309", + "\u0061\u0302\u0309", + "\u0041\u0302\u0303", + "\u0061\u0302\u0303", + "\u0041\u0323\u0302", + "\u0061\u0323\u0302", + "\u0041\u0306\u0301", + "\u0061\u0306\u0301", + "\u0041\u0306\u0300", + "\u0061\u0306\u0300", + "\u0041\u0306\u0309", + "\u0061\u0306\u0309", + "\u0041\u0306\u0303", + "\u0061\u0306\u0303", + "\u0041\u0323\u0306", + "\u0061\u0323\u0306", + "\u0045\u0323", + "\u0065\u0323", + "\u0045\u0309", + "\u0065\u0309", + "\u0045\u0303", + "\u0065\u0303", + "\u0045\u0302\u0301", + "\u0065\u0302\u0301", + "\u0045\u0302\u0300", + "\u0065\u0302\u0300", + "\u0045\u0302\u0309", + "\u0065\u0302\u0309", + "\u0045\u0302\u0303", + "\u0065\u0302\u0303", + "\u0045\u0323\u0302", + "\u0065\u0323\u0302", + "\u0049\u0309", + "\u0069\u0309", + "\u0049\u0323", + "\u0069\u0323", + "\u004F\u0323", + "\u006F\u0323", + "\u004F\u0309", + "\u006F\u0309", + "\u004F\u0302\u0301", + "\u006F\u0302\u0301", + "\u004F\u0302\u0300", + "\u006F\u0302\u0300", + "\u004F\u0302\u0309", + "\u006F\u0302\u0309", + "\u004F\u0302\u0303", + "\u006F\u0302\u0303", + "\u004F\u0323\u0302", + "\u006F\u0323\u0302", + "\u004F\u031B\u0301", + "\u006F\u031B\u0301", + "\u004F\u031B\u0300", + "\u006F\u031B\u0300", + "\u004F\u031B\u0309", + "\u006F\u031B\u0309", + "\u004F\u031B\u0303", + "\u006F\u031B\u0303", + "\u004F\u031B\u0323", + "\u006F\u031B\u0323", + "\u0055\u0323", + "\u0075\u0323", + "\u0055\u0309", + "\u0075\u0309", + "\u0055\u031B\u0301", + "\u0075\u031B\u0301", + "\u0055\u031B\u0300", + "\u0075\u031B\u0300", + "\u0055\u031B\u0309", + "\u0075\u031B\u0309", + "\u0055\u031B\u0303", + "\u0075\u031B\u0303", + "\u0055\u031B\u0323", + "\u0075\u031B\u0323", + "\u0059\u0300", + "\u0079\u0300", + "\u0059\u0323", + "\u0079\u0323", + "\u0059\u0309", + "\u0079\u0309", + "\u0059\u0303", + "\u0079\u0303", + "\u03B1\u0313", + "\u03B1\u0314", + "\u03B1\u0313\u0300", + "\u03B1\u0314\u0300", + "\u03B1\u0313\u0301", + "\u03B1\u0314\u0301", + "\u03B1\u0313\u0342", + "\u03B1\u0314\u0342", + "\u0391\u0313", + "\u0391\u0314", + "\u0391\u0313\u0300", + "\u0391\u0314\u0300", + "\u0391\u0313\u0301", + "\u0391\u0314\u0301", + "\u0391\u0313\u0342", + "\u0391\u0314\u0342", + "\u03B5\u0313", + "\u03B5\u0314", + "\u03B5\u0313\u0300", + "\u03B5\u0314\u0300", + "\u03B5\u0313\u0301", + "\u03B5\u0314\u0301", + "\u0395\u0313", + "\u0395\u0314", + "\u0395\u0313\u0300", + "\u0395\u0314\u0300", + "\u0395\u0313\u0301", + "\u0395\u0314\u0301", + "\u03B7\u0313", + "\u03B7\u0314", + "\u03B7\u0313\u0300", + "\u03B7\u0314\u0300", + "\u03B7\u0313\u0301", + "\u03B7\u0314\u0301", + "\u03B7\u0313\u0342", + "\u03B7\u0314\u0342", + "\u0397\u0313", + "\u0397\u0314", + "\u0397\u0313\u0300", + "\u0397\u0314\u0300", + "\u0397\u0313\u0301", + "\u0397\u0314\u0301", + "\u0397\u0313\u0342", + "\u0397\u0314\u0342", + "\u03B9\u0313", + "\u03B9\u0314", + "\u03B9\u0313\u0300", + "\u03B9\u0314\u0300", + "\u03B9\u0313\u0301", + "\u03B9\u0314\u0301", + "\u03B9\u0313\u0342", + "\u03B9\u0314\u0342", + "\u0399\u0313", + "\u0399\u0314", + "\u0399\u0313\u0300", + "\u0399\u0314\u0300", + "\u0399\u0313\u0301", + "\u0399\u0314\u0301", + "\u0399\u0313\u0342", + "\u0399\u0314\u0342", + "\u03BF\u0313", + "\u03BF\u0314", + "\u03BF\u0313\u0300", + "\u03BF\u0314\u0300", + "\u03BF\u0313\u0301", + "\u03BF\u0314\u0301", + "\u039F\u0313", + "\u039F\u0314", + "\u039F\u0313\u0300", + "\u039F\u0314\u0300", + "\u039F\u0313\u0301", + "\u039F\u0314\u0301", + "\u03C5\u0313", + "\u03C5\u0314", + "\u03C5\u0313\u0300", + "\u03C5\u0314\u0300", + "\u03C5\u0313\u0301", + "\u03C5\u0314\u0301", + "\u03C5\u0313\u0342", + "\u03C5\u0314\u0342", + "\u03A5\u0314", + "\u03A5\u0314\u0300", + "\u03A5\u0314\u0301", + "\u03A5\u0314\u0342", + "\u03C9\u0313", + "\u03C9\u0314", + "\u03C9\u0313\u0300", + "\u03C9\u0314\u0300", + "\u03C9\u0313\u0301", + "\u03C9\u0314\u0301", + "\u03C9\u0313\u0342", + "\u03C9\u0314\u0342", + "\u03A9\u0313", + "\u03A9\u0314", + "\u03A9\u0313\u0300", + "\u03A9\u0314\u0300", + "\u03A9\u0313\u0301", + "\u03A9\u0314\u0301", + "\u03A9\u0313\u0342", + "\u03A9\u0314\u0342", + "\u03B1\u0300", + "\u03B5\u0300", + "\u03B7\u0300", + "\u03B9\u0300", + "\u03BF\u0300", + "\u03C5\u0300", + "\u03C9\u0300", + "\u03B1\u0313\u0345", + "\u03B1\u0314\u0345", + "\u03B1\u0313\u0300\u0345", + "\u03B1\u0314\u0300\u0345", + "\u03B1\u0313\u0301\u0345", + "\u03B1\u0314\u0301\u0345", + "\u03B1\u0313\u0342\u0345", + "\u03B1\u0314\u0342\u0345", + "\u0391\u0313\u0345", + "\u0391\u0314\u0345", + "\u0391\u0313\u0300\u0345", + "\u0391\u0314\u0300\u0345", + "\u0391\u0313\u0301\u0345", + "\u0391\u0314\u0301\u0345", + "\u0391\u0313\u0342\u0345", + "\u0391\u0314\u0342\u0345", + "\u03B7\u0313\u0345", + "\u03B7\u0314\u0345", + "\u03B7\u0313\u0300\u0345", + "\u03B7\u0314\u0300\u0345", + "\u03B7\u0313\u0301\u0345", + "\u03B7\u0314\u0301\u0345", + "\u03B7\u0313\u0342\u0345", + "\u03B7\u0314\u0342\u0345", + "\u0397\u0313\u0345", + "\u0397\u0314\u0345", + "\u0397\u0313\u0300\u0345", + "\u0397\u0314\u0300\u0345", + "\u0397\u0313\u0301\u0345", + "\u0397\u0314\u0301\u0345", + "\u0397\u0313\u0342\u0345", + "\u0397\u0314\u0342\u0345", + "\u03C9\u0313\u0345", + "\u03C9\u0314\u0345", + "\u03C9\u0313\u0300\u0345", + "\u03C9\u0314\u0300\u0345", + "\u03C9\u0313\u0301\u0345", + "\u03C9\u0314\u0301\u0345", + "\u03C9\u0313\u0342\u0345", + "\u03C9\u0314\u0342\u0345", + "\u03A9\u0313\u0345", + "\u03A9\u0314\u0345", + "\u03A9\u0313\u0300\u0345", + "\u03A9\u0314\u0300\u0345", + "\u03A9\u0313\u0301\u0345", + "\u03A9\u0314\u0301\u0345", + "\u03A9\u0313\u0342\u0345", + "\u03A9\u0314\u0342\u0345", + "\u03B1\u0306", + "\u03B1\u0304", + "\u03B1\u0300\u0345", + "\u03B1\u0345", + "\u03B1\u0301\u0345", + "\u03B1\u0342", + "\u03B1\u0342\u0345", + "\u0391\u0306", + "\u0391\u0304", + "\u0391\u0300", + "\u0391\u0345", + "\u0020\u0313", + "\u03B9", + "\u0020\u0342", + "\u0020\u0308\u0342", + "\u03B7\u0300\u0345", + "\u03B7\u0345", + "\u03B7\u0301\u0345", + "\u03B7\u0342", + "\u03B7\u0342\u0345", + "\u0395\u0300", + "\u0397\u0300", + "\u0397\u0345", + "\u0020\u0313\u0300", + "\u0020\u0313\u0301", + "\u0020\u0313\u0342", + "\u03B9\u0306", + "\u03B9\u0304", + "\u03B9\u0308\u0300", + "\u03B9\u0342", + "\u03B9\u0308\u0342", + "\u0399\u0306", + "\u0399\u0304", + "\u0399\u0300", + "\u0020\u0314\u0300", + "\u0020\u0314\u0301", + "\u0020\u0314\u0342", + "\u03C5\u0306", + "\u03C5\u0304", + "\u03C5\u0308\u0300", + "\u03C1\u0313", + "\u03C1\u0314", + "\u03C5\u0342", + "\u03C5\u0308\u0342", + "\u03A5\u0306", + "\u03A5\u0304", + "\u03A5\u0300", + "\u03A1\u0314", + "\u0020\u0308\u0300", + "\u0060", + "\u03C9\u0300\u0345", + "\u03C9\u0345", + "\u03C9\u0301\u0345", + "\u03C9\u0342", + "\u03C9\u0342\u0345", + "\u039F\u0300", + "\u03A9\u0300", + "\u03A9\u0345", + "\u0020\u0314", + "\u2010", + "\u0020\u0333", + "\u002E", + "\u002E\u002E", + "\u002E\u002E\u002E", + "\u2032\u2032", + "\u2032\u2032\u2032", + "\u2035\u2035", + "\u2035\u2035\u2035", + "\u0021\u0021", + "\u0020\u0305", + "\u003F\u003F", + "\u003F\u0021", + "\u0021\u003F", + "\u2032\u2032\u2032\u2032", + "\u0030", + "\u0069", + "\u0034", + "\u0035", + "\u0036", + "\u0037", + "\u0038", + "\u0039", + "\u002B", + "\u2212", + "\u003D", + "\u0028", + "\u0029", + "\u006E", + "\u0052\u0073", + "\u0061\u002F\u0063", + "\u0061\u002F\u0073", + "\u0043", + "\u00B0\u0043", + "\u0063\u002F\u006F", + "\u0063\u002F\u0075", + "\u0190", + "\u00B0\u0046", + "\u0067", + "\u0048", + "\u0127", + "\u0049", + "\u004C", + "\u004E", + "\u004E\u006F", + "\u0050", + "\u0051", + "\u0052", + "\u0053\u004D", + "\u0054\u0045\u004C", + "\u0054\u004D", + "\u005A", + "\u03A9", + "\u004B", + "\u0042", + "\u0065", + "\u0045", + "\u0046", + "\u004D", + "\u05D0", + "\u05D1", + "\u05D2", + "\u05D3", + "\u03B3", + "\u0393", + "\u03A0", + "\u2211", + "\u0044", + "\u0064", + "\u0031\u2044\u0033", + "\u0032\u2044\u0033", + "\u0031\u2044\u0035", + "\u0032\u2044\u0035", + "\u0033\u2044\u0035", + "\u0034\u2044\u0035", + "\u0031\u2044\u0036", + "\u0035\u2044\u0036", + "\u0031\u2044\u0038", + "\u0033\u2044\u0038", + "\u0035\u2044\u0038", + "\u0037\u2044\u0038", + "\u0031\u2044", + "\u0049\u0049", + "\u0049\u0049\u0049", + "\u0049\u0056", + "\u0056", + "\u0056\u0049", + "\u0056\u0049\u0049", + "\u0056\u0049\u0049\u0049", + "\u0049\u0058", + "\u0058", + "\u0058\u0049", + "\u0058\u0049\u0049", + "\u0069\u0069", + "\u0069\u0069\u0069", + "\u0069\u0076", + "\u0076", + "\u0076\u0069", + "\u0076\u0069\u0069", + "\u0076\u0069\u0069\u0069", + "\u0069\u0078", + "\u0078\u0069", + "\u0078\u0069\u0069", + "\u0063", + "\u006D", + "\u2190\u0338", + "\u2192\u0338", + "\u2194\u0338", + "\u21D0\u0338", + "\u21D4\u0338", + "\u21D2\u0338", + "\u2203\u0338", + "\u2208\u0338", + "\u220B\u0338", + "\u2223\u0338", + "\u2225\u0338", + "\u222B\u222B", + "\u222B\u222B\u222B", + "\u222E\u222E", + "\u222E\u222E\u222E", + "\u223C\u0338", + "\u2243\u0338", + "\u2245\u0338", + "\u2248\u0338", + "\u003D\u0338", + "\u2261\u0338", + "\u224D\u0338", + "\u003C\u0338", + "\u003E\u0338", + "\u2264\u0338", + "\u2265\u0338", + "\u2272\u0338", + "\u2273\u0338", + "\u2276\u0338", + "\u2277\u0338", + "\u227A\u0338", + "\u227B\u0338", + "\u2282\u0338", + "\u2283\u0338", + "\u2286\u0338", + "\u2287\u0338", + "\u22A2\u0338", + "\u22A8\u0338", + "\u22A9\u0338", + "\u22AB\u0338", + "\u227C\u0338", + "\u227D\u0338", + "\u2291\u0338", + "\u2292\u0338", + "\u22B2\u0338", + "\u22B3\u0338", + "\u22B4\u0338", + "\u22B5\u0338", + "\u3008", + "\u3009", + "\u0031\u0030", + "\u0031\u0031", + "\u0031\u0032", + "\u0031\u0033", + "\u0031\u0034", + "\u0031\u0035", + "\u0031\u0036", + "\u0031\u0037", + "\u0031\u0038", + "\u0031\u0039", + "\u0032\u0030", + "\u0028\u0031\u0029", + "\u0028\u0032\u0029", + "\u0028\u0033\u0029", + "\u0028\u0034\u0029", + "\u0028\u0035\u0029", + "\u0028\u0036\u0029", + "\u0028\u0037\u0029", + "\u0028\u0038\u0029", + "\u0028\u0039\u0029", + "\u0028\u0031\u0030\u0029", + "\u0028\u0031\u0031\u0029", + "\u0028\u0031\u0032\u0029", + "\u0028\u0031\u0033\u0029", + "\u0028\u0031\u0034\u0029", + "\u0028\u0031\u0035\u0029", + "\u0028\u0031\u0036\u0029", + "\u0028\u0031\u0037\u0029", + "\u0028\u0031\u0038\u0029", + "\u0028\u0031\u0039\u0029", + "\u0028\u0032\u0030\u0029", + "\u0031\u002E", + "\u0032\u002E", + "\u0033\u002E", + "\u0034\u002E", + "\u0035\u002E", + "\u0036\u002E", + "\u0037\u002E", + "\u0038\u002E", + "\u0039\u002E", + "\u0031\u0030\u002E", + "\u0031\u0031\u002E", + "\u0031\u0032\u002E", + "\u0031\u0033\u002E", + "\u0031\u0034\u002E", + "\u0031\u0035\u002E", + "\u0031\u0036\u002E", + "\u0031\u0037\u002E", + "\u0031\u0038\u002E", + "\u0031\u0039\u002E", + "\u0032\u0030\u002E", + "\u0028\u0061\u0029", + "\u0028\u0062\u0029", + "\u0028\u0063\u0029", + "\u0028\u0064\u0029", + "\u0028\u0065\u0029", + "\u0028\u0066\u0029", + "\u0028\u0067\u0029", + "\u0028\u0068\u0029", + "\u0028\u0069\u0029", + "\u0028\u006A\u0029", + "\u0028\u006B\u0029", + "\u0028\u006C\u0029", + "\u0028\u006D\u0029", + "\u0028\u006E\u0029", + "\u0028\u006F\u0029", + "\u0028\u0070\u0029", + "\u0028\u0071\u0029", + "\u0028\u0072\u0029", + "\u0028\u0073\u0029", + "\u0028\u0074\u0029", + "\u0028\u0075\u0029", + "\u0028\u0076\u0029", + "\u0028\u0077\u0029", + "\u0028\u0078\u0029", + "\u0028\u0079\u0029", + "\u0028\u007A\u0029", + "\u0041", + "\u0047", + "\u004A", + "\u004F", + "\u0053", + "\u0054", + "\u0055", + "\u0057", + "\u0059", + "\u0062", + "\u0066", + "\u006B", + "\u0070", + "\u0071", + "\u0074", + "\u0075", + "\u007A", + "\u222B\u222B\u222B\u222B", + "\u003A\u003A\u003D", + "\u003D\u003D", + "\u003D\u003D\u003D", + "\u2ADD\u0338", + "\u6BCD", + "\u9F9F", + "\u4E00", + "\u4E28", + "\u4E36", + "\u4E3F", + "\u4E59", + "\u4E85", + "\u4E8C", + "\u4EA0", + "\u4EBA", + "\u513F", + "\u5165", + "\u516B", + "\u5182", + "\u5196", + "\u51AB", + "\u51E0", + "\u51F5", + "\u5200", + "\u529B", + "\u52F9", + "\u5315", + "\u531A", + "\u5338", + "\u5341", + "\u535C", + "\u5369", + "\u5382", + "\u53B6", + "\u53C8", + "\u53E3", + "\u56D7", + "\u571F", + "\u58EB", + "\u5902", + "\u590A", + "\u5915", + "\u5927", + "\u5973", + "\u5B50", + "\u5B80", + "\u5BF8", + "\u5C0F", + "\u5C22", + "\u5C38", + "\u5C6E", + "\u5C71", + "\u5DDB", + "\u5DE5", + "\u5DF1", + "\u5DFE", + "\u5E72", + "\u5E7A", + "\u5E7F", + "\u5EF4", + "\u5EFE", + "\u5F0B", + "\u5F13", + "\u5F50", + "\u5F61", + "\u5F73", + "\u5FC3", + "\u6208", + "\u6236", + "\u624B", + "\u652F", + "\u6534", + "\u6587", + "\u6597", + "\u65A4", + "\u65B9", + "\u65E0", + "\u65E5", + "\u66F0", + "\u6708", + "\u6728", + "\u6B20", + "\u6B62", + "\u6B79", + "\u6BB3", + "\u6BCB", + "\u6BD4", + "\u6BDB", + "\u6C0F", + "\u6C14", + "\u6C34", + "\u706B", + "\u722A", + "\u7236", + "\u723B", + "\u723F", + "\u7247", + "\u7259", + "\u725B", + "\u72AC", + "\u7384", + "\u7389", + "\u74DC", + "\u74E6", + "\u7518", + "\u751F", + "\u7528", + "\u7530", + "\u758B", + "\u7592", + "\u7676", + "\u767D", + "\u76AE", + "\u76BF", + "\u76EE", + "\u77DB", + "\u77E2", + "\u77F3", + "\u793A", + "\u79B8", + "\u79BE", + "\u7A74", + "\u7ACB", + "\u7AF9", + "\u7C73", + "\u7CF8", + "\u7F36", + "\u7F51", + "\u7F8A", + "\u7FBD", + "\u8001", + "\u800C", + "\u8012", + "\u8033", + "\u807F", + "\u8089", + "\u81E3", + "\u81EA", + "\u81F3", + "\u81FC", + "\u820C", + "\u821B", + "\u821F", + "\u826E", + "\u8272", + "\u8278", + "\u864D", + "\u866B", + "\u8840", + "\u884C", + "\u8863", + "\u897E", + "\u898B", + "\u89D2", + "\u8A00", + "\u8C37", + "\u8C46", + "\u8C55", + "\u8C78", + "\u8C9D", + "\u8D64", + "\u8D70", + "\u8DB3", + "\u8EAB", + "\u8ECA", + "\u8F9B", + "\u8FB0", + "\u8FB5", + "\u9091", + "\u9149", + "\u91C6", + "\u91CC", + "\u91D1", + "\u9577", + "\u9580", + "\u961C", + "\u96B6", + "\u96B9", + "\u96E8", + "\u9751", + "\u975E", + "\u9762", + "\u9769", + "\u97CB", + "\u97ED", + "\u97F3", + "\u9801", + "\u98A8", + "\u98DB", + "\u98DF", + "\u9996", + "\u9999", + "\u99AC", + "\u9AA8", + "\u9AD8", + "\u9ADF", + "\u9B25", + "\u9B2F", + "\u9B32", + "\u9B3C", + "\u9B5A", + "\u9CE5", + "\u9E75", + "\u9E7F", + "\u9EA5", + "\u9EBB", + "\u9EC3", + "\u9ECD", + "\u9ED1", + "\u9EF9", + "\u9EFD", + "\u9F0E", + "\u9F13", + "\u9F20", + "\u9F3B", + "\u9F4A", + "\u9F52", + "\u9F8D", + "\u9F9C", + "\u9FA0", + "\u3012", + "\u5344", + "\u5345", + "\u304B\u3099", + "\u304D\u3099", + "\u304F\u3099", + "\u3051\u3099", + "\u3053\u3099", + "\u3055\u3099", + "\u3057\u3099", + "\u3059\u3099", + "\u305B\u3099", + "\u305D\u3099", + "\u305F\u3099", + "\u3061\u3099", + "\u3064\u3099", + "\u3066\u3099", + "\u3068\u3099", + "\u306F\u3099", + "\u306F\u309A", + "\u3072\u3099", + "\u3072\u309A", + "\u3075\u3099", + "\u3075\u309A", + "\u3078\u3099", + "\u3078\u309A", + "\u307B\u3099", + "\u307B\u309A", + "\u3046\u3099", + "\u0020\u3099", + "\u0020\u309A", + "\u309D\u3099", + "\u3088\u308A", + "\u30AB\u3099", + "\u30AD\u3099", + "\u30AF\u3099", + "\u30B1\u3099", + "\u30B3\u3099", + "\u30B5\u3099", + "\u30B7\u3099", + "\u30B9\u3099", + "\u30BB\u3099", + "\u30BD\u3099", + "\u30BF\u3099", + "\u30C1\u3099", + "\u30C4\u3099", + "\u30C6\u3099", + "\u30C8\u3099", + "\u30CF\u3099", + "\u30CF\u309A", + "\u30D2\u3099", + "\u30D2\u309A", + "\u30D5\u3099", + "\u30D5\u309A", + "\u30D8\u3099", + "\u30D8\u309A", + "\u30DB\u3099", + "\u30DB\u309A", + "\u30A6\u3099", + "\u30EF\u3099", + "\u30F0\u3099", + "\u30F1\u3099", + "\u30F2\u3099", + "\u30FD\u3099", + "\u30B3\u30C8", + "\u1100", + "\u1101", + "\u11AA", + "\u1102", + "\u11AC", + "\u11AD", + "\u1103", + "\u1104", + "\u1105", + "\u11B0", + "\u11B1", + "\u11B2", + "\u11B3", + "\u11B4", + "\u11B5", + "\u111A", + "\u1106", + "\u1107", + "\u1108", + "\u1121", + "\u1109", + "\u110A", + "\u110B", + "\u110C", + "\u110D", + "\u110E", + "\u110F", + "\u1110", + "\u1111", + "\u1112", + "\u1161", + "\u1162", + "\u1163", + "\u1164", + "\u1165", + "\u1166", + "\u1167", + "\u1168", + "\u1169", + "\u116A", + "\u116B", + "\u116C", + "\u116D", + "\u116E", + "\u116F", + "\u1170", + "\u1171", + "\u1172", + "\u1173", + "\u1174", + "\u1175", + "\u1160", + "\u1114", + "\u1115", + "\u11C7", + "\u11C8", + "\u11CC", + "\u11CE", + "\u11D3", + "\u11D7", + "\u11D9", + "\u111C", + "\u11DD", + "\u11DF", + "\u111D", + "\u111E", + "\u1120", + "\u1122", + "\u1123", + "\u1127", + "\u1129", + "\u112B", + "\u112C", + "\u112D", + "\u112E", + "\u112F", + "\u1132", + "\u1136", + "\u1140", + "\u1147", + "\u114C", + "\u11F1", + "\u11F2", + "\u1157", + "\u1158", + "\u1159", + "\u1184", + "\u1185", + "\u1188", + "\u1191", + "\u1192", + "\u1194", + "\u119E", + "\u11A1", + "\u4E09", + "\u56DB", + "\u4E0A", + "\u4E2D", + "\u4E0B", + "\u7532", + "\u4E19", + "\u4E01", + "\u5929", + "\u5730", + "\u0028\u1100\u0029", + "\u0028\u1102\u0029", + "\u0028\u1103\u0029", + "\u0028\u1105\u0029", + "\u0028\u1106\u0029", + "\u0028\u1107\u0029", + "\u0028\u1109\u0029", + "\u0028\u110B\u0029", + "\u0028\u110C\u0029", + "\u0028\u110E\u0029", + "\u0028\u110F\u0029", + "\u0028\u1110\u0029", + "\u0028\u1111\u0029", + "\u0028\u1112\u0029", + "\u0028\u1100\u1161\u0029", + "\u0028\u1102\u1161\u0029", + "\u0028\u1103\u1161\u0029", + "\u0028\u1105\u1161\u0029", + "\u0028\u1106\u1161\u0029", + "\u0028\u1107\u1161\u0029", + "\u0028\u1109\u1161\u0029", + "\u0028\u110B\u1161\u0029", + "\u0028\u110C\u1161\u0029", + "\u0028\u110E\u1161\u0029", + "\u0028\u110F\u1161\u0029", + "\u0028\u1110\u1161\u0029", + "\u0028\u1111\u1161\u0029", + "\u0028\u1112\u1161\u0029", + "\u0028\u110C\u116E\u0029", + "\u0028\u4E00\u0029", + "\u0028\u4E8C\u0029", + "\u0028\u4E09\u0029", + "\u0028\u56DB\u0029", + "\u0028\u4E94\u0029", + "\u0028\u516D\u0029", + "\u0028\u4E03\u0029", + "\u0028\u516B\u0029", + "\u0028\u4E5D\u0029", + "\u0028\u5341\u0029", + "\u0028\u6708\u0029", + "\u0028\u706B\u0029", + "\u0028\u6C34\u0029", + "\u0028\u6728\u0029", + "\u0028\u91D1\u0029", + "\u0028\u571F\u0029", + "\u0028\u65E5\u0029", + "\u0028\u682A\u0029", + "\u0028\u6709\u0029", + "\u0028\u793E\u0029", + "\u0028\u540D\u0029", + "\u0028\u7279\u0029", + "\u0028\u8CA1\u0029", + "\u0028\u795D\u0029", + "\u0028\u52B4\u0029", + "\u0028\u4EE3\u0029", + "\u0028\u547C\u0029", + "\u0028\u5B66\u0029", + "\u0028\u76E3\u0029", + "\u0028\u4F01\u0029", + "\u0028\u8CC7\u0029", + "\u0028\u5354\u0029", + "\u0028\u796D\u0029", + "\u0028\u4F11\u0029", + "\u0028\u81EA\u0029", + "\u0028\u81F3\u0029", + "\u0032\u0031", + "\u0032\u0032", + "\u0032\u0033", + "\u0032\u0034", + "\u0032\u0035", + "\u0032\u0036", + "\u0032\u0037", + "\u0032\u0038", + "\u0032\u0039", + "\u0033\u0030", + "\u0033\u0031", + "\u0033\u0032", + "\u0033\u0033", + "\u0033\u0034", + "\u0033\u0035", + "\u1100\u1161", + "\u1102\u1161", + "\u1103\u1161", + "\u1105\u1161", + "\u1106\u1161", + "\u1107\u1161", + "\u1109\u1161", + "\u110B\u1161", + "\u110C\u1161", + "\u110E\u1161", + "\u110F\u1161", + "\u1110\u1161", + "\u1111\u1161", + "\u1112\u1161", + "\u4E94", + "\u516D", + "\u4E03", + "\u4E5D", + "\u682A", + "\u6709", + "\u793E", + "\u540D", + "\u7279", + "\u8CA1", + "\u795D", + "\u52B4", + "\u79D8", + "\u7537", + "\u9069", + "\u512A", + "\u5370", + "\u6CE8", + "\u9805", + "\u4F11", + "\u5199", + "\u6B63", + "\u5DE6", + "\u53F3", + "\u533B", + "\u5B97", + "\u5B66", + "\u76E3", + "\u4F01", + "\u8CC7", + "\u5354", + "\u591C", + "\u0033\u0036", + "\u0033\u0037", + "\u0033\u0038", + "\u0033\u0039", + "\u0034\u0030", + "\u0034\u0031", + "\u0034\u0032", + "\u0034\u0033", + "\u0034\u0034", + "\u0034\u0035", + "\u0034\u0036", + "\u0034\u0037", + "\u0034\u0038", + "\u0034\u0039", + "\u0035\u0030", + "\u0031\u6708", + "\u0032\u6708", + "\u0033\u6708", + "\u0034\u6708", + "\u0035\u6708", + "\u0036\u6708", + "\u0037\u6708", + "\u0038\u6708", + "\u0039\u6708", + "\u0031\u0030\u6708", + "\u0031\u0031\u6708", + "\u0031\u0032\u6708", + "\u30A2", + "\u30A4", + "\u30A6", + "\u30A8", + "\u30AA", + "\u30AB", + "\u30AD", + "\u30AF", + "\u30B1", + "\u30B3", + "\u30B5", + "\u30B7", + "\u30B9", + "\u30BB", + "\u30BD", + "\u30BF", + "\u30C1", + "\u30C4", + "\u30C6", + "\u30C8", + "\u30CA", + "\u30CB", + "\u30CC", + "\u30CD", + "\u30CE", + "\u30CF", + "\u30D2", + "\u30D5", + "\u30D8", + "\u30DB", + "\u30DE", + "\u30DF", + "\u30E0", + "\u30E1", + "\u30E2", + "\u30E4", + "\u30E6", + "\u30E8", + "\u30E9", + "\u30EA", + "\u30EB", + "\u30EC", + "\u30ED", + "\u30EF", + "\u30F0", + "\u30F1", + "\u30F2", + "\u30A2\u30CF\u309A\u30FC\u30C8", + "\u30A2\u30EB\u30D5\u30A1", + "\u30A2\u30F3\u30D8\u309A\u30A2", + "\u30A2\u30FC\u30EB", + "\u30A4\u30CB\u30F3\u30AF\u3099", + "\u30A4\u30F3\u30C1", + "\u30A6\u30A9\u30F3", + "\u30A8\u30B9\u30AF\u30FC\u30C8\u3099", + "\u30A8\u30FC\u30AB\u30FC", + "\u30AA\u30F3\u30B9", + "\u30AA\u30FC\u30E0", + "\u30AB\u30A4\u30EA", + "\u30AB\u30E9\u30C3\u30C8", + "\u30AB\u30ED\u30EA\u30FC", + "\u30AB\u3099\u30ED\u30F3", + "\u30AB\u3099\u30F3\u30DE", + "\u30AD\u3099\u30AB\u3099", + "\u30AD\u3099\u30CB\u30FC", + "\u30AD\u30E5\u30EA\u30FC", + "\u30AD\u3099\u30EB\u30BF\u3099\u30FC", + "\u30AD\u30ED", + "\u30AD\u30ED\u30AF\u3099\u30E9\u30E0", + "\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB", + "\u30AD\u30ED\u30EF\u30C3\u30C8", + "\u30AF\u3099\u30E9\u30E0", + "\u30AF\u3099\u30E9\u30E0\u30C8\u30F3", + "\u30AF\u30EB\u30BB\u3099\u30A4\u30ED", + "\u30AF\u30ED\u30FC\u30CD", + "\u30B1\u30FC\u30B9", + "\u30B3\u30EB\u30CA", + "\u30B3\u30FC\u30DB\u309A", + "\u30B5\u30A4\u30AF\u30EB", + "\u30B5\u30F3\u30C1\u30FC\u30E0", + "\u30B7\u30EA\u30F3\u30AF\u3099", + "\u30BB\u30F3\u30C1", + "\u30BB\u30F3\u30C8", + "\u30BF\u3099\u30FC\u30B9", + "\u30C6\u3099\u30B7", + "\u30C8\u3099\u30EB", + "\u30C8\u30F3", + "\u30CA\u30CE", + "\u30CE\u30C3\u30C8", + "\u30CF\u30A4\u30C4", + "\u30CF\u309A\u30FC\u30BB\u30F3\u30C8", + "\u30CF\u309A\u30FC\u30C4", + "\u30CF\u3099\u30FC\u30EC\u30EB", + "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB", + "\u30D2\u309A\u30AF\u30EB", + "\u30D2\u309A\u30B3", + "\u30D2\u3099\u30EB", + "\u30D5\u30A1\u30E9\u30C3\u30C8\u3099", + "\u30D5\u30A3\u30FC\u30C8", + "\u30D5\u3099\u30C3\u30B7\u30A7\u30EB", + "\u30D5\u30E9\u30F3", + "\u30D8\u30AF\u30BF\u30FC\u30EB", + "\u30D8\u309A\u30BD", + "\u30D8\u309A\u30CB\u30D2", + "\u30D8\u30EB\u30C4", + "\u30D8\u309A\u30F3\u30B9", + "\u30D8\u309A\u30FC\u30B7\u3099", + "\u30D8\u3099\u30FC\u30BF", + "\u30DB\u309A\u30A4\u30F3\u30C8", + "\u30DB\u3099\u30EB\u30C8", + "\u30DB\u30F3", + "\u30DB\u309A\u30F3\u30C8\u3099", + "\u30DB\u30FC\u30EB", + "\u30DB\u30FC\u30F3", + "\u30DE\u30A4\u30AF\u30ED", + "\u30DE\u30A4\u30EB", + "\u30DE\u30C3\u30CF", + "\u30DE\u30EB\u30AF", + "\u30DE\u30F3\u30B7\u30E7\u30F3", + "\u30DF\u30AF\u30ED\u30F3", + "\u30DF\u30EA", + "\u30DF\u30EA\u30CF\u3099\u30FC\u30EB", + "\u30E1\u30AB\u3099", + "\u30E1\u30AB\u3099\u30C8\u30F3", + "\u30E1\u30FC\u30C8\u30EB", + "\u30E4\u30FC\u30C8\u3099", + "\u30E4\u30FC\u30EB", + "\u30E6\u30A2\u30F3", + "\u30EA\u30C3\u30C8\u30EB", + "\u30EA\u30E9", + "\u30EB\u30D2\u309A\u30FC", + "\u30EB\u30FC\u30D5\u3099\u30EB", + "\u30EC\u30E0", + "\u30EC\u30F3\u30C8\u30B1\u3099\u30F3", + "\u30EF\u30C3\u30C8", + "\u0030\u70B9", + "\u0031\u70B9", + "\u0032\u70B9", + "\u0033\u70B9", + "\u0034\u70B9", + "\u0035\u70B9", + "\u0036\u70B9", + "\u0037\u70B9", + "\u0038\u70B9", + "\u0039\u70B9", + "\u0031\u0030\u70B9", + "\u0031\u0031\u70B9", + "\u0031\u0032\u70B9", + "\u0031\u0033\u70B9", + "\u0031\u0034\u70B9", + "\u0031\u0035\u70B9", + "\u0031\u0036\u70B9", + "\u0031\u0037\u70B9", + "\u0031\u0038\u70B9", + "\u0031\u0039\u70B9", + "\u0032\u0030\u70B9", + "\u0032\u0031\u70B9", + "\u0032\u0032\u70B9", + "\u0032\u0033\u70B9", + "\u0032\u0034\u70B9", + "\u0068\u0050\u0061", + "\u0064\u0061", + "\u0041\u0055", + "\u0062\u0061\u0072", + "\u006F\u0056", + "\u0070\u0063", + "\u5E73\u6210", + "\u662D\u548C", + "\u5927\u6B63", + "\u660E\u6CBB", + "\u682A\u5F0F\u4F1A\u793E", + "\u0070\u0041", + "\u006E\u0041", + "\u03BC\u0041", + "\u006D\u0041", + "\u006B\u0041", + "\u004B\u0042", + "\u004D\u0042", + "\u0047\u0042", + "\u0063\u0061\u006C", + "\u006B\u0063\u0061\u006C", + "\u0070\u0046", + "\u006E\u0046", + "\u03BC\u0046", + "\u03BC\u0067", + "\u006D\u0067", + "\u006B\u0067", + "\u0048\u007A", + "\u006B\u0048\u007A", + "\u004D\u0048\u007A", + "\u0047\u0048\u007A", + "\u0054\u0048\u007A", + "\u03BC\u006C", + "\u006D\u006C", + "\u0064\u006C", + "\u006B\u006C", + "\u0066\u006D", + "\u006E\u006D", + "\u03BC\u006D", + "\u006D\u006D", + "\u0063\u006D", + "\u006B\u006D", + "\u006D\u006D\u0032", + "\u0063\u006D\u0032", + "\u006D\u0032", + "\u006B\u006D\u0032", + "\u006D\u006D\u0033", + "\u0063\u006D\u0033", + "\u006D\u0033", + "\u006B\u006D\u0033", + "\u006D\u2215\u0073", + "\u006D\u2215\u0073\u0032", + "\u0050\u0061", + "\u006B\u0050\u0061", + "\u004D\u0050\u0061", + "\u0047\u0050\u0061", + "\u0072\u0061\u0064", + "\u0072\u0061\u0064\u2215\u0073", + "\u0072\u0061\u0064\u2215\u0073\u0032", + "\u0070\u0073", + "\u006E\u0073", + "\u03BC\u0073", + "\u006D\u0073", + "\u0070\u0056", + "\u006E\u0056", + "\u03BC\u0056", + "\u006D\u0056", + "\u006B\u0056", + "\u004D\u0056", + "\u0070\u0057", + "\u006E\u0057", + "\u03BC\u0057", + "\u006D\u0057", + "\u006B\u0057", + "\u004D\u0057", + "\u006B\u03A9", + "\u004D\u03A9", + "\u0061\u002E\u006D\u002E", + "\u0042\u0071", + "\u0063\u0063", + "\u0063\u0064", + "\u0043\u2215\u006B\u0067", + "\u0043\u006F\u002E", + "\u0064\u0042", + "\u0047\u0079", + "\u0068\u0061", + "\u0048\u0050", + "\u0069\u006E", + "\u004B\u004B", + "\u004B\u004D", + "\u006B\u0074", + "\u006C\u006D", + "\u006C\u006E", + "\u006C\u006F\u0067", + "\u006C\u0078", + "\u006D\u0062", + "\u006D\u0069\u006C", + "\u006D\u006F\u006C", + "\u0050\u0048", + "\u0070\u002E\u006D\u002E", + "\u0050\u0050\u004D", + "\u0050\u0052", + "\u0073\u0072", + "\u0053\u0076", + "\u0057\u0062", + "\u0031\u65E5", + "\u0032\u65E5", + "\u0033\u65E5", + "\u0034\u65E5", + "\u0035\u65E5", + "\u0036\u65E5", + "\u0037\u65E5", + "\u0038\u65E5", + "\u0039\u65E5", + "\u0031\u0030\u65E5", + "\u0031\u0031\u65E5", + "\u0031\u0032\u65E5", + "\u0031\u0033\u65E5", + "\u0031\u0034\u65E5", + "\u0031\u0035\u65E5", + "\u0031\u0036\u65E5", + "\u0031\u0037\u65E5", + "\u0031\u0038\u65E5", + "\u0031\u0039\u65E5", + "\u0032\u0030\u65E5", + "\u0032\u0031\u65E5", + "\u0032\u0032\u65E5", + "\u0032\u0033\u65E5", + "\u0032\u0034\u65E5", + "\u0032\u0035\u65E5", + "\u0032\u0036\u65E5", + "\u0032\u0037\u65E5", + "\u0032\u0038\u65E5", + "\u0032\u0039\u65E5", + "\u0033\u0030\u65E5", + "\u0033\u0031\u65E5", + "\u8C48", + "\u66F4", + "\u8CC8", + "\u6ED1", + "\u4E32", + "\u53E5", + "\u5951", + "\u5587", + "\u5948", + "\u61F6", + "\u7669", + "\u7F85", + "\u863F", + "\u87BA", + "\u88F8", + "\u908F", + "\u6A02", + "\u6D1B", + "\u70D9", + "\u73DE", + "\u843D", + "\u916A", + "\u99F1", + "\u4E82", + "\u5375", + "\u6B04", + "\u721B", + "\u862D", + "\u9E1E", + "\u5D50", + "\u6FEB", + "\u85CD", + "\u8964", + "\u62C9", + "\u81D8", + "\u881F", + "\u5ECA", + "\u6717", + "\u6D6A", + "\u72FC", + "\u90CE", + "\u4F86", + "\u51B7", + "\u52DE", + "\u64C4", + "\u6AD3", + "\u7210", + "\u76E7", + "\u8606", + "\u865C", + "\u8DEF", + "\u9732", + "\u9B6F", + "\u9DFA", + "\u788C", + "\u797F", + "\u7DA0", + "\u83C9", + "\u9304", + "\u8AD6", + "\u58DF", + "\u5F04", + "\u7C60", + "\u807E", + "\u7262", + "\u78CA", + "\u8CC2", + "\u96F7", + "\u58D8", + "\u5C62", + "\u6A13", + "\u6DDA", + "\u6F0F", + "\u7D2F", + "\u7E37", + "\u964B", + "\u52D2", + "\u808B", + "\u51DC", + "\u51CC", + "\u7A1C", + "\u7DBE", + "\u83F1", + "\u9675", + "\u8B80", + "\u62CF", + "\u8AFE", + "\u4E39", + "\u5BE7", + "\u6012", + "\u7387", + "\u7570", + "\u5317", + "\u78FB", + "\u4FBF", + "\u5FA9", + "\u4E0D", + "\u6CCC", + "\u6578", + "\u7D22", + "\u53C3", + "\u585E", + "\u7701", + "\u8449", + "\u8AAA", + "\u6BBA", + "\u6C88", + "\u62FE", + "\u82E5", + "\u63A0", + "\u7565", + "\u4EAE", + "\u5169", + "\u51C9", + "\u6881", + "\u7CE7", + "\u826F", + "\u8AD2", + "\u91CF", + "\u52F5", + "\u5442", + "\u5EEC", + "\u65C5", + "\u6FFE", + "\u792A", + "\u95AD", + "\u9A6A", + "\u9E97", + "\u9ECE", + "\u66C6", + "\u6B77", + "\u8F62", + "\u5E74", + "\u6190", + "\u6200", + "\u649A", + "\u6F23", + "\u7149", + "\u7489", + "\u79CA", + "\u7DF4", + "\u806F", + "\u8F26", + "\u84EE", + "\u9023", + "\u934A", + "\u5217", + "\u52A3", + "\u54BD", + "\u70C8", + "\u88C2", + "\u5EC9", + "\u5FF5", + "\u637B", + "\u6BAE", + "\u7C3E", + "\u7375", + "\u4EE4", + "\u56F9", + "\u5DBA", + "\u601C", + "\u73B2", + "\u7469", + "\u7F9A", + "\u8046", + "\u9234", + "\u96F6", + "\u9748", + "\u9818", + "\u4F8B", + "\u79AE", + "\u91B4", + "\u96B8", + "\u60E1", + "\u4E86", + "\u50DA", + "\u5BEE", + "\u5C3F", + "\u6599", + "\u71CE", + "\u7642", + "\u84FC", + "\u907C", + "\u6688", + "\u962E", + "\u5289", + "\u677B", + "\u67F3", + "\u6D41", + "\u6E9C", + "\u7409", + "\u7559", + "\u786B", + "\u7D10", + "\u985E", + "\u622E", + "\u9678", + "\u502B", + "\u5D19", + "\u6DEA", + "\u8F2A", + "\u5F8B", + "\u6144", + "\u6817", + "\u9686", + "\u5229", + "\u540F", + "\u5C65", + "\u6613", + "\u674E", + "\u68A8", + "\u6CE5", + "\u7406", + "\u75E2", + "\u7F79", + "\u88CF", + "\u88E1", + "\u96E2", + "\u533F", + "\u6EBA", + "\u541D", + "\u71D0", + "\u7498", + "\u85FA", + "\u96A3", + "\u9C57", + "\u9E9F", + "\u6797", + "\u6DCB", + "\u81E8", + "\u7B20", + "\u7C92", + "\u72C0", + "\u7099", + "\u8B58", + "\u4EC0", + "\u8336", + "\u523A", + "\u5207", + "\u5EA6", + "\u62D3", + "\u7CD6", + "\u5B85", + "\u6D1E", + "\u66B4", + "\u8F3B", + "\u964D", + "\u5ED3", + "\u5140", + "\u55C0", + "\u585A", + "\u6674", + "\u51DE", + "\u732A", + "\u76CA", + "\u793C", + "\u795E", + "\u7965", + "\u798F", + "\u9756", + "\u7CBE", + "\u8612", + "\u8AF8", + "\u9038", + "\u90FD", + "\u98EF", + "\u98FC", + "\u9928", + "\u9DB4", + "\u4FAE", + "\u50E7", + "\u514D", + "\u52C9", + "\u52E4", + "\u5351", + "\u559D", + "\u5606", + "\u5668", + "\u5840", + "\u58A8", + "\u5C64", + "\u6094", + "\u6168", + "\u618E", + "\u61F2", + "\u654F", + "\u65E2", + "\u6691", + "\u6885", + "\u6D77", + "\u6E1A", + "\u6F22", + "\u716E", + "\u722B", + "\u7422", + "\u7891", + "\u7949", + "\u7948", + "\u7950", + "\u7956", + "\u798D", + "\u798E", + "\u7A40", + "\u7A81", + "\u7BC0", + "\u7E09", + "\u7E41", + "\u7F72", + "\u8005", + "\u81ED", + "\u8279", + "\u8457", + "\u8910", + "\u8996", + "\u8B01", + "\u8B39", + "\u8CD3", + "\u8D08", + "\u8FB6", + "\u96E3", + "\u97FF", + "\u983B", + "\u0066\u0066", + "\u0066\u0069", + "\u0066\u006C", + "\u0066\u0066\u0069", + "\u0066\u0066\u006C", + "\u0073\u0074", + "\u0574\u0576", + "\u0574\u0565", + "\u0574\u056B", + "\u057E\u0576", + "\u0574\u056D", + "\u05D9\u05B4", + "\u05F2\u05B7", + "\u05E2", + "\u05D4", + "\u05DB", + "\u05DC", + "\u05DD", + "\u05E8", + "\u05EA", + "\u05E9\u05C1", + "\u05E9\u05C2", + "\u05E9\u05BC\u05C1", + "\u05E9\u05BC\u05C2", + "\u05D0\u05B7", + "\u05D0\u05B8", + "\u05D0\u05BC", + "\u05D1\u05BC", + "\u05D2\u05BC", + "\u05D3\u05BC", + "\u05D4\u05BC", + "\u05D5\u05BC", + "\u05D6\u05BC", + "\u05D8\u05BC", + "\u05D9\u05BC", + "\u05DA\u05BC", + "\u05DB\u05BC", + "\u05DC\u05BC", + "\u05DE\u05BC", + "\u05E0\u05BC", + "\u05E1\u05BC", + "\u05E3\u05BC", + "\u05E4\u05BC", + "\u05E6\u05BC", + "\u05E7\u05BC", + "\u05E8\u05BC", + "\u05E9\u05BC", + "\u05EA\u05BC", + "\u05D5\u05B9", + "\u05D1\u05BF", + "\u05DB\u05BF", + "\u05E4\u05BF", + "\u05D0\u05DC", + "\u0671", + "\u067B", + "\u067E", + "\u0680", + "\u067A", + "\u067F", + "\u0679", + "\u06A4", + "\u06A6", + "\u0684", + "\u0683", + "\u0686", + "\u0687", + "\u068D", + "\u068C", + "\u068E", + "\u0688", + "\u0698", + "\u0691", + "\u06A9", + "\u06AF", + "\u06B3", + "\u06B1", + "\u06BA", + "\u06BB", + "\u06C1", + "\u06BE", + "\u06D2", + "\u06AD", + "\u06C7", + "\u06C6", + "\u06C8", + "\u06CB", + "\u06C5", + "\u06C9", + "\u06D0", + "\u0649", + "\u064A\u0654\u0627", + "\u064A\u0654\u06D5", + "\u064A\u0654\u0648", + "\u064A\u0654\u06C7", + "\u064A\u0654\u06C6", + "\u064A\u0654\u06C8", + "\u064A\u0654\u06D0", + "\u064A\u0654\u0649", + "\u06CC", + "\u064A\u0654\u062C", + "\u064A\u0654\u062D", + "\u064A\u0654\u0645", + "\u064A\u0654\u064A", + "\u0628\u062C", + "\u0628\u062D", + "\u0628\u062E", + "\u0628\u0645", + "\u0628\u0649", + "\u0628\u064A", + "\u062A\u062C", + "\u062A\u062D", + "\u062A\u062E", + "\u062A\u0645", + "\u062A\u0649", + "\u062A\u064A", + "\u062B\u062C", + "\u062B\u0645", + "\u062B\u0649", + "\u062B\u064A", + "\u062C\u062D", + "\u062C\u0645", + "\u062D\u062C", + "\u062D\u0645", + "\u062E\u062C", + "\u062E\u062D", + "\u062E\u0645", + "\u0633\u062C", + "\u0633\u062D", + "\u0633\u062E", + "\u0633\u0645", + "\u0635\u062D", + "\u0635\u0645", + "\u0636\u062C", + "\u0636\u062D", + "\u0636\u062E", + "\u0636\u0645", + "\u0637\u062D", + "\u0637\u0645", + "\u0638\u0645", + "\u0639\u062C", + "\u0639\u0645", + "\u063A\u062C", + "\u063A\u0645", + "\u0641\u062C", + "\u0641\u062D", + "\u0641\u062E", + "\u0641\u0645", + "\u0641\u0649", + "\u0641\u064A", + "\u0642\u062D", + "\u0642\u0645", + "\u0642\u0649", + "\u0642\u064A", + "\u0643\u0627", + "\u0643\u062C", + "\u0643\u062D", + "\u0643\u062E", + "\u0643\u0644", + "\u0643\u0645", + "\u0643\u0649", + "\u0643\u064A", + "\u0644\u062C", + "\u0644\u062D", + "\u0644\u062E", + "\u0644\u0645", + "\u0644\u0649", + "\u0644\u064A", + "\u0645\u062C", + "\u0645\u062D", + "\u0645\u062E", + "\u0645\u0645", + "\u0645\u0649", + "\u0645\u064A", + "\u0646\u062C", + "\u0646\u062D", + "\u0646\u062E", + "\u0646\u0645", + "\u0646\u0649", + "\u0646\u064A", + "\u0647\u062C", + "\u0647\u0645", + "\u0647\u0649", + "\u0647\u064A", + "\u064A\u062C", + "\u064A\u062D", + "\u064A\u062E", + "\u064A\u0645", + "\u064A\u0649", + "\u064A\u064A", + "\u0630\u0670", + "\u0631\u0670", + "\u0649\u0670", + "\u0020\u064C\u0651", + "\u0020\u064D\u0651", + "\u0020\u064E\u0651", + "\u0020\u064F\u0651", + "\u0020\u0650\u0651", + "\u0020\u0651\u0670", + "\u064A\u0654\u0631", + "\u064A\u0654\u0632", + "\u064A\u0654\u0646", + "\u0628\u0631", + "\u0628\u0632", + "\u0628\u0646", + "\u062A\u0631", + "\u062A\u0632", + "\u062A\u0646", + "\u062B\u0631", + "\u062B\u0632", + "\u062B\u0646", + "\u0645\u0627", + "\u0646\u0631", + "\u0646\u0632", + "\u0646\u0646", + "\u064A\u0631", + "\u064A\u0632", + "\u064A\u0646", + "\u064A\u0654\u062E", + "\u064A\u0654\u0647", + "\u0628\u0647", + "\u062A\u0647", + "\u0635\u062E", + "\u0644\u0647", + "\u0646\u0647", + "\u0647\u0670", + "\u064A\u0647", + "\u062B\u0647", + "\u0633\u0647", + "\u0634\u0645", + "\u0634\u0647", + "\u0640\u064E\u0651", + "\u0640\u064F\u0651", + "\u0640\u0650\u0651", + "\u0637\u0649", + "\u0637\u064A", + "\u0639\u0649", + "\u0639\u064A", + "\u063A\u0649", + "\u063A\u064A", + "\u0633\u0649", + "\u0633\u064A", + "\u0634\u0649", + "\u0634\u064A", + "\u062D\u0649", + "\u062D\u064A", + "\u062C\u0649", + "\u062C\u064A", + "\u062E\u0649", + "\u062E\u064A", + "\u0635\u0649", + "\u0635\u064A", + "\u0636\u0649", + "\u0636\u064A", + "\u0634\u062C", + "\u0634\u062D", + "\u0634\u062E", + "\u0634\u0631", + "\u0633\u0631", + "\u0635\u0631", + "\u0636\u0631", + "\u0627\u064B", + "\u062A\u062C\u0645", + "\u062A\u062D\u062C", + "\u062A\u062D\u0645", + "\u062A\u062E\u0645", + "\u062A\u0645\u062C", + "\u062A\u0645\u062D", + "\u062A\u0645\u062E", + "\u062C\u0645\u062D", + "\u062D\u0645\u064A", + "\u062D\u0645\u0649", + "\u0633\u062D\u062C", + "\u0633\u062C\u062D", + "\u0633\u062C\u0649", + "\u0633\u0645\u062D", + "\u0633\u0645\u062C", + "\u0633\u0645\u0645", + "\u0635\u062D\u062D", + "\u0635\u0645\u0645", + "\u0634\u062D\u0645", + "\u0634\u062C\u064A", + "\u0634\u0645\u062E", + "\u0634\u0645\u0645", + "\u0636\u062D\u0649", + "\u0636\u062E\u0645", + "\u0637\u0645\u062D", + "\u0637\u0645\u0645", + "\u0637\u0645\u064A", + "\u0639\u062C\u0645", + "\u0639\u0645\u0645", + "\u0639\u0645\u0649", + "\u063A\u0645\u0645", + "\u063A\u0645\u064A", + "\u063A\u0645\u0649", + "\u0641\u062E\u0645", + "\u0642\u0645\u062D", + "\u0642\u0645\u0645", + "\u0644\u062D\u0645", + "\u0644\u062D\u064A", + "\u0644\u062D\u0649", + "\u0644\u062C\u062C", + "\u0644\u062E\u0645", + "\u0644\u0645\u062D", + "\u0645\u062D\u062C", + "\u0645\u062D\u0645", + "\u0645\u062D\u064A", + "\u0645\u062C\u062D", + "\u0645\u062C\u0645", + "\u0645\u062E\u062C", + "\u0645\u062E\u0645", + "\u0645\u062C\u062E", + "\u0647\u0645\u062C", + "\u0647\u0645\u0645", + "\u0646\u062D\u0645", + "\u0646\u062D\u0649", + "\u0646\u062C\u0645", + "\u0646\u062C\u0649", + "\u0646\u0645\u064A", + "\u0646\u0645\u0649", + "\u064A\u0645\u0645", + "\u0628\u062E\u064A", + "\u062A\u062C\u064A", + "\u062A\u062C\u0649", + "\u062A\u062E\u064A", + "\u062A\u062E\u0649", + "\u062A\u0645\u064A", + "\u062A\u0645\u0649", + "\u062C\u0645\u064A", + "\u062C\u062D\u0649", + "\u062C\u0645\u0649", + "\u0633\u062E\u0649", + "\u0635\u062D\u064A", + "\u0634\u062D\u064A", + "\u0636\u062D\u064A", + "\u0644\u062C\u064A", + "\u0644\u0645\u064A", + "\u064A\u062D\u064A", + "\u064A\u062C\u064A", + "\u064A\u0645\u064A", + "\u0645\u0645\u064A", + "\u0642\u0645\u064A", + "\u0646\u062D\u064A", + "\u0639\u0645\u064A", + "\u0643\u0645\u064A", + "\u0646\u062C\u062D", + "\u0645\u062E\u064A", + "\u0644\u062C\u0645", + "\u0643\u0645\u0645", + "\u062C\u062D\u064A", + "\u062D\u062C\u064A", + "\u0645\u062C\u064A", + "\u0641\u0645\u064A", + "\u0628\u062D\u064A", + "\u0633\u062E\u064A", + "\u0646\u062C\u064A", + "\u0635\u0644\u06D2", + "\u0642\u0644\u06D2", + "\u0627\u0644\u0644\u0647", + "\u0627\u0643\u0628\u0631", + "\u0645\u062D\u0645\u062F", + "\u0635\u0644\u0639\u0645", + "\u0631\u0633\u0648\u0644", + "\u0639\u0644\u064A\u0647", + "\u0648\u0633\u0644\u0645", + "\u0635\u0644\u0649", + "\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645", + "\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647", + "\u0631\u06CC\u0627\u0644", + "\u2014", + "\u2013", + "\u005F", + "\u007B", + "\u007D", + "\u3014", + "\u3015", + "\u3010", + "\u3011", + "\u300A", + "\u300B", + "\u300C", + "\u300D", + "\u300E", + "\u300F", + "\u002C", + "\u3001", + "\u003A", + "\u003F", + "\u0021", + "\u0023", + "\u0026", + "\u002A", + "\u002D", + "\u003C", + "\u003E", + "\\", + "\u0024", + "\u0025", + "\u0040", + "\u0020\u064B", + "\u0640\u064B", + "\u0020\u064C", + "\u0020\u064D", + "\u0020\u064E", + "\u0640\u064E", + "\u0020\u064F", + "\u0640\u064F", + "\u0020\u0650", + "\u0640\u0650", + "\u0020\u0651", + "\u0640\u0651", + "\u0020\u0652", + "\u0640\u0652", + "\u0621", + "\u0627", + "\u0628", + "\u0629", + "\u062A", + "\u062B", + "\u062C", + "\u062D", + "\u062E", + "\u062F", + "\u0630", + "\u0631", + "\u0632", + "\u0633", + "\u0634", + "\u0635", + "\u0636", + "\u0637", + "\u0638", + "\u0639", + "\u063A", + "\u0641", + "\u0642", + "\u0643", + "\u0644", + "\u0645", + "\u0646", + "\u0647", + "\u0648", + "\u064A", + "\u0644\u0627\u0653", + "\u0644\u0627\u0654", + "\u0644\u0627\u0655", + "\u0644\u0627", + "\"", + "\u0027", + "\u002F", + "\u005B", + "\u005D", + "\u005E", + "\u007C", + "\u007E", + "\u2985", + "\u2986", + "\u3002", + "\u30FB", + "\u30A1", + "\u30A3", + "\u30A5", + "\u30A7", + "\u30A9", + "\u30E3", + "\u30E5", + "\u30E7", + "\u30C3", + "\u30FC", + "\u30F3", + "\u3099", + "\u309A", + "\u00A2", + "\u00A3", + "\u00AC", + "\u00A6", + "\u00A5", + "\u20A9", + "\u2502", + "\u2190", + "\u2191", + "\u2192", + "\u2193", + "\u25A0", + "\u25CB", + }; +} diff --git a/java/gnu/inet/encoding/IDNA.java b/java/gnu/inet/encoding/IDNA.java new file mode 100644 index 0000000..0bd26ec --- /dev/null +++ b/java/gnu/inet/encoding/IDNA.java @@ -0,0 +1,278 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * This class offers static methods for converting internationalized + * domain names to ACE and back. + * <ul> + * <li>RFC3490 IDNA + * </ul> + * Note that this implementation only supports 16-bit Unicode code + * points. + */ +public class IDNA +{ + public final static String ACE_PREFIX = "xn--"; + + /** + * Converts a Unicode string to ASCII using the procedure in RFC3490 + * section 4.1. Unassigned characters are not allowed and STD3 ASCII + * rules are enforced. The input string may be a domain name + * containing dots. + * + * @param input Unicode string. + * @return Encoded string. + */ + public static String toASCII(String input) + throws IDNAException + { + StringBuffer o = new StringBuffer(); + StringBuffer h = new StringBuffer(); + + for (int i = 0; i < input.length(); i++) { + char c = input.charAt(i); + if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') { + o.append(toASCII(h.toString(), false, true)); + o.append('.'); + h = new StringBuffer(); + } else { + h.append(c); + } + } + o.append(toASCII(h.toString(), false, true)); + return o.toString(); + } + + /** + * Converts a Unicode string to ASCII using the procedure in RFC3490 + * section 4.1. Unassigned characters are not allowed and STD3 ASCII + * rules are enforced. + * + * @param input Unicode string. + * @param allowUnassigned Unassigned characters, allowed or not? + * @param useSTD3ASCIIRules STD3 ASCII rules, enforced or not? + * @return Encoded string. + */ + public static String toASCII(String input, boolean allowUnassigned, boolean useSTD3ASCIIRules) + throws IDNAException + { + // Step 1: Check if the string contains code points outside + // the ASCII range 0..0x7c. + + boolean nonASCII = false; + + for (int i = 0; i < input.length(); i++) { + int c = input.charAt(i); + if (c > 0x7f) { + nonASCII = true; + break; + } + } + + // Step 2: Perform the nameprep operation. + + if (nonASCII) { + try { + input = Stringprep.nameprep(input, allowUnassigned); + } catch (StringprepException e) { + throw new IDNAException(e); + } + } + + // Step 3: - Verify the absence of non-LDH ASCII code points + // 0..0x2c, 0x2e..0x2f, 0x3a..0x40, 0x5b..0x60, + // 0x7b..0x7f + // - Verify the absence of leading and trailing + // hyphen-minus + + if (useSTD3ASCIIRules) { + for (int i = 0; i < input.length(); i++) { + int c = input.charAt(i); + if ((c <= 0x2c) || + (c >= 0x2e && c <= 0x2f) || + (c >= 0x3a && c <= 0x40) || + (c >= 0x5b && c <= 0x60) || + (c >= 0x7b && c <= 0x7f)) { + throw new IDNAException(IDNAException.CONTAINS_NON_LDH); + } + } + + if (input.startsWith("-") || input.endsWith("-")) { + throw new IDNAException(IDNAException.CONTAINS_HYPHEN); + } + } + + // Step 4: If all code points are inside 0..0x7f, skip to step 8 + + nonASCII = false; + + for (int i = 0; i < input.length(); i++) { + int c = input.charAt(i); + if (c > 0x7f) { + nonASCII = true; + break; + } + } + + String output = input; + + if (nonASCII) { + + // Step 5: Verify that the sequence does not begin with the ACE prefix. + + if (input.startsWith(ACE_PREFIX)) { + throw new IDNAException(IDNAException.CONTAINS_ACE_PREFIX); + } + + // Step 6: Punycode + + try { + output = Punycode.encode(input); + } catch (PunycodeException e) { + throw new IDNAException(e); + } + + // Step 7: Prepend the ACE prefix. + + output = ACE_PREFIX + output; + } + + // Step 8: Check that the length is inside 1..63. + + if (output.length() < 1 || output.length() > 63) { + throw new IDNAException(IDNAException.TOO_LONG); + } + + return output; + } + + /** + * Converts an ASCII-encoded string to Unicode. Unassigned + * characters are not allowed and STD3 hostnames are enforced. Input + * may be domain name containing dots. + * + * @param input ASCII input string. + * @return Unicode string. + */ + public static String toUnicode(String input) + { + StringBuffer o = new StringBuffer(); + StringBuffer h = new StringBuffer(); + + for (int i = 0; i < input.length(); i++) { + char c = input.charAt(i); + if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') { + o.append(toUnicode(h.toString(), false, true)); + o.append(c); + h = new StringBuffer(); + } else { + h.append(c); + } + } + o.append(toUnicode(h.toString(), false, true)); + return o.toString(); + } + + /** + * Converts an ASCII-encoded string to Unicode. + * + * @param input ASCII input string. + * @param allowUnassigned Allow unassigned Unicode characters. + * @param useSTD3ASCIIRules Check that the output conforms to STD3. + * @return Unicode string. + */ + public static String toUnicode(String input, boolean allowUnassigned, boolean useSTD3ASCIIRules) + { + String original = input; + boolean nonASCII = false; + + // Step 1: If all code points are inside 0..0x7f, skip to step 3. + + for (int i = 0; i < input.length(); i++) { + int c = input.charAt(i); + if (c > 0x7f) { + nonASCII = true; + break; + } + } + + // Step 2: Perform the Nameprep operation. + + if (nonASCII) { + try { + input = Stringprep.nameprep(input, allowUnassigned); + } catch (StringprepException e) { + // ToUnicode never fails! + return original; + } + } + + // Step 3: Verify the sequence starts with the ACE prefix. + + if (!input.startsWith(ACE_PREFIX)) { + // ToUnicode never fails! + return original; + } + + String stored = input; + + // Step 4: Remove the ACE prefix. + + input = input.substring(ACE_PREFIX.length()); + + // Step 5: Decode using punycode + + String output; + + try { + output = Punycode.decode(input); + } catch (PunycodeException e) { + // ToUnicode never fails! + return original; + } + + // Step 6: Apply toASCII + + String ascii; + + try { + ascii = toASCII(output, allowUnassigned, useSTD3ASCIIRules); + } catch (IDNAException e) { + // ToUnicode never fails! + return original; + } + + // Step 7: Compare case-insensitively. + + if (!ascii.equalsIgnoreCase(stored)) { + // ToUnicode never fails! + return original; + } + + // Step 8: Return the result. + + return output; + } +} diff --git a/java/gnu/inet/encoding/IDNAException.java b/java/gnu/inet/encoding/IDNAException.java new file mode 100644 index 0000000..6af9060 --- /dev/null +++ b/java/gnu/inet/encoding/IDNAException.java @@ -0,0 +1,51 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * Exception handling for IDNA class. + */ +public class IDNAException + extends Exception +{ + public static String CONTAINS_NON_LDH = "Contains non-LDH characters."; + public static String CONTAINS_HYPHEN = "Leading or trailing hyphen not allowed."; + public static String CONTAINS_ACE_PREFIX = "ACE prefix (xn--) not allowed."; + public static String TOO_LONG = "String too long."; + + public IDNAException(String m) + { + super(m); + } + + public IDNAException(StringprepException e) + { + super(e); + } + + public IDNAException(PunycodeException e) + { + super(e); + } +} diff --git a/java/gnu/inet/encoding/Makefile b/java/gnu/inet/encoding/Makefile new file mode 100644 index 0000000..cb46d50 --- /dev/null +++ b/java/gnu/inet/encoding/Makefile @@ -0,0 +1,706 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# java/gnu/inet/encoding/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = java/gnu/inet/encoding +DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__dist_noinst_JAVA_DIST = CombiningClass.java Composition.java \ + DecompositionKeys.java DecompositionMappings.java IDNA.java \ + IDNAException.java NFKC.java Punycode.java \ + PunycodeException.java RFC3454.java Stringprep.java \ + StringprepException.java +JAVAC = javac +CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu/inet/encoding +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/gnu/inet/encoding +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../../../ +top_builddir = ../../../.. +top_srcdir = ../../../.. +JAVAROOT = $(top_builddir)/java +#dist_noinst_JAVA = CombiningClass.java \ +# Composition.java \ +# DecompositionKeys.java \ +# DecompositionMappings.java \ +# IDNA.java \ +# IDNAException.java \ +# NFKC.java \ +# Punycode.java \ +# PunycodeException.java \ +# RFC3454.java \ +# Stringprep.java \ +# StringprepException.java + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +classdist_noinst.stamp: $(dist_noinst_JAVA) + @list1='$?'; list2=; if test -n "$$list1"; then \ + for p in $$list1; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + list2="$$list2 $$d$$p"; \ + done; \ + echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \ + $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \ + else :; fi + echo timestamp > classdist_noinst.stamp + +clean-dist_noinstJAVA: + -rm -f *.class classdist_noinst.stamp +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile classdist_noinst.stamp +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \ + clean-generic clean-libtool distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/inet/encoding/Makefile.am b/java/gnu/inet/encoding/Makefile.am new file mode 100644 index 0000000..d3ea42b --- /dev/null +++ b/java/gnu/inet/encoding/Makefile.am @@ -0,0 +1,36 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +JAVAROOT = $(top_builddir)/java + +if JAVA +dist_noinst_JAVA = CombiningClass.java \ + Composition.java \ + DecompositionKeys.java \ + DecompositionMappings.java \ + IDNA.java \ + IDNAException.java \ + NFKC.java \ + Punycode.java \ + PunycodeException.java \ + RFC3454.java \ + Stringprep.java \ + StringprepException.java +endif # JAVA diff --git a/java/gnu/inet/encoding/Makefile.in b/java/gnu/inet/encoding/Makefile.in new file mode 100644 index 0000000..34b1c57 --- /dev/null +++ b/java/gnu/inet/encoding/Makefile.in @@ -0,0 +1,706 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = java/gnu/inet/encoding +DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__dist_noinst_JAVA_DIST = CombiningClass.java Composition.java \ + DecompositionKeys.java DecompositionMappings.java IDNA.java \ + IDNAException.java NFKC.java Punycode.java \ + PunycodeException.java RFC3454.java Stringprep.java \ + StringprepException.java +JAVAC = javac +CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +JAVAROOT = $(top_builddir)/java +@JAVA_TRUE@dist_noinst_JAVA = CombiningClass.java \ +@JAVA_TRUE@ Composition.java \ +@JAVA_TRUE@ DecompositionKeys.java \ +@JAVA_TRUE@ DecompositionMappings.java \ +@JAVA_TRUE@ IDNA.java \ +@JAVA_TRUE@ IDNAException.java \ +@JAVA_TRUE@ NFKC.java \ +@JAVA_TRUE@ Punycode.java \ +@JAVA_TRUE@ PunycodeException.java \ +@JAVA_TRUE@ RFC3454.java \ +@JAVA_TRUE@ Stringprep.java \ +@JAVA_TRUE@ StringprepException.java + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +classdist_noinst.stamp: $(dist_noinst_JAVA) + @list1='$?'; list2=; if test -n "$$list1"; then \ + for p in $$list1; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + list2="$$list2 $$d$$p"; \ + done; \ + echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \ + $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \ + else :; fi + echo timestamp > classdist_noinst.stamp + +clean-dist_noinstJAVA: + -rm -f *.class classdist_noinst.stamp +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile classdist_noinst.stamp +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \ + clean-generic clean-libtool distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/gnu/inet/encoding/NFKC.java b/java/gnu/inet/encoding/NFKC.java new file mode 100644 index 0000000..cd090bb --- /dev/null +++ b/java/gnu/inet/encoding/NFKC.java @@ -0,0 +1,328 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * This class offers static methods for Unicode NFKC string normalization. + */ +public class NFKC +{ + /** + * Applies NFKC normalization to a string. + * + * @param in The string to normalize. + * @return An NFKC normalized string. + */ + public static String normalizeNFKC(String in) + { + StringBuffer out = new StringBuffer(); + + for (int i = 0; i < in.length(); i++) { + char code = in.charAt(i); + + // In Unicode 3.0, Hangul was defined as the block from U+AC00 + // to U+D7A3, however, since Unicode 3.2 the block extends until + // U+D7AF. The decomposeHangul function only decomposes until + // U+D7A3. Should this be changed? + if (code >= 0xAC00 && code <= 0xD7AF) { + out.append(decomposeHangul(code)); + } else { + int index = decomposeIndex(code); + if (index == -1) { + out.append(code); + } else { + out.append(DecompositionMappings.m[index]); + } + } + } + + // Bring the stringbuffer into canonical order. + canonicalOrdering(out); + + // Do the canonical composition. + int last_cc = 0; + int last_start = 0; + + for (int i = 0; i < out.length(); i++) { + int cc = combiningClass(out.charAt(i)); + + if (i > 0 && (last_cc == 0 || last_cc != cc)) { + // Try to combine characters + char a = out.charAt(last_start); + char b = out.charAt(i); + + int c = compose(a, b); + + if (c != -1) { + out.setCharAt(last_start, (char) c); + out.deleteCharAt(i); + i--; + + if (i == last_start) { + last_cc = 0; + } else { + last_cc = combiningClass(out.charAt(i-1)); + } + continue; + } + } + + if (cc == 0) { + last_start = i; + } + + last_cc = cc; + } + + return out.toString(); + } + + + /** + * Returns the index inside the decomposition table, implemented + * using a binary search. + * + * @param c Character to look up. + * @return Index if found, -1 otherwise. + */ + static int decomposeIndex(char c) + { + int start = 0; + int end = DecompositionKeys.k.length/2; + + while (true) { + int half = (start + end) / 2; + int code = DecompositionKeys.k[half*2]; + + if (c == code) { + return DecompositionKeys.k[half*2 + 1]; + } + if (half == start) { + // Character not found + return -1; + } else if (c > code) { + start = half; + } else { + end = half; + } + } + } + + /** + * Returns the combining class of a given character. + * + * @param c The character. + * @return The combining class. + */ + static int combiningClass(char c) + { + int h = c >> 8; + int l = c & 0xff; + + int i = CombiningClass.i[h]; + if (i > -1) { + return CombiningClass.c[i][l]; + } else { + return 0; + } + } + + /** + * Rearranges characters in a stringbuffer in order to respect the + * canonical ordering properties. + * + * @param The StringBuffer to rearrange. + */ + static void canonicalOrdering(StringBuffer in) + { + boolean isOrdered = false; + + while (!isOrdered) { + isOrdered = true; + + int lastCC = combiningClass(in.charAt(0)); + + for (int i = 0; i < in.length()-1; i++) { + int nextCC = combiningClass(in.charAt(i+1)); + if (nextCC != 0 && lastCC > nextCC) { + for (int j = i+1; j > 0; j--) { + if (combiningClass(in.charAt(j-1)) <= nextCC) { + break; + } + char t = in.charAt(j); + in.setCharAt(j, in.charAt(j-1)); + in.setCharAt(j-1, t); + isOrdered = false; + } + nextCC = lastCC; + } + lastCC = nextCC; + } + } + } + + /** + * Returns the index inside the composition table. + * + * @param a Character to look up. + * @return Index if found, -1 otherwise. + */ + static int composeIndex(char a) + { + if (a>>8 >= Composition.composePage.length) { + return -1; + } + int ap = Composition.composePage[a>>8]; + if (ap == -1) { + return -1; + } + return Composition.composeData[ap][a & 0xff]; + } + + /** + * Tries to compose two characters canonically. + * + * @param a First character. + * @param b Second character. + * @return The composed character or -1 if no composition could be + * found. + */ + static int compose(char a, char b) + { + int h = composeHangul(a, b); + if (h != -1) { + return h; + } + + int ai = composeIndex(a); + + if (ai >= Composition.singleFirstStart && ai < Composition.singleSecondStart) { + if (b == Composition.singleFirst[ai - Composition.singleFirstStart][0]) { + return Composition.singleFirst[ai - Composition.singleFirstStart][1]; + } else { + return -1; + } + } + + int bi = composeIndex(b); + + if (bi >= Composition.singleSecondStart) { + if (a == Composition.singleSecond[bi - Composition.singleSecondStart][0]) { + return Composition.singleSecond[bi - Composition.singleSecondStart][1]; + } else { + return -1; + } + } + + if (ai >= 0 && ai < Composition.multiSecondStart && + bi >= Composition.multiSecondStart && bi < Composition.singleFirstStart) { + char[] f = Composition.multiFirst[ai]; + + if (bi - Composition.multiSecondStart < f.length) { + char r = f[bi - Composition.multiSecondStart]; + if (r == 0) { + return -1; + } else { + return r; + } + } + } + + + return -1; + } + + /** + * Entire hangul code copied from: + * http://www.unicode.org/unicode/reports/tr15/ + * + * Several hangul specific constants + */ + static final int SBase = 0xAC00; + static final int LBase = 0x1100; + static final int VBase = 0x1161; + static final int TBase = 0x11A7; + static final int LCount = 19; + static final int VCount = 21; + static final int TCount = 28; + static final int NCount = VCount * TCount; + static final int SCount = LCount * NCount; + + /** + * Decomposes a hangul character. + * + * @param s A character to decompose. + * @return A string containing the hangul decomposition of the input + * character. If no hangul decomposition can be found, a string + * containing the character itself is returned. + */ + static String decomposeHangul(char s) + { + int SIndex = s - SBase; + if (SIndex < 0 || SIndex >= SCount) { + return String.valueOf(s); + } + StringBuffer result = new StringBuffer(); + int L = LBase + SIndex / NCount; + int V = VBase + (SIndex % NCount) / TCount; + int T = TBase + SIndex % TCount; + result.append((char)L); + result.append((char)V); + if (T != TBase) result.append((char)T); + return result.toString(); + } + + /** + * Composes two hangul characters. + * + * @param a First character. + * @param b Second character. + * @return Returns the composed character or -1 if the two + * characters cannot be composed. + */ + static int composeHangul(char a, char b) + { + // 1. check to see if two current characters are L and V + int LIndex = a - LBase; + if (0 <= LIndex && LIndex < LCount) { + int VIndex = b - VBase; + if (0 <= VIndex && VIndex < VCount) { + // make syllable of form LV + return SBase + (LIndex * VCount + VIndex) * TCount; + } + } + + // 2. check to see if two current characters are LV and T + int SIndex = a - SBase; + if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0) { + int TIndex = b - TBase; + if (0 <= TIndex && TIndex <= TCount) { + // make syllable of form LVT + return a+TIndex; + } + } + return -1; + } + +} \ No newline at end of file diff --git a/java/gnu/inet/encoding/Punycode.java b/java/gnu/inet/encoding/Punycode.java new file mode 100644 index 0000000..dd6d2f9 --- /dev/null +++ b/java/gnu/inet/encoding/Punycode.java @@ -0,0 +1,259 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * This class offers static methods for encoding/decoding strings + * using the Punycode algorithm. + * <ul> + * <li>RFC3492 Punycode + * </ul> + * Note that this implementation only supports 16-bit Unicode code + * points. + */ +public class Punycode +{ + /* Punycode parameters */ + final static int TMIN = 1; + final static int TMAX = 26; + final static int BASE = 36; + final static int INITIAL_N = 128; + final static int INITIAL_BIAS = 72; + final static int DAMP = 700; + final static int SKEW = 38; + final static char DELIMITER = '-'; + + /** + * Punycodes a unicode string. + * + * @param input Unicode string. + * @return Punycoded string. + */ + public static String encode(String input) + throws PunycodeException + { + int n = INITIAL_N; + int delta = 0; + int bias = INITIAL_BIAS; + StringBuffer output = new StringBuffer(); + + // Copy all basic code points to the output + int b = 0; + for (int i = 0; i < input.length(); i++) { + char c = input.charAt(i); + if (isBasic(c)) { + output.append(c); + b++; + } + } + + // Append delimiter + if (b > 0) { + output.append(DELIMITER); + } + + int h = b; + while (h < input.length()) { + int m = Integer.MAX_VALUE; + + // Find the minimum code point >= n + for (int i = 0; i < input.length(); i++) { + int c = input.charAt(i); + if (c >= n && c < m) { + m = c; + } + } + + if (m - n > (Integer.MAX_VALUE - delta) / (h + 1)) { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + delta = delta + (m - n) * (h + 1); + n = m; + + for (int j = 0; j < input.length(); j++) { + int c = input.charAt(j); + if (c < n) { + delta++; + if (0 == delta) { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + } + if (c == n) { + int q = delta; + + for (int k = BASE;; k += BASE) { + int t; + if (k <= bias) { + t = TMIN; + } else if (k >= bias + TMAX) { + t = TMAX; + } else { + t = k - bias; + } + if (q < t) { + break; + } + output.append((char) digit2codepoint(t + (q - t) % (BASE - t))); + q = (q - t) / (BASE - t); + } + + output.append((char) digit2codepoint(q)); + bias = adapt(delta, h + 1, h == b); + delta = 0; + h++; + } + } + + delta++; + n++; + } + + return output.toString(); + } + + /** + * Decode a punycoded string. + * + * @param input Punycode string + * @return Unicode string. + */ + public static String decode(String input) + throws PunycodeException + { + int n = INITIAL_N; + int i = 0; + int bias = INITIAL_BIAS; + StringBuffer output = new StringBuffer(); + + int d = input.lastIndexOf(DELIMITER); + if (d > 0) { + for (int j = 0; j < d; j++) { + char c = input.charAt(j); + if (!isBasic(c)) { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + output.append(c); + } + d++; + } else { + d = 0; + } + + while (d < input.length()) { + int oldi = i; + int w = 1; + + for (int k = BASE; ; k += BASE) { + if (d == input.length()) { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + int c = input.charAt(d++); + int digit = codepoint2digit(c); + if (digit > (Integer.MAX_VALUE - i) / w) { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + + i = i + digit * w; + + int t; + if (k <= bias) { + t = TMIN; + } else if (k >= bias + TMAX) { + t = TMAX; + } else { + t = k - bias; + } + if (digit < t) { + break; + } + w = w * (BASE - t); + } + + bias = adapt(i - oldi, output.length()+1, oldi == 0); + + if (i / (output.length() + 1) > Integer.MAX_VALUE - n) { + throw new PunycodeException(PunycodeException.OVERFLOW); + } + + n = n + i / (output.length() + 1); + i = i % (output.length() + 1); + output.insert(i, (char) n); + i++; + } + + return output.toString(); + } + + public final static int adapt(int delta, int numpoints, boolean first) + { + if (first) { + delta = delta / DAMP; + } else { + delta = delta / 2; + } + + delta = delta + (delta / numpoints); + + int k = 0; + while (delta > ((BASE - TMIN) * TMAX) / 2) { + delta = delta / (BASE - TMIN); + k = k + BASE; + } + + return k + ((BASE - TMIN + 1) * delta) / (delta + SKEW); + } + + public final static boolean isBasic(char c) + { + return c < 0x80; + } + + public final static int digit2codepoint(int d) + throws PunycodeException + { + if (d < 26) { + // 0..25 : 'a'..'z' + return d + 'a'; + } else if (d < 36) { + // 26..35 : '0'..'9'; + return d - 26 + '0'; + } else { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + } + + public final static int codepoint2digit(int c) + throws PunycodeException + { + if (c - '0' < 10) { + // '0'..'9' : 26..35 + return c - '0' + 26; + } else if (c - 'a' < 26) { + // 'a'..'z' : 0..25 + return c - 'a'; + } else { + throw new PunycodeException(PunycodeException.BAD_INPUT); + } + } +} \ No newline at end of file diff --git a/java/gnu/inet/encoding/PunycodeException.java b/java/gnu/inet/encoding/PunycodeException.java new file mode 100644 index 0000000..2b1527e --- /dev/null +++ b/java/gnu/inet/encoding/PunycodeException.java @@ -0,0 +1,44 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * Exception handling for Punycode class. + */ +public class PunycodeException + extends Exception +{ + public static String OVERFLOW = "Overflow."; + public static String BAD_INPUT = "Bad input."; + + /** + * Creates a new PunycodeException. + * + * @param m message. + */ + public PunycodeException(String m) + { + super(m); + } +} \ No newline at end of file diff --git a/java/gnu/inet/encoding/RFC3454.java b/java/gnu/inet/encoding/RFC3454.java new file mode 100644 index 0000000..0f99f04 --- /dev/null +++ b/java/gnu/inet/encoding/RFC3454.java @@ -0,0 +1,4228 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit GenerateRFC3454.java and re-run. */ + +package gnu.inet.encoding; + +/** + * Auto-generated class containing StringPrep mapping tables. + */ +public class RFC3454 +{ + final static char[][] A1 = new char[][] { + new char[] { '\u0221' }, + new char[] { '\u0234', '\u024F' }, + new char[] { '\u02AE', '\u02AF' }, + new char[] { '\u02EF', '\u02FF' }, + new char[] { '\u0350', '\u035F' }, + new char[] { '\u0370', '\u0373' }, + new char[] { '\u0376', '\u0379' }, + new char[] { '\u037B', '\u037D' }, + new char[] { '\u037F', '\u0383' }, + new char[] { '\u038B' }, + new char[] { '\u038D' }, + new char[] { '\u03A2' }, + new char[] { '\u03CF' }, + new char[] { '\u03F7', '\u03FF' }, + new char[] { '\u0487' }, + new char[] { '\u04CF' }, + new char[] { '\u04F6', '\u04F7' }, + new char[] { '\u04FA', '\u04FF' }, + new char[] { '\u0510', '\u0530' }, + new char[] { '\u0557', '\u0558' }, + new char[] { '\u0560' }, + new char[] { '\u0588' }, + new char[] { '\u058B', '\u0590' }, + new char[] { '\u05A2' }, + new char[] { '\u05BA' }, + new char[] { '\u05C5', '\u05CF' }, + new char[] { '\u05EB', '\u05EF' }, + new char[] { '\u05F5', '\u060B' }, + new char[] { '\u060D', '\u061A' }, + new char[] { '\u061C', '\u061E' }, + new char[] { '\u0620' }, + new char[] { '\u063B', '\u063F' }, + new char[] { '\u0656', '\u065F' }, + new char[] { '\u06EE', '\u06EF' }, + new char[] { '\u06FF' }, + new char[] { '\u070E' }, + new char[] { '\u072D', '\u072F' }, + new char[] { '\u074B', '\u077F' }, + new char[] { '\u07B2', '\u0900' }, + new char[] { '\u0904' }, + new char[] { '\u093A', '\u093B' }, + new char[] { '\u094E', '\u094F' }, + new char[] { '\u0955', '\u0957' }, + new char[] { '\u0971', '\u0980' }, + new char[] { '\u0984' }, + new char[] { '\u098D', '\u098E' }, + new char[] { '\u0991', '\u0992' }, + new char[] { '\u09A9' }, + new char[] { '\u09B1' }, + new char[] { '\u09B3', '\u09B5' }, + new char[] { '\u09BA', '\u09BB' }, + new char[] { '\u09BD' }, + new char[] { '\u09C5', '\u09C6' }, + new char[] { '\u09C9', '\u09CA' }, + new char[] { '\u09CE', '\u09D6' }, + new char[] { '\u09D8', '\u09DB' }, + new char[] { '\u09DE' }, + new char[] { '\u09E4', '\u09E5' }, + new char[] { '\u09FB', '\u0A01' }, + new char[] { '\u0A03', '\u0A04' }, + new char[] { '\u0A0B', '\u0A0E' }, + new char[] { '\u0A11', '\u0A12' }, + new char[] { '\u0A29' }, + new char[] { '\u0A31' }, + new char[] { '\u0A34' }, + new char[] { '\u0A37' }, + new char[] { '\u0A3A', '\u0A3B' }, + new char[] { '\u0A3D' }, + new char[] { '\u0A43', '\u0A46' }, + new char[] { '\u0A49', '\u0A4A' }, + new char[] { '\u0A4E', '\u0A58' }, + new char[] { '\u0A5D' }, + new char[] { '\u0A5F', '\u0A65' }, + new char[] { '\u0A75', '\u0A80' }, + new char[] { '\u0A84' }, + new char[] { '\u0A8C' }, + new char[] { '\u0A8E' }, + new char[] { '\u0A92' }, + new char[] { '\u0AA9' }, + new char[] { '\u0AB1' }, + new char[] { '\u0AB4' }, + new char[] { '\u0ABA', '\u0ABB' }, + new char[] { '\u0AC6' }, + new char[] { '\u0ACA' }, + new char[] { '\u0ACE', '\u0ACF' }, + new char[] { '\u0AD1', '\u0ADF' }, + new char[] { '\u0AE1', '\u0AE5' }, + new char[] { '\u0AF0', '\u0B00' }, + new char[] { '\u0B04' }, + new char[] { '\u0B0D', '\u0B0E' }, + new char[] { '\u0B11', '\u0B12' }, + new char[] { '\u0B29' }, + new char[] { '\u0B31' }, + new char[] { '\u0B34', '\u0B35' }, + new char[] { '\u0B3A', '\u0B3B' }, + new char[] { '\u0B44', '\u0B46' }, + new char[] { '\u0B49', '\u0B4A' }, + new char[] { '\u0B4E', '\u0B55' }, + new char[] { '\u0B58', '\u0B5B' }, + new char[] { '\u0B5E' }, + new char[] { '\u0B62', '\u0B65' }, + new char[] { '\u0B71', '\u0B81' }, + new char[] { '\u0B84' }, + new char[] { '\u0B8B', '\u0B8D' }, + new char[] { '\u0B91' }, + new char[] { '\u0B96', '\u0B98' }, + new char[] { '\u0B9B' }, + new char[] { '\u0B9D' }, + new char[] { '\u0BA0', '\u0BA2' }, + new char[] { '\u0BA5', '\u0BA7' }, + new char[] { '\u0BAB', '\u0BAD' }, + new char[] { '\u0BB6' }, + new char[] { '\u0BBA', '\u0BBD' }, + new char[] { '\u0BC3', '\u0BC5' }, + new char[] { '\u0BC9' }, + new char[] { '\u0BCE', '\u0BD6' }, + new char[] { '\u0BD8', '\u0BE6' }, + new char[] { '\u0BF3', '\u0C00' }, + new char[] { '\u0C04' }, + new char[] { '\u0C0D' }, + new char[] { '\u0C11' }, + new char[] { '\u0C29' }, + new char[] { '\u0C34' }, + new char[] { '\u0C3A', '\u0C3D' }, + new char[] { '\u0C45' }, + new char[] { '\u0C49' }, + new char[] { '\u0C4E', '\u0C54' }, + new char[] { '\u0C57', '\u0C5F' }, + new char[] { '\u0C62', '\u0C65' }, + new char[] { '\u0C70', '\u0C81' }, + new char[] { '\u0C84' }, + new char[] { '\u0C8D' }, + new char[] { '\u0C91' }, + new char[] { '\u0CA9' }, + new char[] { '\u0CB4' }, + new char[] { '\u0CBA', '\u0CBD' }, + new char[] { '\u0CC5' }, + new char[] { '\u0CC9' }, + new char[] { '\u0CCE', '\u0CD4' }, + new char[] { '\u0CD7', '\u0CDD' }, + new char[] { '\u0CDF' }, + new char[] { '\u0CE2', '\u0CE5' }, + new char[] { '\u0CF0', '\u0D01' }, + new char[] { '\u0D04' }, + new char[] { '\u0D0D' }, + new char[] { '\u0D11' }, + new char[] { '\u0D29' }, + new char[] { '\u0D3A', '\u0D3D' }, + new char[] { '\u0D44', '\u0D45' }, + new char[] { '\u0D49' }, + new char[] { '\u0D4E', '\u0D56' }, + new char[] { '\u0D58', '\u0D5F' }, + new char[] { '\u0D62', '\u0D65' }, + new char[] { '\u0D70', '\u0D81' }, + new char[] { '\u0D84' }, + new char[] { '\u0D97', '\u0D99' }, + new char[] { '\u0DB2' }, + new char[] { '\u0DBC' }, + new char[] { '\u0DBE', '\u0DBF' }, + new char[] { '\u0DC7', '\u0DC9' }, + new char[] { '\u0DCB', '\u0DCE' }, + new char[] { '\u0DD5' }, + new char[] { '\u0DD7' }, + new char[] { '\u0DE0', '\u0DF1' }, + new char[] { '\u0DF5', '\u0E00' }, + new char[] { '\u0E3B', '\u0E3E' }, + new char[] { '\u0E5C', '\u0E80' }, + new char[] { '\u0E83' }, + new char[] { '\u0E85', '\u0E86' }, + new char[] { '\u0E89' }, + new char[] { '\u0E8B', '\u0E8C' }, + new char[] { '\u0E8E', '\u0E93' }, + new char[] { '\u0E98' }, + new char[] { '\u0EA0' }, + new char[] { '\u0EA4' }, + new char[] { '\u0EA6' }, + new char[] { '\u0EA8', '\u0EA9' }, + new char[] { '\u0EAC' }, + new char[] { '\u0EBA' }, + new char[] { '\u0EBE', '\u0EBF' }, + new char[] { '\u0EC5' }, + new char[] { '\u0EC7' }, + new char[] { '\u0ECE', '\u0ECF' }, + new char[] { '\u0EDA', '\u0EDB' }, + new char[] { '\u0EDE', '\u0EFF' }, + new char[] { '\u0F48' }, + new char[] { '\u0F6B', '\u0F70' }, + new char[] { '\u0F8C', '\u0F8F' }, + new char[] { '\u0F98' }, + new char[] { '\u0FBD' }, + new char[] { '\u0FCD', '\u0FCE' }, + new char[] { '\u0FD0', '\u0FFF' }, + new char[] { '\u1022' }, + new char[] { '\u1028' }, + new char[] { '\u102B' }, + new char[] { '\u1033', '\u1035' }, + new char[] { '\u103A', '\u103F' }, + new char[] { '\u105A', '\u109F' }, + new char[] { '\u10C6', '\u10CF' }, + new char[] { '\u10F9', '\u10FA' }, + new char[] { '\u10FC', '\u10FF' }, + new char[] { '\u115A', '\u115E' }, + new char[] { '\u11A3', '\u11A7' }, + new char[] { '\u11FA', '\u11FF' }, + new char[] { '\u1207' }, + new char[] { '\u1247' }, + new char[] { '\u1249' }, + new char[] { '\u124E', '\u124F' }, + new char[] { '\u1257' }, + new char[] { '\u1259' }, + new char[] { '\u125E', '\u125F' }, + new char[] { '\u1287' }, + new char[] { '\u1289' }, + new char[] { '\u128E', '\u128F' }, + new char[] { '\u12AF' }, + new char[] { '\u12B1' }, + new char[] { '\u12B6', '\u12B7' }, + new char[] { '\u12BF' }, + new char[] { '\u12C1' }, + new char[] { '\u12C6', '\u12C7' }, + new char[] { '\u12CF' }, + new char[] { '\u12D7' }, + new char[] { '\u12EF' }, + new char[] { '\u130F' }, + new char[] { '\u1311' }, + new char[] { '\u1316', '\u1317' }, + new char[] { '\u131F' }, + new char[] { '\u1347' }, + new char[] { '\u135B', '\u1360' }, + new char[] { '\u137D', '\u139F' }, + new char[] { '\u13F5', '\u1400' }, + new char[] { '\u1677', '\u167F' }, + new char[] { '\u169D', '\u169F' }, + new char[] { '\u16F1', '\u16FF' }, + new char[] { '\u170D' }, + new char[] { '\u1715', '\u171F' }, + new char[] { '\u1737', '\u173F' }, + new char[] { '\u1754', '\u175F' }, + new char[] { '\u176D' }, + new char[] { '\u1771' }, + new char[] { '\u1774', '\u177F' }, + new char[] { '\u17DD', '\u17DF' }, + new char[] { '\u17EA', '\u17FF' }, + new char[] { '\u180F' }, + new char[] { '\u181A', '\u181F' }, + new char[] { '\u1878', '\u187F' }, + new char[] { '\u18AA', '\u1DFF' }, + new char[] { '\u1E9C', '\u1E9F' }, + new char[] { '\u1EFA', '\u1EFF' }, + new char[] { '\u1F16', '\u1F17' }, + new char[] { '\u1F1E', '\u1F1F' }, + new char[] { '\u1F46', '\u1F47' }, + new char[] { '\u1F4E', '\u1F4F' }, + new char[] { '\u1F58' }, + new char[] { '\u1F5A' }, + new char[] { '\u1F5C' }, + new char[] { '\u1F5E' }, + new char[] { '\u1F7E', '\u1F7F' }, + new char[] { '\u1FB5' }, + new char[] { '\u1FC5' }, + new char[] { '\u1FD4', '\u1FD5' }, + new char[] { '\u1FDC' }, + new char[] { '\u1FF0', '\u1FF1' }, + new char[] { '\u1FF5' }, + new char[] { '\u1FFF' }, + new char[] { '\u2053', '\u2056' }, + new char[] { '\u2058', '\u205E' }, + new char[] { '\u2064', '\u2069' }, + new char[] { '\u2072', '\u2073' }, + new char[] { '\u208F', '\u209F' }, + new char[] { '\u20B2', '\u20CF' }, + new char[] { '\u20EB', '\u20FF' }, + new char[] { '\u213B', '\u213C' }, + new char[] { '\u214C', '\u2152' }, + new char[] { '\u2184', '\u218F' }, + new char[] { '\u23CF', '\u23FF' }, + new char[] { '\u2427', '\u243F' }, + new char[] { '\u244B', '\u245F' }, + new char[] { '\u24FF' }, + new char[] { '\u2614', '\u2615' }, + new char[] { '\u2618' }, + new char[] { '\u267E', '\u267F' }, + new char[] { '\u268A', '\u2700' }, + new char[] { '\u2705' }, + new char[] { '\u270A', '\u270B' }, + new char[] { '\u2728' }, + new char[] { '\u274C' }, + new char[] { '\u274E' }, + new char[] { '\u2753', '\u2755' }, + new char[] { '\u2757' }, + new char[] { '\u275F', '\u2760' }, + new char[] { '\u2795', '\u2797' }, + new char[] { '\u27B0' }, + new char[] { '\u27BF', '\u27CF' }, + new char[] { '\u27EC', '\u27EF' }, + new char[] { '\u2B00', '\u2E7F' }, + new char[] { '\u2E9A' }, + new char[] { '\u2EF4', '\u2EFF' }, + new char[] { '\u2FD6', '\u2FEF' }, + new char[] { '\u2FFC', '\u2FFF' }, + new char[] { '\u3040' }, + new char[] { '\u3097', '\u3098' }, + new char[] { '\u3100', '\u3104' }, + new char[] { '\u312D', '\u3130' }, + new char[] { '\u318F' }, + new char[] { '\u31B8', '\u31EF' }, + new char[] { '\u321D', '\u321F' }, + new char[] { '\u3244', '\u3250' }, + new char[] { '\u327C', '\u327E' }, + new char[] { '\u32CC', '\u32CF' }, + new char[] { '\u32FF' }, + new char[] { '\u3377', '\u337A' }, + new char[] { '\u33DE', '\u33DF' }, + new char[] { '\u33FF' }, + new char[] { '\u4DB6', '\u4DFF' }, + new char[] { '\u9FA6', '\u9FFF' }, + new char[] { '\uA48D', '\uA48F' }, + new char[] { '\uA4C7', '\uABFF' }, + new char[] { '\uD7A4', '\uD7FF' }, + new char[] { '\uFA2E', '\uFA2F' }, + new char[] { '\uFA6B', '\uFAFF' }, + new char[] { '\uFB07', '\uFB12' }, + new char[] { '\uFB18', '\uFB1C' }, + new char[] { '\uFB37' }, + new char[] { '\uFB3D' }, + new char[] { '\uFB3F' }, + new char[] { '\uFB42' }, + new char[] { '\uFB45' }, + new char[] { '\uFBB2', '\uFBD2' }, + new char[] { '\uFD40', '\uFD4F' }, + new char[] { '\uFD90', '\uFD91' }, + new char[] { '\uFDC8', '\uFDCF' }, + new char[] { '\uFDFD', '\uFDFF' }, + new char[] { '\uFE10', '\uFE1F' }, + new char[] { '\uFE24', '\uFE2F' }, + new char[] { '\uFE47', '\uFE48' }, + new char[] { '\uFE53' }, + new char[] { '\uFE67' }, + new char[] { '\uFE6C', '\uFE6F' }, + new char[] { '\uFE75' }, + new char[] { '\uFEFD', '\uFEFE' }, + new char[] { '\uFF00' }, + new char[] { '\uFFBF', '\uFFC1' }, + new char[] { '\uFFC8', '\uFFC9' }, + new char[] { '\uFFD0', '\uFFD1' }, + new char[] { '\uFFD8', '\uFFD9' }, + new char[] { '\uFFDD', '\uFFDF' }, + new char[] { '\uFFE7' }, + new char[] { '\uFFEF', '\uFFF8' }, + }; + + final static char[] B1 = new char[] { + '\u00AD', + '\u034F', + '\u1806', + '\u180B', + '\u180C', + '\u180D', + '\u200B', + '\u200C', + '\u200D', + '\u2060', + '\uFE00', + '\uFE01', + '\uFE02', + '\uFE03', + '\uFE04', + '\uFE05', + '\uFE06', + '\uFE07', + '\uFE08', + '\uFE09', + '\uFE0A', + '\uFE0B', + '\uFE0C', + '\uFE0D', + '\uFE0E', + '\uFE0F', + '\uFEFF', + }; + + final static char[] B2search = new char[] { + '\u0041', + '\u0042', + '\u0043', + '\u0044', + '\u0045', + '\u0046', + '\u0047', + '\u0048', + '\u0049', + '\u004A', + '\u004B', + '\u004C', + '\u004D', + '\u004E', + '\u004F', + '\u0050', + '\u0051', + '\u0052', + '\u0053', + '\u0054', + '\u0055', + '\u0056', + '\u0057', + '\u0058', + '\u0059', + '\u005A', + '\u00B5', + '\u00C0', + '\u00C1', + '\u00C2', + '\u00C3', + '\u00C4', + '\u00C5', + '\u00C6', + '\u00C7', + '\u00C8', + '\u00C9', + '\u00CA', + '\u00CB', + '\u00CC', + '\u00CD', + '\u00CE', + '\u00CF', + '\u00D0', + '\u00D1', + '\u00D2', + '\u00D3', + '\u00D4', + '\u00D5', + '\u00D6', + '\u00D8', + '\u00D9', + '\u00DA', + '\u00DB', + '\u00DC', + '\u00DD', + '\u00DE', + '\u00DF', + '\u0100', + '\u0102', + '\u0104', + '\u0106', + '\u0108', + '\u010A', + '\u010C', + '\u010E', + '\u0110', + '\u0112', + '\u0114', + '\u0116', + '\u0118', + '\u011A', + '\u011C', + '\u011E', + '\u0120', + '\u0122', + '\u0124', + '\u0126', + '\u0128', + '\u012A', + '\u012C', + '\u012E', + '\u0130', + '\u0132', + '\u0134', + '\u0136', + '\u0139', + '\u013B', + '\u013D', + '\u013F', + '\u0141', + '\u0143', + '\u0145', + '\u0147', + '\u0149', + '\u014A', + '\u014C', + '\u014E', + '\u0150', + '\u0152', + '\u0154', + '\u0156', + '\u0158', + '\u015A', + '\u015C', + '\u015E', + '\u0160', + '\u0162', + '\u0164', + '\u0166', + '\u0168', + '\u016A', + '\u016C', + '\u016E', + '\u0170', + '\u0172', + '\u0174', + '\u0176', + '\u0178', + '\u0179', + '\u017B', + '\u017D', + '\u017F', + '\u0181', + '\u0182', + '\u0184', + '\u0186', + '\u0187', + '\u0189', + '\u018A', + '\u018B', + '\u018E', + '\u018F', + '\u0190', + '\u0191', + '\u0193', + '\u0194', + '\u0196', + '\u0197', + '\u0198', + '\u019C', + '\u019D', + '\u019F', + '\u01A0', + '\u01A2', + '\u01A4', + '\u01A6', + '\u01A7', + '\u01A9', + '\u01AC', + '\u01AE', + '\u01AF', + '\u01B1', + '\u01B2', + '\u01B3', + '\u01B5', + '\u01B7', + '\u01B8', + '\u01BC', + '\u01C4', + '\u01C5', + '\u01C7', + '\u01C8', + '\u01CA', + '\u01CB', + '\u01CD', + '\u01CF', + '\u01D1', + '\u01D3', + '\u01D5', + '\u01D7', + '\u01D9', + '\u01DB', + '\u01DE', + '\u01E0', + '\u01E2', + '\u01E4', + '\u01E6', + '\u01E8', + '\u01EA', + '\u01EC', + '\u01EE', + '\u01F0', + '\u01F1', + '\u01F2', + '\u01F4', + '\u01F6', + '\u01F7', + '\u01F8', + '\u01FA', + '\u01FC', + '\u01FE', + '\u0200', + '\u0202', + '\u0204', + '\u0206', + '\u0208', + '\u020A', + '\u020C', + '\u020E', + '\u0210', + '\u0212', + '\u0214', + '\u0216', + '\u0218', + '\u021A', + '\u021C', + '\u021E', + '\u0220', + '\u0222', + '\u0224', + '\u0226', + '\u0228', + '\u022A', + '\u022C', + '\u022E', + '\u0230', + '\u0232', + '\u0345', + '\u037A', + '\u0386', + '\u0388', + '\u0389', + '\u038A', + '\u038C', + '\u038E', + '\u038F', + '\u0390', + '\u0391', + '\u0392', + '\u0393', + '\u0394', + '\u0395', + '\u0396', + '\u0397', + '\u0398', + '\u0399', + '\u039A', + '\u039B', + '\u039C', + '\u039D', + '\u039E', + '\u039F', + '\u03A0', + '\u03A1', + '\u03A3', + '\u03A4', + '\u03A5', + '\u03A6', + '\u03A7', + '\u03A8', + '\u03A9', + '\u03AA', + '\u03AB', + '\u03B0', + '\u03C2', + '\u03D0', + '\u03D1', + '\u03D2', + '\u03D3', + '\u03D4', + '\u03D5', + '\u03D6', + '\u03D8', + '\u03DA', + '\u03DC', + '\u03DE', + '\u03E0', + '\u03E2', + '\u03E4', + '\u03E6', + '\u03E8', + '\u03EA', + '\u03EC', + '\u03EE', + '\u03F0', + '\u03F1', + '\u03F2', + '\u03F4', + '\u03F5', + '\u0400', + '\u0401', + '\u0402', + '\u0403', + '\u0404', + '\u0405', + '\u0406', + '\u0407', + '\u0408', + '\u0409', + '\u040A', + '\u040B', + '\u040C', + '\u040D', + '\u040E', + '\u040F', + '\u0410', + '\u0411', + '\u0412', + '\u0413', + '\u0414', + '\u0415', + '\u0416', + '\u0417', + '\u0418', + '\u0419', + '\u041A', + '\u041B', + '\u041C', + '\u041D', + '\u041E', + '\u041F', + '\u0420', + '\u0421', + '\u0422', + '\u0423', + '\u0424', + '\u0425', + '\u0426', + '\u0427', + '\u0428', + '\u0429', + '\u042A', + '\u042B', + '\u042C', + '\u042D', + '\u042E', + '\u042F', + '\u0460', + '\u0462', + '\u0464', + '\u0466', + '\u0468', + '\u046A', + '\u046C', + '\u046E', + '\u0470', + '\u0472', + '\u0474', + '\u0476', + '\u0478', + '\u047A', + '\u047C', + '\u047E', + '\u0480', + '\u048A', + '\u048C', + '\u048E', + '\u0490', + '\u0492', + '\u0494', + '\u0496', + '\u0498', + '\u049A', + '\u049C', + '\u049E', + '\u04A0', + '\u04A2', + '\u04A4', + '\u04A6', + '\u04A8', + '\u04AA', + '\u04AC', + '\u04AE', + '\u04B0', + '\u04B2', + '\u04B4', + '\u04B6', + '\u04B8', + '\u04BA', + '\u04BC', + '\u04BE', + '\u04C1', + '\u04C3', + '\u04C5', + '\u04C7', + '\u04C9', + '\u04CB', + '\u04CD', + '\u04D0', + '\u04D2', + '\u04D4', + '\u04D6', + '\u04D8', + '\u04DA', + '\u04DC', + '\u04DE', + '\u04E0', + '\u04E2', + '\u04E4', + '\u04E6', + '\u04E8', + '\u04EA', + '\u04EC', + '\u04EE', + '\u04F0', + '\u04F2', + '\u04F4', + '\u04F8', + '\u0500', + '\u0502', + '\u0504', + '\u0506', + '\u0508', + '\u050A', + '\u050C', + '\u050E', + '\u0531', + '\u0532', + '\u0533', + '\u0534', + '\u0535', + '\u0536', + '\u0537', + '\u0538', + '\u0539', + '\u053A', + '\u053B', + '\u053C', + '\u053D', + '\u053E', + '\u053F', + '\u0540', + '\u0541', + '\u0542', + '\u0543', + '\u0544', + '\u0545', + '\u0546', + '\u0547', + '\u0548', + '\u0549', + '\u054A', + '\u054B', + '\u054C', + '\u054D', + '\u054E', + '\u054F', + '\u0550', + '\u0551', + '\u0552', + '\u0553', + '\u0554', + '\u0555', + '\u0556', + '\u0587', + '\u1E00', + '\u1E02', + '\u1E04', + '\u1E06', + '\u1E08', + '\u1E0A', + '\u1E0C', + '\u1E0E', + '\u1E10', + '\u1E12', + '\u1E14', + '\u1E16', + '\u1E18', + '\u1E1A', + '\u1E1C', + '\u1E1E', + '\u1E20', + '\u1E22', + '\u1E24', + '\u1E26', + '\u1E28', + '\u1E2A', + '\u1E2C', + '\u1E2E', + '\u1E30', + '\u1E32', + '\u1E34', + '\u1E36', + '\u1E38', + '\u1E3A', + '\u1E3C', + '\u1E3E', + '\u1E40', + '\u1E42', + '\u1E44', + '\u1E46', + '\u1E48', + '\u1E4A', + '\u1E4C', + '\u1E4E', + '\u1E50', + '\u1E52', + '\u1E54', + '\u1E56', + '\u1E58', + '\u1E5A', + '\u1E5C', + '\u1E5E', + '\u1E60', + '\u1E62', + '\u1E64', + '\u1E66', + '\u1E68', + '\u1E6A', + '\u1E6C', + '\u1E6E', + '\u1E70', + '\u1E72', + '\u1E74', + '\u1E76', + '\u1E78', + '\u1E7A', + '\u1E7C', + '\u1E7E', + '\u1E80', + '\u1E82', + '\u1E84', + '\u1E86', + '\u1E88', + '\u1E8A', + '\u1E8C', + '\u1E8E', + '\u1E90', + '\u1E92', + '\u1E94', + '\u1E96', + '\u1E97', + '\u1E98', + '\u1E99', + '\u1E9A', + '\u1E9B', + '\u1EA0', + '\u1EA2', + '\u1EA4', + '\u1EA6', + '\u1EA8', + '\u1EAA', + '\u1EAC', + '\u1EAE', + '\u1EB0', + '\u1EB2', + '\u1EB4', + '\u1EB6', + '\u1EB8', + '\u1EBA', + '\u1EBC', + '\u1EBE', + '\u1EC0', + '\u1EC2', + '\u1EC4', + '\u1EC6', + '\u1EC8', + '\u1ECA', + '\u1ECC', + '\u1ECE', + '\u1ED0', + '\u1ED2', + '\u1ED4', + '\u1ED6', + '\u1ED8', + '\u1EDA', + '\u1EDC', + '\u1EDE', + '\u1EE0', + '\u1EE2', + '\u1EE4', + '\u1EE6', + '\u1EE8', + '\u1EEA', + '\u1EEC', + '\u1EEE', + '\u1EF0', + '\u1EF2', + '\u1EF4', + '\u1EF6', + '\u1EF8', + '\u1F08', + '\u1F09', + '\u1F0A', + '\u1F0B', + '\u1F0C', + '\u1F0D', + '\u1F0E', + '\u1F0F', + '\u1F18', + '\u1F19', + '\u1F1A', + '\u1F1B', + '\u1F1C', + '\u1F1D', + '\u1F28', + '\u1F29', + '\u1F2A', + '\u1F2B', + '\u1F2C', + '\u1F2D', + '\u1F2E', + '\u1F2F', + '\u1F38', + '\u1F39', + '\u1F3A', + '\u1F3B', + '\u1F3C', + '\u1F3D', + '\u1F3E', + '\u1F3F', + '\u1F48', + '\u1F49', + '\u1F4A', + '\u1F4B', + '\u1F4C', + '\u1F4D', + '\u1F50', + '\u1F52', + '\u1F54', + '\u1F56', + '\u1F59', + '\u1F5B', + '\u1F5D', + '\u1F5F', + '\u1F68', + '\u1F69', + '\u1F6A', + '\u1F6B', + '\u1F6C', + '\u1F6D', + '\u1F6E', + '\u1F6F', + '\u1F80', + '\u1F81', + '\u1F82', + '\u1F83', + '\u1F84', + '\u1F85', + '\u1F86', + '\u1F87', + '\u1F88', + '\u1F89', + '\u1F8A', + '\u1F8B', + '\u1F8C', + '\u1F8D', + '\u1F8E', + '\u1F8F', + '\u1F90', + '\u1F91', + '\u1F92', + '\u1F93', + '\u1F94', + '\u1F95', + '\u1F96', + '\u1F97', + '\u1F98', + '\u1F99', + '\u1F9A', + '\u1F9B', + '\u1F9C', + '\u1F9D', + '\u1F9E', + '\u1F9F', + '\u1FA0', + '\u1FA1', + '\u1FA2', + '\u1FA3', + '\u1FA4', + '\u1FA5', + '\u1FA6', + '\u1FA7', + '\u1FA8', + '\u1FA9', + '\u1FAA', + '\u1FAB', + '\u1FAC', + '\u1FAD', + '\u1FAE', + '\u1FAF', + '\u1FB2', + '\u1FB3', + '\u1FB4', + '\u1FB6', + '\u1FB7', + '\u1FB8', + '\u1FB9', + '\u1FBA', + '\u1FBB', + '\u1FBC', + '\u1FBE', + '\u1FC2', + '\u1FC3', + '\u1FC4', + '\u1FC6', + '\u1FC7', + '\u1FC8', + '\u1FC9', + '\u1FCA', + '\u1FCB', + '\u1FCC', + '\u1FD2', + '\u1FD3', + '\u1FD6', + '\u1FD7', + '\u1FD8', + '\u1FD9', + '\u1FDA', + '\u1FDB', + '\u1FE2', + '\u1FE3', + '\u1FE4', + '\u1FE6', + '\u1FE7', + '\u1FE8', + '\u1FE9', + '\u1FEA', + '\u1FEB', + '\u1FEC', + '\u1FF2', + '\u1FF3', + '\u1FF4', + '\u1FF6', + '\u1FF7', + '\u1FF8', + '\u1FF9', + '\u1FFA', + '\u1FFB', + '\u1FFC', + '\u20A8', + '\u2102', + '\u2103', + '\u2107', + '\u2109', + '\u210B', + '\u210C', + '\u210D', + '\u2110', + '\u2111', + '\u2112', + '\u2115', + '\u2116', + '\u2119', + '\u211A', + '\u211B', + '\u211C', + '\u211D', + '\u2120', + '\u2121', + '\u2122', + '\u2124', + '\u2126', + '\u2128', + '\u212A', + '\u212B', + '\u212C', + '\u212D', + '\u2130', + '\u2131', + '\u2133', + '\u213E', + '\u213F', + '\u2145', + '\u2160', + '\u2161', + '\u2162', + '\u2163', + '\u2164', + '\u2165', + '\u2166', + '\u2167', + '\u2168', + '\u2169', + '\u216A', + '\u216B', + '\u216C', + '\u216D', + '\u216E', + '\u216F', + '\u24B6', + '\u24B7', + '\u24B8', + '\u24B9', + '\u24BA', + '\u24BB', + '\u24BC', + '\u24BD', + '\u24BE', + '\u24BF', + '\u24C0', + '\u24C1', + '\u24C2', + '\u24C3', + '\u24C4', + '\u24C5', + '\u24C6', + '\u24C7', + '\u24C8', + '\u24C9', + '\u24CA', + '\u24CB', + '\u24CC', + '\u24CD', + '\u24CE', + '\u24CF', + '\u3371', + '\u3373', + '\u3375', + '\u3380', + '\u3381', + '\u3382', + '\u3383', + '\u3384', + '\u3385', + '\u3386', + '\u3387', + '\u338A', + '\u338B', + '\u338C', + '\u3390', + '\u3391', + '\u3392', + '\u3393', + '\u3394', + '\u33A9', + '\u33AA', + '\u33AB', + '\u33AC', + '\u33B4', + '\u33B5', + '\u33B6', + '\u33B7', + '\u33B8', + '\u33B9', + '\u33BA', + '\u33BB', + '\u33BC', + '\u33BD', + '\u33BE', + '\u33BF', + '\u33C0', + '\u33C1', + '\u33C3', + '\u33C6', + '\u33C7', + '\u33C8', + '\u33C9', + '\u33CB', + '\u33CD', + '\u33CE', + '\u33D7', + '\u33D9', + '\u33DA', + '\u33DC', + '\u33DD', + '\uFB00', + '\uFB01', + '\uFB02', + '\uFB03', + '\uFB04', + '\uFB05', + '\uFB06', + '\uFB13', + '\uFB14', + '\uFB15', + '\uFB16', + '\uFB17', + '\uFF21', + '\uFF22', + '\uFF23', + '\uFF24', + '\uFF25', + '\uFF26', + '\uFF27', + '\uFF28', + '\uFF29', + '\uFF2A', + '\uFF2B', + '\uFF2C', + '\uFF2D', + '\uFF2E', + '\uFF2F', + '\uFF30', + '\uFF31', + '\uFF32', + '\uFF33', + '\uFF34', + '\uFF35', + '\uFF36', + '\uFF37', + '\uFF38', + '\uFF39', + '\uFF3A', + }; + + final static String[] B2replace = new String[] { + "\u0061", + "\u0062", + "\u0063", + "\u0064", + "\u0065", + "\u0066", + "\u0067", + "\u0068", + "\u0069", + "\u006A", + "\u006B", + "\u006C", + "\u006D", + "\u006E", + "\u006F", + "\u0070", + "\u0071", + "\u0072", + "\u0073", + "\u0074", + "\u0075", + "\u0076", + "\u0077", + "\u0078", + "\u0079", + "\u007A", + "\u03BC", + "\u00E0", + "\u00E1", + "\u00E2", + "\u00E3", + "\u00E4", + "\u00E5", + "\u00E6", + "\u00E7", + "\u00E8", + "\u00E9", + "\u00EA", + "\u00EB", + "\u00EC", + "\u00ED", + "\u00EE", + "\u00EF", + "\u00F0", + "\u00F1", + "\u00F2", + "\u00F3", + "\u00F4", + "\u00F5", + "\u00F6", + "\u00F8", + "\u00F9", + "\u00FA", + "\u00FB", + "\u00FC", + "\u00FD", + "\u00FE", + "\u0073\u0073", + "\u0101", + "\u0103", + "\u0105", + "\u0107", + "\u0109", + "\u010B", + "\u010D", + "\u010F", + "\u0111", + "\u0113", + "\u0115", + "\u0117", + "\u0119", + "\u011B", + "\u011D", + "\u011F", + "\u0121", + "\u0123", + "\u0125", + "\u0127", + "\u0129", + "\u012B", + "\u012D", + "\u012F", + "\u0069\u0307", + "\u0133", + "\u0135", + "\u0137", + "\u013A", + "\u013C", + "\u013E", + "\u0140", + "\u0142", + "\u0144", + "\u0146", + "\u0148", + "\u02BC\u006E", + "\u014B", + "\u014D", + "\u014F", + "\u0151", + "\u0153", + "\u0155", + "\u0157", + "\u0159", + "\u015B", + "\u015D", + "\u015F", + "\u0161", + "\u0163", + "\u0165", + "\u0167", + "\u0169", + "\u016B", + "\u016D", + "\u016F", + "\u0171", + "\u0173", + "\u0175", + "\u0177", + "\u00FF", + "\u017A", + "\u017C", + "\u017E", + "\u0073", + "\u0253", + "\u0183", + "\u0185", + "\u0254", + "\u0188", + "\u0256", + "\u0257", + "\u018C", + "\u01DD", + "\u0259", + "\u025B", + "\u0192", + "\u0260", + "\u0263", + "\u0269", + "\u0268", + "\u0199", + "\u026F", + "\u0272", + "\u0275", + "\u01A1", + "\u01A3", + "\u01A5", + "\u0280", + "\u01A8", + "\u0283", + "\u01AD", + "\u0288", + "\u01B0", + "\u028A", + "\u028B", + "\u01B4", + "\u01B6", + "\u0292", + "\u01B9", + "\u01BD", + "\u01C6", + "\u01C6", + "\u01C9", + "\u01C9", + "\u01CC", + "\u01CC", + "\u01CE", + "\u01D0", + "\u01D2", + "\u01D4", + "\u01D6", + "\u01D8", + "\u01DA", + "\u01DC", + "\u01DF", + "\u01E1", + "\u01E3", + "\u01E5", + "\u01E7", + "\u01E9", + "\u01EB", + "\u01ED", + "\u01EF", + "\u006A\u030C", + "\u01F3", + "\u01F3", + "\u01F5", + "\u0195", + "\u01BF", + "\u01F9", + "\u01FB", + "\u01FD", + "\u01FF", + "\u0201", + "\u0203", + "\u0205", + "\u0207", + "\u0209", + "\u020B", + "\u020D", + "\u020F", + "\u0211", + "\u0213", + "\u0215", + "\u0217", + "\u0219", + "\u021B", + "\u021D", + "\u021F", + "\u019E", + "\u0223", + "\u0225", + "\u0227", + "\u0229", + "\u022B", + "\u022D", + "\u022F", + "\u0231", + "\u0233", + "\u03B9", + "\u0020\u03B9", + "\u03AC", + "\u03AD", + "\u03AE", + "\u03AF", + "\u03CC", + "\u03CD", + "\u03CE", + "\u03B9\u0308\u0301", + "\u03B1", + "\u03B2", + "\u03B3", + "\u03B4", + "\u03B5", + "\u03B6", + "\u03B7", + "\u03B8", + "\u03B9", + "\u03BA", + "\u03BB", + "\u03BC", + "\u03BD", + "\u03BE", + "\u03BF", + "\u03C0", + "\u03C1", + "\u03C3", + "\u03C4", + "\u03C5", + "\u03C6", + "\u03C7", + "\u03C8", + "\u03C9", + "\u03CA", + "\u03CB", + "\u03C5\u0308\u0301", + "\u03C3", + "\u03B2", + "\u03B8", + "\u03C5", + "\u03CD", + "\u03CB", + "\u03C6", + "\u03C0", + "\u03D9", + "\u03DB", + "\u03DD", + "\u03DF", + "\u03E1", + "\u03E3", + "\u03E5", + "\u03E7", + "\u03E9", + "\u03EB", + "\u03ED", + "\u03EF", + "\u03BA", + "\u03C1", + "\u03C3", + "\u03B8", + "\u03B5", + "\u0450", + "\u0451", + "\u0452", + "\u0453", + "\u0454", + "\u0455", + "\u0456", + "\u0457", + "\u0458", + "\u0459", + "\u045A", + "\u045B", + "\u045C", + "\u045D", + "\u045E", + "\u045F", + "\u0430", + "\u0431", + "\u0432", + "\u0433", + "\u0434", + "\u0435", + "\u0436", + "\u0437", + "\u0438", + "\u0439", + "\u043A", + "\u043B", + "\u043C", + "\u043D", + "\u043E", + "\u043F", + "\u0440", + "\u0441", + "\u0442", + "\u0443", + "\u0444", + "\u0445", + "\u0446", + "\u0447", + "\u0448", + "\u0449", + "\u044A", + "\u044B", + "\u044C", + "\u044D", + "\u044E", + "\u044F", + "\u0461", + "\u0463", + "\u0465", + "\u0467", + "\u0469", + "\u046B", + "\u046D", + "\u046F", + "\u0471", + "\u0473", + "\u0475", + "\u0477", + "\u0479", + "\u047B", + "\u047D", + "\u047F", + "\u0481", + "\u048B", + "\u048D", + "\u048F", + "\u0491", + "\u0493", + "\u0495", + "\u0497", + "\u0499", + "\u049B", + "\u049D", + "\u049F", + "\u04A1", + "\u04A3", + "\u04A5", + "\u04A7", + "\u04A9", + "\u04AB", + "\u04AD", + "\u04AF", + "\u04B1", + "\u04B3", + "\u04B5", + "\u04B7", + "\u04B9", + "\u04BB", + "\u04BD", + "\u04BF", + "\u04C2", + "\u04C4", + "\u04C6", + "\u04C8", + "\u04CA", + "\u04CC", + "\u04CE", + "\u04D1", + "\u04D3", + "\u04D5", + "\u04D7", + "\u04D9", + "\u04DB", + "\u04DD", + "\u04DF", + "\u04E1", + "\u04E3", + "\u04E5", + "\u04E7", + "\u04E9", + "\u04EB", + "\u04ED", + "\u04EF", + "\u04F1", + "\u04F3", + "\u04F5", + "\u04F9", + "\u0501", + "\u0503", + "\u0505", + "\u0507", + "\u0509", + "\u050B", + "\u050D", + "\u050F", + "\u0561", + "\u0562", + "\u0563", + "\u0564", + "\u0565", + "\u0566", + "\u0567", + "\u0568", + "\u0569", + "\u056A", + "\u056B", + "\u056C", + "\u056D", + "\u056E", + "\u056F", + "\u0570", + "\u0571", + "\u0572", + "\u0573", + "\u0574", + "\u0575", + "\u0576", + "\u0577", + "\u0578", + "\u0579", + "\u057A", + "\u057B", + "\u057C", + "\u057D", + "\u057E", + "\u057F", + "\u0580", + "\u0581", + "\u0582", + "\u0583", + "\u0584", + "\u0585", + "\u0586", + "\u0565\u0582", + "\u1E01", + "\u1E03", + "\u1E05", + "\u1E07", + "\u1E09", + "\u1E0B", + "\u1E0D", + "\u1E0F", + "\u1E11", + "\u1E13", + "\u1E15", + "\u1E17", + "\u1E19", + "\u1E1B", + "\u1E1D", + "\u1E1F", + "\u1E21", + "\u1E23", + "\u1E25", + "\u1E27", + "\u1E29", + "\u1E2B", + "\u1E2D", + "\u1E2F", + "\u1E31", + "\u1E33", + "\u1E35", + "\u1E37", + "\u1E39", + "\u1E3B", + "\u1E3D", + "\u1E3F", + "\u1E41", + "\u1E43", + "\u1E45", + "\u1E47", + "\u1E49", + "\u1E4B", + "\u1E4D", + "\u1E4F", + "\u1E51", + "\u1E53", + "\u1E55", + "\u1E57", + "\u1E59", + "\u1E5B", + "\u1E5D", + "\u1E5F", + "\u1E61", + "\u1E63", + "\u1E65", + "\u1E67", + "\u1E69", + "\u1E6B", + "\u1E6D", + "\u1E6F", + "\u1E71", + "\u1E73", + "\u1E75", + "\u1E77", + "\u1E79", + "\u1E7B", + "\u1E7D", + "\u1E7F", + "\u1E81", + "\u1E83", + "\u1E85", + "\u1E87", + "\u1E89", + "\u1E8B", + "\u1E8D", + "\u1E8F", + "\u1E91", + "\u1E93", + "\u1E95", + "\u0068\u0331", + "\u0074\u0308", + "\u0077\u030A", + "\u0079\u030A", + "\u0061\u02BE", + "\u1E61", + "\u1EA1", + "\u1EA3", + "\u1EA5", + "\u1EA7", + "\u1EA9", + "\u1EAB", + "\u1EAD", + "\u1EAF", + "\u1EB1", + "\u1EB3", + "\u1EB5", + "\u1EB7", + "\u1EB9", + "\u1EBB", + "\u1EBD", + "\u1EBF", + "\u1EC1", + "\u1EC3", + "\u1EC5", + "\u1EC7", + "\u1EC9", + "\u1ECB", + "\u1ECD", + "\u1ECF", + "\u1ED1", + "\u1ED3", + "\u1ED5", + "\u1ED7", + "\u1ED9", + "\u1EDB", + "\u1EDD", + "\u1EDF", + "\u1EE1", + "\u1EE3", + "\u1EE5", + "\u1EE7", + "\u1EE9", + "\u1EEB", + "\u1EED", + "\u1EEF", + "\u1EF1", + "\u1EF3", + "\u1EF5", + "\u1EF7", + "\u1EF9", + "\u1F00", + "\u1F01", + "\u1F02", + "\u1F03", + "\u1F04", + "\u1F05", + "\u1F06", + "\u1F07", + "\u1F10", + "\u1F11", + "\u1F12", + "\u1F13", + "\u1F14", + "\u1F15", + "\u1F20", + "\u1F21", + "\u1F22", + "\u1F23", + "\u1F24", + "\u1F25", + "\u1F26", + "\u1F27", + "\u1F30", + "\u1F31", + "\u1F32", + "\u1F33", + "\u1F34", + "\u1F35", + "\u1F36", + "\u1F37", + "\u1F40", + "\u1F41", + "\u1F42", + "\u1F43", + "\u1F44", + "\u1F45", + "\u03C5\u0313", + "\u03C5\u0313\u0300", + "\u03C5\u0313\u0301", + "\u03C5\u0313\u0342", + "\u1F51", + "\u1F53", + "\u1F55", + "\u1F57", + "\u1F60", + "\u1F61", + "\u1F62", + "\u1F63", + "\u1F64", + "\u1F65", + "\u1F66", + "\u1F67", + "\u1F00\u03B9", + "\u1F01\u03B9", + "\u1F02\u03B9", + "\u1F03\u03B9", + "\u1F04\u03B9", + "\u1F05\u03B9", + "\u1F06\u03B9", + "\u1F07\u03B9", + "\u1F00\u03B9", + "\u1F01\u03B9", + "\u1F02\u03B9", + "\u1F03\u03B9", + "\u1F04\u03B9", + "\u1F05\u03B9", + "\u1F06\u03B9", + "\u1F07\u03B9", + "\u1F20\u03B9", + "\u1F21\u03B9", + "\u1F22\u03B9", + "\u1F23\u03B9", + "\u1F24\u03B9", + "\u1F25\u03B9", + "\u1F26\u03B9", + "\u1F27\u03B9", + "\u1F20\u03B9", + "\u1F21\u03B9", + "\u1F22\u03B9", + "\u1F23\u03B9", + "\u1F24\u03B9", + "\u1F25\u03B9", + "\u1F26\u03B9", + "\u1F27\u03B9", + "\u1F60\u03B9", + "\u1F61\u03B9", + "\u1F62\u03B9", + "\u1F63\u03B9", + "\u1F64\u03B9", + "\u1F65\u03B9", + "\u1F66\u03B9", + "\u1F67\u03B9", + "\u1F60\u03B9", + "\u1F61\u03B9", + "\u1F62\u03B9", + "\u1F63\u03B9", + "\u1F64\u03B9", + "\u1F65\u03B9", + "\u1F66\u03B9", + "\u1F67\u03B9", + "\u1F70\u03B9", + "\u03B1\u03B9", + "\u03AC\u03B9", + "\u03B1\u0342", + "\u03B1\u0342\u03B9", + "\u1FB0", + "\u1FB1", + "\u1F70", + "\u1F71", + "\u03B1\u03B9", + "\u03B9", + "\u1F74\u03B9", + "\u03B7\u03B9", + "\u03AE\u03B9", + "\u03B7\u0342", + "\u03B7\u0342\u03B9", + "\u1F72", + "\u1F73", + "\u1F74", + "\u1F75", + "\u03B7\u03B9", + "\u03B9\u0308\u0300", + "\u03B9\u0308\u0301", + "\u03B9\u0342", + "\u03B9\u0308\u0342", + "\u1FD0", + "\u1FD1", + "\u1F76", + "\u1F77", + "\u03C5\u0308\u0300", + "\u03C5\u0308\u0301", + "\u03C1\u0313", + "\u03C5\u0342", + "\u03C5\u0308\u0342", + "\u1FE0", + "\u1FE1", + "\u1F7A", + "\u1F7B", + "\u1FE5", + "\u1F7C\u03B9", + "\u03C9\u03B9", + "\u03CE\u03B9", + "\u03C9\u0342", + "\u03C9\u0342\u03B9", + "\u1F78", + "\u1F79", + "\u1F7C", + "\u1F7D", + "\u03C9\u03B9", + "\u0072\u0073", + "\u0063", + "\u00B0\u0063", + "\u025B", + "\u00B0\u0066", + "\u0068", + "\u0068", + "\u0068", + "\u0069", + "\u0069", + "\u006C", + "\u006E", + "\u006E\u006F", + "\u0070", + "\u0071", + "\u0072", + "\u0072", + "\u0072", + "\u0073\u006D", + "\u0074\u0065\u006C", + "\u0074\u006D", + "\u007A", + "\u03C9", + "\u007A", + "\u006B", + "\u00E5", + "\u0062", + "\u0063", + "\u0065", + "\u0066", + "\u006D", + "\u03B3", + "\u03C0", + "\u0064", + "\u2170", + "\u2171", + "\u2172", + "\u2173", + "\u2174", + "\u2175", + "\u2176", + "\u2177", + "\u2178", + "\u2179", + "\u217A", + "\u217B", + "\u217C", + "\u217D", + "\u217E", + "\u217F", + "\u24D0", + "\u24D1", + "\u24D2", + "\u24D3", + "\u24D4", + "\u24D5", + "\u24D6", + "\u24D7", + "\u24D8", + "\u24D9", + "\u24DA", + "\u24DB", + "\u24DC", + "\u24DD", + "\u24DE", + "\u24DF", + "\u24E0", + "\u24E1", + "\u24E2", + "\u24E3", + "\u24E4", + "\u24E5", + "\u24E6", + "\u24E7", + "\u24E8", + "\u24E9", + "\u0068\u0070\u0061", + "\u0061\u0075", + "\u006F\u0076", + "\u0070\u0061", + "\u006E\u0061", + "\u03BC\u0061", + "\u006D\u0061", + "\u006B\u0061", + "\u006B\u0062", + "\u006D\u0062", + "\u0067\u0062", + "\u0070\u0066", + "\u006E\u0066", + "\u03BC\u0066", + "\u0068\u007A", + "\u006B\u0068\u007A", + "\u006D\u0068\u007A", + "\u0067\u0068\u007A", + "\u0074\u0068\u007A", + "\u0070\u0061", + "\u006B\u0070\u0061", + "\u006D\u0070\u0061", + "\u0067\u0070\u0061", + "\u0070\u0076", + "\u006E\u0076", + "\u03BC\u0076", + "\u006D\u0076", + "\u006B\u0076", + "\u006D\u0076", + "\u0070\u0077", + "\u006E\u0077", + "\u03BC\u0077", + "\u006D\u0077", + "\u006B\u0077", + "\u006D\u0077", + "\u006B\u03C9", + "\u006D\u03C9", + "\u0062\u0071", + "\u0063\u2215\u006B\u0067", + "\u0063\u006F\u002E", + "\u0064\u0062", + "\u0067\u0079", + "\u0068\u0070", + "\u006B\u006B", + "\u006B\u006D", + "\u0070\u0068", + "\u0070\u0070\u006D", + "\u0070\u0072", + "\u0073\u0076", + "\u0077\u0062", + "\u0066\u0066", + "\u0066\u0069", + "\u0066\u006C", + "\u0066\u0066\u0069", + "\u0066\u0066\u006C", + "\u0073\u0074", + "\u0073\u0074", + "\u0574\u0576", + "\u0574\u0565", + "\u0574\u056B", + "\u057E\u0576", + "\u0574\u056D", + "\uFF41", + "\uFF42", + "\uFF43", + "\uFF44", + "\uFF45", + "\uFF46", + "\uFF47", + "\uFF48", + "\uFF49", + "\uFF4A", + "\uFF4B", + "\uFF4C", + "\uFF4D", + "\uFF4E", + "\uFF4F", + "\uFF50", + "\uFF51", + "\uFF52", + "\uFF53", + "\uFF54", + "\uFF55", + "\uFF56", + "\uFF57", + "\uFF58", + "\uFF59", + "\uFF5A", + }; + + final static char[] B3search = new char[] { + '\u0041', + '\u0042', + '\u0043', + '\u0044', + '\u0045', + '\u0046', + '\u0047', + '\u0048', + '\u0049', + '\u004A', + '\u004B', + '\u004C', + '\u004D', + '\u004E', + '\u004F', + '\u0050', + '\u0051', + '\u0052', + '\u0053', + '\u0054', + '\u0055', + '\u0056', + '\u0057', + '\u0058', + '\u0059', + '\u005A', + '\u00B5', + '\u00C0', + '\u00C1', + '\u00C2', + '\u00C3', + '\u00C4', + '\u00C5', + '\u00C6', + '\u00C7', + '\u00C8', + '\u00C9', + '\u00CA', + '\u00CB', + '\u00CC', + '\u00CD', + '\u00CE', + '\u00CF', + '\u00D0', + '\u00D1', + '\u00D2', + '\u00D3', + '\u00D4', + '\u00D5', + '\u00D6', + '\u00D8', + '\u00D9', + '\u00DA', + '\u00DB', + '\u00DC', + '\u00DD', + '\u00DE', + '\u00DF', + '\u0100', + '\u0102', + '\u0104', + '\u0106', + '\u0108', + '\u010A', + '\u010C', + '\u010E', + '\u0110', + '\u0112', + '\u0114', + '\u0116', + '\u0118', + '\u011A', + '\u011C', + '\u011E', + '\u0120', + '\u0122', + '\u0124', + '\u0126', + '\u0128', + '\u012A', + '\u012C', + '\u012E', + '\u0130', + '\u0132', + '\u0134', + '\u0136', + '\u0139', + '\u013B', + '\u013D', + '\u013F', + '\u0141', + '\u0143', + '\u0145', + '\u0147', + '\u0149', + '\u014A', + '\u014C', + '\u014E', + '\u0150', + '\u0152', + '\u0154', + '\u0156', + '\u0158', + '\u015A', + '\u015C', + '\u015E', + '\u0160', + '\u0162', + '\u0164', + '\u0166', + '\u0168', + '\u016A', + '\u016C', + '\u016E', + '\u0170', + '\u0172', + '\u0174', + '\u0176', + '\u0178', + '\u0179', + '\u017B', + '\u017D', + '\u017F', + '\u0181', + '\u0182', + '\u0184', + '\u0186', + '\u0187', + '\u0189', + '\u018A', + '\u018B', + '\u018E', + '\u018F', + '\u0190', + '\u0191', + '\u0193', + '\u0194', + '\u0196', + '\u0197', + '\u0198', + '\u019C', + '\u019D', + '\u019F', + '\u01A0', + '\u01A2', + '\u01A4', + '\u01A6', + '\u01A7', + '\u01A9', + '\u01AC', + '\u01AE', + '\u01AF', + '\u01B1', + '\u01B2', + '\u01B3', + '\u01B5', + '\u01B7', + '\u01B8', + '\u01BC', + '\u01C4', + '\u01C5', + '\u01C7', + '\u01C8', + '\u01CA', + '\u01CB', + '\u01CD', + '\u01CF', + '\u01D1', + '\u01D3', + '\u01D5', + '\u01D7', + '\u01D9', + '\u01DB', + '\u01DE', + '\u01E0', + '\u01E2', + '\u01E4', + '\u01E6', + '\u01E8', + '\u01EA', + '\u01EC', + '\u01EE', + '\u01F0', + '\u01F1', + '\u01F2', + '\u01F4', + '\u01F6', + '\u01F7', + '\u01F8', + '\u01FA', + '\u01FC', + '\u01FE', + '\u0200', + '\u0202', + '\u0204', + '\u0206', + '\u0208', + '\u020A', + '\u020C', + '\u020E', + '\u0210', + '\u0212', + '\u0214', + '\u0216', + '\u0218', + '\u021A', + '\u021C', + '\u021E', + '\u0220', + '\u0222', + '\u0224', + '\u0226', + '\u0228', + '\u022A', + '\u022C', + '\u022E', + '\u0230', + '\u0232', + '\u0345', + '\u0386', + '\u0388', + '\u0389', + '\u038A', + '\u038C', + '\u038E', + '\u038F', + '\u0390', + '\u0391', + '\u0392', + '\u0393', + '\u0394', + '\u0395', + '\u0396', + '\u0397', + '\u0398', + '\u0399', + '\u039A', + '\u039B', + '\u039C', + '\u039D', + '\u039E', + '\u039F', + '\u03A0', + '\u03A1', + '\u03A3', + '\u03A4', + '\u03A5', + '\u03A6', + '\u03A7', + '\u03A8', + '\u03A9', + '\u03AA', + '\u03AB', + '\u03B0', + '\u03C2', + '\u03D0', + '\u03D1', + '\u03D5', + '\u03D6', + '\u03D8', + '\u03DA', + '\u03DC', + '\u03DE', + '\u03E0', + '\u03E2', + '\u03E4', + '\u03E6', + '\u03E8', + '\u03EA', + '\u03EC', + '\u03EE', + '\u03F0', + '\u03F1', + '\u03F2', + '\u03F4', + '\u03F5', + '\u0400', + '\u0401', + '\u0402', + '\u0403', + '\u0404', + '\u0405', + '\u0406', + '\u0407', + '\u0408', + '\u0409', + '\u040A', + '\u040B', + '\u040C', + '\u040D', + '\u040E', + '\u040F', + '\u0410', + '\u0411', + '\u0412', + '\u0413', + '\u0414', + '\u0415', + '\u0416', + '\u0417', + '\u0418', + '\u0419', + '\u041A', + '\u041B', + '\u041C', + '\u041D', + '\u041E', + '\u041F', + '\u0420', + '\u0421', + '\u0422', + '\u0423', + '\u0424', + '\u0425', + '\u0426', + '\u0427', + '\u0428', + '\u0429', + '\u042A', + '\u042B', + '\u042C', + '\u042D', + '\u042E', + '\u042F', + '\u0460', + '\u0462', + '\u0464', + '\u0466', + '\u0468', + '\u046A', + '\u046C', + '\u046E', + '\u0470', + '\u0472', + '\u0474', + '\u0476', + '\u0478', + '\u047A', + '\u047C', + '\u047E', + '\u0480', + '\u048A', + '\u048C', + '\u048E', + '\u0490', + '\u0492', + '\u0494', + '\u0496', + '\u0498', + '\u049A', + '\u049C', + '\u049E', + '\u04A0', + '\u04A2', + '\u04A4', + '\u04A6', + '\u04A8', + '\u04AA', + '\u04AC', + '\u04AE', + '\u04B0', + '\u04B2', + '\u04B4', + '\u04B6', + '\u04B8', + '\u04BA', + '\u04BC', + '\u04BE', + '\u04C1', + '\u04C3', + '\u04C5', + '\u04C7', + '\u04C9', + '\u04CB', + '\u04CD', + '\u04D0', + '\u04D2', + '\u04D4', + '\u04D6', + '\u04D8', + '\u04DA', + '\u04DC', + '\u04DE', + '\u04E0', + '\u04E2', + '\u04E4', + '\u04E6', + '\u04E8', + '\u04EA', + '\u04EC', + '\u04EE', + '\u04F0', + '\u04F2', + '\u04F4', + '\u04F8', + '\u0500', + '\u0502', + '\u0504', + '\u0506', + '\u0508', + '\u050A', + '\u050C', + '\u050E', + '\u0531', + '\u0532', + '\u0533', + '\u0534', + '\u0535', + '\u0536', + '\u0537', + '\u0538', + '\u0539', + '\u053A', + '\u053B', + '\u053C', + '\u053D', + '\u053E', + '\u053F', + '\u0540', + '\u0541', + '\u0542', + '\u0543', + '\u0544', + '\u0545', + '\u0546', + '\u0547', + '\u0548', + '\u0549', + '\u054A', + '\u054B', + '\u054C', + '\u054D', + '\u054E', + '\u054F', + '\u0550', + '\u0551', + '\u0552', + '\u0553', + '\u0554', + '\u0555', + '\u0556', + '\u0587', + '\u1E00', + '\u1E02', + '\u1E04', + '\u1E06', + '\u1E08', + '\u1E0A', + '\u1E0C', + '\u1E0E', + '\u1E10', + '\u1E12', + '\u1E14', + '\u1E16', + '\u1E18', + '\u1E1A', + '\u1E1C', + '\u1E1E', + '\u1E20', + '\u1E22', + '\u1E24', + '\u1E26', + '\u1E28', + '\u1E2A', + '\u1E2C', + '\u1E2E', + '\u1E30', + '\u1E32', + '\u1E34', + '\u1E36', + '\u1E38', + '\u1E3A', + '\u1E3C', + '\u1E3E', + '\u1E40', + '\u1E42', + '\u1E44', + '\u1E46', + '\u1E48', + '\u1E4A', + '\u1E4C', + '\u1E4E', + '\u1E50', + '\u1E52', + '\u1E54', + '\u1E56', + '\u1E58', + '\u1E5A', + '\u1E5C', + '\u1E5E', + '\u1E60', + '\u1E62', + '\u1E64', + '\u1E66', + '\u1E68', + '\u1E6A', + '\u1E6C', + '\u1E6E', + '\u1E70', + '\u1E72', + '\u1E74', + '\u1E76', + '\u1E78', + '\u1E7A', + '\u1E7C', + '\u1E7E', + '\u1E80', + '\u1E82', + '\u1E84', + '\u1E86', + '\u1E88', + '\u1E8A', + '\u1E8C', + '\u1E8E', + '\u1E90', + '\u1E92', + '\u1E94', + '\u1E96', + '\u1E97', + '\u1E98', + '\u1E99', + '\u1E9A', + '\u1E9B', + '\u1EA0', + '\u1EA2', + '\u1EA4', + '\u1EA6', + '\u1EA8', + '\u1EAA', + '\u1EAC', + '\u1EAE', + '\u1EB0', + '\u1EB2', + '\u1EB4', + '\u1EB6', + '\u1EB8', + '\u1EBA', + '\u1EBC', + '\u1EBE', + '\u1EC0', + '\u1EC2', + '\u1EC4', + '\u1EC6', + '\u1EC8', + '\u1ECA', + '\u1ECC', + '\u1ECE', + '\u1ED0', + '\u1ED2', + '\u1ED4', + '\u1ED6', + '\u1ED8', + '\u1EDA', + '\u1EDC', + '\u1EDE', + '\u1EE0', + '\u1EE2', + '\u1EE4', + '\u1EE6', + '\u1EE8', + '\u1EEA', + '\u1EEC', + '\u1EEE', + '\u1EF0', + '\u1EF2', + '\u1EF4', + '\u1EF6', + '\u1EF8', + '\u1F08', + '\u1F09', + '\u1F0A', + '\u1F0B', + '\u1F0C', + '\u1F0D', + '\u1F0E', + '\u1F0F', + '\u1F18', + '\u1F19', + '\u1F1A', + '\u1F1B', + '\u1F1C', + '\u1F1D', + '\u1F28', + '\u1F29', + '\u1F2A', + '\u1F2B', + '\u1F2C', + '\u1F2D', + '\u1F2E', + '\u1F2F', + '\u1F38', + '\u1F39', + '\u1F3A', + '\u1F3B', + '\u1F3C', + '\u1F3D', + '\u1F3E', + '\u1F3F', + '\u1F48', + '\u1F49', + '\u1F4A', + '\u1F4B', + '\u1F4C', + '\u1F4D', + '\u1F50', + '\u1F52', + '\u1F54', + '\u1F56', + '\u1F59', + '\u1F5B', + '\u1F5D', + '\u1F5F', + '\u1F68', + '\u1F69', + '\u1F6A', + '\u1F6B', + '\u1F6C', + '\u1F6D', + '\u1F6E', + '\u1F6F', + '\u1F80', + '\u1F81', + '\u1F82', + '\u1F83', + '\u1F84', + '\u1F85', + '\u1F86', + '\u1F87', + '\u1F88', + '\u1F89', + '\u1F8A', + '\u1F8B', + '\u1F8C', + '\u1F8D', + '\u1F8E', + '\u1F8F', + '\u1F90', + '\u1F91', + '\u1F92', + '\u1F93', + '\u1F94', + '\u1F95', + '\u1F96', + '\u1F97', + '\u1F98', + '\u1F99', + '\u1F9A', + '\u1F9B', + '\u1F9C', + '\u1F9D', + '\u1F9E', + '\u1F9F', + '\u1FA0', + '\u1FA1', + '\u1FA2', + '\u1FA3', + '\u1FA4', + '\u1FA5', + '\u1FA6', + '\u1FA7', + '\u1FA8', + '\u1FA9', + '\u1FAA', + '\u1FAB', + '\u1FAC', + '\u1FAD', + '\u1FAE', + '\u1FAF', + '\u1FB2', + '\u1FB3', + '\u1FB4', + '\u1FB6', + '\u1FB7', + '\u1FB8', + '\u1FB9', + '\u1FBA', + '\u1FBB', + '\u1FBC', + '\u1FBE', + '\u1FC2', + '\u1FC3', + '\u1FC4', + '\u1FC6', + '\u1FC7', + '\u1FC8', + '\u1FC9', + '\u1FCA', + '\u1FCB', + '\u1FCC', + '\u1FD2', + '\u1FD3', + '\u1FD6', + '\u1FD7', + '\u1FD8', + '\u1FD9', + '\u1FDA', + '\u1FDB', + '\u1FE2', + '\u1FE3', + '\u1FE4', + '\u1FE6', + '\u1FE7', + '\u1FE8', + '\u1FE9', + '\u1FEA', + '\u1FEB', + '\u1FEC', + '\u1FF2', + '\u1FF3', + '\u1FF4', + '\u1FF6', + '\u1FF7', + '\u1FF8', + '\u1FF9', + '\u1FFA', + '\u1FFB', + '\u1FFC', + '\u2126', + '\u212A', + '\u212B', + '\u2160', + '\u2161', + '\u2162', + '\u2163', + '\u2164', + '\u2165', + '\u2166', + '\u2167', + '\u2168', + '\u2169', + '\u216A', + '\u216B', + '\u216C', + '\u216D', + '\u216E', + '\u216F', + '\u24B6', + '\u24B7', + '\u24B8', + '\u24B9', + '\u24BA', + '\u24BB', + '\u24BC', + '\u24BD', + '\u24BE', + '\u24BF', + '\u24C0', + '\u24C1', + '\u24C2', + '\u24C3', + '\u24C4', + '\u24C5', + '\u24C6', + '\u24C7', + '\u24C8', + '\u24C9', + '\u24CA', + '\u24CB', + '\u24CC', + '\u24CD', + '\u24CE', + '\u24CF', + '\uFB00', + '\uFB01', + '\uFB02', + '\uFB03', + '\uFB04', + '\uFB05', + '\uFB06', + '\uFB13', + '\uFB14', + '\uFB15', + '\uFB16', + '\uFB17', + '\uFF21', + '\uFF22', + '\uFF23', + '\uFF24', + '\uFF25', + '\uFF26', + '\uFF27', + '\uFF28', + '\uFF29', + '\uFF2A', + '\uFF2B', + '\uFF2C', + '\uFF2D', + '\uFF2E', + '\uFF2F', + '\uFF30', + '\uFF31', + '\uFF32', + '\uFF33', + '\uFF34', + '\uFF35', + '\uFF36', + '\uFF37', + '\uFF38', + '\uFF39', + '\uFF3A', + }; + + final static String[] B3replace = new String[] { + "\u0061", + "\u0062", + "\u0063", + "\u0064", + "\u0065", + "\u0066", + "\u0067", + "\u0068", + "\u0069", + "\u006A", + "\u006B", + "\u006C", + "\u006D", + "\u006E", + "\u006F", + "\u0070", + "\u0071", + "\u0072", + "\u0073", + "\u0074", + "\u0075", + "\u0076", + "\u0077", + "\u0078", + "\u0079", + "\u007A", + "\u03BC", + "\u00E0", + "\u00E1", + "\u00E2", + "\u00E3", + "\u00E4", + "\u00E5", + "\u00E6", + "\u00E7", + "\u00E8", + "\u00E9", + "\u00EA", + "\u00EB", + "\u00EC", + "\u00ED", + "\u00EE", + "\u00EF", + "\u00F0", + "\u00F1", + "\u00F2", + "\u00F3", + "\u00F4", + "\u00F5", + "\u00F6", + "\u00F8", + "\u00F9", + "\u00FA", + "\u00FB", + "\u00FC", + "\u00FD", + "\u00FE", + "\u0073\u0073", + "\u0101", + "\u0103", + "\u0105", + "\u0107", + "\u0109", + "\u010B", + "\u010D", + "\u010F", + "\u0111", + "\u0113", + "\u0115", + "\u0117", + "\u0119", + "\u011B", + "\u011D", + "\u011F", + "\u0121", + "\u0123", + "\u0125", + "\u0127", + "\u0129", + "\u012B", + "\u012D", + "\u012F", + "\u0069\u0307", + "\u0133", + "\u0135", + "\u0137", + "\u013A", + "\u013C", + "\u013E", + "\u0140", + "\u0142", + "\u0144", + "\u0146", + "\u0148", + "\u02BC\u006E", + "\u014B", + "\u014D", + "\u014F", + "\u0151", + "\u0153", + "\u0155", + "\u0157", + "\u0159", + "\u015B", + "\u015D", + "\u015F", + "\u0161", + "\u0163", + "\u0165", + "\u0167", + "\u0169", + "\u016B", + "\u016D", + "\u016F", + "\u0171", + "\u0173", + "\u0175", + "\u0177", + "\u00FF", + "\u017A", + "\u017C", + "\u017E", + "\u0073", + "\u0253", + "\u0183", + "\u0185", + "\u0254", + "\u0188", + "\u0256", + "\u0257", + "\u018C", + "\u01DD", + "\u0259", + "\u025B", + "\u0192", + "\u0260", + "\u0263", + "\u0269", + "\u0268", + "\u0199", + "\u026F", + "\u0272", + "\u0275", + "\u01A1", + "\u01A3", + "\u01A5", + "\u0280", + "\u01A8", + "\u0283", + "\u01AD", + "\u0288", + "\u01B0", + "\u028A", + "\u028B", + "\u01B4", + "\u01B6", + "\u0292", + "\u01B9", + "\u01BD", + "\u01C6", + "\u01C6", + "\u01C9", + "\u01C9", + "\u01CC", + "\u01CC", + "\u01CE", + "\u01D0", + "\u01D2", + "\u01D4", + "\u01D6", + "\u01D8", + "\u01DA", + "\u01DC", + "\u01DF", + "\u01E1", + "\u01E3", + "\u01E5", + "\u01E7", + "\u01E9", + "\u01EB", + "\u01ED", + "\u01EF", + "\u006A\u030C", + "\u01F3", + "\u01F3", + "\u01F5", + "\u0195", + "\u01BF", + "\u01F9", + "\u01FB", + "\u01FD", + "\u01FF", + "\u0201", + "\u0203", + "\u0205", + "\u0207", + "\u0209", + "\u020B", + "\u020D", + "\u020F", + "\u0211", + "\u0213", + "\u0215", + "\u0217", + "\u0219", + "\u021B", + "\u021D", + "\u021F", + "\u019E", + "\u0223", + "\u0225", + "\u0227", + "\u0229", + "\u022B", + "\u022D", + "\u022F", + "\u0231", + "\u0233", + "\u03B9", + "\u03AC", + "\u03AD", + "\u03AE", + "\u03AF", + "\u03CC", + "\u03CD", + "\u03CE", + "\u03B9\u0308\u0301", + "\u03B1", + "\u03B2", + "\u03B3", + "\u03B4", + "\u03B5", + "\u03B6", + "\u03B7", + "\u03B8", + "\u03B9", + "\u03BA", + "\u03BB", + "\u03BC", + "\u03BD", + "\u03BE", + "\u03BF", + "\u03C0", + "\u03C1", + "\u03C3", + "\u03C4", + "\u03C5", + "\u03C6", + "\u03C7", + "\u03C8", + "\u03C9", + "\u03CA", + "\u03CB", + "\u03C5\u0308\u0301", + "\u03C3", + "\u03B2", + "\u03B8", + "\u03C6", + "\u03C0", + "\u03D9", + "\u03DB", + "\u03DD", + "\u03DF", + "\u03E1", + "\u03E3", + "\u03E5", + "\u03E7", + "\u03E9", + "\u03EB", + "\u03ED", + "\u03EF", + "\u03BA", + "\u03C1", + "\u03C3", + "\u03B8", + "\u03B5", + "\u0450", + "\u0451", + "\u0452", + "\u0453", + "\u0454", + "\u0455", + "\u0456", + "\u0457", + "\u0458", + "\u0459", + "\u045A", + "\u045B", + "\u045C", + "\u045D", + "\u045E", + "\u045F", + "\u0430", + "\u0431", + "\u0432", + "\u0433", + "\u0434", + "\u0435", + "\u0436", + "\u0437", + "\u0438", + "\u0439", + "\u043A", + "\u043B", + "\u043C", + "\u043D", + "\u043E", + "\u043F", + "\u0440", + "\u0441", + "\u0442", + "\u0443", + "\u0444", + "\u0445", + "\u0446", + "\u0447", + "\u0448", + "\u0449", + "\u044A", + "\u044B", + "\u044C", + "\u044D", + "\u044E", + "\u044F", + "\u0461", + "\u0463", + "\u0465", + "\u0467", + "\u0469", + "\u046B", + "\u046D", + "\u046F", + "\u0471", + "\u0473", + "\u0475", + "\u0477", + "\u0479", + "\u047B", + "\u047D", + "\u047F", + "\u0481", + "\u048B", + "\u048D", + "\u048F", + "\u0491", + "\u0493", + "\u0495", + "\u0497", + "\u0499", + "\u049B", + "\u049D", + "\u049F", + "\u04A1", + "\u04A3", + "\u04A5", + "\u04A7", + "\u04A9", + "\u04AB", + "\u04AD", + "\u04AF", + "\u04B1", + "\u04B3", + "\u04B5", + "\u04B7", + "\u04B9", + "\u04BB", + "\u04BD", + "\u04BF", + "\u04C2", + "\u04C4", + "\u04C6", + "\u04C8", + "\u04CA", + "\u04CC", + "\u04CE", + "\u04D1", + "\u04D3", + "\u04D5", + "\u04D7", + "\u04D9", + "\u04DB", + "\u04DD", + "\u04DF", + "\u04E1", + "\u04E3", + "\u04E5", + "\u04E7", + "\u04E9", + "\u04EB", + "\u04ED", + "\u04EF", + "\u04F1", + "\u04F3", + "\u04F5", + "\u04F9", + "\u0501", + "\u0503", + "\u0505", + "\u0507", + "\u0509", + "\u050B", + "\u050D", + "\u050F", + "\u0561", + "\u0562", + "\u0563", + "\u0564", + "\u0565", + "\u0566", + "\u0567", + "\u0568", + "\u0569", + "\u056A", + "\u056B", + "\u056C", + "\u056D", + "\u056E", + "\u056F", + "\u0570", + "\u0571", + "\u0572", + "\u0573", + "\u0574", + "\u0575", + "\u0576", + "\u0577", + "\u0578", + "\u0579", + "\u057A", + "\u057B", + "\u057C", + "\u057D", + "\u057E", + "\u057F", + "\u0580", + "\u0581", + "\u0582", + "\u0583", + "\u0584", + "\u0585", + "\u0586", + "\u0565\u0582", + "\u1E01", + "\u1E03", + "\u1E05", + "\u1E07", + "\u1E09", + "\u1E0B", + "\u1E0D", + "\u1E0F", + "\u1E11", + "\u1E13", + "\u1E15", + "\u1E17", + "\u1E19", + "\u1E1B", + "\u1E1D", + "\u1E1F", + "\u1E21", + "\u1E23", + "\u1E25", + "\u1E27", + "\u1E29", + "\u1E2B", + "\u1E2D", + "\u1E2F", + "\u1E31", + "\u1E33", + "\u1E35", + "\u1E37", + "\u1E39", + "\u1E3B", + "\u1E3D", + "\u1E3F", + "\u1E41", + "\u1E43", + "\u1E45", + "\u1E47", + "\u1E49", + "\u1E4B", + "\u1E4D", + "\u1E4F", + "\u1E51", + "\u1E53", + "\u1E55", + "\u1E57", + "\u1E59", + "\u1E5B", + "\u1E5D", + "\u1E5F", + "\u1E61", + "\u1E63", + "\u1E65", + "\u1E67", + "\u1E69", + "\u1E6B", + "\u1E6D", + "\u1E6F", + "\u1E71", + "\u1E73", + "\u1E75", + "\u1E77", + "\u1E79", + "\u1E7B", + "\u1E7D", + "\u1E7F", + "\u1E81", + "\u1E83", + "\u1E85", + "\u1E87", + "\u1E89", + "\u1E8B", + "\u1E8D", + "\u1E8F", + "\u1E91", + "\u1E93", + "\u1E95", + "\u0068\u0331", + "\u0074\u0308", + "\u0077\u030A", + "\u0079\u030A", + "\u0061\u02BE", + "\u1E61", + "\u1EA1", + "\u1EA3", + "\u1EA5", + "\u1EA7", + "\u1EA9", + "\u1EAB", + "\u1EAD", + "\u1EAF", + "\u1EB1", + "\u1EB3", + "\u1EB5", + "\u1EB7", + "\u1EB9", + "\u1EBB", + "\u1EBD", + "\u1EBF", + "\u1EC1", + "\u1EC3", + "\u1EC5", + "\u1EC7", + "\u1EC9", + "\u1ECB", + "\u1ECD", + "\u1ECF", + "\u1ED1", + "\u1ED3", + "\u1ED5", + "\u1ED7", + "\u1ED9", + "\u1EDB", + "\u1EDD", + "\u1EDF", + "\u1EE1", + "\u1EE3", + "\u1EE5", + "\u1EE7", + "\u1EE9", + "\u1EEB", + "\u1EED", + "\u1EEF", + "\u1EF1", + "\u1EF3", + "\u1EF5", + "\u1EF7", + "\u1EF9", + "\u1F00", + "\u1F01", + "\u1F02", + "\u1F03", + "\u1F04", + "\u1F05", + "\u1F06", + "\u1F07", + "\u1F10", + "\u1F11", + "\u1F12", + "\u1F13", + "\u1F14", + "\u1F15", + "\u1F20", + "\u1F21", + "\u1F22", + "\u1F23", + "\u1F24", + "\u1F25", + "\u1F26", + "\u1F27", + "\u1F30", + "\u1F31", + "\u1F32", + "\u1F33", + "\u1F34", + "\u1F35", + "\u1F36", + "\u1F37", + "\u1F40", + "\u1F41", + "\u1F42", + "\u1F43", + "\u1F44", + "\u1F45", + "\u03C5\u0313", + "\u03C5\u0313\u0300", + "\u03C5\u0313\u0301", + "\u03C5\u0313\u0342", + "\u1F51", + "\u1F53", + "\u1F55", + "\u1F57", + "\u1F60", + "\u1F61", + "\u1F62", + "\u1F63", + "\u1F64", + "\u1F65", + "\u1F66", + "\u1F67", + "\u1F00\u03B9", + "\u1F01\u03B9", + "\u1F02\u03B9", + "\u1F03\u03B9", + "\u1F04\u03B9", + "\u1F05\u03B9", + "\u1F06\u03B9", + "\u1F07\u03B9", + "\u1F00\u03B9", + "\u1F01\u03B9", + "\u1F02\u03B9", + "\u1F03\u03B9", + "\u1F04\u03B9", + "\u1F05\u03B9", + "\u1F06\u03B9", + "\u1F07\u03B9", + "\u1F20\u03B9", + "\u1F21\u03B9", + "\u1F22\u03B9", + "\u1F23\u03B9", + "\u1F24\u03B9", + "\u1F25\u03B9", + "\u1F26\u03B9", + "\u1F27\u03B9", + "\u1F20\u03B9", + "\u1F21\u03B9", + "\u1F22\u03B9", + "\u1F23\u03B9", + "\u1F24\u03B9", + "\u1F25\u03B9", + "\u1F26\u03B9", + "\u1F27\u03B9", + "\u1F60\u03B9", + "\u1F61\u03B9", + "\u1F62\u03B9", + "\u1F63\u03B9", + "\u1F64\u03B9", + "\u1F65\u03B9", + "\u1F66\u03B9", + "\u1F67\u03B9", + "\u1F60\u03B9", + "\u1F61\u03B9", + "\u1F62\u03B9", + "\u1F63\u03B9", + "\u1F64\u03B9", + "\u1F65\u03B9", + "\u1F66\u03B9", + "\u1F67\u03B9", + "\u1F70\u03B9", + "\u03B1\u03B9", + "\u03AC\u03B9", + "\u03B1\u0342", + "\u03B1\u0342\u03B9", + "\u1FB0", + "\u1FB1", + "\u1F70", + "\u1F71", + "\u03B1\u03B9", + "\u03B9", + "\u1F74\u03B9", + "\u03B7\u03B9", + "\u03AE\u03B9", + "\u03B7\u0342", + "\u03B7\u0342\u03B9", + "\u1F72", + "\u1F73", + "\u1F74", + "\u1F75", + "\u03B7\u03B9", + "\u03B9\u0308\u0300", + "\u03B9\u0308\u0301", + "\u03B9\u0342", + "\u03B9\u0308\u0342", + "\u1FD0", + "\u1FD1", + "\u1F76", + "\u1F77", + "\u03C5\u0308\u0300", + "\u03C5\u0308\u0301", + "\u03C1\u0313", + "\u03C5\u0342", + "\u03C5\u0308\u0342", + "\u1FE0", + "\u1FE1", + "\u1F7A", + "\u1F7B", + "\u1FE5", + "\u1F7C\u03B9", + "\u03C9\u03B9", + "\u03CE\u03B9", + "\u03C9\u0342", + "\u03C9\u0342\u03B9", + "\u1F78", + "\u1F79", + "\u1F7C", + "\u1F7D", + "\u03C9\u03B9", + "\u03C9", + "\u006B", + "\u00E5", + "\u2170", + "\u2171", + "\u2172", + "\u2173", + "\u2174", + "\u2175", + "\u2176", + "\u2177", + "\u2178", + "\u2179", + "\u217A", + "\u217B", + "\u217C", + "\u217D", + "\u217E", + "\u217F", + "\u24D0", + "\u24D1", + "\u24D2", + "\u24D3", + "\u24D4", + "\u24D5", + "\u24D6", + "\u24D7", + "\u24D8", + "\u24D9", + "\u24DA", + "\u24DB", + "\u24DC", + "\u24DD", + "\u24DE", + "\u24DF", + "\u24E0", + "\u24E1", + "\u24E2", + "\u24E3", + "\u24E4", + "\u24E5", + "\u24E6", + "\u24E7", + "\u24E8", + "\u24E9", + "\u0066\u0066", + "\u0066\u0069", + "\u0066\u006C", + "\u0066\u0066\u0069", + "\u0066\u0066\u006C", + "\u0073\u0074", + "\u0073\u0074", + "\u0574\u0576", + "\u0574\u0565", + "\u0574\u056B", + "\u057E\u0576", + "\u0574\u056D", + "\uFF41", + "\uFF42", + "\uFF43", + "\uFF44", + "\uFF45", + "\uFF46", + "\uFF47", + "\uFF48", + "\uFF49", + "\uFF4A", + "\uFF4B", + "\uFF4C", + "\uFF4D", + "\uFF4E", + "\uFF4F", + "\uFF50", + "\uFF51", + "\uFF52", + "\uFF53", + "\uFF54", + "\uFF55", + "\uFF56", + "\uFF57", + "\uFF58", + "\uFF59", + "\uFF5A", + }; + + final static char[] C11 = new char[] { + '\u0020', + }; + + final static char[] C12 = new char[] { + '\u00A0', + '\u1680', + '\u2000', + '\u2001', + '\u2002', + '\u2003', + '\u2004', + '\u2005', + '\u2006', + '\u2007', + '\u2008', + '\u2009', + '\u200A', + '\u200B', + '\u202F', + '\u205F', + '\u3000', + }; + + final static char[][] C21 = new char[][] { + new char[] { '\u0000', '\u001F' }, + new char[] { '\u007F' }, + }; + + final static char[][] C22 = new char[][] { + new char[] { '\u0080', '\u009F' }, + new char[] { '\u06DD' }, + new char[] { '\u070F' }, + new char[] { '\u180E' }, + new char[] { '\u200C' }, + new char[] { '\u200D' }, + new char[] { '\u2028' }, + new char[] { '\u2029' }, + new char[] { '\u2060' }, + new char[] { '\u2061' }, + new char[] { '\u2062' }, + new char[] { '\u2063' }, + new char[] { '\u206A', '\u206F' }, + new char[] { '\uFEFF' }, + new char[] { '\uFFF9', '\uFFFC' }, + }; + + final static char[][] C3 = new char[][] { + new char[] { '\uE000', '\uF8FF' }, + }; + + final static char[][] C4 = new char[][] { + new char[] { '\uFDD0', '\uFDEF' }, + new char[] { '\uFFFE', '\uFFFF' }, + }; + + final static char[][] C5 = new char[][] { + new char[] { '\uD800', '\uDFFF' }, + }; + + final static char[][] C6 = new char[][] { + new char[] { '\uFFF9' }, + new char[] { '\uFFFA' }, + new char[] { '\uFFFB' }, + new char[] { '\uFFFC' }, + new char[] { '\uFFFD' }, + }; + + final static char[][] C7 = new char[][] { + new char[] { '\u2FF0', '\u2FFB' }, + }; + + final static char[][] C8 = new char[][] { + new char[] { '\u0340' }, + new char[] { '\u0341' }, + new char[] { '\u200E' }, + new char[] { '\u200F' }, + new char[] { '\u202A' }, + new char[] { '\u202B' }, + new char[] { '\u202C' }, + new char[] { '\u202D' }, + new char[] { '\u202E' }, + new char[] { '\u206A' }, + new char[] { '\u206B' }, + new char[] { '\u206C' }, + new char[] { '\u206D' }, + new char[] { '\u206E' }, + new char[] { '\u206F' }, + }; + + final static char[][] D1 = new char[][] { + new char[] { '\u05BE' }, + new char[] { '\u05C0' }, + new char[] { '\u05C3' }, + new char[] { '\u05D0', '\u05EA' }, + new char[] { '\u05F0', '\u05F4' }, + new char[] { '\u061B' }, + new char[] { '\u061F' }, + new char[] { '\u0621', '\u063A' }, + new char[] { '\u0640', '\u064A' }, + new char[] { '\u066D', '\u066F' }, + new char[] { '\u0671', '\u06D5' }, + new char[] { '\u06DD' }, + new char[] { '\u06E5', '\u06E6' }, + new char[] { '\u06FA', '\u06FE' }, + new char[] { '\u0700', '\u070D' }, + new char[] { '\u0710' }, + new char[] { '\u0712', '\u072C' }, + new char[] { '\u0780', '\u07A5' }, + new char[] { '\u07B1' }, + new char[] { '\u200F' }, + new char[] { '\uFB1D' }, + new char[] { '\uFB1F', '\uFB28' }, + new char[] { '\uFB2A', '\uFB36' }, + new char[] { '\uFB38', '\uFB3C' }, + new char[] { '\uFB3E' }, + new char[] { '\uFB40', '\uFB41' }, + new char[] { '\uFB43', '\uFB44' }, + new char[] { '\uFB46', '\uFBB1' }, + new char[] { '\uFBD3', '\uFD3D' }, + new char[] { '\uFD50', '\uFD8F' }, + new char[] { '\uFD92', '\uFDC7' }, + new char[] { '\uFDF0', '\uFDFC' }, + new char[] { '\uFE70', '\uFE74' }, + new char[] { '\uFE76', '\uFEFC' }, + }; + + final static char[][] D2 = new char[][] { + new char[] { '\u0041', '\u005A' }, + new char[] { '\u0061', '\u007A' }, + new char[] { '\u00AA' }, + new char[] { '\u00B5' }, + new char[] { '\u00BA' }, + new char[] { '\u00C0', '\u00D6' }, + new char[] { '\u00D8', '\u00F6' }, + new char[] { '\u00F8', '\u0220' }, + new char[] { '\u0222', '\u0233' }, + new char[] { '\u0250', '\u02AD' }, + new char[] { '\u02B0', '\u02B8' }, + new char[] { '\u02BB', '\u02C1' }, + new char[] { '\u02D0', '\u02D1' }, + new char[] { '\u02E0', '\u02E4' }, + new char[] { '\u02EE' }, + new char[] { '\u037A' }, + new char[] { '\u0386' }, + new char[] { '\u0388', '\u038A' }, + new char[] { '\u038C' }, + new char[] { '\u038E', '\u03A1' }, + new char[] { '\u03A3', '\u03CE' }, + new char[] { '\u03D0', '\u03F5' }, + new char[] { '\u0400', '\u0482' }, + new char[] { '\u048A', '\u04CE' }, + new char[] { '\u04D0', '\u04F5' }, + new char[] { '\u04F8', '\u04F9' }, + new char[] { '\u0500', '\u050F' }, + new char[] { '\u0531', '\u0556' }, + new char[] { '\u0559', '\u055F' }, + new char[] { '\u0561', '\u0587' }, + new char[] { '\u0589' }, + new char[] { '\u0903' }, + new char[] { '\u0905', '\u0939' }, + new char[] { '\u093D', '\u0940' }, + new char[] { '\u0949', '\u094C' }, + new char[] { '\u0950' }, + new char[] { '\u0958', '\u0961' }, + new char[] { '\u0964', '\u0970' }, + new char[] { '\u0982', '\u0983' }, + new char[] { '\u0985', '\u098C' }, + new char[] { '\u098F', '\u0990' }, + new char[] { '\u0993', '\u09A8' }, + new char[] { '\u09AA', '\u09B0' }, + new char[] { '\u09B2' }, + new char[] { '\u09B6', '\u09B9' }, + new char[] { '\u09BE', '\u09C0' }, + new char[] { '\u09C7', '\u09C8' }, + new char[] { '\u09CB', '\u09CC' }, + new char[] { '\u09D7' }, + new char[] { '\u09DC', '\u09DD' }, + new char[] { '\u09DF', '\u09E1' }, + new char[] { '\u09E6', '\u09F1' }, + new char[] { '\u09F4', '\u09FA' }, + new char[] { '\u0A05', '\u0A0A' }, + new char[] { '\u0A0F', '\u0A10' }, + new char[] { '\u0A13', '\u0A28' }, + new char[] { '\u0A2A', '\u0A30' }, + new char[] { '\u0A32', '\u0A33' }, + new char[] { '\u0A35', '\u0A36' }, + new char[] { '\u0A38', '\u0A39' }, + new char[] { '\u0A3E', '\u0A40' }, + new char[] { '\u0A59', '\u0A5C' }, + new char[] { '\u0A5E' }, + new char[] { '\u0A66', '\u0A6F' }, + new char[] { '\u0A72', '\u0A74' }, + new char[] { '\u0A83' }, + new char[] { '\u0A85', '\u0A8B' }, + new char[] { '\u0A8D' }, + new char[] { '\u0A8F', '\u0A91' }, + new char[] { '\u0A93', '\u0AA8' }, + new char[] { '\u0AAA', '\u0AB0' }, + new char[] { '\u0AB2', '\u0AB3' }, + new char[] { '\u0AB5', '\u0AB9' }, + new char[] { '\u0ABD', '\u0AC0' }, + new char[] { '\u0AC9' }, + new char[] { '\u0ACB', '\u0ACC' }, + new char[] { '\u0AD0' }, + new char[] { '\u0AE0' }, + new char[] { '\u0AE6', '\u0AEF' }, + new char[] { '\u0B02', '\u0B03' }, + new char[] { '\u0B05', '\u0B0C' }, + new char[] { '\u0B0F', '\u0B10' }, + new char[] { '\u0B13', '\u0B28' }, + new char[] { '\u0B2A', '\u0B30' }, + new char[] { '\u0B32', '\u0B33' }, + new char[] { '\u0B36', '\u0B39' }, + new char[] { '\u0B3D', '\u0B3E' }, + new char[] { '\u0B40' }, + new char[] { '\u0B47', '\u0B48' }, + new char[] { '\u0B4B', '\u0B4C' }, + new char[] { '\u0B57' }, + new char[] { '\u0B5C', '\u0B5D' }, + new char[] { '\u0B5F', '\u0B61' }, + new char[] { '\u0B66', '\u0B70' }, + new char[] { '\u0B83' }, + new char[] { '\u0B85', '\u0B8A' }, + new char[] { '\u0B8E', '\u0B90' }, + new char[] { '\u0B92', '\u0B95' }, + new char[] { '\u0B99', '\u0B9A' }, + new char[] { '\u0B9C' }, + new char[] { '\u0B9E', '\u0B9F' }, + new char[] { '\u0BA3', '\u0BA4' }, + new char[] { '\u0BA8', '\u0BAA' }, + new char[] { '\u0BAE', '\u0BB5' }, + new char[] { '\u0BB7', '\u0BB9' }, + new char[] { '\u0BBE', '\u0BBF' }, + new char[] { '\u0BC1', '\u0BC2' }, + new char[] { '\u0BC6', '\u0BC8' }, + new char[] { '\u0BCA', '\u0BCC' }, + new char[] { '\u0BD7' }, + new char[] { '\u0BE7', '\u0BF2' }, + new char[] { '\u0C01', '\u0C03' }, + new char[] { '\u0C05', '\u0C0C' }, + new char[] { '\u0C0E', '\u0C10' }, + new char[] { '\u0C12', '\u0C28' }, + new char[] { '\u0C2A', '\u0C33' }, + new char[] { '\u0C35', '\u0C39' }, + new char[] { '\u0C41', '\u0C44' }, + new char[] { '\u0C60', '\u0C61' }, + new char[] { '\u0C66', '\u0C6F' }, + new char[] { '\u0C82', '\u0C83' }, + new char[] { '\u0C85', '\u0C8C' }, + new char[] { '\u0C8E', '\u0C90' }, + new char[] { '\u0C92', '\u0CA8' }, + new char[] { '\u0CAA', '\u0CB3' }, + new char[] { '\u0CB5', '\u0CB9' }, + new char[] { '\u0CBE' }, + new char[] { '\u0CC0', '\u0CC4' }, + new char[] { '\u0CC7', '\u0CC8' }, + new char[] { '\u0CCA', '\u0CCB' }, + new char[] { '\u0CD5', '\u0CD6' }, + new char[] { '\u0CDE' }, + new char[] { '\u0CE0', '\u0CE1' }, + new char[] { '\u0CE6', '\u0CEF' }, + new char[] { '\u0D02', '\u0D03' }, + new char[] { '\u0D05', '\u0D0C' }, + new char[] { '\u0D0E', '\u0D10' }, + new char[] { '\u0D12', '\u0D28' }, + new char[] { '\u0D2A', '\u0D39' }, + new char[] { '\u0D3E', '\u0D40' }, + new char[] { '\u0D46', '\u0D48' }, + new char[] { '\u0D4A', '\u0D4C' }, + new char[] { '\u0D57' }, + new char[] { '\u0D60', '\u0D61' }, + new char[] { '\u0D66', '\u0D6F' }, + new char[] { '\u0D82', '\u0D83' }, + new char[] { '\u0D85', '\u0D96' }, + new char[] { '\u0D9A', '\u0DB1' }, + new char[] { '\u0DB3', '\u0DBB' }, + new char[] { '\u0DBD' }, + new char[] { '\u0DC0', '\u0DC6' }, + new char[] { '\u0DCF', '\u0DD1' }, + new char[] { '\u0DD8', '\u0DDF' }, + new char[] { '\u0DF2', '\u0DF4' }, + new char[] { '\u0E01', '\u0E30' }, + new char[] { '\u0E32', '\u0E33' }, + new char[] { '\u0E40', '\u0E46' }, + new char[] { '\u0E4F', '\u0E5B' }, + new char[] { '\u0E81', '\u0E82' }, + new char[] { '\u0E84' }, + new char[] { '\u0E87', '\u0E88' }, + new char[] { '\u0E8A' }, + new char[] { '\u0E8D' }, + new char[] { '\u0E94', '\u0E97' }, + new char[] { '\u0E99', '\u0E9F' }, + new char[] { '\u0EA1', '\u0EA3' }, + new char[] { '\u0EA5' }, + new char[] { '\u0EA7' }, + new char[] { '\u0EAA', '\u0EAB' }, + new char[] { '\u0EAD', '\u0EB0' }, + new char[] { '\u0EB2', '\u0EB3' }, + new char[] { '\u0EBD' }, + new char[] { '\u0EC0', '\u0EC4' }, + new char[] { '\u0EC6' }, + new char[] { '\u0ED0', '\u0ED9' }, + new char[] { '\u0EDC', '\u0EDD' }, + new char[] { '\u0F00', '\u0F17' }, + new char[] { '\u0F1A', '\u0F34' }, + new char[] { '\u0F36' }, + new char[] { '\u0F38' }, + new char[] { '\u0F3E', '\u0F47' }, + new char[] { '\u0F49', '\u0F6A' }, + new char[] { '\u0F7F' }, + new char[] { '\u0F85' }, + new char[] { '\u0F88', '\u0F8B' }, + new char[] { '\u0FBE', '\u0FC5' }, + new char[] { '\u0FC7', '\u0FCC' }, + new char[] { '\u0FCF' }, + new char[] { '\u1000', '\u1021' }, + new char[] { '\u1023', '\u1027' }, + new char[] { '\u1029', '\u102A' }, + new char[] { '\u102C' }, + new char[] { '\u1031' }, + new char[] { '\u1038' }, + new char[] { '\u1040', '\u1057' }, + new char[] { '\u10A0', '\u10C5' }, + new char[] { '\u10D0', '\u10F8' }, + new char[] { '\u10FB' }, + new char[] { '\u1100', '\u1159' }, + new char[] { '\u115F', '\u11A2' }, + new char[] { '\u11A8', '\u11F9' }, + new char[] { '\u1200', '\u1206' }, + new char[] { '\u1208', '\u1246' }, + new char[] { '\u1248' }, + new char[] { '\u124A', '\u124D' }, + new char[] { '\u1250', '\u1256' }, + new char[] { '\u1258' }, + new char[] { '\u125A', '\u125D' }, + new char[] { '\u1260', '\u1286' }, + new char[] { '\u1288' }, + new char[] { '\u128A', '\u128D' }, + new char[] { '\u1290', '\u12AE' }, + new char[] { '\u12B0' }, + new char[] { '\u12B2', '\u12B5' }, + new char[] { '\u12B8', '\u12BE' }, + new char[] { '\u12C0' }, + new char[] { '\u12C2', '\u12C5' }, + new char[] { '\u12C8', '\u12CE' }, + new char[] { '\u12D0', '\u12D6' }, + new char[] { '\u12D8', '\u12EE' }, + new char[] { '\u12F0', '\u130E' }, + new char[] { '\u1310' }, + new char[] { '\u1312', '\u1315' }, + new char[] { '\u1318', '\u131E' }, + new char[] { '\u1320', '\u1346' }, + new char[] { '\u1348', '\u135A' }, + new char[] { '\u1361', '\u137C' }, + new char[] { '\u13A0', '\u13F4' }, + new char[] { '\u1401', '\u1676' }, + new char[] { '\u1681', '\u169A' }, + new char[] { '\u16A0', '\u16F0' }, + new char[] { '\u1700', '\u170C' }, + new char[] { '\u170E', '\u1711' }, + new char[] { '\u1720', '\u1731' }, + new char[] { '\u1735', '\u1736' }, + new char[] { '\u1740', '\u1751' }, + new char[] { '\u1760', '\u176C' }, + new char[] { '\u176E', '\u1770' }, + new char[] { '\u1780', '\u17B6' }, + new char[] { '\u17BE', '\u17C5' }, + new char[] { '\u17C7', '\u17C8' }, + new char[] { '\u17D4', '\u17DA' }, + new char[] { '\u17DC' }, + new char[] { '\u17E0', '\u17E9' }, + new char[] { '\u1810', '\u1819' }, + new char[] { '\u1820', '\u1877' }, + new char[] { '\u1880', '\u18A8' }, + new char[] { '\u1E00', '\u1E9B' }, + new char[] { '\u1EA0', '\u1EF9' }, + new char[] { '\u1F00', '\u1F15' }, + new char[] { '\u1F18', '\u1F1D' }, + new char[] { '\u1F20', '\u1F45' }, + new char[] { '\u1F48', '\u1F4D' }, + new char[] { '\u1F50', '\u1F57' }, + new char[] { '\u1F59' }, + new char[] { '\u1F5B' }, + new char[] { '\u1F5D' }, + new char[] { '\u1F5F', '\u1F7D' }, + new char[] { '\u1F80', '\u1FB4' }, + new char[] { '\u1FB6', '\u1FBC' }, + new char[] { '\u1FBE' }, + new char[] { '\u1FC2', '\u1FC4' }, + new char[] { '\u1FC6', '\u1FCC' }, + new char[] { '\u1FD0', '\u1FD3' }, + new char[] { '\u1FD6', '\u1FDB' }, + new char[] { '\u1FE0', '\u1FEC' }, + new char[] { '\u1FF2', '\u1FF4' }, + new char[] { '\u1FF6', '\u1FFC' }, + new char[] { '\u200E' }, + new char[] { '\u2071' }, + new char[] { '\u207F' }, + new char[] { '\u2102' }, + new char[] { '\u2107' }, + new char[] { '\u210A', '\u2113' }, + new char[] { '\u2115' }, + new char[] { '\u2119', '\u211D' }, + new char[] { '\u2124' }, + new char[] { '\u2126' }, + new char[] { '\u2128' }, + new char[] { '\u212A', '\u212D' }, + new char[] { '\u212F', '\u2131' }, + new char[] { '\u2133', '\u2139' }, + new char[] { '\u213D', '\u213F' }, + new char[] { '\u2145', '\u2149' }, + new char[] { '\u2160', '\u2183' }, + new char[] { '\u2336', '\u237A' }, + new char[] { '\u2395' }, + new char[] { '\u249C', '\u24E9' }, + new char[] { '\u3005', '\u3007' }, + new char[] { '\u3021', '\u3029' }, + new char[] { '\u3031', '\u3035' }, + new char[] { '\u3038', '\u303C' }, + new char[] { '\u3041', '\u3096' }, + new char[] { '\u309D', '\u309F' }, + new char[] { '\u30A1', '\u30FA' }, + new char[] { '\u30FC', '\u30FF' }, + new char[] { '\u3105', '\u312C' }, + new char[] { '\u3131', '\u318E' }, + new char[] { '\u3190', '\u31B7' }, + new char[] { '\u31F0', '\u321C' }, + new char[] { '\u3220', '\u3243' }, + new char[] { '\u3260', '\u327B' }, + new char[] { '\u327F', '\u32B0' }, + new char[] { '\u32C0', '\u32CB' }, + new char[] { '\u32D0', '\u32FE' }, + new char[] { '\u3300', '\u3376' }, + new char[] { '\u337B', '\u33DD' }, + new char[] { '\u33E0', '\u33FE' }, + new char[] { '\u3400', '\u4DB5' }, + new char[] { '\u4E00', '\u9FA5' }, + new char[] { '\uA000', '\uA48C' }, + new char[] { '\uAC00', '\uD7A3' }, + new char[] { '\uD800', '\uFA2D' }, + new char[] { '\uFA30', '\uFA6A' }, + new char[] { '\uFB00', '\uFB06' }, + new char[] { '\uFB13', '\uFB17' }, + new char[] { '\uFF21', '\uFF3A' }, + new char[] { '\uFF41', '\uFF5A' }, + new char[] { '\uFF66', '\uFFBE' }, + new char[] { '\uFFC2', '\uFFC7' }, + new char[] { '\uFFCA', '\uFFCF' }, + new char[] { '\uFFD2', '\uFFD7' }, + new char[] { '\uFFDA', '\uFFDC' }, + }; + +} diff --git a/java/gnu/inet/encoding/Stringprep.java b/java/gnu/inet/encoding/Stringprep.java new file mode 100644 index 0000000..3c34b5c --- /dev/null +++ b/java/gnu/inet/encoding/Stringprep.java @@ -0,0 +1,424 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * This class offers static methods for preparing internationalized + * strings. It supports the following stringprep profiles: + * <ul> + * <li>RFC3491 nameprep + * <li>RFC3920 XMPP nodeprep and resourceprep + * </ul> + * Note that this implementation only supports 16-bit Unicode code + * points. + */ +public class Stringprep +{ + /** + * Preps a name according to the Stringprep profile defined in + * RFC3491. Unassigned code points are not allowed. + * + * @param input the name to prep. + * @return the prepped name. + * @throws StringprepException If the name cannot be prepped with + * this profile. + * @throws NullPointerException If the name is null. + */ + public static String nameprep(String input) + throws StringprepException, + NullPointerException + { + return nameprep(input, false); + } + + /** + * Preps a name according to the Stringprep profile defined in + * RFC3491. + * + * @param input the name to prep. + * @param allowUnassigned true if the name may contain unassigned + * code points. + * @return the prepped name. + * @throws StringprepException If the name cannot be prepped with + * this profile. + * @throws NullPointerException If the name is null. + */ + public static String nameprep(String input, boolean allowUnassigned) + throws StringprepException, + NullPointerException + { + if (input == null) { + throw new NullPointerException(); + } + + StringBuffer s = new StringBuffer(input); + + if (!allowUnassigned && contains(s, RFC3454.A1)) { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + filter(s, RFC3454.B1); + map(s, RFC3454.B2search, RFC3454.B2replace); + + s = new StringBuffer(NFKC.normalizeNFKC(s.toString())); + // B.3 is only needed if NFKC is not used, right? + // map(s, RFC3454.B3search, RFC3454.B3replace); + + if (contains(s, RFC3454.C12) || + contains(s, RFC3454.C22) || + contains(s, RFC3454.C3) || + contains(s, RFC3454.C4) || + contains(s, RFC3454.C5) || + contains(s, RFC3454.C6) || + contains(s, RFC3454.C7) || + contains(s, RFC3454.C8)) { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + boolean r = contains(s, RFC3454.D1); + boolean l = contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) { + if (!contains(s.charAt(0), RFC3454.D1) || + !contains(s.charAt(s.length()-1), RFC3454.D1)) { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.toString(); + } + + /** + * Characters prohibited by RFC3920 nodeprep that aren't defined as + * part of the RFC3454 tables. + */ + private static final char [] RFC3920_NODEPREP_PROHIBIT = new char [] { + '\u0022', '\u0026', '\'', '\u002F', + '\u003A', '\u003C', '\u003E', '\u0040' + }; + + /** + * Preps a node name according to the Stringprep profile defined in + * RFC3920. Unassigned code points are not allowed. + * + * @param input the node name to prep. + * @return the prepped node name. + * @throws StringprepException If the node name cannot be prepped + * with this profile. + * @throws NullPointerException If the node name is null. + */ + public static String nodeprep(String input) + throws StringprepException, + NullPointerException + { + return nodeprep(input, false); + } + + /** + * Preps a node name according to the Stringprep profile defined in + * RFC3920. + * + * @param input the node name to prep. + * @param allowUnassigned true if the node name may contain + * unassigned code points. + * @return the prepped node name. + * @throws StringprepException If the node name cannot be prepped + * with this profile. + * @throws NullPointerException If the node name is null. + */ + public static String nodeprep(String input, boolean allowUnassigned) + throws StringprepException, + NullPointerException + { + if (input == null) { + throw new NullPointerException(); + } + + StringBuffer s = new StringBuffer(input); + + if (!allowUnassigned && contains(s, RFC3454.A1)) { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + filter(s, RFC3454.B1); + map(s, RFC3454.B2search, RFC3454.B2replace); + + s = new StringBuffer(NFKC.normalizeNFKC(s.toString())); + + if (contains(s, RFC3454.C11) || + contains(s, RFC3454.C12) || + contains(s, RFC3454.C21) || + contains(s, RFC3454.C22) || + contains(s, RFC3454.C3) || + contains(s, RFC3454.C4) || + contains(s, RFC3454.C5) || + contains(s, RFC3454.C6) || + contains(s, RFC3454.C7) || + contains(s, RFC3454.C8) || + contains(s, RFC3920_NODEPREP_PROHIBIT)) { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + boolean r = contains(s, RFC3454.D1); + boolean l = contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) { + if (!contains(s.charAt(0), RFC3454.D1) || + !contains(s.charAt(s.length() - 1), RFC3454.D1)) { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.toString(); + } + + /** + * Preps a resource name according to the Stringprep profile defined + * in RFC3920. Unassigned code points are not allowed. + * + * @param input the resource name to prep. + * @return the prepped node name. + * @throws StringprepException If the resource name cannot be prepped + * with this profile. + * @throws NullPointerException If the resource name is null. + */ + public static String resourceprep(String input) + throws StringprepException, + NullPointerException + { + return resourceprep(input, false); + } + + /** + * Preps a resource name according to the Stringprep profile defined + * in RFC3920. + * + * @param input the resource name to prep. + * @param allowUnassigned true if the resource name may contain + * unassigned code points. + * @return the prepped node name. + * @throws StringprepException If the resource name cannot be prepped + * with this profile. + * @throws NullPointerException If the resource name is null. + */ + public static String resourceprep(String input, boolean allowUnassigned) + throws StringprepException, + NullPointerException + { + if (input == null) { + throw new NullPointerException(); + } + + StringBuffer s = new StringBuffer(input); + + if (!allowUnassigned && contains(s, RFC3454.A1)) { + throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED); + } + + filter(s, RFC3454.B1); + + s = new StringBuffer(NFKC.normalizeNFKC(s.toString())); + + if (contains(s, RFC3454.C12) || + contains(s, RFC3454.C21) || + contains(s, RFC3454.C22) || + contains(s, RFC3454.C3) || + contains(s, RFC3454.C4) || + contains(s, RFC3454.C5) || + contains(s, RFC3454.C6) || + contains(s, RFC3454.C7) || + contains(s, RFC3454.C8)) { + // Table C.9 only contains code points > 0xFFFF which Java + // doesn't handle + throw new StringprepException(StringprepException.CONTAINS_PROHIBITED); + } + + // Bidi handling + boolean r = contains(s, RFC3454.D1); + boolean l = contains(s, RFC3454.D2); + + // RFC 3454, section 6, requirement 1: already handled above (table C.8) + + // RFC 3454, section 6, requirement 2 + if (r && l) { + throw new StringprepException(StringprepException.BIDI_BOTHRAL); + } + + // RFC 3454, section 6, requirement 3 + if (r) { + if (!contains(s.charAt(0), RFC3454.D1) || + !contains(s.charAt(s.length() - 1), RFC3454.D1)) { + throw new StringprepException(StringprepException.BIDI_LTRAL); + } + } + + return s.toString(); + } + + static boolean contains(StringBuffer s, char[] p) + { + for (int i = 0; i < p.length; i++) { + char c = p[i]; + for (int j = 0; j < s.length(); j++) { + if (c == s.charAt(j)) { + return true; + } + } + } + return false; + } + + static boolean contains(StringBuffer s, char[][] p) + { + for (int i = 0; i < p.length; i++) { + char[] r = p[i]; + if (1 == r.length) { + char c = r[0]; + for (int j = 0; j < s.length(); j++) { + if (c == s.charAt(j)) { + return true; + } + } + } else if (2 == r.length) { + char f = r[0]; + char t = r[1]; + for (int j = 0; j < s.length(); j++) { + if (f <= s.charAt(j) && t >= s.charAt(j)) { + return true; + } + } + } + } + return false; + } + + static boolean contains(char c, char[][] p) + { + for (int i = 0; i < p.length; i++) { + char[] r = p[i]; + if (1 == r.length) { + if (c == r[0]) { + return true; + } + } else if (2 == r.length) { + char f = r[0]; + char t = r[1]; + if (f <= c && t >= c) { + return true; + } + } + } + return false; + } + + static void filter(StringBuffer s, char[] f) + { + for (int i = 0; i < f.length; i++) { + char c = f[i]; + + int j = 0; + while (j < s.length()) { + if (c == s.charAt(j)) { + s.deleteCharAt(j); + } else { + j++; + } + } + } + } + + static void filter(StringBuffer s, char[][] f) + { + for (int i = 0; i < f.length; i++) { + char[] r = f[i]; + + if (1 == r.length) { + char c = r[0]; + + int j = 0; + while (j < s.length()) { + if (c == s.charAt(j)) { + s.deleteCharAt(j); + } else { + j++; + } + } + } else if (2 == r.length) { + char from = r[0]; + char to = r[1]; + + int j = 0; + while (j < s.length()) { + if (from <= s.charAt(j) && to >= s.charAt(j)) { + s.deleteCharAt(j); + } else { + j++; + } + } + } + } + } + + static void map(StringBuffer s, char[] search, String[] replace) + { + for (int i = 0; i < search.length; i++) { + char c = search[i]; + + int j = 0; + while (j < s.length()) { + if (c == s.charAt(j)) { + s.deleteCharAt(j); + if (null != replace[i]) { + s.insert(j, replace[i]); + j += replace[i].length()-1; + } + } else { + j++; + } + } + } + } +} diff --git a/java/gnu/inet/encoding/StringprepException.java b/java/gnu/inet/encoding/StringprepException.java new file mode 100644 index 0000000..ed15efe --- /dev/null +++ b/java/gnu/inet/encoding/StringprepException.java @@ -0,0 +1,41 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +package gnu.inet.encoding; + +/** + * Exception handling for StringPrep class. + */ +public class StringprepException + extends Exception +{ + public static String CONTAINS_UNASSIGNED = "Contains unassigned code points."; + public static String CONTAINS_PROHIBITED = "Contains prohibited code points."; + public static String BIDI_BOTHRAL = "Contains both R and AL code points."; + public static String BIDI_LTRAL = "Leading and trailing code points not both R or AL."; + + public StringprepException(String m) + { + super(m); + } +} \ No newline at end of file diff --git a/java/libidn-1.15.jar b/java/libidn-1.15.jar new file mode 100644 index 0000000000000000000000000000000000000000..aa3055b33483f7453fe457aae2fe95f4fa070810 GIT binary patch literal 150583 zcmd?Q1#Bh3mZn*@%goHo%*@QpzGh}DGc!|}%4PO7Gc#Q?Gc%N#U8XWlz1O?a?Cx~W zO4B|2q)qtq=*v_@Dl!#1nem5;Jj7RwFED>sc#BcKFaO<w@i$hK)DUHqRgz*>6jhRy zl2q4VQk43wI60vp&&V`~D9=bYJvq~;#<Ix1d+5p}r^q0yIOksR752v&E{$~?W^oDK z*W=Q(RBEhZy0*iNqhgBmFYYHaUPqMYHg~SKu3%qO<e_17PYo&*{!!Q8UFF}s8>+u& ztsLE%Z5%DWF<UsAIhoryS}}_|Ihfiw{*A=#P2Aj=%>JSNtI*#tG_m_`eN!$jrn54q z?7_oO<iNw|!mz|5aePh+qJn;ep@5SX05OtlXh^`p=Zj>o#YFhXWKyW+#n558X>?RT zPFMcS0fj`okvoCMQ|2C?9!FDDk-33A=wIl>qVV5P`qkN?q>3$y5TfM9WTr3D)06Qq zGuHTN83(*EGICdYd-1_hE^?zo(SY;lIn9hIJ|z^$B7NpxKb3NR@+8iqyqyG>YPoj& z4uv@5v6D-4OhiG+SYsSQBqBuVqG}TXO1HpH<A@ovAA183E^<=mYaLA0eBeT~VgvPq zgnzM;!h8*p86{X{<}EhCt40pEElw-dhD4oade8Cv1zm8DFbz~$7f$pNf!?d){t|-C z1DqCi`bpRYF`4io6n5DU`>W{!r>{dN-o24%IbFPkpm8amiQF6kSAF>V?fBR6RW_ka zl1$@F0XA=c=LuOMVsn1j<S}M+I&~38w4=~QCAe{r7+bhS%xKtz#Pe=aN+H|OFJqTX znM^b`%0sGRbGZo+8=HlN;dfeUbwet-k`M*SOgXkRi;Ay266l)IIE8qs1~s*$>gpxw z3J%^XXQPX0<<#i(zZ(>?75p=yguH$g73kYicrNRdL@TJbGZ~g-D!8@RgioFewH;8X zQjI~k=1@#9c8(Q|e#?+eJ0(q_T2L>^Q0P!_%0$RikPC4`x`RCpofEhSWvwvN92vXR zZ{JYdTR9CyUV167SkNe~3@B>JDoD4gm{xmVh0Z8zT=H;ReAZv`uK2AftZI<oA@jaz zx<px#SHYxdP|{*l(;*gLt1(fjp<TJsI1If~ZnyNz2T)nwfU*d6P~%$1I%MCFUo(eR z<J#b&oOo1iSrtvK_F%Ed%86{)nwDQPIR;)dh|~C9yrp(~&{*UNZ2uJ4_UIy%DvdEn zn#Slv$)WKu8A<m*9ntb=GqdCGua7raWEBnQaIjb(OQ}dSi1T=__K~;Jn5oEB7p(OW z<pex5oMA3iR_v4;sz=^;==GHQ$Uh|L1!^<ysCO$Lz)lxY?^Mh%G1VStW7ixLcnhjm zjDoD&H8iQDkhD_%e5U36Cf4?N4Afs+WB$9}jZY_Qd$e>lxEZ!JxVhF|e6>1CcPdW5 zJerX&RhD*~lXCp*KNhDB%W_>@V+*!?3w(Rt;dc4lpt3c%YMeNBuxfR;ck+Chz<M!i zb*9qirCYS-<WEZ=0fauytzJo9Cp(M}r+o83{%*y6Oz#VGm_JFHIiQ4gf<@{1vHwn? zM|CuV9Pdc)@6R$XD@+{c%GQ?|n~jhxFK!VrhH(76>#(GH=KR4MJ@&+{#F(JH#jMP8 z96)QNjzBzkc1NRQ%Yxkdo6Z%P`jF4*>Y_E<GV*Ijdqwbp?FzMqGE`FOs?*}C%~GI# zVAm4wqhDXIfp@$1I-+3~`b}$PY;DCxySDC^ZWcf{{4tb|;kHQa1pW!5H$*puQ@-{u z#Cy1z(UwSRb86UoNztqPI)fmr&_&ZW0Vi_vm~o7Q#sKm%@#E`bzfzZv&g@Ue<7OZI zX|A6~yCnw~E)fn}-b{d14(ppa?$b4gSmch3BR&4461|O*%;m?qnXjlI2_iD)<V2VP zo7HLM#yUbd2*@awLK4*|8U+l}ew*AD@)Hx)LLAlXC<-|g%4jtSn?eNDbgyU{=~U{% zC^(LT4a`#$%0f2P@F=PZG*$`DLO#{dGTB8kTXgrR4hccBbg#@P@-uYAs0a!2Le{x3 zYq>%6si-3f_(ICL7;D8QQnaWR3I0OCxnQsG6PYf#Z)AMv22m?fHG}68WXTc~=vz@3 zh5X5K_ayUCxf0A|IVXzdD47z(h0Jq_C&~yUP-vl1ph5h>tU(l08rC=*r7p?1n*-Qj z!m$KX=|;2F`U@TpfmftgCjMamME|^;Q6*FAM&dg4Rphnu3l0yyS5*GcoUv(BVN0t< zx7GFw0S}>9*v=q>Q6^LDM)_6cwc-ml58loYgRvS@?MA!R<_kU#!Oq~V(STt`Q|?CH z3oH-%SKiL}t?4Uc&xX#`tqUR#=2yth#P{!8GepL{rpOJEs{<FPk2J5GzHx%nxyH&3 ze_x2zg^Sh;+(!oA1i=|Y<Hohv3(7|}-|+77fDuEp+D7hGf=4Rf*zT!qlk0}3)z=G% zN7C1*_uThj|4AW}K=VM;K+8aryoTO}-m%(@-rxP~kL_<2e<F=0;!)bR|2Uw7pm*tl z6|+Yoe#4i+8rJP{dAVSJeMtk~aH9J48}P*>pp$g-nndDdL@YXpg$7pzZ2YT6s4Lh& zfnOg^8BQHCU3-6iOeKy)r<}Ov3PY63p$Op$MA@+qc)cFX;tHHN1S1-r-C=&Y7VdsC z-mF+`c)FgMHLy9PMbFo|)IB&skNc#mSX|rTD}~)bekT{~eADSHAPd63X=qk?1L3{d zj76psCbYSfWiXy)kq~BJb7+sz(-&ut2%dZk-6YPJFV2lQO!f+sWvv@Y$k__??Mdm! zsnD0-n<K^ruM7-N8sV6^M0Mi}(92$y13ojZs~5V+y19&X8;$snKGUIl?J&{;D|=<f zSbmr7&?5qgyJ5$$+4lnB>bb`^@mI*D?#O<X0B0%Wh(;fp?1k7qZ$UJs6AMy6Ee!Sp zPFvAR$b=7r{v3Y4rXW$z0szF>O{l-Z4?+|~b-llGR=<X9y%%x@5W{%hlR9e?gFW4| zIveGELB1cmQOSc!yw|<y7D5h~#Ri%A;|k1a4<x=oJ<HC7<UL&8#P&evp1tmAzq7oR z5J&DjEZivcewlfozljWh5bX^u6P6HuhkZF$W)%rcVA@Okd6N&&IYAXIi$%dGB*7yC zS5yUORK@Bp1c!>TZjwa2kM6*sI5VrW4)K<NpQJ})$@78~m%yH6{?4LNWD1s?U{c78 zg%MhpgcB1!w4oyrH{{F;Mm}iHKv!bI$_gJF>y1N;Wdd7|ARn`&BWK??PX<2`b*ZCu z0m>K*V4y}a^L8Ns4%$?aOq)r%;L=B*>*#I{)9r&v#g6D`zJ;*v<7%<L)phI*<3&Vs z<}jx<$NA}Ozzpz7@ho$a)#s{0nZ?uit(AqiNV!)zErOt=2)H=#%*cVfTwLqM=s*ZA zPCm1)<fy4Q4SUD?VJxXYdz-H4>NwQZb(~m-xF;6Sj}V7=+|}tHv6u0Zt00|(S{%E2 zU_Go6XNw878L|f#k}>uHO^;=Ef6Xwj-&R{(^f00V+m&g<t)K^cz%a%Et_Sx!>(XL< zByN<ArQwB5gb6b{_`=lp)eVM7TuX~dj!HA)My5wjd}CpDqSvfym!LH;=${78Nttn> zQyhK+lY`t-!90TmG2&CnJd*^815?q@>AaZIKN@cw+=LQ1GInX)C=<9=4sh7vM}G1< zXa9jr;6~o(KVtP;5r{{hgn!QU#@yj{+L!n(q{K#iVE&sn!1yCrodG+*8kcA3j~Mq9 z9OzVw^lg+bg1u^<XCbCvSBoRSera$`i($GRZ%@CHce)YHxn~JgxV~c_oE{QeuiH6! z2^$*_>JrUKAlxi<pmuJcZ>czZxcp7uWNJ8V8C>6jacF7TR^QBFuz6Wa-|DjeVL77> z#21HOjsBeJ4#lmD?b7Iu*jTmEHslips3yL3JLld!lH9y<KR~Jt=kEr!P2k6Lc1t=Z za-%)@OzdNC$F$AhhZ_0V9RxTL5Z!QrYP+g$@>>Oo?mUJEw#^0h6@$sQi9`bN5ys!$ z2r*n^lng8yNS<fPF*t~d6o20tJ>R_}|0Cya@&$(_f&cPl_HUB^@8{g)|6b1R?Br(i z&Bn>`-xBW29B4m{q2<0~1u>uY6hm%7eA|=m$nA72l6w^JuVP}b-Q1@kF{}J^g&2^K zm~~_^-&E>^H0+Hf2Wxh+-8=@SW0RkCbHkrry&WHgtt_u5b6#gI3>utv5)&`6#1_#s zyTiYt3O87*S&FI#$XW)d8s6T76eeft4w;Q$Dl^c~(lFg&<&sp*wWqkT!@IdBo2{O_ zb)lgIm{DV<V>HqKU{US8!C@hR5BrobXl2<M1Ao@6ee2pU-0OfHKi2M+bEQ5(IDsK! zscf@0m335=&D-pk{X_K9q;;;}8bO2oXMiNtH>Cz#r^<I4h(3Lt%g;s}MlgFzW}5=| zE>B&Ssl3qDA5s|d{Rq!o;|ijmz0%98r!{JrPqznL!ak^sqU)yg`ODsvFy&Vm;tyI{ z5gOEeMzI@7+aMTB6Oxe5llF5in~S<P*lxE-%(IW~pK8<r{o>|dqrRaQSXFA@7QuS^ zNa#4WD>@-&>n0a%46wdLSzj1^V#IeZ%#C>8V+Qa|7=1EG1_cnFJo3r(B6;{aoUXhm zl;;Y`nhKHWOPs{XkZR?wRG)uNed<LobxLR?L|R-{r5+RvrmXSi$_b?9sLMu|HoA4C zdQtI@0D?!SZ&gVe-58iD7al->XsZX1^xD-Tv=QawNoZaO#LI4N(R3?#>L6V3xJReZ zS6cjjW60dKZdU=uV*bVWwQSnl7h~G245mu+@Dny=NJB5YUGba{;#T5(WVz^WzL^O) z_m({d`27;_wsMm3Cfyg5LVMDVkXFoLpkJ=kAMkir;)MB@6e(OWAi@C>xmPOl9S!jT zlc|?iu7CjZl{0iAeGFeJ?j~suoMsEoR&Ao4$gz!x%W4K=@=Jq@QS|1E?;<$GIbV7P zW)1!6y@p&p<-+OeJgxeA+pz`_xd(2Ey=I-^Daq3U3Gyrn@;(V^D3oqEU(GP#$}dr( zeNmyAQkN*`(}B?YgPO-%61$ta3KQ)bmo;10Ze*TDu9-jsA_f1+`(pWGt9(=|u7k;! z?6n{4SvP~6LvR6FDBN4w(mUVjn}*o}Z70P+D?DPOg%&<xzt^2#FL}EOTX%vtoF*<k z`?<iYWO9pv9P%U9=?Uuc%ySIx1-fU$@I6p7^AiH{(Cvxj0`g!2^3%<&c~+-!LSghL zHOQ!Njw3`6j7~(VPC^SpFroVN1F)|y3-4_<u~|raC9l7Yp?({e`P5+!Exj)E<Bi56 z97;vFHk)K8E|I0h_1j`;4lK@P^JS~Uw?~rIu*Q|z5oiy(+tbqjw7SIn*{p4|YzS=T zjIng!n9?IvUO5*qxK1X{kLu(b7KcA5kaQj?^<JiOPE7HRPP-vUIN;r^LRKB;0#har z!-^Do&(!zl>Q@ON8t1~Enc~W`EDE#w1=r(=<@$oAfZXVp?N%2DuT6sJ$?2K^^$f+y zmWgo7iKMc81XWwa$C4)P6}%ys$S9GtdQX`d;qFlRhbs#dnl}`!{ac_G^d^(xt*n~p zG?&_=2!BiXQ!StNVK?0RI8$)yeS7H0KLcNQlpS86k!W*?(B5ztwkAwaDy?EAQ$1RF z1Row~06(7<aWzqTJtO$F!FOk5@Q2zTKKRh~dJ#v4A45gYF%hQmIvGEN@{<E($OXmS zI%B2q<j4_^naI71th|d7-H7W22IT}KoUU$Fi2xiMt!z&?Q+701{0VOHr}B8}0;k;3 zeDb@~-`oB?dGD1P7kgy{EIh}Q-q6)I2B5c{a}ZtV5!qX`IBQlpx*<N2<6Vq!tSX-< zl`Di+%e`wKs|Jh%{eqPbSQ6(mq)%rIx<`SNzg#p&gwPlQg@%0eui3+*nW$GxpGmcA z2dwlGrB}bOr|2s=PG(N=HiB7k?M;>l<V@9xHB5{#ddcazgflS6yYT+OcXh?r>&tU9 z1UU9Wl(rr}^1HrXw!KfUN>xmZ`Th16b@Ry8d-;A;ML(4p>J+Y!+W{}&9@&-%6mSm~ zaG$314l2E3crAi{{e^VFI(7KVUTC2QX2D=$2-dCbl)zEXWuaj6{tMA03K4>4YiG7V zkk$r?BSi-O*rBa=ws6=IUi=c9T#i75_PV=1d7fR|VM0v1DbdWjSB-LPSA+c2H?YB0 z4)2}05c>QveDM_SbgN6>+~z0UsiDm!7a|j$M3(RT0U6XzWKTTd89NlY<F^870G%oH zTaJph#S4usf-p@3tsH4vLlJcLXlhH=L=V)Q=u4lPW(+$`dd_>-Y2E0ij>>9g>ug~a zfchxePEx_Sb7!SjzVNL`@BWd~?osbxgl(IIV2*@8W|lFP@{qk!SA^BO-sDV^Y1u(o zV!au%z@By54F=Xyli#20tAg8VVB=b!VC_hlp3vsf(>Ka(DUA)yNRQ2yEsc?OU;rNa zSsR*lq$$4w>@?x1i$a;5OJxfa$Ca&s>{eYFQKslleC^zpS4f9{bmSu()uJb705fL* zH)nt_cK|UJhjZ>Nvc?0U1fqd^ZXuttN{*oZF|LC3FF775SZSKQuhd;(u<-^~n`zTO z4z1jbRnb>)dzGyGzIXU%&OB=>SfAPY!E^RR<LwN`3x~l@>BAzc^;^n${XlOq75gox zPb77S8l}gh%2OaC!I)FVUyvK6$E%7g){WBaQ7y)2uu-|VMtgOkXvqI9tx@0GNrlKE z&ECmnJCG;ws3o5M8sX4i#5>P<TRL0X!|8mSU*4NoE%$fp$Vm1R?@@E(zIVNlRO|y> z_H>x^+!xqqOG+uq-6J6_%3bD6p0ql2`sUXCHneWRJDvV$)ohvXXS=o@#1;&PaR}38 zlZuxkg9$YyhQ)&xi=Xt1pRyfiMEGrv;x!vE^zN>jh5p?maMLG!xP+|0M*7f_u>(2V zM{(On2*<~O>1ogfQ%&Q0dV{u$FOUZqH1p`IaB(I_ARUdY(ul0q2zcfS3_FLbf!EK_ z(&S#DRm|_e=bhV^2**XzKBr8rj|TW9priA$MgxjA$~r5D#!`DTr;lKArc8)_2|4at zI2KZItHPf@IxpqOxj(r{$xmB{;|kJ3oZ6IJlU*KGaOa#6<_ql<3MsqfF}vnnyTop_ zJ0e$YY;g8uYCMrp8}1GkWdE2rcm@C6Xh23;?_G8DhOV<XqIu7S$xEI0nB|{yb;C1! zEDm=eJuB^fH|Rwq`9pkG+<TrKekP+Grmn1){*yMMmYiUB9C=XHw@0zLkav%R3ZaSY zTS&kIEGDGOoYg)5>~8`~1lMNYu!#gxf(zSLeocOmB!`8#{vTy_KZrdQ?GF;ZM9(rU za;5y()N{T><#KBlZ2#$FQFZ>whP|P9ZNsL>sYbNhV#PlPF|sNj-<*(Izb8>ueDRAi zJp_zBv&llv;~$`E!SyI;1s824r(<8TIv^Y8wMZw$yVl1Kwvf|1GlEBJGl5cSv$2gH z+kddGr|pU2rtu79u^*WX<7h_^TYPnvLb007Y7x_p5VrX0D#c<oTVle{$wwN7){lb8 zt4dSgEHR{nAx?ud$3q=MiIHgCRoQB8TD}S3duqXBr)pzUqalxHzsPpMv{d+Jp-~WL zo2?qkUNaJhrY)s8UN()Jne75$so=VW*-Q&$vYK^E8>=bg)6htawe}Sr(p>xz^V3z; zjp64RovoPUR9hJ&mZF=IxE-BMsC5Ur1*&bVbp*OQ*&^he0`-|f8GWH{jiV3R`P9~I zXzW@|p`k|Vlw?z2?g1U1h-7G+brh4DX^mY?gzB0z6F$hzoxga}t@xL!oKR`puT*{- ziynFlj$#Z~In>gs(p1QrRMu3sboChCLm@fc6TTUU)cwV6QaZpdI-t=jtdr|nVA%y6 zJ)%<`h9-KReNn~F16XFJA#~gf6hpNbYW7?)FB{t2VK2Tti()UT1KqHUjQxSQL=;2S zm_$|~B`*uwfXrLie(m&qZJb^?FHPEjoO+KnEmYv3s!z>iWj~N~THH0cX3r+6;HL(g zOg)vM(!OFAK^E1vl9)$u$IoXRUf4EQ{Urg~Q$>jyACVJ)gwWOKQRwK32q(&)_EySM zP(|<Da$*#C9MSEIUa-`%XH-bskv}RVJ`H-Z#k~wNYU<pwa+Fw{39>YXZN8s`2^3y1 z&87%Bsw56IE2e5ua0zLQD;cp^+jNyR#FPkz8Al*`p$;`%e&gp?)ofNHV$vAy*^wxF zD86tSkcboM-@j4JXUPP)<|M9O4Xl-%sKq!@EsEvC<pD7?Q_&||V&FNp9q7%JO^C@` zA~R&;EGUBLRTn}=x%b)CF|QK7J|q>k=5u$|mgbNo6^`cJk!2CVWg`j@{_$lc!PX+p zaYv`|iVozlTHgrC?MMncq_8e$&Tyl)O;)&PxufuKqG~+EA?9j>q?9letl0{Op~PVI z6ysvvsOCg!No_6j+1IdlVEE?NE@GX&cKeXu$xZb<OU*{lH!}C2ek1eA*j^WDx}IR0 zO^I4(xpRmaZDlKLfhyEoofe_ttrR5xM2~tq4R(R1UROMklpw@~ycflo1yiM__K8Nx zk+6bL9b$?D&mxB_igY%}iQ3+SoF8t&C$EGei?!_E3qW4OBRg{>@eyAc5NUGt!Lvpw zG>qVrB0Y1+2bWm8>IJi(Aw4rAS)Y95oRyV$N03k!c8vpk6Ds_G(hIT<3dSPCv(A@{ zg2Fw4lL$p@!kI&XU=-(A6q!Ih#ETM2!m%Xr0Z+Her$<HPo~4uc1J!{y2LoXcYF!j; z?H|vEBKShbGOH&6MEpir$O_egs#*|y(%P>Bv6b!b5_%=kYHqZd&p%hahRuDV^bNo8 z7ODe%?kmJrxOHLhGASMF>{b*N?g^1Z3gS2BLRzTxAnS_YtC^m*XpchZ24=^?9BZ@3 zA;l(ihw*>1sVGa_sN8Q;Tqriy3Bl8I)Alu>7W6Euy6(Xv{0n+h`0Thxb6IXQfOTC~ z6eHUzm8mw)#h3aar~}12v`|8dmc<-OUo?Ovi;?LBB9@4KI7ltJnnQ=Lo*r>IW|c0q znY3ly_%hnSqAp>uhHF*FbOpyAr=AlEU;08X^p-!k8S0=FYz5aIt^OR5D{U1KDog4@ zDs+m{BL#GX+PP+28ntCw*BZ5DTNgg)$i7Nu+KO)vThEWslDe7$<(su?0OcFG$`>jq za^V>2K;e-H@>1NktD72J#=k(Qe?{;}Uxf<wm$(QB^;ft6v*dIV(Q-qqkB2%Jvrhqa zpl;aLT@AM2R8iMMBQ9sHibI`?+gE~KP&X{=J_d=nRz*w`aqL;@FQM?|>?1*5@xr!s zex`}I_7wFah*~1{r65PjmI>qI=u0k~+E8kQ;gvVpPzTb-R1gu_V-u(a)pyu95yf}e zm_O>0b=7Pzmwi>q)EBWOYxOsj@Ap-BDBqu}LZO$WkA<MsgIB~y@OlU+vsPk`)s;ac z+zWiuNW@3RdUB{&)Sa^tT`<S%`|b;!{qWC_u>}&Fwc_i0|0lBBA;Pi@(VN?%--Mlk zz7!vAln<;hmyX>C5;J+(58%1t7<J6A`~3dYK0<#F?|mLo;N^wCa{@@-Q_@9z$S$1n zxm{AZDj$`436zy1iNeT7CMJ>(E-y!Klac({g!sG;l<((P=EKv8KTe!Z3F!O!!$c;u zM@R-iI1CfY(&54p#xO%D5u^m-Un67?RB;Mf2aThKP$Ef*LZ|LLcYD9W%(9}2e#bn? zPdsy15KW39MHJ_Q;*UT;NMqFisbGq8A}p~k_9aCZlwekwF`ll{p)uNJ$SgO4iz$ai zGCeGQYR-RppME+&3*gRYBk1yB<AAe#m2)Heb<Kv1gJyopU@Vi~J3%0m3;w>1BTk6m z&bm0DLM#q}fXK?xKZ_%dj-c3V@=%bOULnM>LbMc#r8AEvZr7cCzadGuzWdWAwz4<} zt5T?GgmWP{T}@g~GN(zO@EH~d>s!IlVp_Tiw;mXh9@y6D{!?Fz?>yXzBz9e^1@Da; z_F-S5ju^qSja(Uoun?@<?lI*a(wjAf*a(=8J4u8n4wM;AhzU)EKK*<!F`ESMO=Gw< zbU-@FL0=+@sXIY|=5?Pk!al(>u4os8FlHU^%~)UvMBWuO-wkZQ_XM+QbHdmv48quI z4Z;y!8@_}QLn@t9BtK_I&)tDr1ZbfzwHJL>TbcyVI-L~|dB)lcE<ZI5MozU539XEm zGI1<Te#Dz3Ao&n0xDXBf!N6A0mvKQIqNiahX$#v|i<zKdDs2ndmy6L>)0cGN9IB)- zRJ_HDv7<4RcVQelr!iE%g^J-;>x$l=!f-0^q959z*;cwmit$wIirwdn@l@}M-0#L% z0c3i$B^ui2dkGIg(>NBjMeke20BD3{Zb@SRw2r`MmLX{x$I`aYeIN!g@R?^Q2g6f! zQ}GryMp?}-W`99TQ9wYPId_TkwoQ6v=)g^jQQ%@Je)rZ}&L?<ZsFI7wun7B=mMGsV zX`gh9oCtZLk{lyZO+f0lO%ocKS=ascra_2ZAUD4u<ptsP8LrzWZQl;VsP$}b57FnA zYUoo%K=PI`#tHCndxO-?Q#}$r;`tzR`<%P<1^N0M_23pl?j>m-w~~}-dOkLhCP3j9 zJtpt$6m(#9f94i*OcNk_+qDFPY@`=|>ny5FM$}u_Q2U^<e~a()z&LbG6X3)N8bH3^ zmyQvZjr=fpH_~hUX<G}J3Sh1WOwC>V9asLo&dM<`tB<GV6kfm?!GPev@^_Q~N!%BK zkmcLpEUdVdten%|EnH4|w{O-U{e?iB8KIli-0UQ@fH@)n$Cc%N<q0`Pe@E!BTz^NM z#?4>7U<&on1Sf%%cmM{0oHcH~mB2@T$Bo9-f1zOP!61@uB&;4Mh6Te6hgzO7!GtUV z4Iza^VVDJSKm%ccMIqyG46w8G3F8l_9^28<3WsE(zi_HVgx$0Sn1tF%e^^G!bBC*M zir@0a_*&q4P8eylzDc^M`$g|h%qy-p5LisW;Q%^dv-UeNc7V@43}&|erbV{?wuhs7 zAB7dP0kXFt-xit}r04If2n|lJdmffoFc7Pm>G<@FG@F`wst&#NjO;j?dsYKEwarfG z0xQc|^-TvDnH{VVAaSJ3aL7NuvQG$aO}uD*LQE>$YTH*?gm)|4DsO2|1ZJktrgwU$ z2ZkheXA3RMYvSuNYeIjdyjBuEKf$e7GoOc_u{9c2BfT7-*v(D*bn~4cd)7#cpJT=* zEW;x)R%_Rs+H^<BD^_Q?mRCNYNdV3{y=;umE%Zgr&Nsg1RIl*q0d|-!E`8TFJnLGW z+)^7mms?SNeRBqy2bP~Od;mN4fnn_rTh<+bow$t4ckG7NrG$INiO~()YfGof(5#;7 z1k9V(r7^|bb*@92%`^RkfodiTiW-N*5*LSRHnP@^bTik=tgLay$gGL#E6k+!rGcp< ztr^#Ejt_Jr$68Kk9chYEtuLvn9Ue}+YOODZEiZw(Td!)J_JVpNwOdwzcY<Llz)ade z^HPiJ?3PwwYHP0GVk>9<;*Jj$p@rwBkL3h=8|SR*V?k68R6;|d<UOa0`co&;@3Bvk z$oidS?CQmhWn+w1&aYF|%;X&#czSeB{<48mJ1=OTaeb`jy6p)KzE0gZ0mC~!E~$9> z%*jRv&fV!B-?3II@dax#o{ZLiH4r4rb0^Ak$4|iN=y%BKrvsgJ6F?TY!SdYx6Kr?s zhi!n4azIBWKuctEerltEz+u9*O7RwXE!<A>dwny-CySNc!}sQ9zfZF5$3LCIgdpSA zi1)bC;sfT#XFa1PHO6!K<7Z5KJIGkoi5DqJR(hTNwyy5!c7{V?nela+z?k&r#_=d! z{HnO0v>$dY^XV(X{bM+6_jU9%7J{4!pX<DVPgc>od`!ZZNg3{ME3@?>#TH=<pBRJ_ zY;5U{bXs*6J2VIKLaRxE__z~r6*_zYiSP9xho9uA^g6+RPv14feeMtw1O)1iRGHPE zYM-r+lM~xzzRgKtWqrm=eOL)JBn9>)TR{3(mA-m%u|-S(4*qUChqB?1BDmP}Z4CnW z$kg}~Y)s2of2O#W4=9M~btI+IKc$FY4IghmXGUH=%JP$|{V*E9pL5cxj2|p$jneOo z_Spsf<$6!dAhk97Mlk}9_Ubtc;}S4O*~GM*AB0860s_q_>2IEm<aD)E#&DRNl9@N2 ziEYjP#4@G#f(9GnqAYL`Cjvvl-am)Y(gVXnFn5U^xm8q7uZv9}pPzm~V0ann4Z+<Y zPyNPtHe9~FeuoYw9~)UN>y1mod`|w3`TTjRriCJ+r-kCBJK3u=38usffLxzkwtjm> zhw1MX4mSQ9)Db+-?B4*0Ir?k;`#w`J7n?Yt1RXH>tRv%%zzYZycfbn(gSEjh8bLev zC`Dg-&%i!sG*#A@b(&f<zu7ndhE5#pHj9TG;-%dH=qg)qHxm?U7`v^qMRa}F$+Ml- zZ)DNmAfFY{JRqMn(Qua~?%Om&$h3oY=v6hr0_r6=A;-$xAfK1eI5BoT<<05(m@~?3 z6vZk5DH98PP}{ly_1V+qMS1zHpAlNEB}RJZ%Lw-!oWJKyTP+LLs@E_zIypyN#u!^# zN<u$=`4V*s=4>Sx)wAk@1&m1bfWLi@M}@lqa7oei)vn<bBcA6Ae;Nkm{;j@)RSGQN zQmO#_Z9Bdmj&1G<&bIItb5ZP=zU-ZSSzDzvWLsP1DbG3}=JO!FEyTz1s8k13x&%*u z;Sc#hZ~Pa}U$%un_0GTg1RHS#?jACFdtVLTJgp}D?PIwj0w2^-ArZH}RplpVC1G-W zK-21e^oB9eSDF36H?PW%&Pu@Ka7S+lvHT>VoG_v__f{Pd6$Y9?P6Zl{!s-2x)0({t zq_BXjCcq}vZvFT@R7G+=Z>u$1qA?A({?kWmwnjjd-ujc8Mo$!4eIAaF&suovv^7Rg z)Jmf{gsG$o^P8jr{fQ+UAQ&R8I=?gYaaK@e1J36oqz!X650hDCwll8lZ-l|DHGBL? z=^Ud?dvcE9CCnW>AuO^3=SoN74EZj*2M5(As}Jgfv(pEWptXm9id-SZWscw?J`UZP zw#=EfG?<uU2_%X9yp7)N?iraGolaRkWr=?Ajj!p_;~bS-b*Z`2;~3I8LH<dI4V2?4 z)YyfS;$!*%B&imoX{)GIxIhBsC2Nco%EvJ=I>!7i0w)NFJ#TXXqAul=m~ov=)6L?a z@+aV*FLMsp)zxP#9y@w<NM@ha2ItSdf-ozV6#jPX>8NcXx4mV5yR1G;1!r|0Ni*ac z<HD>S%+xkmeGmnAIQ<U=v<#(iWzul@(!SD;zmVe}@QTU>l6{k-#<(PF6m!y5y**^j z!o0>fA!{0Q(jC1c#2ZtqqbJCssD{}JxB5I5Aa(JgmZ93&bMr~wPX9yMN4qZQYi$q_ zSB`q!3Ael<2(#p<H6|509ED^)?1rD5ctQ9To*0#+BwEC!8V0RXqV8EjheeF0O*X8L z6_qY4mW5X?Yyw{*%uh#R+({yJ1PAq!ReR7&fYelwDT-%C0rmP%RGoJZ4VpkNW^@`u zvPOBSObv%okp>^LT6e0<Z(D}>Zn*HRbA#kPLUKCa<0!iAP6^FxVBycFr@{_pch!MX z;OM<Bt?kPjh3%h+==Gj%3BnzV!kTL#)tTDJvTJTJj+;(hj(cAjj=NVSj>lTMpU<u6 zito}fmLCg}Zl75a@Siz_#h<Wq<DYhOd?b42kQ(R?;2kk7V3LIfeQI+;#-S%DH-#rS zH_0a$Hz_9sIAk4POQLIn5hYvu3i?soB)%bUlKFhi#Sjbym#ocKnBy<Y8%5HiefjEu z<sZ6@@*dJHq2z2gC+yXRgVH61fFQ&G1(}B)%1F#QXiFZUM@hD#M;W1uFOmBYhT}+x z{b#w<H0%z8T=OSR@p>#cr%Ifb`XElT7)C|BX%!zu%wkrdP7d~gn84t35(+CRg{%TX zIklV^UyLlN+2F6FG*h`zOIFTbQ9rO;^%Ri*$W6jLptFk~3{}lynR-~){6OyznMCXc zOv3xCO(Od%GQf0`U`5!_Mij@;_v1wkndA(9uM;)3S=Fd#xWKCyuy52s_0Xt7cvaKK zC8E>{=SHm@c#Wy-r;e!{$cVP<zecg^_l&X|K#p$SyN*8Z4@6m!4vWSotBAoT*Ne>} zYX}dN5O$FtRB^Ez{OST26m#(%)N_#@^l`BoG~2I<f-p50q;>He#NN-9VRmscZ_**w zRouj06SI%HpuI|*#734-!o(-fh*eB(jhRYDj$urmiGe0pj*29kiK<Q(j&k^Ge&V5% z6hPB7vQIpt@sL2oNR+~i9VtAD9Rb#0@&lJ+4OA0jw^X5r&{dtHse#k6rG?!?3v;ad znI~uaYbWWZ%HNo8_3vToxqW_m3HgM3k-l)%Gry4Dn%)!D3%?Zcp!jPM#C@m|#LVeM z%VJ8K;za>ja|Y{wi0*q$^4zLTg5SDM>bZ~|3AwOYmU>YhC3$fkIo#?^X6!%c5Z_AK zS9!6wL_90o)4R~Mw0hBd6nXJ`ba+vF6!Q@Jc6xDpRC+N#^4<nq(C>$?CJsi{3rDlN zknY>-|9qyYDR}0oX?&(|tb68g?0RN!EO-{U;&Wkg41FeZ%-|vR)bYc8N@zpz6!pWr zrte8eMBf>-ig7vs#9r?=4n5rh2a#{t2NQ3#WAgT|zo7Oak_0f1K5K)>Kg@2LV9U(m zA(;VuUK@D9iPiAW>k&bD4&culSfW9fJ}^yN$f7M<DE9o|>6aWd8`>z}ccBYlZ&A`! z(EHIFNXQD1C8#h&H2M{ylyo3jVLip{`v*`mZUhFYyO3JKW=Kfq(9zI=B((K-6x1zY zse{`|KY8Hh(X7OL_HFB^YeM4&2~~Jqgf(OZAT`lv#G5II%W^TGIltSAS*qceWiBGy zQeui-7PYHT+aN9~>LEXT_Yiw88ki+H<={|w!Na437CHDOVf|en`zMuWkmVRef%hGc zb#fPq9+eSt^>^Z+<uPS3tveU%lsB*@#SfzOVx3tbN=&{Yj<5t;gM9UIm6L2Wa09h; zk(Jb}0>C(ybCCf2mb#KyVrpW(RYj0txydX)Cq#pKmRR26)hxF=&%JyO9B(;&e&E?9 z3yC{Ef`UI0RB;bdsJd_{sZA~m2P2&8LItR<DLpA;89$;lKIE+_lZDKIGfn{j4V?E7 z5nT_!$?<?2F3O4Q|3-|HMFcH*%2~kEUED?~2tQov83KC>VPfionp!jyE_<py@ax{4 zh0>p2L2(CqVSXp*^fV8I&<Q=+B;CjG*N)Yy9r5Q;LC3llBK87t7tR-5$KDA{{=&hy zyqlb%(KGb$(Xg&R7lQsWbWiTpS;vAHvGVd@m+qCKZC!}4rhX=z^HI{d+8?*7xi;kd z!fw~+7125LU8`*_0DIHi2$_3>yPxqfa#!osqiw1O-LX{|(sT8xKj#s`IpdwCsxdFD z^U|qb@X>SE@D;jl`-64UN*Egd!U**Kc)b^l5EPGVSVucR%w?rhM@ddVG#M2f$%bZZ zCxvG}Q8(}wM|UG5#kiU~hvH$*5G2i>05VHc-@P4QFt$1rud9@^ST(Sq6;M6o5YTN# z6wq`h6fmep6HsR)&aL*qdDL+FGNajx{<wS-jBWdMpa&0PZwN2TI53`gPsEa&=Z7~x z!MFf&q@713Ip=i<uvuVNr&@r=@SNAH+{41F{ZWla^;Milx0Jq1?HJ6fdRoh?dphw( zYRmD)atrY$uVbgb+$U$Z+K0P;<6*jw{~@dI^o1ML`4AZNgohCFgnto&j5j<GiD(7N zjBx5(lTzF}kkY-81wP!^n1SVS62awhZ$lmbeD1?md;$HTI^Ub1+UW}~;l0sZ*t&6V z{PtY3=K9>S#`|33&HUW+N9(yj66S4@OfLqDoTAA~Z#;c&9(YJ`y5`zjwKz`It%oUl ztu-T)w@f?V`T+jd&OvyZmqrQEaP>Xdq02%gi<PZyN~nCDAeq$Rz}$L640qWh1HlQK zhJ5{SeAHvZLc`YycdI8a&Zbv<*dyw@3t`FlGZJ-iwV7Gw?5$Sj>aBF<qD`H`X)3ci zzeBQ3PPoGLrusVn4mmrYQBqoGQ;KFsRhnjJ7jvb%19PQkxAyYM5hHsi=IGBY!=z>c zO$&z+SKSd8t!20Dl!s346vU3&RK(6+Qv8R})Og>?WJMo>6h+^XQA<I2^WV867O{p8 z788bc7L|rZ6U*JuqgC6T=2;hBYh1qR_IceZ9-~4O{ExCpIWHI!)Bd?h1}}7L%}zBJ z%TJ=GC)5^C0R!fV0m>7(ykia8(_(A<$Ksh=y_FXWfxruX5|twan3Q*Dgk%UP`*aBC zHwtLP3sPuged<VrE|N$jTWU9G1L{b`7r7(EEBZ*}ZKmIm662`imZQnyN@J?xfbo!m z)(KYe>$Gt3nX&rzY75mXJl$+xy##zM?F8Z$6(t-GeWgkH6iV;dUqxM>hrjk54pa9$ zC(8e%{c3vi;}r}{%w{E1oW@gCoF-zGoW`x!o+iYlJ&q?JKTh=1XTrf`z)l!XiIs9l z(Z&cH8-k>Cl?6?>o}LW5uAKl5@8*QZG0mVR(#$+2G|e7Im%^8RX@<KUE`<}1*$ua( z+6~tvuO#>z)i9pX*V3<3)G{M|=f=Pu!;eKC&l+Az=S~EWJK=g7Zu9lDb~(Hud5=6( z|H?ss`(=RsGU1NSHQGt-M}M8UD!a{pE7cybkLztDi{4)Fi^}_xA_-YxJPn^(kdj+b z>3bG6b2@;kmzg+w-q0~;UePhjHOtRyy!0-)T-Wt=(e5yzoOnXIlrtq!u~SM&=(1~* z*FS%g^If*xS1Q8KblCRKueh0C>g=5prB;r~Gm{O!a&?pM+I0thZR;YB9b3u&>A%Qz z-MK)#8{!Rc{mkCG>&rH{+uii?w!Q-Q_PWybHsAi@{cW4b+djbE+wX(!&-~l(o6)!0 zu-fh0l2{l*@`nU≪^4dd)Sai{cHFJxLUG`g0(L=Epx>Z7!9~?BRbWiZCSoN3J&7 z|Dmf*!otkS;s5lt$y<2;ACpPUbG$e2&DK7TJE#3JTxLd;CiUGi&GYO~zEjAG$)H`f zNQk93QD2@f)HGecQaOBojHi(Ou2Dwuox-AL<Jv3l_<iU4!6)~?%ei;+Y4V9@=la0S zkUf`vU7q<bkNs5`z>MItk?r@={##v1_%!>EY-yhJaCB*Qz};I=iW1KOuT`$gBkggv z>+or0_I*g>Yd6nHyprIR_sEno|8xLoZzRuW9`^Wa_wJe~v)`Rr$hL7Fx)T54z54VT z_le|&L*TdBSYq$tXllvs?RP;r5m;JO$`Xpy)cH~b8eGa!jMVRJMfM`P(zvP;Ye@~L z7G~pAsfx5&s$8Y^qHEvpzKm<7R@0h|hc$?0s%g<~s92^#tF;shL^Tjv_>Lo`64LUk zdX!v<WvVaJz>n9YZqanA6Dh2PHc(qIkN=(SpiU&W7J0`q-jf=s{s<HZX%Ie4PKBUJ zEF_Te<~Sr7H=}`8M=BtY^JX|?8Q)7Kr%417$a)JL(u||iNUP_{@J6^Y9LlCrtLKV& z(;eERma6B9@+P<n9DW^-#(28VljY64V;HARRi~XP$(Hg)I{Y?{o61f*Q=Bcyo8^jh zs6YOj=2$gX*&FOIJQZ8jP{AAausAhCb-J`G+ZF5(GgVv7P|}<8kTZ2f%~0A~@DMST zTWwpyoBi;U#;Kqy?T%}FgZ4VVE9H)9JUrD?eOtUe>dtWdmFBwCFX&EmJd%dE#4qel zb$o<|xYRG?PIkPMCa=UV;!bz`m?p2(FZfP!JcGulL|@?#+#%YyHmwoRFXs+%oSQa7 ztw*vw?#^NSF!frcNB$4d;cF_fN`TBC)Wea~Je2^sKe&f*<7ugR>NSOLA+DT<8L4(O zy@mSne>e~M#+_(Z)C1((gYWpq<5PFk9Sh%r@1)1`Xt>oK3pVBcupcs~_NqAo-{M{Q z53m0YLVK!xh_=VxDUWZZ2C7~ayk)sE9}1_w(tH-bCAtb*$d=P^78f+7PLHE~Fz)UA zPvnddY#VKo5w!U~lzztG4YVRg(RH*4Mw8Wl6IVvk6|{dT(G-}Cf!4bfp(nB)f~fY& z$3$)tlfzW2@Y2InuH3iL6i9`;)c7~a{2N)9?&E3-0RI_@@na@d?I&vrG{i`273BQm zx~`Z=?b{nVBEzA9zwS>=<l6mqO@Y>!W3Agwx?I2zdF8(qE2=3_7GtGx8%LL`I>cV# zC51Ut_Rn(v^WY|XKNF@$d7XT?0o{d~Nd{b}#%l4uCJO2V-^ARl`Qi!LM&D-ub_M6G z{a=LaroE?lYk7}3kGqbtSF(TqbTfpw!gF2;>V(?l+^qrgL~OIeTKPHD47JA@Ylk>u zhod?Wg(tPhQW$~CDN#%6gE(gwWhj1+=e3B^9YMnRwVYH2QPdVjO*{!NWD%w4{~dz* z<isfl$skJEvZ#e7<Groa75zmb<zRA%A9iJG;%R?TelZjyr**lgJffcMtXgO~Uen_L zuh7)KUSr!bL(SjE@ShzH^x}Oi-PA?|a=umW86ke!K5PFMA-i28h)=xdmA+o656+v~ z;6TK;|L>6+VybPv21GF)&5}qtlpLo@Mex4_Qbe@3HCBhn!dqSJD}mzTtSb-x--#mF zx13Axr@swkI`S+aT6OFxaA%+XUm&CS7Te<gMAV#;ePR~@McZT#SmmuU-IBYE;7+Js zv3-EA+hjLb!L0=G>A*Qx4m~BwiE?XROvci}Lye~Fm~{0ySGxZgLKhy2G!aClL(H+g zF%Inf6}KI>J4W*VB_TV)Vr@kToVfWHkf?UaNk&sgRJYh4fWggw-r0X9BG^wC-*k-v zAh}GCI`R%OMz$TIwEp+-D#<xAjGtnYbPoyEQ>IP4pAhZ87ImHNYC_lYc`bn|kqq5$ zDnhjh|6`PZGLI_8Cnh5eb84&uJ-~;v45~wlaA&CsH6cVe|0lZN25Ue{au2G4FefBA z|Dp>$$|th??<4VRLXPu%UFa!3>*azcq;AiX?!PGPoJ1dbkMDjvxcx7xs|j@{tU5O~ zfIjEbSpjt*ExZ5gA_zx9=kp){^d{f#GFU58kvmB>gbkt0xriS0{Qs>b`m~{Y_-_86 zjjys4T!EzFo?ii>NmzDvHSQyN_t=neKcC-vHT#c`vpTmtw>McULif$v(j1KYdH+r2 z$2-GReI2Un3&aq^k7xF2!Sk>bB!Te2p3~2#gMNc&Sreyq_)!$C)?FiqPwiFw`<KUF z(V2h|#hsPd%j<^^=cJbPyN0(_nQmml0Q<u2QY2xncx2(0+HET&VUHw&fD0PU>)7R& z^0Z(dY`|Zyf$Kw$X*G@x?NaC9y7M6Ox=44e9)NpaJAUysf;0Zv0>9!((GEYJtrEY| zv%FbRs(ndusdIAO64-xsbmqUYjs=`QOFuJkyaWRlELAVQ)-+d3<LeMsJ_*{T%<)yy zpZV{sf8%KAsMtoXa$x_yl<6bf^w>A|cZ5>&T6&p?V}10@<LrHK{Sg>neU-nhTz$#2 zK6s{d_CC2j4OFbYD%{3gJ_1fv)s%Y{HxF66Rd!Z9x!HBbx72lX`e^I=-dM|5`j$Px z+xaFC8M`w-)U-S%&1q>pX<g&lArm?{xD!7FSX`O_>zDkOI+xc6q|qy1%b)D*5^<_^ zwv4*Zs{~y+ntg(Ndg~v{<|>vTmO4S}K<Nz~L7DCyUEfJ-%Ln5J$0m=_lVB}m&FiOS zBL4N|Gn2C|^UIsL&?=&W?Yt^M$EKVm@}<tT^#kb*fS_DApi0oBDRc?A)VZ{dF3qne zDAg?tXlxxjOIdu4ZKh82XnDbSaBO^BoMY0;E7{(u67=V2eL;9|Z1vc*o;tfdd*51z z1%@x7FLe&A%K{Cmh19$Gt8)a_r_LG|Un85<r8)tEn%$jMg1-00m8IoR%62ojmnIM2 z9zHBC<K}X;W;Cve>}CirEgl#iJ{&GD=ESRVf!p27(}b4}58h|*BkSJ4NIm}^pC?^k zkTr27v&MCR9W$Qb<XP+zK+ku~+NhFQv$o-}VQv6fSgZT@QspT#@uhU9NO#0X%pAFO zZ7T1?OQqE7f?;*Obl}uUa?=VO%t<Xip@?sHNYY2d9MIZH17&W9gD>gP5|Z`(Q!25f zTT)ak@ce{ieFLNDzBQ3Z+&3~r=sgD*YICi|l5fPr7xw4~iTf@H6t}^q9X-7!6ij~< zf`oj32M$;htEkKi^YCRql0u5VL`qA~3KbedyhuwY0{s<0d@m!?((^(E#^Nv3(ut-1 zav-UD<-~+Se<{%L{Y*lx$ZK|p;z=Gcq2g;uh~lXcfnf3@C1loIuK-_!M}5fDsSz%r ze5V8m>%KN2SK{?&2;->{v0&ySA|!HtpxZshdNEu}VW8c;#<~SuOG%*bJ;(YX-0=N% zT&~h<O$h9}FVJeXr`9<9BXrKCiJ0!kd>{v3?xPuG<$Ye9QvSOJi0eKtUa82Sz*wr+ z^&8sdF&vRhukF3UIx~j7bg$1hw#y8-mQo{jAFNAlIFEcIe!lQWJ4pWdTKpWj*Z7c} zla<6=#n<YPoKx;NCE&Xfi0K|*dZysr5R@ITaPn=P7^7<LlZP+#ks7jd-iatjwo?-1 zcn^@CDSp=lUETM_O&7jvf<jMQ<EKmB6+uMz8`8(KA2r6xFN8oh8&5hfn0I2}@!XYK z9rt@4@VB)my%){95%757O0^F8eFum=d!>29@)9V;T(nhcZ1fT+&0P4d9Lyj4lxU~` zpmVmW$LkK$qIWK>#_djBru%!u@1E3~RqwNb2j?HZR{<MgWI^xACZgZ%f;<|8KPd-C z(l@sBgY?f2LdQ1uSUqhAN77VTEhx=^<Ix1oDhc~TKoV3M=con=sr9wPne*g3l?8=j z+MDa-J5>dxVA`Ad<vUdb4WQdwX6HNA1TCQ3oAl*7l?NT53-tAg?#O{1Q?IVWh!NB8 zet|?MhxL~Pqo(<Rr*={a$0G*fiokkN0JEa;%4dz}sRl<<y&*9}^yi1nE;RNHMe>J+ zBmf#qha&q^LuLbwt$-;0*pLK8#*Q3?wY0kwknjU&{@RcP#m3wN=>DFN*~Pn{VcHiW zI35L1?lAp}Asmk)NE|``z8lloI3yCU@8p$ccknAR`}esg&Awz<B1Z|}b!iYgx<J2! z5Zt47UjZzUO%#wgKS&*2U|dI9_-|uTc{Q;n1|)$`E8gIQ62BWm5@he9gp$0gKxSv} z)=P=Mn85Myf%c>%Ur^zA_(2Do)5W_okOaBAw-K^0s&G7lAoNWtOJr@Z5o)hOmz01w z@M+~QBB#n~ePD38_9Vr^|7Z@c3e>a@4oHH6-BZV$#>j#ob_@cmsAA&UAaRUr<Fews zvLJPg>|a_!kTV*6tZ+&mc6r@vaGSh*L)8I~M|95D2aQ{gR!$}0PeMW?WeUOu!LR-^ zEPM+y8oL2I#~qM!+XRrpMR}JV629yhZ&3j?0QAct`e)X6fdlUMKX3tJfx#ODmqWDA zwC|FR-c8uRU90<yw)eS@8@QVM-bol`VIxr5eMV=R8VC|DKq)YMgATJx4WxOm-9Dri zO#6m?ztXm)7R>u*`*ObNQ{G4MA^(EE8ByNH5P<luXbIh6^QL|O=_X$a{`<N4zO|!U zJvjPp<-WCZNj*68jqinj>#@8~;{*RC+!0LEn5j4SgQzu>jwSOm{ll;|f{rC?M<lR! zLjv>1bfENSK0xZygtjgD!$ckFzp?k`(Ny<s+xUH5T~{ih3CUC%gpkY`c9Wq&rclUM z${Zp?8TM6@BBV)~wu~Wml4RT=LuE+HP-a3ATf$}!-{1N9vim*n{XWln-}SC%t#|#_ z`u%fv+~;{5$9bIR_q%mpa&>oIW&6+Tbp>U;y2<96uk8xUdUcnrH!s<BKkHRITXH_5 zD>>^`YLFr;-_63z)|?u`zF3$my)&oh5SH8#=4OM*u->K17T;j0%v*HoX1}UutIk_= znPk8E7^J}(b)%Tsx?viuIJW{bTTf~*Teh%EdS^+`LF~oDNViKE7fZulvv`grH$U6? z=aW}|VTSX3oxHA9k9*zbqdGUZR%P@Of017rv|lr*(E3F#I@^Bja0T_7MR8#JwSyI9 zzq0G^Uua>HMl4GBJFe+eU?XiWWjn6zuVDRh=}LC3O0qpjZT#_ehQ@#F*JxL<E1%UL z3<r<kFAsk7N!$Lx<96Y2zSfbyWm($_Rlignd!@U9*__ijLtFRk_EOcjE8hyYpONHo z^ZxSu3PI+K6c4*!z}f%!ijG6UUpkMT<I~&Z;^a|cmHp$?_A~N4;~sGZWpgV|90?}9 z{Q9}uHN-W&g3!?YtAzhq>{4u3M9YM6o!bWHmmfVdLsDnddDsKy9)HhDozdW7kG}Bm zpIY}Uap^2WOY^w&83K<q^*UF<K7o%(3R5jsA+C@24y#T*&G0zD$8;9Ewn8V0=_XdQ z;>4+{*Yd-svTlj0j4^&_iflh~gGZ5?7+SRNMf+14<03dk@Pr2K<x@4P6BEvz627En zQYRt&mNL?JZAHhKst9JJnA?+EW-6Vp<-hf%ujn{i)xf+j=9YWQTe-86@~!XwiVlk^ zF1nUh=b^qAzj9c~Vv+pX*R?0(F1<{?RiGIES$ZGQtgc(g%}!={VEV0U#egK@*Q#^; z&n{l$`&kn3GGU*2lZQXGK2&4-nc0=TzrF;#ytD6qlZOMfF|=g+8OF-tATnRu7-@u? z`aZPeGj_12!Tnd?_)Osl-;7M)%TU(l`NW_MzFCv&gvwBQns%qvrtTHu-wWqG#6$dK z0v-@Ys{;A^b7*}*6uw#0>xGqi^lI%+A|icLWzhbGNOy@ps+J&9b5J24p9zp^>0h-q zk8cv;=9~Ny==XS^nt*nzxg>lM>O1cDGRNrG=5>{MwDUnMzNll%YAb6QEQ01CV3T{7 z?D2cPPmN!@S@Iv+`VbFk%~rjCXa`sH9iyL_7@$cZaE!dXGDGUBX<tj=_GRQp*UzeJ zHfCI*`RQzFqx~h$UAdM&Pb*ZiBTSc+F3~znJ40Su=^%BQxZH4Z?<P&N)eIfFD|uaI z%ep-It4))}n>0_Z_V@IwsS^!V<j>m{+BDs~N%Qb(7f-(zO}u^TVaM-Od7W!XAsC`k zBH!A+Da4YeIY|UOl4u>I>1ZFlDsTSUQl$L#@C{m8*zw@1n7KWx6Dik~)dGqP*Y*94 zN)~ke)#WCuT`cI*WT{FEnbSX35bcCFvkJnFmsGZO4C#}~BwBN6JlYqox*vP}nZNu^ zMkK8v>^P|so66f95H6uw?mi75PC`k%ysI{nCK~oWfPPe5qtaJu-&9|Sw$IfG^Q%Ku zv+Y9%srsv9`FdQ0x3dDn-d~~zi65@y+rDqKk1KG;azg5|oKW$Zye-V@63@kgF0dF= z3ObHjO!|BqV>tq;QL=p*>mE(hTC`tWB^zJWt!$caUlVk6^@imH_c&P=ci4M<y3QAm zZ$y);DwXn#<7;i6EIW6VIGMMt^gv$KPm91O%c<$@r{+erTd(#QjqPL_h`UrC=GS-< z^sY9RwyT;qyk`cu)_GO^z5&3^Za+2YkGK|NPp6guS6tf1YX*LLv{GEghcYDzErQvY z&2STtDMn*9ZTC>cVvHScF?W0|dtV+SFc%D&X{Toy)&q71beZb$*`ijM)fRSQwrbRM zDjm~R7!C3(JJ<WGN7~+i$DNiZ$xJxi`jMt9?qAs><I{v~13=ggAWD1YD#>Il5o-WY zh$`l&1)N!V)H198EYLk<XGmAA=5;7!w6A5K%&Y1Ug_f_hj~XL1N~`Z=m}n#Wo1LLw z;px_AG$OQSx7*8dV?UroIUSmh(c9N{XSDZ?QK5yIj(PY{L1m)gVsU(~eQj&liIU2i z+Qg?YiQh+i=73i96EovpJHvI-_Bmk^;{M6U6<o~jf=61|iR|R^D6Qr_P&hL`JiqZR zf4;d+Iw_Yg*+gM@(=L`*;Hq;;52jW<WEW{)*9}wWi~c6QLsu9X9l<;lJ|9;Y-n@%d zRqbe69UoQqi%&46fj?gb9A2(Jm-(PT3h&8m9dCQc?mMky9#$jKLTKY^4l_{_fXbQY zS?eMe#ywo9*gwzVfCQ67(=+p-am~DkE*_2kMjj1zluXmisQcA4z4v)I-h{xGriaEL zinaKG66v!+n{oH?Ll0{gXra5Fug9a$m|VNRFuMEg`=j`(pY?>Suj5LFbTIeA0K!?1 zg{6N`R>~c~@37?Vd7A~>%Wu^vIBjI(+4!~*1??GKE}3BN=1l-XrGtAGdOOe3H1NBL zKDs%z8Xq2ctY&UulAhFn=7Md?y_60-<As}^r9#oKM+{BIZF=s=MmLj_JIl0N2x8%h z=^XH=lQn06`R&+k^LOHnBM2D(Erx?j=_@qXB#hYw{Mx}k&Qh<grH>o~puoz%rjwEB z(e&w8(*}Wr+&`&04#z7~$eER8gdtMvy%EG#z<@OT_yS36ir{kmm*zb;n|kcYspcuO zH7T3%(!P7IN9vex?_a0yjn67#@HUhkOJlI=(Y=RVuB!qKp61^hirZY+@Gvf=T^pZ{ z#o$%3$=OsIj?*Zg-fI!2s0^<%oBgxQddx%pQpz=&>@KXNC@5dWqp1n^7dY439a=c= z5;bz}^D7pkdz_+`?CZE>cEUe{I&-}{&6~cX_&w48z(nirnVTb8?9ZEv^+#!!e%X+I ztS&PgrMdkI0u;DslxF;EFGBjGol}gbpw&+H_S-!F7@>4;kKOYx5qji3UP}4^e&i3k zeY*)iU|N%7g2n`Sx=pNk_<3W(Y!d^ra9eW4q{yRGhb@QI=FWog$tT{C+{8(sZM7V3 zguiyFK<}4wj@R(WC}f(y)>`C6GeEQ~Z?{P5SMYuJys@F85NH>QbR&s9Na?F=PrY6~ z49y9b`k>Vhu`ULCf5eTz<|wAJ{x7?T4%K8b-R0Iu#)h?wWbz!K6{vfUy<y9IQO#IU zvl&7mHDi*^pAbr`d0k$|jH*p0Ivp8<tNZPkFM!g>Zj!+omag4t;)OEmwi`j&d2yk_ zOyz^WG$K0OlZ9D;{1J*nH7+zk9MvQdYGB81Db_*KY>={_D8Nq?h9i^(sJMZ6=K!hY zLAzkrIOSk6)di-G)7rK)C!oM2y36emIb=cry9<RV2@%=p+09T!dJwVz<1^@mDK_Mw zc{1V!ks{W}DsP+7xkuH#;S3(e0~F(Ab0B@3bGiF61BUZ5l@EzH!^F+Nt=%y2PHnPn z`}r(|@|z6yhOJ_bH{}QFi7Bs(YUsP<fNJerUs}B%sP0K1wi%`v_eaB|<G}4UvSSLk z4?-mZMpnnsUGDms!puo~)U<}7r6CZb@Z*CAf`nJ#Y2|dJKD=<IZTsYLyVEwBFn2Pn z=5?vxcd#&vm~<+Q0J_75wNw3E^WbF_(PzQjh(>29lt&cK0-YB%MOn&+O7GOrrMf%7 zw8Zg9Zul@vv}t)@EhrC>OS5anzD&BI5GU<CPcq>L!`4hZQYez^ZUMf(6Y$0RVPu)| zw!+tZ(_pK;;m&A(C|t;o81cq?vI-3#*9;cZSFd=O;zx>jqdvKrf0y3mABd+n=W?IE zC!+5h(~;D$Mm!aagKq9q)#GvjV?N`Np%EiwV#i;szWWHw4|oYpJ;$3p{k2jTye_07 z-^mqSBBE&uL1E-x%K82j<r>4uwJhbM0XJbQ?N;KzYr_xg*|ml<ZEBOIO55714W|LM zC~YgOHk<{dsI;x=b?ux>Jl!wijpF2T_6A99V>{+*@*uc5I3Fp$flKp|AcGFHV-au8 zP3EHsu{DD)=;}yt(vG>7+y??hWqU$6Is1J>^N9`l)YlF&kTSAnOn$NmQfe96&BV|( zL);=0DGKZ`ViM4}mF=<X#8g1x@JYNuOa^oqnGn+f&26~zr9TFlTt>6_!KBQ@&eMu1 z4JI}@3PrL(5pWU8rw5$^)T58$QrcXOxP|v1V_|qA)$S&6!Ukl5nF5kUs8ITX*DsZb zNq43Xm~_L#lnu%NlZg*tLVOI;5+t2K*Ox%M`or}v!6SS@XTkiyJ!t-3kZQx@l4U;y zsdzI;NylJ*loQM+<bsK$lD+tKLMEULbULy**ePzv7k^DQ1LTDx3qafm5sv{nj3dN5 z9nrzpPuUJ@-#}xt(O3gC)*Hr_qr~iV7#rgZ!>DO6;w)Os9o?x22{b_P5QFHm>x$KP zVfj(72}UDBbxcFIa1xw4dXC&FfE{=g2ft;2)kClvB6(T`q;bGK9Q-^UP{666E90CT z4oKjDG7bplfD{h6vj~`akh>m(WcD0j&H?gx){dtBFAG_FY71eHGi=GiYG1ej4lqu7 z4DPv*{xBzfA!mj-$B{bPlmQ#^_fXz9+(W=(MVIwMtV3`>_feb-tSmFWZkNRk=-m5j z#l!5^OvCX*5+U_wr`eLeTW{<el7`=m-M0mDDnlexxl^)cir{tc0ruu3D2ookHo32v zP1ak7NHd=nfv3f3wnHxPiewZp#f1qEu*C`W*y4nL_Y?kizyA#zhn}PVrQiRQ?|;J& z7XSBH|AS579{f1)2Iwz>@g<9UdWqlS9OVe-DBFODZXvgJ@fI=owI5(z*0J~jdm7Tv z`8kE<7SAp$FiVP*@KaOc4*wq(F22C>j^H7iCJFZsqDX@)F}sKOV@@0;?YM*DzUg4s z?!rUG|1MqRluBP=$G4$Jep_%({N0v?WqiGy(EBk&QjPilaDm)%)%q?vd(hssp2nxy zzFu=%4eE4m%=I*Ut&Y7FzGjLV_wKOLCP92r;&1l;MfSzaZG*{!R_t1jH)nx<+npg^ zwKc|NpWLDH0n*Bt01M##)WYmu4l+<%oDOZmN0`a1!`92q<$?M&b7JUc24|KGnq@IB z-m;a@1~luhq$4rRec<9*fGM2(c^JaIQD)a(ctb(NHbkVhF7CkA<?LW(P^X3OFrl<* z79N;t47KfQCp_scYc?!uh%YM1A<4$x^2Zk?xa`Y?H^fa2%UWIpPrRgv8MkdP7Ed@4 zd&>nUX((@M!!3QC7TFUJ0Qc@rS(KH+-UevMMKVWE;^@;BE6+Hp7kGy-`-hVusGQlu z+8cRbM(Pl0e94F7oRY!s(q%CC$ZQJS6N}<<>(mEYIs*s|d%(D`#Gp?3+iocB{s5T{ zt@a|jJ%&tO`UpKi=m0`!y{;n&<s!5Xp-e!5|G>X$(sc-C78d{#b*b#Wdvu+`?6)wO zc_Hh1k)Z{O@n!qz@s@{B`gIu%g=;H+3q~{_SmnbHen7kki6V3qp#+5F5Gn%SlPy;} zZ_6P;ZtN|q4_ye2Bg7>G##&073RC^1`?WWA9bW5scz%^mCs(S!%RaY*;#t?dqQ~LL zTLK?QH0l&nwhi9?)fc8F_$?^**5MC&+xx9k8SwHQ6wd^rSP~-M1>&V7L~IUw$*0c; zce$;tyL$GIZxu+hf8BYv5Brrjg{DTCy)HV)2g#zva<6;c5qq>;eRE*EM5Do_)NO-d zzb3=fRKFR=-jewsxxK$LRS#~jPkxMukVitxeD(0Qz}txU1`$n_Hd&+^B1dvMv;&L5 zXMUwY9sjrUs6B~%)}qmCm4PTJ1&&Sdv4~E5QkM|t056ulq48j2Lnh)m$aoG9DIu-b zx*{*HVl-r>&Uj}$JTZyDTnS&dMp!C3F$bhxXzs8y2reS&6tn3|%P@*cOsY#r5rp?d zpEyWjCziu|r8B=qXWY8%7(%<SDf+JfG~*qAk(Up=V%LB1vxld?$tZ8qOQo0$Hg;v> zXp%rOBxWyHmk3Od@Z}{^5DLaF2F&Xk)UEy&2Lb2o5yIxkO&RXZSL1J$n?-A6xVIp5 z641nZgiI0o0LbQXT|$em%f6%fJp+WAXq(jK>YD;7*m}KrZG*by-x&Nwv!hF5Z>{~n zHy`DlDvl&U?W8B0S=YA>Uj3C4);WqjKxiQBB}tzE&ukMbRbpKHgP{{x65u2QO^yg< z*P(y9_S`prQD>aB6T7qagS@mSrH5&FRG$hrx0@n>GEBlZvH=6PY~+Tc(cdU8tW#YT z3EibUhdXg0*n8o^ND1FYobJydiEm#dky1IN8yu3uZ_h*U7~`-v%fFfZE;;K&E<r&r zMZg*+$i2)wdf>_&8E%zvoe}yGO{Q23s-0p>N~WrA_l(E45$0Dv3cryp|7H*-A_>3A zUHuis0ronPYjMYHiQ46O-0($EW)MAa6*+h3)}60J#uG-1#@KIgj8ie;0CNs7<^Z!r zFe`({;r?(4H@3c|vJm3RbJM>h=OM&i0!`fRJFNUSOMi9z2o7G8#4_F4l7hb&VZFNW zMC3*sI3Nz|Td450VQ}f9BzJb`=0F7GvAoRkIkNS8RjexdKLsN1dn!rwS>Vj|s{!lO zgZ~)(r+iMl5eMwoq##buBLgQDPLeZFv_D{g$o~jfKUlTJDE}V#lb@nom<R41q}*&= zIL!7s2^#ezDvdmf3t3&vVG8hPnCxKIaOna{WP8~F%|EDz$rrOw+Rqv;#}VX`n{L3y z=2)SOrci{YS$g!QkVQ2A8_g{uFp7s!9ixmPlG-O#EWd5G0rP;394HfnR#G`60|fUo z?_oCC^uU#JAaz+e9MB4d2!s%YX!JaccEiU62K{w}W3(VAd?F?OHagBR%EOIFS1?T* zPN@Ku%D~$NdHaKR8}gn3?_A{l4a(M|5Vr;5zHEgl87OWJgfyHW{~%D>IHlZ$((r#M zQScJAF0k~e`@Dm}L>#-q7E7}{B|AZ;@V8E~|F%5EGeI?xdD6qOa0w|W!7Ov0y3G<P z{Ie4mQ_PQ381AhrT)Z(^%To#CR0EkO%`9KXkm(ohu}di|U#Af7=L^Us#5)&9;m<2~ zw~;8A-zh8*G^5lWQt4CdkDRARrwOV2t;y_AR_#iLc=HMuV=RSjca0V0RIQaB#fTD` zAw1#_%`}`xD2;zsCFnD${wXGu^Rlqv*GhW^xn;$MiMYfHSB%?o??7OS;)5TggEEe# z?w6M4v%(9m%*>}d<l4>0IR4EuO-<*geNmMS?qRDw|1*e@ewOxydQ66wf`cPC2<>@S z(C^`F=|gAbnv2L8yyK<zw1rh=I(78ThFYGdE6Hjw*~evg$?0c9d&th!eJ#(&X#OGQ zBHD;b0BQ!J3Ua6>i&Uahb>GzIY05;K<@uMTZi6+ws+Q+3ly>vHaWCj^_X`%j*W*+j zJy|m?&ziM7f2P!lbr=ga7ZJi<veU4GGLbh`DWq?OjzDPzN|WXJEzEcGF>H$*wKd%@ zfMOsMd9@HIq_(ileWIhp`2<9%osS8MF&CL*7qQcNa`;uB*`INU^;h!NtGQXva}2XF z=xSEjtTEM@k*To{T8Ws`_sH8q9S<EcGc^vOf~Bc%>IUp!TTphUf7@;VdksyyTlV%6 zzU^M7{PjAI1S&m|I_Q0iZdlA~VsJ1km_1Jwb39}sdS(>c-F7#1_jV@NYp%5PEuSt6 z37PV!yob{9VS<##dZ)L>Vva1L`(uzljm8GYZ0(TVfXS8173X|tm#FIy;h;vlwdw6| zw%pjk&lUG$Z)<Y#(a5Qyu4z(lyq*?dTYlI+0km@xYEK-$v*TN)No856*Dy~_bUO4* z<UzDTpRJX_!TU=TcWo1K&5(NIX{%dvHCR;XZ!NqumMZmF2xkcz91IJdn<tg0OTF>1 z)g4;u`ZPOzOI3y2=GkYyZ6C{A*Y4^U8G9sE;qf$s#0)M|3b9_Yc9(?cSdP?Q58HjZ zslkCtTbJ=3sk?sRDJ6ZCo9$(hXx^EYb(K6~3Z906B!f4BOQsZTL`9OMUI{;ln*83o z$Ka3dR{=LIxVW4SMJ|+V4LZD*hWf4I;r+CZk9SAZKu5)?*gs!io?G9<8~OfjnVqe6 zO@8oZ<*gPx^|gLJ9(U6RlNXw;>nMD9>1O)BygkO|W3Vj-e|+zKGfKiT99I}|8BP=R z)@vG=de*_n7_O%GcSUyX6d(9nF&TS%|I+)llRtY87`)kpB8q96n*O7y)<GJ-MB4$i zU{mIBE?0*0AzmTPFHrP|O&`1kQ{DNFwt<UU6^Ym1BOPiLUaaA#Tn<h^JT6u{5bUM2 zHFPC}3ZQ8ktbWz2sRJkg845ljXvu#BtzWc6skUDp@>?!M;j_t-Qa?l6rQ;XqQI2X~ z&zEYy+yj|=`NL@Qz4sQPu4eRpLWpAgn)Ri(0Ebg#VewKM#N=Un4Fs#Au%!nTK5i&I zfr=P&xQ+|{`eB$jI^V)pK_Ln$;uF4(i08$cBE_KmA)~dkU9l3C75=S+iEt&ItHHC< z_Ic||4Uq>c>`{O35;RTx*h+pb@ek{ad9}v~wc7OS>DN7J#?|d-XbJ|azxED<iEbr4 zl1df{Fv-)9C*!=FcH^Ilu@Y}999V6HrQ{Z*ogfGj=vR<d2P>ji#3<?94VI^5e5pn} z3+C`3SBzuWb}r&c!UPcs%5&R|r-fsm`SO-$0x~h^P~_?{8GC%`Vfqf~V0RgxV`bK+ zdealzef;Kf(<49knAWp;dKt014`F-qQpWfSzIWG(OZnVo<(YReXltu?SO=4xKb7T@ zrH0t<9wFwUtlVGZQE{eqc4Ux+l+QYLh<Vp&sbyXYO&+8fF6%T_V284K9onR!S70vM zm}@%LIN|>Mt=7BVOVyniPf)hmxbafe?LK$e3Fe}FZpX&9v;1?4r$~2B>wP0QeoBZT zNW&<aB-GC5pPn5q*U5HcyP4Hjs?qb!yO=DUJbzKrr>r>Ymvvs4Dm@NrU9dE3!qR)n zH}v#4w$#`8Q$rhJoyOaqG&5Bq1`|kyz+xWG^CylsXT_08GCmXU$}G>W-oVsTm?Z@> zp1+k)qEk-KYO@TpT{VIk{3WwanPx8%_NKL;qP9wZsZTP7GbMdO$n@sYXNl$~F68e~ z*ig4G=h=vT^l8mo)s|<2o*hsSt205Bz-qsZ!jAkoXC6Z9tL0Z~`w&b_&)k_m>dgM? z!7r{$a{8lP6HfoMRrw%2y!*~+fnnGEIlG2Cbi*cfU*wthU3hWhbZPXtEHkx)bLs2d z&&0V1cMrRASNm=LV)BKi?Z9VLAAiQmsb;G2g-^JhO6y8Z`|(iojxc*ort4edCUfN_ z5gjT)=j-ibFV~D+2Jqt3N+o-~pW${d66}){zI4k+cJM+Ee&kKfUc+hWhWrFp|AQaN zLXP!AVMQD2Tb00IpMphjM=oNiR^Pnvq6CEgPfxFV@Z*tC%EKR->;Ja*cdBu;=QFOa zbMSXT$n55y`GHDyO8KEuL(9%EoKel9{*&zsGSXf>oeRI;qG+4>y_6q_CJCj)X&pjC zF2^bqcckFOREQv!@*uln%(h{VozHdb?NOh{_BVZIj>G?<(b&$0^*_cus;znK^&BB| z?Hq-6M$Z``8QnJ>#%SB+VaA?5&(XZ((|6-VQ@}5BnmG3+5jiJ5S-;i6u=!@n9W673 zLyd{)LVA+^#lX|ruek4kPdrjkgcKw+DoAIyYZxm=n)}?w-WtsuX;8E5c*B<2-;uAh zS^rGNc9@nKyL!tr2N|EuzOnWqWn=1LUG)jMLVEHV`}5+86_tV3WHvT5zN2B;nvRaJ zuFixMp}i6s7I|?c!%n)l>KaX<Ifpz1xBGa_?rV6t?~P4rdqY>a^1zC%{x?pm`pSR0 zDRX!1EYebhEVg&N<1Z;H*`t_i^vnWD4mG^o^~NR*B-zRXZ@2hIfP?~)JM|wYhTzW} z&!4^haK5Xv%vdq^$SzZAT#2en&Ao&6-+jGi1saSjX3VSI#=FynzQ66x1rH6Sfv_$9 z8Q?MT;igRV*glLuXRIss{MOrLwIm&x5`D$o1GvkqQ_Ven+~tpkmuub}VY!WKrwUm} zJk0EA=+aXfIJ8A^x}=Elz~1`une-r4U-J8#GEsOW)7bO1(I`@&uHv}FvnKe7gjw~5 zWj?r4P-#F;0$1L)@6<U%G>7w?Zg?49hX%+s*FT!ehC>7zD2CdjUECdq-n+sozM1yC z4QNb^Q;p~W6w9~BzH=`=x#!bOjqCViM(lYmd@{>OaeO1bhPcZjf7Z02ZU~RSADegO zti^olZI-oSZF4qLI)=3m0Tuug04@P0Z-UYu4vZ9NXP%+9)}Q|fho-B>sz=&P1l!M8 zH7x7x;0c;;2+9!pLlag}$I9&gqK$16fAWmrsQa%b_J~Epm|^VdSNU-)>4#m(LcV+* zIoikVNv${cB*I<P=d$hp`Z=Z|z9XONq`R@nZMI?;qr`sPySp#g&L;zUuuS8pld-Go z6iulb7QQY(I>H*a?n)85tjQ=OR_FUGZ@%S_9^~6N-g5JkEQ3PK$;X_Ay19Vvd${3v z*R!`=@1C^Qm&x;lySF+I*%aI$n?9UX8ZaAzzYJ>1NU`5bY)(fpN*M|__{=Y62~l>b zPI`q+UA8ZMt2x#7*Tr0+Nj0K4W6DIa|Gf6E@QdY_?OzWBB=DV{(^q8QExIATVo=yw zSF=&|XShdsp1o#4z*_3aP@Hqkv9ED+!pQ+%4V`2c?ii~nS!KKHo>SVZ-ZU^)8kZNG z-grBXez9)uHHk+{bvi$0&=f29(K*;;bK5;-ecj+T($913J=J@*sm|STpW>Q}zZJ)P zlRr1ZcKKHHhO8MkF*3{U95hU9@SP!=HW{!7J30sXQa$ewLN^lW+_?c3KVFF?#4#_M zmzVhb>q^lZamTOzj$9ib;H8+~B^Rz)pNEJQ<#V1Ig;)${!JiIpKe;UDf@1Hqf#LhN zvu*K@-Wss?$Po5;{j|h;mpMJY5AoIz?Xr2$)1jLu@ZO`?I}}{U*V0+$zKxW0PyCVk zVGFz$9h;x@6)&X~`RC#wM}1COb#6%xbA3Y>qgpTKo8gCe&3kdouBm{qA-5-JE-7}% z?dB2oI4kJd&|q5U;6%-oU&EWj_*Rn6M{V$Mq;$N;_xz`W(_)EW=JnGApX(HRCkD@C z*cM-U7ti~fp06Y+k7pvMs9%&Kw2^w$NQvOZ)WiY@m~*iucJ@DgYx_bt7Q`n-8ulnU z^_Z9HECOT-2=N{M<iw(UT%5ypZs>|f1KE}hUDi0b#38vakVM70pKuIhIa7Ml)%^q5 zJ{ap8Q#3Zec6j1f54o`?4S3Y|B+_nD;SlfIiAku*f9OomxI?XKWi0Fwn#1P^`x8c} z!~~K)9DscaV|{0C#*Kki%b^+Kv~N^W0_hN<Ibp0(rXtXOHqB2EhsiCl0jZmW?Z&R4 zYlO2IZF4b5Oq}VVHp;i+3yK!XH7|nlbO?tPV?jP_9@ubBl{K3`byyh$JwJPz8s%}n zFC>Bn)f$Zx#aLs^5;SgNZo*->XW_w!76v_5-?UYAPQ#6L+-u(<_F9bfgP9S#*5oI7 zZo+-o!ttp78_KVqo<>qG@ThM|Bn>QN=;~djGa|+yq6>4jaEj=Jh|`FegNTiY7=ehF z5U~&ug%Pm_5#4b|3L?Hi#9$zHdJ<-x=g3Nuse|_!MHcVeo8xcY?)gsbNx)8^WP%uL zoJj#6&v&fOl&_=~Xj_dBi^*ao3+kVZ6Ca@#$1Ku&H}T;&YW<CnA!c=B;Aa_1gKa-= zU2ce+iCZJzVaTqB^7{P6Oh`q!t0vcmNV+!$JhP!Narf2N<P7yqY0Cgez!;MQhk89% zyByV*TC>%oNMBhpbzLBU^>8n#T>$D(C1lM@>$_kR_6UG$63CBd{3R#2xna3f2>6`d z51?8XjPmkeh0|+6*M1BV<vm1vICxt7zU9_(FVH;AJqW>CCayW)VTYs#pkxjQTW1Q& z<DXD31$v68x8xoSutF#pjnZhC^vWv(+p#3|AUU67f5wC-DAhJqH=^m`XnHOvT~Jt* zdMpbKHvoU1HZ=S=pqcl8#xjBC56@6aEEyqm0kJGV479meIzr9}A-f^czC)ACAlpt1 zeD$O+zYCcogWDl+tH-Y1?Qe$Z@cquzby3ED#&Ay&Hl?Ydo$y{Brxz;2(H-UVCOJJr zqeY!xGNgWh!MeY7hUT1J7N^$&M}hB$KHeT_iuWEpQrnAr?qF3P#62Bu$RAzM9S%4j zhU-rBhdV4pNGtP;Tqu1ASA?rpGMhHoXj<S7Pd-(5EI7!@HJah>{^!mo;`9!eaKY{P z5@iK`(F-N3@R)^C;8Q>JxF290is3N}bF}jP&_lpW7E-tnN)en=+wW2^r=-d$(Fypu z^Bn}-7em-j`fy4U@YvzX{`Tk53yIs$E`$Jk%I^{<1U-pU;`?2C%qd0vE~RoxhQCWs zIHjiFrG@7MJIenqg{`SQi_%P*!3Pk&tytebdPpP&zODGMTJ@fq9DG|*G2C71ytN7j z>-3oSzjS3gH0>x)d40Zv*_3!9!0^VvvpKR>KK(MsXfwx1l4H~apJd!fhU1vcsbq61 zE}V)Br!vZ^jB+Z%oQg1~633|!q!%Nq$}ECHPK9K=7~0L011uK7xKaPhfQ(j}-}#tU z5qEax>&ZE{9QAVMyWxNO#Q;2*6{SpkiX8~Q*fTk=ol`V*rrWoaO>XU+Q<%`OkuMl( zM4jT+SPk)^z}iuBmvPMpvwhwjEgPnYu>gdeBQDA}Flfa$3u*#lZeSDbcQacb41Xx) zqrAJ^`k)5~)-LrfPTiqxXET+D@|7m4Mm?A0D3H=Fird6&&QWm3fv|JLoHR1(Jno{2 z;WC4Qnkn47)7nLI0x!uzNe*Wna?xBc&ujH7#~oxW2QJ<p3iLaf>l`tB0)<m=+0aD6 z=UL@Ub{?A2E|n{6iDk^94T^$Wdp%L8uSYF|-=$sbVX;m=UmALNs+_@au?()lElZqv zBJT|a&W`%DZRmt_<8414DXW<w@1mI2UK3p3Z5g~DXEPjm#_ys4<Jrn;rZ|b*+It8m zu`Po)<0LM}h@u^615G0rk7N|?=f<3h5PZAff|??HVa;PM@l$xI>Um8OEIjTl_DH$$ zByJULInaqh6-Ry8F#H5}aLhU1cxbBJUp%sT!(7gw%#mM`P7zG=*x4?|&viM`ZTRZs zbmgCxPTjr}EsD=|wPo-OHZFttA4(^>3)dFt25m>Bfb`ZnE;vV7RMUqIb4j@Uv7Bf= zWKT3~;gl}q<W0mt2yJqv@(c@)n*ZFEDg{vk33}W!ad>IisUipt(dFe=E-<Ew?=S!H z3M*Y{qGb5zY1v)_e4)byxDZZ4<fh~Fl07)+^PW2-+iM7!n<hV5KJCGeTW*fKPb7|x za&!SH9C!Ct+#QZ8`<rjTN#pB?rvX<v*>-nWC@#*|Wg%dvb?V=Yg*1$XHQ)!blJJtR z*RM@D9o`;7@?vRPVbLMmaKW@la62LGZ%ueqZjIV0i>w)S*<LTF?qQoG<`q04{G(;e z^MBglybWE|3jxRfetY=&KRsy|$^Msry8N!WJO0shcuITr&#!5}Yww<W1gK7U$s5_^ z;scOxu0Z7MP#~C0ENlWfNRLAXsJLD2Zz<WiFTfTBDcy%(qp57qoR@68cs-+&`!4l8 zel##<n{W?v<5MXMS3up?%DJjiBoJOW17vbvxIF5%RL)i7UH{)*@#h}p3KJz>EXm&` zSxYtS!7PNso-EvEm`zy-=R1z2b4nAO(gb=*n4xQ6uM#{62BUmk`j|8FTLH~F_A%|* zzVR<D&@#*kwew_wMqkYAt+p}SkbAg<anDoUNDgI`NdtO;KqD!_1iZ|-hp9)I)R^X{ z8Gkbxb{f4cd$sf9pW?imfwj_3me#k^7?nO<VcEA^0P;xsJ4nR-P?6yJA<N#{Q;+WY zUp|%jw|~9IV?cdNEuYq|Y?JzGW2^SzikAI$WTN^J(938Tc1_r&LQJvqfYj`tRR#sN zQ9^F%NHl~*g=n(JVcB-OYkWAALC{JDS+#<J8j9he!#(q$?-<gXq4t;UsNDi>`W`f@ z@DqX?afqrf%g|H}M>N$KsS=*U)bS^1s+{H1n3coq#K4#7fBV1j=$ohxEpe{UR_HX4 znq6AeRbVSGq<tJgt>*y8Gw=Eb_t_wgcrt?BILty&8;7t;a9=qN$0xppGMp-Gb_HC; zCf4xIwp}SZL)XW8wu*=)!7Q3Fn|fGH(};WKc3%pM6yxD{OJHnkRW040(O2>LUXh4c zKc*2<wZA~dOFiI;$vFSDP$!EaPrsK4>Nx_WtEF|ytc?1Y>n0~ox$7U&XZ-n7!`HQU zJt;diElY}v0+JE6b_C12(EW$!y4nro@dlZ5k8>Y(EYFBPy1YuRX3aLCB?9eBzu4ZY zd$TcGQNrO?olvx*{@~3zp)Jo8_DVP$Xw;Qh-)5mW!8-3o_}1lS;LR#0j=Gg(2dYQB zRkLt(J#_NNyN1U%y+Ue+K7K0iyn+`GLNNy~wxZ&-x4mw5R^Oe8ZhB`u3iGtQ3*<2! zgq8sEP2KhK%Y&n!5IVNhS6IW?g5l{P9b6J|@^N-xk<7h{t{OLFl7LM3z-0U&k_v)! zHXWqxp~atL7$!oU=f?EFgq68+T*cnRg7NcT$Ye=ocHqTT$fN>HG_QimfDxF8>4M35 zH86=v0u!~{#h-okjKM_2;N*`KyT@P>nU*`#d>&=Wha`$|Nb2|9xhH-Pl1g|NxF1bM z(uc*LRWpo08V|R)(}JW&GjeC%;OjU*l0o>sd`Uz;B=O`$NkqOolj9E~6EW`s!^R9S zdHGNAXGuY{g!KV12}euFJpz+7G(QGzGU$m+WFU#>R%BxK@soB@EV_vtm<*xl*84%~ zf~2`AAe}~1RU?q<B553wDk7;YlHNn>s6dj=qbLa%n2h63!VpYK&=TY6V4{UgX3-Mb z$b<n){QMU(2?mpk*OAF7FwxuxCX?I2L@Wi?@r#Fb4AD(?B!S63B$Y(cbx7Ls@l&z( zek9o8U69*^qH7wS%o(Mk=r&2Yt<wZFRo=v6bbbvIyaPcwnvi$B*s`q}H7TgM0X0Wa zb1!n+25#=it<(VAG!Sh9(Zmpq0kk0W<R&)(O&rm7Jc3aJV_wIF$wokPy5A#AHU@C< zev>c}RnFe03KLPq`+lKt52~EIPZI7yl|TSk8t6lJ^r+m2DaAY9<wuBTW_z=w0FV*b z`i>HTA+pPTVw{+_aa;PEpDryXg5Ku@o-se~K;S+CrU1;JH9b6Mo*7=O;?gl(uQK{k z=VaUxRO3yR`~G<yd$Wa79I9242E***iXXd}(xa@KFK|lfh9^H3NHO(t9j|@-G$Dh4 zE(dJmfEi;8DupIql&t=scs?)$tK)BY#Od*7<g&|F3z6eCXJ(V!kJSthIe!1%BYbDF zsKf9i%im5>Tea3$@M5YIvyHO$ak%D(b?ni$uLv-C?oE&W{HP=5lzWS%;gf&(<Y06< zjfgS$Gg0@PkM>9F8^v{-8+y)Sa;@<PpglA=*7Gn{#uWVK7-Kz;VzZ3^7CFyM*f)Ga zp4M6#q33e<o{Y~{!obwS%iw#zb=q9*SkKp37h}O;X@fp$d9L^4a3;zz8oTf0V9ZeQ zvDUV&OuZnd71*@*ax9t{TS*E$2?vXTIK&v5_*@#K|6ftmWf{Ih=^Qegbir@MqF(~X zFM}q&5aVbcq0tPDf)?Zr!RB{|U}_e4iWS)T+z*}V?;H$pQi=WC6DekG(IKzd9c1MY z?6U*Nh#Xn@)kRt0awLPr7;D&@Yk@caA6o_P|5k|pf~NncHU)<N#{KO(V2zG3yA`D| zrBfyj)1$oZ!JT^GP78a<bN2dAo&RT}w!kg_m7!P3e>uym?B7}x#*zP%IC6{k8n8~i zNSsmcfrGznUN|9?=8R^FP)Ti(6}%a}Kxjjq#oKu-p2H${88!_M;GWFFO}~cWHz5{D zEH0<dxfXiKXA9w466oQEgHL=oJpJCY@X7Rorg*6<JbskR<s>{=L3kkw<Q7Smg81l( zvt<A7b!-R-M<`zQpR);R&suem<<Ri4)&&yt_S;1VqUniI33!J3Q&!T8V}cCN=7iIT z!_Vl{1zkE0DAubmG{bv599v|DVJUL5D2Qc0_V_S*1ETNK3Ew}gL5a4qql%y7xtC+c zG567)z~wZVdM7Q>F2LX@Y2w~a%dv_~pyD8J5x@!7usMS&NgvbrjrqzuP$}o?C0YZ{ zn*Lp?_!#W|0-3sOpYDyrCvG^ZMYli9B#!R7jrg$5StYzjZA~NN4$z9^fXj>EnaCpN z?8WaDs#Y>aCq_S{i3Q|ug-butUvzx729YL7Iq$Y0Qa@%Hb1##t$Mps_Q2MxF1vGQa zGLyY6Bfzxv`?2QTIeS4l%7@TFgrX4A0pxNn%Q2z#5e%4?1e9(BJ6gs_TV_l@20zwA zKvYzlmoa;Obkr2k=YLSmm`^=x+7}e;y;_5hTd#rNxdU1r&!-KcrjjnE_WAQw;AMVX zqG#3eINAI2-AlBVR(nK)vpBhM1MNks81s1nKNwq?@&$eVd<_KWGPwxn>>zw9I@A zCcj|o0OCc+CpE0qY4>z5{PiJV^5Xz9aR3vaN5}-FD=|hU31Fi27)*W~1gQ;@&ZL7> z{CkC=6~jbl^tm`PVZnJ~;S^4z{{j<Ul*D@#m~f#ayHWK0D2b>pnDil&$fU5=Z~DkY z&sb;l0zAo#96MNS_kFb3dC1g|3?|BPARR!`ggqd=fuu*1L3##BGmJngjil%%yAzNU zt&@N!*#Su!(@_#$NaBT-NH`287m-P02AKSbOax(x3#*YyI4n_o^^#hx<H<w7JNvOp zU3b(ITym4d8Wk)p5Rre{BeJ<T7E%?Vwu=~8w;Aybug`Ho>PTE|2x=Z&tqW?mWTaL# z1vU5dt#?+1$VV9WLD$uI9O`wmH34m$fr!579;(y5Uvm6msp6PRv>&a3(CsqRqWg^g z0fu6!VgV)7=)8RJ26bIR=hcJv)lCbXcK|**g^6%pr$3NM2uQWy9zLT|AWck1(v=`> zGC|TvkPag$3msYzUQ#z!C_<=Kb^z?&Av>E#U<Wt)l2Z+KWrvWRGT7N<AiJet=Z@Qj zgR~Hr?gwcJl6I%Sp##5H6k3VH)B3dunMA>2miv&29hhjt$E9Ri3QWlG`R|&K2NQXe zBoMuF7RaO=Ub%0=$fO63_e&I+Ou)V8<q;A`b|{mJ5SS29lKC58LdF-{2PPQ4*dhLp znLp47m1BDoKEsRl!{@T}W787>>8k0GcP^Iz=ZRt@!>i*Mu*zJJ<McZ|Am5E<<;| zB&dn$Yx!L&*$cd`R58u6u4JgWp$D)nE9vMtJur#Oyt2Ch?fT^pGouV2+;>0lWtpK4 zg?5P5N6;)uFacX`tgqw8UX-Jf<mc_b4EQf-;x=EzbQkz-FZ7HSXazrv;pWS+zJebL z9FWHWlgBEG4p`CoDCZ1QS2S)#X6G2Hzl)ST{PBmMhhVhNK2g$^4lw-%%L+~omG+ql zIGX^w%I?b@xFim!@S!+C=ZiYWjTJP4m8%t<ve2m{<>b@E#l8rzU6A<03mS2B2QxJ0 zMF@s$OP|X!+jhfFY3KT=$U>fD;k0OR_{)NY&FBBpBBJS9g~fl9*MCEt|KH-j_3192 zGhy)snQ&cv#~c=45RJtbq`PDB1!-J-$9y^OSpNTQ3mOI=QIxL=gRp)mdDC7xA6jKn zL?6JGK0@LW_@pMlPuqHJgje~_Rm_if3p3O=Ov{Y+|584QDn<T<`K?rXU(v5W5|y#X zfa}KEFKy!c1U^^w4U(k&whfA`i~Nh_w`EXcy~y&p$phOjtWsM;8@OyV*z3N|f#81d zMsT@ttUN<xEaK|CpQTd!-fl;IpAm!oqMZ>}=lpz>I`?+z--^=H+bmiiah2}psq}eo zr~W@tTzV|tZrw_MP1Oy<N$0k_thGy7&fBWH&tFs7vT^TcecPx|-FF&l!plb|>mQFM zxk`-jYwogau4vcSkCN1tQC}v!d}Q*K<LzKdw1*A3?JaMy?v;yy*4b+98<u~acFGyr z=(6QjTWG<x;Oyv~HsnvSyji+e{6tp2x8zONbus0a{OfsS@Z)Ck<FF-v#`gC*J(n{( zuf1nf-Ejl!VV0U$5>@T^2G+eSHPNJL(Jc`wNz%MrBksJBx}*&0#-$_TykWY+Cj5F! zo<|2iY9?fc-TC8l``-7CYqR=o|4H9X7cxl6Qu&z9dr3FW*i6{ji%TO#_Hh<ZL0WKp zv-z=4*FJx)XmAwHa^8P#G|B$Cs9C|I7rr|c=LG@yc&t+VY-}k+%+T-?YDfZ`qr8^7 z8m3?)$R(3<G81g#g6}quBb%y<H;#s2^W$sMndiPUGD6Rzf}@+uk9}f)ZrWStNXl|1 zHC&)6?EWX~Gm&fe$a>KOW<MywqOLc2A7#z7J>uP^8)|IE81=~b@@*M#MZYDTzOc@$ zfEwwuQ(^Zt5Y_I!zFt%hL??K~bn`Q_Sl*?<*P54iM4fB7!7HFEX>9i8#~H5WDW;FJ zCPt2djZ&6#Ny2!N?S-Xg1zn97cJACAp7q(yL1Wqag#Bjc3e|bpI>RO)(&S<#Pi1Do zZ+yXl%^}A=`IOY{Egv}z>XZGwHW#EoE$3w<UmOo=3$+J=Cl7);TjX_kZhF>>FV<WW z$rq8RW^c)eB@zwWp1hz1A~%m)a>dagQdL(I>^cG>E0Me5ZfPJo$6KRQXbQ7=x%!ed zV75w6Md64XsJnh7SzX`*^|<#_+2SZr&uY{OXzc+tm#B5PSTd-qc(Zh(2E7K1xmuEI zA7^#Vz6^G3UVH4*xK(fOiRZVnJ_j1^b`;RkG5b-TA-W?x@llpfPySKzycbaXyDRcW zdJw4Cn>Rv0pt<7d$kr_9*|M>X$A7IbD_{ty)A?o7L6psVNrz%=Rx;tuRg$cVCZz{k zH(Mdmmx`PbQ6w5oGXEt8qHf=vGV}0o1I2e==MRL3TfUXoMn~Kf)N8qNk_|IK{m@i1 zAdz*SJFst~*{`i;1wvF$59#^Xtj{-l)VA{n9yU8yGa+&_tUM!2Wq>4lH7p3;xd9U{ za`M?@pX`~<doxBPvz!&#W45NhxIv8#Z#4ZSW7d4L(aS^1;c=M#h1R`k)|ay!buBLJ zl(I;cj%~gtdf=@Y>X>mwc`9cm3!UuRo6`9&09|{y!aXC#h<Ybm_9k10XN?%N`FL!X zT&L&0dpOA`GBd3ELV57sqJN+vxO>^%Q6v7cZxUQ2PX)8)IJxuhC1XsWFfTIph9_D2 zQVWmIElJfajIU0rA1e|%cV;D<b$M`kdv1OlX6_ANZr(&BOIv=5@L46PdM(S*tZky# zz-@<FbCz3tuu9S7F`evU_=+>Q&4fSa`+cul+h&E4!B5`CLGvWgd5hkCGmV^NcCWv~ zkVU$!T&Fy#DbO?Uq-|Aw2%d${g5`>OOu@nY{L`(4(uk$Zb;2_nm0CSKw$5@PQ~2UD z$ksP|o@Mo};%+=m5PIiVZIxs~1S#Ic!K+koN(|nn-Y0MQiB(;3yOWsj<~ypPe|s%E z*{iEZMC8qKQghKbeANN&h;?Cf@Fw8yZaX)&QU54CywTfKlv#%;Zl+vXo|VK4xnDXf zBI9Wm@FRF!>Yi3-_t%{J(W`ruo*hw|6TCsakD~H(hSwg<KG$ieU5{SNcHV60`&pur zcy2I3<T+RsMEjn9Dj~`Iq}$!FHw>JFFY<9og7vw<GLgG=KMc&y4F-zb#F?{Rt8ixG zx8D6|L_kt7FFvAzR|Ovty1VWc8X-R3yALO%2Cu*g&Ajk0^g#yrDuWZ6JZT$MHH3%8 z{kV8MC5_A&^9Q)NVd#(1I|*)feUzE$OkQ53Xv@&peoJFB<K7nE^x!|h>&09L@1LkM z<R!wah5QXoUhl;rzY6tLMG)lw!j#~eI}iD%4vTc+1bHu`1wv&-08WtRn#2i3yxjxH zsZGr>3S!3*hi$dS=f^V6cJlCkK%Hs$+JZW5J^e|Vu+T|TT=1k?AH|0y%3FyOrbGkK zjL`|7_o5IYm)ch012an4L0la$<HtOFS*g{!Yy3fLENS=n>a6eE{66mW28L?I0B;sp z6fYN0dl|8o4UG>K=kP`guN&S-^!5-2PXk(Ma2X7ByCNuZp?W#Vdu{1Rk_@DY>pjbL z5{7jB70zjVUu<|o!~G03;am5G_x#|YHTfbq7d*yq_=@5lhNTnFO+%=~lG=-eyw`gz zVEXK9N#5dqh$X4*^`3uL-OSrCpbt0o@0VGawzfxYBn$#4(i;~gq>fh>@&7umT5Y1T zN}zBDgU5Atv+(-xwSSGu%{}C~TfIEkJB}H}6JNdjYMx=c-4dr$k9Ml8uu^#{Ah6Od z!y}sKc}PfAyR^0a68BSoD9o&|=-6X@T>oZ6rMJpXL4kF4g|s~?MuKie{9i)iTzlnq z?5qjuQxUG?=8nia)t+~`>}l_Mjcb7_?*#?K?B03QEoE2!d1g!~a`4_j_9~&cYim_@ zu0NXJ<1wVIVzgdho1NgKt%}EbvD++NMZU93Zk&3w>jgib!;<h*6}x8Or|2O>-!2t_ zDElSnPyM0jBQTqPx#;OFA*=A(yvxN;lZ5=kC7)J!ojRqcA}C)wU$JM0N6mQu*N#^< z$474ds6N@sxAb&{;*21rZvLRwj)0n_1NYkZ*dG5^glNs3_E)yYmqp0d$mCznf4Xsl z|4oZitTSRZ%8ZDMHWAZz{ElyoFsOBTdiljuqYWjIZ752G(hE^a_0s;zN~bXmn^2zm zkiS2+`)P*od<+Ts*nY88O!y@?cUImsUEX!0{EjCz-2>An2<_MZZfy@>s<s-gIQ>Z3 zM;r_0VTSzO)*e*4T6oz?Zb}~JX9q_Su(ezA^B5eZCX~=Wn(o@Wb4Oi`z+gkip3}!4 zL}=AnJ-b}}bdPY{twQ@H5vLxh_-t~2H^2PXj`kXr!5=5wZEgEhW;RW{TDq-D!=C)I zvgL%kQm@dls`9~v<L*0q6Ed#_zA1Sc)K8c=q&#-GJ7Rk6&_&;@Q^cQQPsq2L{7rZm zw`WhYu3qepb1s&jJyjO{&um)k_&Zkno>P9LtZ(J<Z<e+^<V%9mk`wNa`+^^*Gk)5( z3OmtPK~wYY^wJI5H$lngP<H-W6rycD;l8pr1<@Q;JeF!-gJ#s(CHMLUo{<9vPdrim zKy%IdrmdBTl$V{04GqtL(l9x8yyZ@Z?aWW9V=aM~q=o4#$@f`XwvZc_?yGVzGMN4G z(Dl|NeFx0cisQL^t?5zh_!o88jS2yBpDy$y)-DyO8a4&i->yjt0jC5U=Ok2U>&qWF z7e~pTS`yuNI5V9=-=(rss5~A@6kCWRgG$mW9zx}@P#S)Axt^v8xyrBcxL%_)w6*13 zZlp~^mcS*DrAJ@6t4%fU@_SkXDsc<1=jk~FrNX?+A80?0wXpoTg!NbU9E8$T$E(wH zImlTa$D?#@0&<S}cf7Krmj@7fnwCmb@xd~4!LGKun5#ZrAQS4BN>@dpQi^NuF6Mev zYFs)~X^2XH!iUKQCJ!4vyG*5-!eq7*yg7vZP-=R1xq{|}N}9skS7I7O>Z_%^RTzw8 z2*R5~-wFvx4|#T6BchTHoTU`5F+n`LB&x3s9uC`EWxlfqo)<&4<JB3uETYHp9J>a8 z8Z*xD?Ra&TUN&}zIv1#NONhOZamJl}3+_Tlj%^It>YAj;RQPm3E}(L$!d*fdl$zT2 zIMThczFE_+@Z7vcO@$JreUB5}1(mMxY`I2l(6%5`?Usc1O=PBf?W6NW^oc*lK~&$_ zV=d~Nn4xtv!v*k$CcgmQ(kREO;%V>)Rq^GIHVj>rXNH#1|IRvflwL_12`45ml&Ez6 zh0?N{#1y<#Yfa-a;_<2!WbZ%4T>5FJWI!K5q{iKNp>#T6L0Bt7d+7XNZ8=SR!vNR9 z9NK#7e&zb*L^@yeq}_t)gPUZN1>ITZ-UXJ25NX+h>6sdF-35N!q~7902d43&nGk8^ z0_|#z_~8Xw$YiZ4?pAe*d1HZgYdxmAfS#@=EiUI5-m|bt=u0{^ZDGwKI(4yDOusW# zKocMD#}b_%2t)p#{ghZr2=-KvG#vonaVn>i>e?zv^l(fs>r^A$YS~SyPdWU<t1Xl8 z)uoTHu7;>e<i<A1vdNj(iUzr{Q?hI#a{S!yehYkP0@%cyC7tj5q-yGhp$BmFB05$N zj*r8s2a(T7rW5L4oK%HGiO|obTMdG7Ky{BaGTy;fL4CW)Lg=SL{}~;73wpJ1svYR} zTQY@E-(@lcdyozJKle|d{4@d5EXx0q?mq->GiCD3T9KI$%t(;bgX&M{jA5v|RueYD zlt(h4^!g&muCie6{|V_U`^E2r%T598I$}SA#p^G^qjZ>zdIQ7t!%5aCyd|>(4L=9N zd#^yYLb@b6N@+D=E4cPavGLsuQTsZyGw2SetyxWwTxb^|HQtVtXX+iDl1G>E3zKJZ zg~Ds5Sxr^Kc@WO}C+xHidyCR!KpKy?5Z07=@wdT!+`kPirCBY=4z>f4O@B{3y2UC; zo;wH5*Gc{;_I{=YdPHLVJ@=s93sNqwK+wIW%A<Lk*h`RY?i?SU_BFW0fty%A0o{bQ z3cG<)gwnYeOt`U%6EJ{pl8jE{7mDGh(O{BL7EiQH449Wzk))8hC^*H#gP`$}&Z8_E z%r<oJ?mlWXGUvr)->Pkd?{&~8&|3hiDCgdC*v*$NzEHrn<2LMClyL%mpqGPXcONNn zLH`bg^Q9Bf^wKKqzH=S_LZ3{*-U%f3VS9u!?mr80puhV$9p&051WonV*h5*(Dr_qe zi$cFDTXBh5`RUsJEI7;EwCpNYC%ZRVR&(?AucN!5ypgFFxjYM$du54j9hHiI!j=X* zZvnw^aC93G-b;MF@ZNqwsdd>7fEtnE+Q)wxCT(BVQ7LofXnACNr3?}p-+CHi@t0Hi zxE*&Cnsl(j_66;_t$w-KTLH1vE8n$MbyRM?vU={)7AwC4FgbUHZhnaBUv@ve308jl zq0qRZCJzb&Q`3LFpk3QTkLu*#Q7h2Bin)y_-z1Q@Y8e(?bw$p~Z{PcOZ8Fb7B>#dx zbAD#K^#$!}ukYNYHP8T)qul29+=k17$P|lH@GImvSK;j1x4h!}+$A2Mf~|<)lQ#l3 ztC$KzN;UlYB!SX)id!C0FIKF3LAzqx6;K98+e;e`U<ty1N0RkVnt<whi-Of4sTL6n zmet(YzLV(wT0jgX6Aq5(s9b{XV7K!gv|dSO55WIu>HDL?er~oW9xAKYoAs7jJqzJN zx$A6QUeNwQ&O)y5aEAgyp+k7QI9P2C7HyXp=7P^@xb1GMK_<=`do7?&SjDy@EG>De z)5r&5qbuB8qo<a@#4}I1tOn;7Xw?Em+V~{KQ=QxeT99k>C{EjXN7geCJ@b{kXTq%) zMg@0Bw85ysx?ZCfb<^m%?ox~A&?0}+Qhw8pb7&8KkE+e*jJm-Y<*|#CDE=)cQO0lD z!{0O&4z2zaC(%?pC()mrQ7^A^63P9hz57jD@tYRLp$$FbBvSr8N|ZCI^A#tNY95Cs z>l!_P-^fGQYVaq1%FYS_bq)NKQymhj3pa9mQCETA=w*zo=Q;e8<M7lr;7^UK<Nx98 zE#sp4!meQv0TBcd0hJOEP`Z(t5tZ(cPASPjhHgPYr8|aFN>sX}OQgGN0Eq#KK{{sO zIcNNPKktY4y+6EP{H@u0UF%x=+WX9@&B*LQh%2ReRc8#2<{8iJVveIR05lpLjldyh z23#kWJNFHjOK_<q`>1O;aj6E%Wcsh+CU?&v=IdYDWy9sqI9h!tb<IN@jkjDz^)HRN zs#EH3sswHqWn3x~n=qrBxKyH3%r;kkflFn^A%^qvA8?wDt2&AQ24r%7XTZ_Or-DXs zO?s`=Mr63`><$UpxS<GEb*tda5*V)JfUD#9L!pZXxNd#hbZXea#nfo=HH{Kn+^qpC zsmH*;?qPIQ-(UP~hy`PAoO6bPvafecYgoV#;Hz5s!GA#UACUhCWdDID|AFMXkD$!0 zbBoAO(3Sdelo-PYAVUanko*BY(cQUr!Qb%|H2MJ3F-rz~mBs)ea0y_C5RSC<k5v7? zk(~8@MghbcdSF`%CqP_vf5fq*fK%+Slq3eu%QJv#jUZse2{h7=BdhiTKdpJek5hh$ zBkOj0-UM6POn%1w)6>G~0RvLK4(co}hco_jSPc$i%XuuE9oJ$c^<Pe46qWxt6Ms2d z;k^G^P=8zI!bNc{82C>FF4ws*LKoLEd+$Gh@ezr70*>ap`G4Sez=7c{E@_-Y;~N|> z5HbDB(f<cz{(<Krynnk?{sH6v060J7xZy-jNnZU|AIQJ@oZ<{^r*5Iuffr}M%0&TH zD{RY{^8Xuz{0ACO{3(DpX>Tref<UHt;P3yygZX06-Oi0KZIn0<o_dV|xP%lZ=TyKJ zlBn)ood>|)1%|klLNHV+^7l?S2-4HhjNq6(FOMzK<LV*#u*dK(U<H9`W}B@(@*1!c zh_1i$2-q5u*`}`@T8*p5P8ydfu0A`n{{RLD{8VXH&z^!y#6;Q6Qw=xU!2WwfTua7E zHg3QsDgQt^2#N>XOcH?!Xo7Uum;2rVwqc2xWUhR~QIX02K-xc$`VVA)pcsDE&qWS+ zNuTl1phr?)yKr-wkHg9OIh+2KJt8W@$<{#QaUJlp7%oO!NR-vd17M>KBP8apmXCR2 zC}5<2E5A$<FyiI}jr%W2&3{QQ`ghfVde&ew|7+m2@&Y6_X8l=vo&rTf?f>FJ12sx- zE4K1t2Ri8dS$cpqX^Pr5)b|Gt5pmu5u3aTi;?x9U`sPAh4%&$VH{LAE=|jMNc4+@D za7<0q9NQ+Ufo38G_Pkgy6Jmc@#}>yxr5_Xe3?P%Hv2PdnQkd{N_e+#(y>O8}Iw3#7 z=ywy$P4tx2Q=E4a%q2msfY=n0TJnIdUD;zO&l==Z7$HX=MKVc5|J2RXufqk;Z}g$% z$tSJl%O*DY@hf4fDI}*T4(-q*k1s}p#g$xYuD^`}FFXh>y*>#>lk8lmvh+}<v(YSE zr0a-eiaYW&Ur0Q2!}>%5U1T<UIZJT7^LgSjuVLbvOBZO@vXjC0-vRJr%6IKPs59)) z<Z%kNkai#X*zkcmOjG`7(v{1YCc*IEr{bZYz@3<_>VA1pJNt7{v5yc)<JX>;m>VEC z4zS@GJ8+9y0s|l$nf+Hl8fE$UI#&nKi4xU^x+bE4&hjVclC@w;?~^^f7{FdXY|p#! z2gvd8YG8W>q)AbBD;((tIsR$@;sB9OZtb|OFsS)e%Xp)L5KIkK2M}(|P)z_)gKd=s zMQ#S6pls&nBDd65(3tTT`}A?p*q#l5&cQZRvG#;`A<i~F*!B}_Lj!HtU@$fWK#n+1 znIP%~RVV>oo(pJC7BH0uni9zdOu<1@hM*Nz&_E%Ob~+Ul5dlMcz)%Swv<e*j9xs60 z7r-*Gj8&?RfRoXi1&FYNA`;-pNI((eJ^!f)P-9zrqIRnV)KL3kKX>>Gj1(QKbUJee zj7%l{HmJsa2Q)S_p-m~EBeKrS`PVqmojKov16`T(A90{3bAAy7kpL$K2LR3x4gj1| z8~`|6pq27Hl!qkfgmM?<!3=^p00@9U3jiD-7y*Dd2m}Fun}%`#h=48dU6d$p5^7HN zB%;89oSf{{1%lu$0N#P19RP1YkPCot5Uc<o2m}cL_yB^jlRX5kf+pvfqD5fva7O@u zQwjGw$2ft7gj<|rVPIY0Z~)*q_5i?fe9p0G9LEL{wF)la8qQ3p2M(}HG_B2o(x^r* znCmufavmp&ij#vg?De3BHa!%a9Ld<GMmZcvY-;SlftaR70<c!ptMh0DuvThTCs}*A zW5MQg(HTY`Y#UhFK!I!w;y3V^2K2DU_+_Ip0Jq?kPEM^rQn9)*s+k!?VFg9-h3B|7 z4WMlU)JJC3_P-VdMe1eT((z%SZLiSZ;zUUBpxiTQ^v?uKM5H}Yv%>@yJ?e82+?*JP z0J%j<P%cx`7}aV6%0cpL``_|@2jqZlgFL?N;LtaGvDZO94B-Eg0QvJ;#;7+tjOX(w zOyFJKMY<Ir4?NES4n^>$ABds(vOz}yygQd@(xivqzX>3gIPk{r;`3v--UQ(N`9+kX zc8Ae>;H-G@IreXltXppi(4!Vf2;M?spmyr?aCRV+^Aq(LzXvmLpUC_PxN9UjV#yO< zRR`X*+sH|S_oghL$j11SfPP8lo97lhGQi#Kvv?rwLtrZ{`!nDan+vE8M23K>k`e$# z6{N@r1^rIeiUDrFDTpul^KtV3^(}|X0~cXbz{~xqp=0nq)kco8AhHH*xEO+c#-W&} zpQ!$##UVfh&IuUJ&YlO-f=CIFTh#$9COyMFxG}j2<mdo%+&2&gOU4SuaD#QphT?p& z0=fGEU%e4vZW@3t3ThYuy9;LDy}3w+0|7O_h;SrNMW8t?3@Bdgf9$`4JpWPyVL)m? ztp*r6FHmJ%JkA9Qlm)7Xi%)(!M2&kk0aAQ`6d9n=BY+|a8rlX61?HLsbH%^x0E>|i z>b8Ir1qKEG3nF3x=L`rUlLc1*5JVRa1SNw8Zv&O%2S>~Yju;@WngIqc<o*-7i26?m zNeN^Jh3bKM#|e3={U_8}_+LCrHK32n|36{pjQ_$O{0r0gm;cj$`D23rU()t>A4LIU zzLg$_26pF4g5^~O)IBwU=rquM4j6q0oOdw0z(4nvfO|P`vbumWM13ggy+8v|+OBTr z7iz$*Jp=KDTjVudkSXdjaGU`Ca1GC6fGYr?!30=Je;GrCCr7{|qKoXAJufz3p~-ky z?@0n_%9(+S2V=k!XDx6rdjLmH$QtC!#w-=cB?1m%UGNZM_*4s$z_S1CV)+~Oe;cyj z0!Jn%SZg)lE2HQ?FWdjj{qGG!obi2k{*$Kz4m4oqn)=QEpAFg7;8US<#)hX;5U@De zM-OIzSp}zmq6Szi;1s6=`)B@tHSGJjm;3CS^0Z!LGnOIdvU9&pEC92Uz5#Wiz?HP< zqF2Tf4yHPX^0dZ*6YRbDio%4Bc3AALArQCpq>-l#xqmll*DWP%XZU+;@mHfa7af(~ zGG3(vpFJNpGIYv#y3KY@sPHgX{{)`b-FJdh)QC`@2eXt~G`thF)-3t~*=VnR_4pJ% z{R-eZa$!35qF8uZ?Ja<<<&^A3Z)n<qFt+U_=K2Q=@dt8}$zeO6JmnATmp+1hZDlBW zaunDXBZc<7PqQfV=kumlM|RCs-VYs?0}|V~J_OK52lSN!PY}b{oheLi0Z;2HJ;iuh z!(ITJ+NpU5WIQ$MpB(OGyh;M(^^VE=+c{luv`Qo=Fk+Bj<9QR5x76hM!3qD{)Zj_= zp9D?uPe6hT`11TE{2j;*+@zY+v(dzy0mJxCQ`|1Id=98?w{JL8)IfpZ`~11Z(;5sW zrz!4`@l?k}HaSx;fSDRR{r+`cM1<`G>H)j=FBpy95d8p3!Haws)`=|zw$RW2G<voj z1>A#R@>~GbpDXFdwGaQLg!TVRX$W@WQjQyqHcp4^qqLVCYu=?X!jg)sQOqv>7~bJb z!w8QB0M=VHW&nX0Pr~(q(w`EqD8!&hF;jG_%<`$H?r^4kgvS!Ii(kD@BQiLw^Ut4* z94P888W`N6C)&4xoQ5B@<hOU={|$Z*2{j$COveWbJ{w8C%<SUjtKJAn4(nV5TIiz4 zSD0Nqef1h4X<?mne<)5)<$0KGI^<S1vH@T8Kn1YJdSFY(%7(ttl_a1{E{}aBX=1)E zQSKhRH+ohSsn$Kg4y+_`2&-vkx6JZyJ>YBMMkZkW_i?zdA5i%0rSjc_DWhj(?*_Ui z;NRcT0kScIzxKYrGrEzPS<DNJ*45X%u@NZd(4Y2`)0;fZq8-3(c`We1eK50kB%wAq z0V<toN^$WoW|vpKZjBi|GRwb!Jam+%Z2&r+_VuHui3wZU*gLpx^o%DG);l5kilXKb z^*PJYk7{6^A2kY_&j0)`=+=A-7}W18l^NFA4pgD$K_db{f22-MO?a4Tz}z{<{yfY? z9puX!L^bc|=m5irU!fp^#uhUIC3D8;HTnZ3YxqNX;*CcW;{z-%7ah!f04?S39*h9X zAp&^%JOE6%s6US>bU<bq2^cn_ZfXY5G4$kAhKKp+C-2HeQq8+r+NRiI8o;n9V7Q~b z7#GBC+62@Pc^u)31#0NCRK0sJ1FE)P#GL)|zy&20&jX7FhLLVOj|Q#Cop=-fXXOP3 zL`!OW2R2|3bYQ|1D1+#^fN21*MsQZ{1OT-|9?$q<f!f(Gp}}Y8H6rKWWlqdfa5yiy zfTz0=0pMlM^7wHQa6*(T3J>TTe-H44DK6xkRDg#;g$lR;!#GXg`h=yLEdiwAdTIck zn9v>YolA1I0t+C^FB+!<uq;&B0L5R=fSc`PXYg}BD|m6k63Uhi29trZL%3iC&=a5$ z4`_6L?27)|{o^90juP}Iz>M=6rvaSTqv%q@!KeMp9{}C74B&y7MBE>+eKt-Re2208 zVObRXXcY7Af@OjoY{*FhWvRMgxGVxE#-Ir~wqF-Jfq({G3I+nov&20w&(u{0JiYJw z4JxE1U%gno4*KIi0blsAu(R3YUMv{y=7R=Rm4LHpIG|vZh!F!7dTs(|c@~OumLyhM z@B+w1lNoqfaUZadW7&p_Py`}k!H9SV@B$I|srm{oG%G;(^z4`%rU2xY?xNOb0E7Xc zqt5{F0U+`Zxa*tXy51iHR}(-UB323O6Mh^JEW-eHV}fJT%YBn@!1y1SE5{&kEmGz6 zK-a;*R{F|3IPmy)7j5N$XBYJ{=(?B;@TWl&uO8F#OHyDqdLCW<C`ED1a)mYYUKx9k z|Ff)RzG0T|XM<5!<LRWm-^5%!rMMHDEg!{qQyR+r*oAbRLY8@rXg6-@Z_|y8UN)&# z`77ARE-p`~`zWQMHxOy@GDpt_$t~IPEj2_a_VHhL+3LHh02C7!S!zd+l9ZMpa|Tdy zSW%W5!T`m*t0q3;sx&k@K27b*==&_jcM3fB|LV%R@E3ey3-Z5ruO?o*6o{7fb`dLh z0eB5xTUP9rjm%<X5v@txf5%L*zi~BP&ig*#+3miG(v<wo{f&2Z8QLe5(oOyiG5eh$ zW1~Jrdl6`ej5kyO2L=3H-poT<+aP~GV~<z{^ZP;mSRaoV9GHteivA0Njx<Cr6JTps z7_uC$Tsw6OlX^CF_16AIqW2qZ4M5E4W5)y9_d))1m(`*<Y?#+35{=}i-rd@_H_l|1 zx~y;otA6opu=t`Oi}81+WKw|w^IGUBFaRt($p3QyK!>t}4ZK#rldqnBJb(YWDN<P) zIttY%eXVi@bK_!JxSOydknvY$y);MsdmNDQz87=#nCbleyCxmuX7WF3$ZUr!5}=`r zD2GTJ$MJo3N;3NwDSJOo2H9QtIZe&!IE0GFlWs14j*Z=?$)d!A{(zpOYCHc0iTlkw z6gy8bap;+y_2nj`pd<EQScC9fqv6n!aDfa=C#z?`F6BBpj2#LmMrLB3Wc1fuyaJJ8 zH)3?@W_RLUO=M1@($0Cs<KJhtF-oVE&rZ*lY*UnOGuyu1KdKzzNaAxIzPpZ&%Xi~h zbj!n+_evmJzF7}-v}8yZskwqydwb@&W{Ut6;suIT>63PnH5VbN_YP{_l;yPg2}$2| z0kT~?8oFZp1MtEzD@U0_oV0+oO-&EZ@dNzk2baO4UHO2f_2|tsCi?EbteKoPP+ZP3 zvm`ST%ty7I9Wguv2DJKBXiN|MrP1ateaCrtneBRc1H})dtk9^XOBxg@aAtIj=lLI+ zG0#Uwz}WNy;}|8+NL**pe}-st<3J5|8&Q)S&hm5rfYY<hpJA?4<58wcx_wUd^14g0 zko>W7THaw{ka!V2=NVJf1sFK(0Eyf@EoUQ@V7D8tJ09p(T?8x}i`M;NHjV;Hvp+Bu zL9=d(>rMru2UsioYNg$mWKKnSY#Fgq01-<B)*u8V%7VkZ=mk=Xt^zu9_kr$ourT7> z0Gf*j6kW@~)Nn90cNvhH8?07!HxN?2dNV8DDGtcu)N|@ZvF;8k9^w?iZjS{}ksnm- zKRuyX4+nMFL7jAP2*#jC4{+2TOCS++HWv&g8~};DAh7`?`hmnFka&b6LP15aDBh2O zVR_#J2O|xpZUIw=S^~ul1(yOtBH)an|I|EwodWER0lVd_fNr^Re;qw<WiXlxjD7`n zbAbt`K=cPBvV%J8piTx@=8WFc6wdXBV0XbcM#Yp5M;4@c`QS>whT$h15d@1uaDF>@ zeF_XlS&C-l!9m{xeNJ>r1E6myXdVBfhCpzRS~q_#>@$P;!pdp8hLu1fZ=VyXDlbTE zkOYZAAhCP%XW2dnNc>t(8$412YVVcN_72;FA;n-wF)joGhP(zteuCO;U<d*XF$9S) zkO;#Or9dKB<^6tu=n4UcZ#)%YyFLeMA6bg#<sN~9MkdYOPD6r=`t-58h4U${%1@^v z?AF^rVw9yQVSW@yge1<DBtrT@;xqR)gIaKauI6CKeNbC#D#Ct!1PmFl6fMdfDD$s) zacbngWN<18b~lyNP7Kq49xvkNz9%+<-y)})V6*_(%{dj(vW_cMJBYr5I>lB%>SD0+ zjWK}7M%>|{1BQrzArc_54kV&MA{r$6M*~EEoVEr)tbGHHe+euU<#<%4A`~nS)B-C% zzP|@Hl7Q9Y1*=yKI&10&x|_hm3@ZXu4;u+a0|)McHn0ysEua(V1@30gUG)KJ4ov7k zE)+}*+&%}KD*bIb%5NIJwEPYNTp%<J4E{sKkMW~fPJwHJbBGFo-;)5n0MoaGz;<h5 ztU1<C_->%~5c_`U!O`_BJb9|W-NA%w^E9Vzr)LI2mkK_qt&wk_S^kH|fBo^7HOf<# z;Uj{-y-`<@6CeM^KHF?eCM2C*7$062^~tbNwDCsf2qPR%2Jq`Yhz{C!UbxriiO$-4 z^>{hLtfK1OBvFoQrPY-vpE~c?9$7Tr9bK8?BVqMQ4U=^(O7%YVqlOCyUc6qx^&Sl^ z$Ry+qv<>WYfmfUI+I3NudJ1bVSdRV}t=0IREJCH8-`b~meseuSIMjQoml)|O*nu!B z+Gk5OtY7KHN5XnXkh|8U)j=nN8>z5{jDvbA$F{RVmHLFu+h`AW8CWbfSahlgUFaaX z=MT&G`8w&>@O&!<X?J)F=H~OdIwT#1Z9y&;+A{t*f0=nSUIz2DpHZuK+aw2$Oc|Ks z>v}hm;D&>1OASyOHlKip%74xcCVv<<l>}Eyo13CxZ?hYkX!>`~HNN-GlsK1HYb;8m zGvA`>BS>K0h+B}OJZk^LJSrkj1T`hB{FfeV@7H};7;w(z4x{xkq`FvfG@k94$@7e_ zcKqWCtNWFU1pYU|`T#1%9rp*2jV(RjHiQYL7omaankmpea_4DB^5pu%CWg`VbBY_D zbxG&zTN=~InevM2YTb2t7<$+i3CUHe_frz}J_G*W&O=_Qr9Q5PZF=?7QHhfMY!CIC zReGby`lsC%^-p^^y+RWv4#{|7%k&z^eu=XBBoFPAtLU}e0wn)RSc656sAoq4de1r` z^UylUbT5)O;8(i3$!fY@ffxJp7wF|~J#>7xC3>{G7HOMci(F5*gS?Y~UoXg6-cZhg z^0v`k^+IWH@2+Z7d!uxyeNfLKhyBG|dpw`V>q)+rdT6+P^LXV}=Aqzbj2`|igf9C{ zir)Q=hol;tLMDvC8@_(otN;4d!wdeEq`_;f9Vt8()nNa%r+&ju7=4=Rs_ppA!@{x5 zL(9<^y*e#~PMju1k5A(v9V@4hTb1wz3A?>|340H(J$sUdI=irjI(tT+qtQgKqj7tr z-@#;E6J*>c3o_+X(pYq)?w5Mx>=$w*kG+H*I(0yop4I@HSG|yw2X*xX2XB$Br!UZ5 zryWSG11sbRz8z8!{{?yq&!PcEsC<~gSW<L^#v7@pA?)2b7hJf6ZpSNcNFq$zXpl6^ zIO-0ptCzv2_6{TBIy9l*DLtAFv_fv++aqc5Ezo_hEgGr`RS%I2-;0j=n{APG_%@#C z>yphr0SgZ3;MXW`MzS=NpU@5utgHDgvIC#SCzBL2dFHwxfG(HqJFBPgF%|mhZ7Ra% zV=6p;(CDPR*J#_j)96UI;5U)H<v0Im;tXbyarAVF2WD&WvHDx-<XP#T(jzU4lp}cg zDt0)$;X=5>yGewdwz#H<zt8rkh)wd7y-QjS{UW)mHF>jXHXMC*%9S;Pqp4vk4JV~{ z292x<tL*ZIKB$xnk5?GPsnk^#eH<5BG7u!KCgbzBuOc=;rIrW}xEgq*e6Ae)QP|FA z>*p{$E-*4tlp?(~N$M0O{B%05Z}70zTF)o-4l=`Bwt}3GWv0CE^I?s(t53$Ak;b0= zYMRv2t#)gpGYi4ShF;~Y)D-zr{m7rG^MjV<l7;p<S+;pfg33{3e4N7$dxqi@-=6LD zqStr?-&3b{RZM<UW<<=72$X;Ln)2M(K?iQp_uHvVzpc>zd?7DIc#d>WPITnkigilm z99?-N!v1`D74gvNwf+RRz(x)0>VQ+h35jl>shGe9ylE<sJ*DZ-tv!znyYrTjz7WX~ zhacs=P_M|TWK^n(XJbk?Nw1KJrN|1awV;We$kA785~zUTDb|`ZAa-gx^F`I4{8UHm zy0t_=-V`#^>U?E@U*Z_v7kTb0IA>~ReH_-SdVaIKylHgvrgmSEw52=AY2S9s{c<_J z_RTxW!af8eeaIH&ay7o5P1;`mGXi+ud5f>0pq?4oRq7P{VAj<vvjVY4-%_8pcGBHF zM6|UktnN5}5MxfWizLlQWVfcQt~n=)v87o=UPq-awVqh(d~fb0qe)q6V_kjYTp(7e zCCu)|40p+&Pa96LRNYeM&v(m99g!I6yOW->+S|_s*RhEds}r0^8%cq!x>6^@CBk~W z(pgtA{hDxTZDAVOn3@N_MQP;XdRd2V!EJ@cjHp#aljH>ZsD`-URze*{RDHs_a(jKV zFJGt7a0^U4Q|hf8(u5lu2~Tvy)G%#}ivEo2RrzxZ4woF8y{RTz{Zp{d@edc=N3vs< zVnEpA=UyMi^K}iUiRE@=QnJsl+*M?b-L?`lJYX2cAkUUU6!&oTqvaQ`M=4GW3f8G| zar&#JmXThPDfSuis|bRw%jJCfmKn;4$@#IltLqhZ844_W4%4s<CH555$ivn7b?v<; z;&T}GbXyZ;o0OzsvDFpVA}`i-7<Dd5?=ROFFJa>sCQ3=E6K7vmBN{vFrzT*?-v~?O zHsS?x9bt#uLO3Be5VlA(!V0p6uz+kL>><Aqu*7|CKE@+%fy{kw{>(#e;mqq_QU{1+ zR>P#Rt3A?jy}H49$;Ct}!t<o5PL1?JBfg?96HojH>GtNO;eF)6tBBlS>SU{6>J&yI zZhq)>13P~PBjF~}$leRWBZMiDS{ZWT;W%lA-PXc-6`yAwH(7?2QZQ<AccG?Az_YQC z%*4z-m}cs9fz`cvA=iB&`imp!dk46DljHRi%bBNndUplJYMDm3$y02xOyv%ImXX&( zdn?nK_8f&QUq^&;m32k4iqMyh9$qh;mVU}2;rX(OUcfb$UflHqy@=}<dWdT+J-=%n zy_jnvy|8N}y_9Pay`XF37GrI5Bz<jXByH`FNXFVx)!RCil%X>2HRjku(KfcJl~9#Z zPEv$jU0dD^vLwa5-MoAg7TQ<Jc^zRNAnMSVF68h!UD6@O*lY6U*_pZ07DwAx_p!wo zV@J;>W5473bw76=9+J1^PYZ{tRR_>PMv8=e6ODb2>FWA-Y7W)fP%{tPXeQl4dCNAg zo4&Y^^ew>ly!(RPc-L73{WR~y_aYWM^X}mxnk8>KAUxSgl#YMIN$5o)7WGcdeTf3T z#m2HaQ@}z!Y0E-Ar6R{wiips&6J^w|Gz<^lOk_FR(qUnrDwI<#oe58~tELy5a}ssQ zoAY1hIxCKWZ<4W~rs?JSt4HK`N(5zj$|NF;UU)FnjBX2jvGbs(nwpb6n3<DPDf0<W zeQ`u5Jhm-tS3Bo3s$4hlS>JtL1HS2>y*iDR>#G)&<1QfzH?Sn9tNg(rWLF^N={m+B zAYK+4xm_I^kzq;BDAmru@BKx}W#83jbS>p@ZK!;cKN~e^AvaLj5s?A2i7+v<i88T_ zVr=-4!RK8d^-6gxLx`=6J!-u=KRm@!jb5-lL&W-vlwYr_&(GwP!(RUKO?`{i$?}fg zN>q3X3>B_#Hb7tAnIUTZUMiqh(?>dB%w&>rD(v)Zs~sD+$%@t5%*ASLSz$-ER<MFw zRM_&(1T1{>ITpS(hTYqmJtuHCxnTBDxwz@$c%kVtH~FQ(-@y`gdj<xhljuSUxqoQz z+SK;xnOr{{FBRN!w6K|)>F6)@2v4_1(@D(tGuAaDh23Ksd^T_T3{2)8B40iCng8C2 zgci+1_?%+>oM&&H4Sp{;TzoaM#j<2QE!WXk78QZ8U}O}Xfbcst8uK~5Hh$z3<L5Ga z^KA5c?&12M=V!ggoe+t}d5EZgte-#T)*1Sb))vW9{>(*qrmZO*w5L(XKhn<&V|3Pi zeBwTIOyK_KSmto-kJ6_7QquGUyY?0>CG*+p8~?NMHwuSa#9EsYlzG!0?8?<>m1Nub zOuim}KJ!SdbF0zW(3=zYt~UgSOT=ND?39U<YV2H<nJV9=2iRo~!`@>Ld)~)w>Qd%U z7PG5X&MT)mHKjiq@fUrSi1q(PcQ*eXzC})nn#rZ4nY5y$nPOz;DTS&S*#(#s*#+qH zlwBAW&7arK<^)yG#s}#;*|qS9VlSi+D8o1ueii=_9F58oanGr$0{?kV8u^YSnB`aN z!n^N$kC=J>KR-UQvyih(il8qrMx*_p^_l$}-y`?Pzc(6Pswl%NNWgE_;R!VGy5zKi zpY#0Epbk^Bfy^Zs6~2r8<!AO(?_h;^#TDbPe->U;M;jsn%PI+kY#s57E8PPp4C|U{ z3#AtN#vxgD^p{|jWUuoISr)d&`FB(=<MrLtUYNUb-IG_ED3$$o^BFN)mTE~LHL=K! zbP&F8^1@|CR?p@RVn~+4)j+kIPqM6@T=7l4fuC8)w6G__G595du)--DpV*N!ONEwl zu&Olhhlt2vRRn&8{nF*F8PCU|B9JV5%1iV!ZyswRuC9%;5sKRruYG#{y2#-ATHe@e z%R)TYiPS(7d%TARv}+&T0y7L~)^ZO5kp_%>FY&XYM6PI7QVi<S;$v?TuVsF|jDJ(u z%<L0c4(r|KtY?&bYzB|LKV2tPbq!>C&%-A)gdf6s8u*a^QV4s<W7!v1!sWwX$2bz- z9@8O^tsV>HcXYc~UWga&Xn%RNiaL61obYF*Ti_o@W3wlQ<jIrcL|l&eW|}iMI-O|o z;%0s}$GcxqcFey#GHu(u?=Bua(tpXiLJ-ehf~3>Y248SStofTe4_{q6QLim9@9ubf z)y7wsE5ic4wqBU|`&_23(0%=OOV~`qhrSaAyA(Eq2yAE|xK&a8nstlb%+`lSZybrA zSbc;icXml{2y*4xj9hc~A%Dpie7vs`pPN(3?v_*qlihOT3v{DbZk}qn{6S)}`IL;T z<YO?2!{!1WLi{-J>(fgP+cz$=(leVWh2Eb0!eWL{C8*jEG7D8DQgkCM(XzShlui)8 z?qHVGkLSK&WERzrfB4(CIh!QVulB}+37KYpV^X>``R0~L4(HF=gml}V@u}#qFUZSL z?zmS3c1MahS7hVUZLD4HknnDP9|>95xP6ITBINP&j;oKx_z6|nDV*692>RJ<n``dV ze^wO;+*4p%P%8^ey-)i+difGfoY8`2ERm7w?(4^zmy8r@iR|JU33TK92`6IDFHOXq z<BN)$JC~1eW)+Pf7IgBD9+!-CWHoBpJJ)FuIp=GMI#-W8b}k;dedD(f{VclTs*tMz z34`nO6$bZd5(YPMJO+<i(#ADca>@05?&Go%#(T4Og7eeoub8@>-}arW!9UJ}i|#n0 zUf&z`B0VnJbKUv2$Gqc*s$2-|muQYkClAgP&%}p%G!kccoL|NapV-{k!Z3Octx)aQ zCml7zj17Y4>s$!}T-S+S7z;FK8ke>7@OUj0^SoU^^RO;t@~kY(^E_W@;;Ga$N+K-K zNV19j)T2b~Y85+LS#YJUDqel!KCy>Ng8T&Od-uLXy$Q+p9^CQEMXa%F20ZN^g|Q~< z2Asm%)At&t4^nbAPc`j^BNU3=>^T~cg}M8()%Vx?oC;#U7>4ZYR67*dR!gpLIlUd0 zm{ZKLp6kx_sC%w}cKe!;>R}&^L?0?^diXr7l(!xx>Qc!ikAucQ6t^GvrOnC>-zQIk zC}iBPRL<b^ORax$$~DF6m$4aRz<QQ5-i7y&N$h^5LZtlka&r7+y1ZlE*BtjbVa>B` z@q(uw!8sdFvEuI4@(Oc~n)%yg1#pj~(cC(@-_vvKZW|2Iv2~$2+jA_jjXuhXLzD%f zCaede_Bkfr>7$0QXj1REQ8`$Q=7C5-F_P(Eq%P;&J4)y=I*#x+zGf=q{`FzG``Hk- z-25B1&L0%-#(s(k$y>`Ye@NIB{~|UdUoR*87D9-*ohd^3l|r_r<nY?9Od&SbdscaG za!Makbfw*lEAzf#Yeb$P)EFw8I{1`bWz#&GOG<e-hk^QGU8qXxY#Wox`eJO};g0-> z_i@g;)MZW8sA!>Vxo2gE?-XjJ-V2rIE2fTVvGi>h#I5cN$ya5t**d9(#ZQc|^=+(2 zuO7K7ka&CNyp{4B{*;0Du*pW=U{;WM%I9ZJkjXQHVI@}Xt=yQzgJFdppF8*Ec;hNQ zCCPAXTE*!cy2yX^uE`l|kQ`1mf!I102WpRU-Y?vsib-pDq4^5NT!=1=71<w`r}f#$ zQE9jy`?XqOdUl36VLyY#alJu%db&<;dc00~8d;|~Jya*lv1QD=wTabsIr3*pxD!~> zGx%)U@g>t1|9wTD>knf)qItFiEfrQmjBJ}eJ{C87kVtm7JLhSL;(EzP*)M#fN^+!X zti_9OwWo;W<<5j+A`fht=+SWx(%0gcPfl}`*v~8#p8L7vYWZEu8S(p&E9lpqQ|`x+ z3-`0j`3*T3K7pvQ24vD`s&GW}<cP%Z<W)uU<gzIyX=&v=wySkz6;}G9(w9(_M=d|0 z8J4?IU^N^us<>`#7onYGz&oet$3dWFDu3Yj+O-Zwxvn}-Jv`U=ez>9Wq2^~;t!oo3 zadc2r*L$$~vG-)Pp7&_AviEGY=IJL`#C{H}Vc%*#U-LVfWZf2e&u^^w{k~fh^{^=R zW-jb3S3bsneb@tAmScl;$wi-0$wT)!6a6=J*|4L<nx{3U5&QL~4f{$>`I;5;B<nH( z_psAV@AnNasE5&5%3SDazI^HV`fw(;JSPbY&uu!Tkq<cHO*~&WWy8)iX`U7bTo2zc zC8s?IxJHFFeav_1vF&5Zt3(xnFCR1iz}LKYCz@<MkgJohH_*5F#RGCZqV~XaKL2Kl z<L<z{l0SilJ7ajJPgVj=&Ej51EZF0lzAYyAWo+axx$X-$^Z0x>nQ;DYGBJXz_ce^X zHxy0E71T$V*y=%~(|kmz)3%Dgv2cc;`S_q2RU%_Rhq+hCkKrp6!#v=|^G{186}GkA ziK|ea6yPTEPfa9;Dscv7<|nl3*ix0a83-%Oe+_mV&UoxN4NrdbfUJss^mY~PC|wm} z{3Que#gJNQ+mfX$<z%4;MDBOv$tB1+f{Y0hT8n}?%&Miw_`KBVHz8}pqvYOXTH&us zLQDBKZ5_yb?ogV+EChsZkC-u9uqg|#HaGtCogC1+az?APc*%l*?&Y@-+n?f(I*+g1 zjTkWZ_NJptL*6D+fRTmfu{WEqcMZm85QgU4w1)4~Jz|z(j8x_g${to)T-(3)h^^tS zb>2iv>AG5$7*?$JE*(+Fbtlpeawjr&Qq@38BKD^}3qp@<o!NRB((u{I`$M$|X<7<` zl@=>nsGLt1?2-k)ll9-mTrnVmhSog&wb08HvG|RtZ*h}}*ttL2@+EC7A&RW)jn`9` zg?gqF=ksXh?`HB3jUMG(=DDkReJ^yhrTuBf<FjZ~iP=j!BY_HjBk>9`BM~7y9>!Es z`lllcA3mm(IKLz_5))!9x@&Mnmz?{peTYtT<<qa`LxbYqoz^JV=uYXV$-{y-LWM(U zLxe+VLs^?u+G0Q2>)oA|<f2R@?Rjk&veH)A_F<vQJlFZG<l1)&Jz*|-9U>1hpUZP? z8EpbubhB1=q#lUWHmSTT-zVZprSgQn55yDqsE9c?J!E9yqiPAx)Aa1r#v@03F@IY? z#=tN2+GGT-Cnib8K##o5K#QbfV9dCrMyeLlxM;hxyrZlqEJ>7cH-lV_oHxiOB&oH$ zjdP)9ajeAKlU@>vA>JnsAhQ?vweU9l=gtdRxaUI_Jd=L;kk{cto~$gC<JQZ~U+<jk z7|2r8XJ}l5S!y>U?u?c2WRoGgJue5}88FAbd*tc!%)-;=8Qjz3+2wjs<~t#>IW1=_ z0_JV+=#I^vL3|&5x(d0gag8zRbD(MX=MXj7(H34g$=8b%1B)XuuXeu1L@Z9QAlhKE zY|St^wzkerq2swu<zoj+GK{|^1Y>SVfq7;55Mygefbp^v_Jx#@oeS&|he!I7nTCG| zZi=)c4WJ#PJBM)Ko%3_t`6-**0+q9BP0DszFwNdwoX`HS0L@lh1b)I}At3vU#_VVD z(U+r?Ik%~#&9q4svWbJTpI?m_zb9!B+W8XyQ?|;xh^l*#>5%0iviq`i>X?`0-c}Xl z!VL6}izCUHR@ScC35bW7&^{g9u+UzM;J>@SdYfJ|f<LSJXR`VTKlT3MZCY=eaC~9f zr6=gfKUqgVkJb11@%GP?Z)irn&!V<?u@<Zx1nJfO7$qRQwxmoyY<YK(J%w#lU?d3A zSMhN`fPQUHnZ_<*UAj=v?*Wrw;Iw5(w1{BPO+ky#TY5p$5zjv!S_pq`)1x1b5YCFU zP<decjlk`${nPXgarLB9o>8}NL~gVjPrEGeKc7wB7><g_iZA6KZBtfPE5CLiV6P4< zC%e;2INIUxq`;cww|&(|e`})OF!zsm*5r3z9)1*pU%D<38a+fOy}o+;Zko(sG#Ay~ z)LiMdGS|*{tH*8S$`4q2f@CeH20OWk?k21}$u5_Cshmh|Wlb<R`R#^)jf}dE4rv6f z+~Dym4k7b2LKV9Fr-`o!g>2J^t)j}ax|SSXc0VFY74LtW7qOSMzU2GB#^_StZJH<J zuPEXrctWfr*<X%(Ql(0n1h0lqFwJ=4r%E8-?EW+ytp6h-6i|=PeH;CRq{C<M(;rAY z6cR`sMb30~e3j!i<5MNJ8x^iW*SHZ`(mm{J(H22?g~?`5-coYCT)9GPAl&j=N6q=8 zFs0<ntt*TisW%>Pu)T?fKe<As_U_{WCGj+$##<59(JU28w@%@qKoK>ekFoEmE37_U zcT8V<Ji}Hyc=(>7!r~Kof+}fNI_1+&DgK~twx5GMB+_-<92Fg(q<y%>mrHLCLc)j> z47px5wTF=D(XC~*za`U`Tq|i0<>10|{c-b&iPDwl1~1mu?gvGxXntIZ6I%OmpMF<G zAS*6T`LkUtL3*m?(|mTZ!4w4^SNB+=bj0%0vAD}?n4BBCY9F#v75H755LsbU9Ig)y zgL!N=)bGs%7Fi<H9jge8`>H<LPm#Gw&AfH8^cn1PVEocUmSs4_bgMTq>vZ#WtyD^u zMBMYWZOiMmqWYmv;;yfqTT<F3J4lnW%?!46k?p@MBazD3lr~j9{Ky`Mzt+>mbSr~S zT8+J9P*>~fsrQF#eu6T=jp?7B#ylk4pSwlrEz%y;nEB!<RQXjFWB&I+H7&_C)I-R= zui_=F0PCAiTFh(h@wZRiIHa3Yo`0Orw;N>Ca(f^$7I>a!_k=g!V9->{aSdHSwm+av zbL#Ph2rD`kx|B!goL#{5E%|PXnH{Op$kmV$?b|9NW|AtQT|)SIBg)At<z|q+kQG}p zuDlv&j1alMRVuk?26c0>Dv9|@#Z@N(?hsRi>dwZ<^W%v1yO>p1dL0$fh3Y(n^T;|i z=FpYa-=-E{6tUfkRy|rc$~$x3TgStk@88f-i&~%_u{aK<3xf7)EJnEq9WT+*k1yZe zVHabY73c_p_LVLUxX>N%(a|_1EVUHEeIGHg2hJ?NDG^~0qJ+QrzC{`|)2F_8C@A#3 zjg)@8k8dGTQ2CK<2!Thcd0V>8Bj=<$JhN^gL>`F6wl2ZT-_OEtj1Rn9h`+->+otHO z_VwCPnVmE2D;e!K!r2bH)&d=pZTreae;uN2nA;+r4mrcigGC|xOXOuCB|~>x*2ix% zq$%x08&NT&er;)Uahr^{Z*GIDJYty$l3SkM=`<o@NZ4r2hD&)W7m?en67EdS-Vi~_ zI_o%*Mj;e-j#D@!&GQJ=(hAxVQwSw(^N4K*Di*o~9X-31i891T-sbo1FRTmtJ+iUB zG?09!bv%V4O+qllrk~k!oQo<$3V7hzJ8V9~g`XkO^JdRlf2UqwL^2=|pEr4>mBhwt z=aW7p4aylvGjPrP?AukIWU4kLYsz}ps%yN6!j>MJjS`D0yy9fX*0<%{o+}QtCc-nX zbqCxRh0CQpw;ULGQt6vFtV2uS?pJ6AA{P(fSCM>jZ$<lu7F6J_lfoT=q67Skv0~Kq zR*~0X=}XNstKWAH#Te=>BFU5bi5Jr0PbQ_<gL+nf?C{XG)H!n0cjUGBIErtU-r0d5 zh?8cxJe&GL$S3KJv-;kWPe~q^^o4Rd;Q9WbZZ$EyqC5TKc+Ds%s_*&Y5?uKBhY|f@ zpYTE)T;;o65kY3EeOo?Cd?%%b$Jf1xC=;>KHU`H(#?0P09Eey*t>O1&idqQs;_!W_ z7R-xUcfL0eSiGF#?3h7d+E>14??vV-HSiX;?6uP;$yn4wvS8@NMAsX(a9V%6Q7URd zVo&>cTk?9Ns9NaLJ<{WINlK?=n-=obshu`2GR(^i5@-gh#k6;Ck$vy-aSsrhLDQm! zYTwb_BR=<TycQs68r+m#+!k{}h?(=H^cR^AYRZJQL3=$G7*TaQYI{=0s1pdr*Z<Om z0Q61v9?Nk%=JvT8UP}|V`r<sz%N<4%*GE;&ffq(*t-LgPJEkNK$7ljF%)n)ubC1_V z7uC&jzo@UsXA>}e(!0TACLJzMLj0QK`4#Tb8};gPolo#TlBm4luDH=SD7*ZYjG4Mt z9`l6U%j#p4kjd?P#XO`GE3H>;%lKqX44-vwglR8F$lTpsWv18Q7KpB<PLUsxq24`Y zruDLk2^KP3W=8YuMjuh1$nVME?Vf+Sp~3qhnmX*oa<K0cNUv^8)UNRIk}v(xGHoaO z3EQy1{1ZrDb<Dsn{qmkKjco#&sc_HlJ`?ou^m6Ds5$KbfdlorcFP=<u>%<&}3FoxE zpdaEEiH;0Yxo=zg*44m)C7nh>KB=8&*sV0w)o_!gD-1v9?AMJU-pJ_qcK+cuRe80# z5Bp{I^02zd+na>L9Zt*z?j-B>)iM6=MC&k*7(93KJ1>u7gnR-?%R=7`F)*zk-o9h> zxHI}P)g6N@rnYOYKeWy6wUH>_&u)Gqduy_@^D@z$=L^i)B$AfOucIufuXIiZ-QcHr zCa)tM9&Y%g^O%)G!2ErPve74&L{>rp+xPD+c}t_alpHL(ZxW@{{*cMz{u8~f<a^&n zA+T5PCi6HeMQq)DS!*6v%W+Mrlm_jmt6XCgGn)7*b)(OA6Ae1+b43IK3WB-xelwFK zd3S!wg~T=qJ*MWpPH{GT^`YKf7NtarGS`$3T!wi}JxS~DEK**7)3auN+rwqKB0#HO z*(<HX3y%@*k+j?rV0>smeQzUij-}sfKKhqcQ_MjRYnizhW!bBmR0jiO$oE9{xV|2u z*w~fquEZ6suJM(<uBsKzuEP~p%Z^>Y9M_ttO(Xx5?@9BlRy|E@b%_^>?h==#megY# zB9Gp8#5_I}tBrB#xKuXJ|AEd~nTd#guailRNo;dcnS+kO<;SZaPx>VJ+$A!x-^U;5 z;Pv-9bRTrSrz*ZV|6z4``NMdQos6!FolJm>ce}icb-SgDy9|R^^$UUmlSO8f?k4Lw zRfj^~hp^?=4>QZZKIAVCe|S)1H2LnzHQG4Nx9FJZR-I)#a~hYz62=;nM?td>df7xt zP_ea7h-#jHe}9GKDEhS3V%dF>z$L#VW0spV&gX4Y^kDZRmw*+{9P^dB<(BS&uC|2q zuIvQAuBC)K%V7y|opA{wyDQx*_v>9)ylP!UPwZASb`QGm?)G)xJ8@r0x?i>{cH*=W zusrp}a~J!?dO7rYW(=dQ8#A;}kri5eS2d%!EZS73k7?+6PiNS3+Royy?lJQ^&tvCx zPr4YtI>k(WVP7724vkCtdd?b9NWF|6Lq`Yb1Sp;xr$0M4oD2O~C^97bm0h#__tdR# zCW^UZ8xM_)Wryr|+rJKImDNTLkD01how9f9UOZh97ND|6=KZlZ7}gzk&54+}z4p~U zL}MkDxS}gnf4@>#X>G&)!#b_~?0%oH+-Ex#VL$smm1);Li_^nY#&rq%^Sr)sm(%U( zy#0pC%)wQAw|#77LxJ~}`t*w}&(oIal>N3!g8l4D)zd%I>DuL0LH=cjbdEKLgjm-t zmeZ+e#x<1v#izm#w;hf5sZ|~f4~odpf3EsWqr!Ff$qaQw_SOd%+cRc~E%l1X-yalh zJ3h4u6|8Y>X}hMo^LWeG-SShbqi)EV8`ns!SCy$NK1=>RQJMd6!+V%vgK#8cqwHm| zo6fY)+zUHB-DhXtW~8+y=s)>Qq<_SY8)suDq_XhGrLyrSunHq-Z^&F46(ahhUe=b= z({FA{hdvrvSI<u&gZF2#*+A&Gjg$n_fFILDNsAAArAE4#<YuQ|cMac@NL>#fDs4|r z4V%x>Z)Y5S)$X`{{OgwZ$4Pm1>ZshrUv%OHo)mpNCQsREVA)z9$OjAB^VceV8HhI= zL;4;@4&G@GP~Y%=2A^nBwJEv?>^I1iw<(?&5!)crm^oDz_rSWQR{JxhSNjX6H~DiK zm-s`Czc+s1F$j3OT1-CFzR{F>c+fNwbUm79YUi$T?MDLRDru!8*q~MiA&YToi!zC* z-g@_S_gcH)xFY02p1p|Y`t)^wg9;}33CF8isE`NT$j@0Dq8#fX5q7n&vJ;)AKj#-k z$kuvgrzAR540F?Nxo*g^&s7bnRKxa%>1nYQt`^bTv$ylMBQy-E6r?>IHHYUAqpkyN z+;epbYEp=B*LgNU?s>~x;P;-^U#qBkJI5gyrk8U=MNe$o^X^HNJydQ$e5x4E&5|=# z^zO~g>o7L(Zq3byB*kR7rr0L*D5}+L?pO3E41Ay6|JI{4P=l$MrpiGXoB#HZvF)=a zXeiNF;C0d&Q9@Mi?^;V;cMuuoMD$g-mnWFaIpj}>NUR_9IeA-@Cn0Ay^W6}^`{S#8 z*PSAVPj3=57=Oy~P#oQNdY_2o92!x7AA{uO9|^h1>8Ji8pIj+zU*kOj!t-aCR}r(X zpb+h^e=~0}_JLomjC9lVryNt5#t5wH<$AT@zED}aeACQ}yn!mc^&`X0{ZMYz(<N$A ztZi7*d40QDCX9I4wCatmt5SU9<d>`_r{}}-RbST8hL!tKh2D2(>~aE}gh!GL3-^l) z-A|8n*s(TW5$APdN*6P~ZC)7$e;XR-({hLqC{bz2aa1I%F1RzDXXS~=h;fvatxmZ! zV{PS&Nbj0SQ+9xtA3K^Hc8fsm>$y8k=BTZ^9W}-+>w+4pjJr(ci>zS|6J?^+8!2{m zF%6Y-y{S&sW!2R)QxY@j-=^F}eLU)t8mi|8Qeos}N7bPz-ahe_lON3(H`U9?Jw8v# zNmOhu(R=4jnOkOV@|7n_eA^tMcR!pWV?Xl^MO02NS`~U6>$gVUvoB}qt&sS{RjS=G zoyehIrzvc2`o)S~@jzME&XQiKkE>v`TRdS}AEn8@q50d|SgGNgVL>Kq5~2RlFyBa$ ztbVsD!A7Z8m-n`Ixrs#Ow<A?4!A+quh(sTkTYkd9oUIMkU0nYn-ATkOKk54Hx{a+w zu)|<KpWt?QnQL{>b$8CG8`Y`T-R!6Msxwk%WkqHkt?xK-(k@n&$2hUmuDF*EIq}ji z9hNJ5L`S%VrcBXW>04bBDN^qGnN%?KMt~ckmuHhGz=F`Www|)m5vl3z&x;qE8Wj*l z=&V|e^kBI1xjL=m-=<V@b-Q>xoa{AL6tPcA?L+2T!QIzW9Ft=D=B%u}>b^N3c_a`` zJzdnBF6D3Q>K%r7pgr?cmSG-mQ~Y$}sWx>=SnCoT)}4e6s|<S*(c^+0PArC{GriY5 z45zy1+^g)W;|h^m*7oi`Q`2+)Iu#O~<6C5csO<-w$ZWHXqX$zVQg&6Zq7ogavu%o` zWUIWQQW7>x%eZ|u9X1%)XR12-s?dMR=zTEXT-BntW+|<=r8IP^bX(lFo|nz}j5!RL zaL?4~4oLb$ILw;}a?aaZogGb2y>3u-cP>WIPj6U-9-Zp9BkxI+iT2j}WPcmZHj|T5 zbnnf!?vOHYZ_Nh&SUDzrKUqJaqg&N$bF-qOtKV~W^IJzxzZd4)G^Hg<%6#?cnSLLH zpsqx%i)UM_T<NT0a~C2-vME@`dDi>QJu|_0&c<fqP;BbJ&&k~)Gih!XW#e`hv^n0$ zN3tDOcIrY<XIy0I(LJ{5RFgQzIZ>`&6EnvvS{~xU>7(vsL*A3VsZoQF;yEhg?Z$2@ zct!i^GgvR~KJckEZE2h?wlqcSmctJ1r>f5mxXR``8)snF1BZrFM`v4`p;*<!C4bQ~ z+omLJ{ro@%n!L>PFjU_)Aim*ImRS>ndf7bL=P5K%#by+~H?@SBWdH+Tc@ojL&0>7_ z!y`QQGgKe~>(ktGF0p`mMHEy&^qNnX?wyOXdP{DwA{qG?G4anU$5|P1!Lq94sbUf@ zS1?)WJw)k7bgp~H!6xV3(omQ$U#F?m?bYsJ4dilkP?NiSmnk%76-GC_D@wjz^E*1G z$*r>&!BDnaO+IxZ5t>#%#UvVV6rI%M(K&!%ytaEp{<h{+J-+(Uw*^Kzon3PBuP1V$ zm6)YA?;<gW<xDz}y~NN$%t)L2`II^P1*Qa1Exx%@NPgzkx_A!;f7DwUnk`xSq-93u zfmhu%VVLR16?%?+BVF@ldd^<Sg4S+{=aXKjYwT#v#Z_a@`g+5+ne4h(ypBHbP3S)J z>ZTw-zk1f?!=SNeB3Ds=L?H$2?%0LM^-3PROE{8xfx<>U^15Jgf-JmCBA5JyvXu++ z9gN`<Wq7~qS{y`v$Z>L`IF<as?u4&615qyvnYCZNW5UU}Sh*Kt!p^wjwl`$L%eZu~ zrwogZItZzmqFvEXxCSZG?CQ|{a`HxzJ5#R!m8i&)scpMDm7oKu8Sc;57C#wP6wTCG zUm4-VO6Ci6+GvN=R0?#%qd1OxvlSs5pHl}QUsm9eziYNW#|%i>t$N87`XV(XG6P1t zXz1Mb-pV!j4rxFKpm&$UqC#r0FXL(Gw02lK;(gcog-zX+dy*JO;2r!drmuQ?Nuu;m zx-Hxre<#NkLsnPqBfU<hE&NSfxjHB4N#Ll`2fUD?g^eiAlaM95#y{T^Vd6!oq9xhJ zlkX`>bk)1u9b3K|uh{3^XZxxdk9O%hu=V?%(P&AA)$Jt>6Za=A9_i}4bL^wO1H|0( zK2HXu*u#D2i3NF~<|}7vlP9k!RsDC~AQ;6LS3=c}z1rX3gSs&HHn4xHAI@Kp^HcQi z&0p>CGw^TCM?o@UGWS!w5(c`}PBt+W16>2hvzTuKJp(70`e~YFl%M(bk&IWL0zs3r zW*2XU_MQ@ZC1zJaiabqdmy^A({xB!ORLT}Lp(=iI5a;B-l#?_sxsGyU55|ml@sVeQ z@1AlHG#TeEdwdziI3*;`e;wXaPl%Z>7T62n;0#c=LXm$>!)PQRphdg8yk9UFh3C-$ z`c$inUmgT_E4DO==PsLOYVN^QZBMH6_a$ArJDVh|RtHq|Pmc08F`-(j=SvSoFV^Fe zE_}NOGBdC3nyS9_+SiV6dQ`a3l%cabuln@_onMKG8u4b3a9j?^5ZO!0FT@m&xSt={ zvR|Mo5EnkvJr@#NNlU6kE3)}*Wxrgt32knbxyn9l6STXNKGc02Zo+00E+A!*ICbZ1 z@4%$hNw^lZ&8!RNPBEtYPSfnMvbz6)vYt-H`)-wfj^&Adj+KdlFDs(`b}OO-zpcjf zvoYiP<-i5XbN{n%#{Q^pT2Aic+)X~?oJ}6%yrNLr_<1O8;+RdgOBnpxNibaTqz!I& zk_|UFS%Q1(!}}iuxb$;XOWGtrrEHR*5~z466qRV0zSmtiaI*3SE?v`CQ}RuUCV}!R zmCKA>?rf0(cXjc2H~s%%>Z;?~c!GVf;_hyxxD_qMDNd1=1PBhr-GjSZ1ussK65QRT zKU@kFhXBRh{axSt=Ov%r+xzb9%<Sym-F{{-nbOOeiUl^WGT~w68A$WTdcz}w!=zU2 z)~$*eqh|ejWAzHWp=Ee)O@|mqai-2Mi80Qt?ClxX%5!M*wRgL{s8iB?rpWNm?Q+-E zbI;~g@8YHBHhnth6;6Ed<J9Rf^evg~-kMWCZS`x;&F+9g@xIEG$h-P8zD^_I+xRo* zPQ9@c{Vl?PR`IFhB*ok1GwV(rx{d4M^ru|$S^AXGr;<!?!RNslwyjekTW{HTNVaZ4 zDz}h=_lJ1Bv5M-UZ*~V~NmRw+^#j}*@YA7by9ZbG_nO&S#3|)MT5qmHWV5|x*vDIP zQ>=_9hTM2|EEdrU#IHm2##&91w+*X?&v`|+(8!n0da#YWC($}H0~y(PI|xz^$@5*i z<-^-H^FJ8*XmRtlmL#Vd{~k_=Rq*bYuQh;8a#Xfir|KBG55aj`wuH#r&lX|>ns>}J zjlB4|-tsDJAyl!vA6W|9*1tkmV9K0MEk9BXQ{&G5s#-R0eg&_%{>S6gzM0f$=sLW} z>%B#r`rx`-nA>*#LD$nbX2>Fy^sHi7#rxW#zHPe(vf``9>&rvE<)1q0dTRl1d#*8* zbe?CYZ#ziAH@q5(<h|dD8J4;IwN-V{PLs@uf^};x%}$S9vbBL!?#Gmy>W@_5_u3={ zjtsfg?&8V86WtO(YV;FcOCCpiaP?qd%fSz`2xQ=xGtl})Uct5%tMmJ;kP~`)M%qr( zWR_HEz&~8CQ+77P>3O?ATI}~2qu=4u&$-%$NZqeM-O|_TaXnGduBZh6YP3r}%YxSX zH9|O7;WNW|&;q~CSuT;^&@J?O&s)>-j{(~IDfDwbTfDZ9XWtfbA1oYn@#Yk^igifO zbaax>=5%JxM0D!U8g(vRH%qmij!N|cJZCrp17~=iooCpeVKdy%?lYXvelxsMom5GI z%~UA`It6F3c38J_b}F}xcDA?IcF@~IJD)e6qioOKqg<VBmdVd8mZ{Gjf0Le@|E4^* z|4n{w{Y&mL7m`0&U!`dfi{)&{_+wuMsS=LXQbBstV)S`mL8kIMTB{@JLyO_Bxhz=& zuh^S?qthXePHR62HlubrvY~yg$;}AaHcvTrqs}}sr=^J)5vQH-y$G!~k6x~fm8zIV zr$7B~MKbf}aT{UR5jt&Ny}TK#7%|sQVc~ZQ+I3Ao3Fw!!WAL3y`xQm%5gXrq@|tZ( za+U;RQ$)%U)89Q$=ie9KJQV5Iwd|6XJKf3mjOJRq32@bk6fjk*GcL@s%eRWvTN@XX z((YZz>R6G`?vF729ODq1nU~)dE8h9AO=h^?mam^>{BjOW{<@`VVoqLuh&z18MU~xW z<wLAdV_p6=cRSw_)yumjD&`MP?@9fgxCtH|%gG*{9EedIX-QC=vIuP&D`I6D=`c6S z>E-Xr1N+u;3FJaX`zF@5&2+0``OxlT*Soctm_@;H7(4{bq455aHDP`+m}VSiHeq`A zzM1{W7e4er620!gz9t{WfjJRk;yo#H;{8?(RsTT#p8-j~Dsnhp&G8a^+|!BudAZnE zcNc2r^GNySW1!(kN#M(}OR1QpyTHDYMcI*-Wwnux$L2J**4V1$BhJ4obc|<?8f52= z<HYAql_c1XPK4M_$K<h&IYhUOl`;K|^ceSt$MW5Woqb>58gR9rH|Tm67wQJEDvKWd zh#~cQ{cb(WzWPi(Ti2slv#jGI)9eyEx!tjLbpG3Vv*oN8>uu+1B&*)+v#S<ny~{;r z8_OwX)5|Z{TfTD$uZ|M1c-8i&w0fKEFUwXRI!6BqXf!xz(q~aQo{h=!q7J)1643Iz zF8t$>7`=R*5hHO8jcLFB8n$gz`p1h`E@^d`?EZKw8s!?RzuT7uG12boa$}TS(xk(g zuw+ND;yeCst34HA9Tjb!SA>9-6p9k65Orvlic$^{fb;BKIFeY^BeD9^HKRqTImowV z!TDm^oMVwxVNw@rzr&1Tu&>jbV4Xjk+&c@K{G^mokBVbBuLa&6KH9rn24pvRc4``Q z8Z$XA@sf)i>qNKQ*CS>hUl6uEtNmULWOo$db1BaI*|a$EVaZO3C@(_WrIS%kQ1DYM zI<7auR4xzpTa$@SBq^4cs<iK01oYHGE)+vVoLGa}D5jE*@ANXX2=N`AyT1|t>$^>v z(wifh2-p>azTY#0#=}Xj=EF_yyN8QhgNKJ)74bk#&H(QThJ5_&XmWg`7-Ra^r;EKs zi0er1etP_G?+#2$Z_Z64V7Gkw50`uz506!v59d|y9`36Q9<Hl6B#%rT{0bs*Ph%p- z5#7D1r&G*i`1C^YiiyyH4MpYCO)Xn-|0Ke3I*Y+`MeozIf*#mu$xF$nFRV|=iXArt ziO8pwl34wm^zw-B;xYZ5S808nPr9Vf1Lp4^z9)K|mJUiFZZ=k21S<%a2ow=ikG%c; zLihC4kBL=Vm`$h8t2i4I&z#Sddw2At&gaianyTm+(>BcN)%_q4Q~(L2sfvP10>S{k z*cQLUK>zQ<4V0}MJ$P*#E!=r69L=3R**IG9zOyiQa&UHXvvId^a(r*<><oZzJm&VM zZf^GN=xK)F%O|PgCEwYL^w!sTa?(B;JMGsT?W!2u1YZfnn2I!fjxm2+ulR;UMPWo? z{0O2zP9I@o0zQai|5g9Wfame^Ksxb#x7qo}1Fz-U>o>&4&jHItH8nL2<%$0dAxaLa z(8Z)&3<k%pB?6ZGv);NlH=1vwC$ye);2F~GE^JjNBzhf8-IiV%w)WiWLQ)hgJn-uS zYaU&)7MLf6uEpJrBL@p=cD|I1ICY){l2-(_QBUO%CeNqSig_F?ou1Yf)NGzGJH`x6 zVYe*#8bctr&+M!(8*6MyW(J0Azch_fKbDozZ6B78c&scAQ8}-S4P6Dj=^nZQ-WN+g zBu?&ka;U0#+)Q(@KxdHA=X^_06r23Wz%g9EJYR4f4e?YW)cR%GMI3UCvHA8m{s`ik z1Y)6M-m$S5#PreA(??ox4>1W!&O&Vps?S1hikjCTX1J$B{v@RuWUvk5G0!+hRdNdk z+3*lCjIsp5_2w*s?9y(qkcf;~q!D(gO6PJ&u7>zcU!t8z7*0o#Uv_|l1RGHtw+i1P z9j4zXBEuH2KR1PfSXNo3E6`DQY!s!@uP#ix{70UmK=Z8_pC7f5TqR!Y{1Vi_`23e0 zX-b?~I)ffXthOQt)WUbFfu^)17u45|sx++_WDp<3n%2|_iblu!466d!L?CCc7p^12 z6!rp4&*C6nAoHzVJBy7iB()@~gyePxe3KeSo}u*84wRzd&=$)flr(OQg5=R;bUx#3 z8AyXBU6)x`cvxYOFXpfi%S2o<6@Qnl_e5O%8EAGm6j@{l<qsD=)s=uZNGcT_?Mard zix(-i%Cr+%T>7S7obBYjH>mRqPywOqI^OIa_1B>5BI_y~>A*c<SVwuUwG_L$kB9uk zfKT;YEgqz?DMQ-2iFA;H{@&pW`U$JI=59{jpJATHn$9jyzh6U7G1#fKMV&}=Ob@iq zX!_^)UA<v}$Q7GeH^8sY*H_QhrUEz99kgDKGsF^kgWmWU898Vv;O7~<-Z#}Mv}DYM z(tWB-M%U!UuW1zrg=KGE;%0F#$o1?yOd4gR2KjI9+D!(Wf$%<C<;tTEp-AJXRG1q^ zNh^!=n4aZUFmEE!u;A~BDbRrm#xK=IcFrl*QN4Yj?q9`&K5oifO>ZJ)GUC_du;2$x zZoe=xyYS9*4i;~6{~{iwO2Xx%=bm1N+9XToe!}4mn)?-s_oPWD9VLmv)uQ$9xN}y1 z269ZbN|5&&LNU2$PLH>`@Q&%)apPQ<+$B2+5`W|}yJ(L02hfz0DDikQ55Pbr;yeB3 zXCMOq{6Q`s6)&@V`SBffP(ax%C?J0pMBqDxo!pA9JWuF9<tvXNb();2|6A$)vpj~R z3#)El_Kocg`ZR*(3+oZiTZ3v;N=1$okb>PT%76-b(5Wq{Nj?+}CR2{A27!Yx#NVJg z;k}jBIEoGuh&77qImjm$ZQPM>xRvL1Hl18t&hMA!B?xBoGGfEYW1Ev)Q}L#bhHsHF zF%(K2t3ow0<QGa{!3YsfBT&GrpU43`K+1bsS9t#Lh{Eu4Yt0l1L#3Gqi7;hKM@Il1 z@!{?cW6FsX3520`8s4aPL3db7#>mxw-Q)NXWnv%yH>m5l5OQ&d|ABMO+`|gQ8<2m5 z;T3)q<QaJs1XbEl3S=s0eAH`nE|CwM<VJk}XRnhzzNhP2B@J-drN`<F3LFYmeg2Am z;<OAixJz_=(2QmFj?mBih4Ra$#F>3s6KQCxyHLd&G=qiHqz&%^m87Dl8qi6Hz9Qf` z%)><eqe^G6ph(vhfQ3`bB`F<@<eb|BT0_S|36djuK-cq23z1?Frxk+wCEekPDoA8G zoVx6>=axJ2T7B>fajZOf>FrCX@kIxgaTjSeruhuAVyCq-@JpD&9RCOc8RUKjNteaY z)lq!mcp}Y+ktUV+#NVU+dlUiRF|<1ss@vyQh>9^jHsxp1zDVki(wGz=6A-JHS&MNZ z%{^O0L*eT9$Tx_f2ku)-Mtl<pJTAAEehhUj)>y)f{9^8-UsMYEaZM!VQ~ik(`2#$4 z%-jl^Duv@W{6+5;Z<K!j9hD?w=90J4jmu54BmT<3Rp^Av%E;4ylNCdmvO@J9zjsRC zTp35zDW3I`@%<~Iua;l$zWx15ka^}*j?03N=Y6LqF8Bi#mz8^K=F5-dACo_3epLUc ze~DW9;B*(}`sxL*E3<Cl1ynq}W3)|7=tg>4`B7Qm)}UhqF<)oLm96@A+N`hSMx+TH z+lJpccGuYI^g}lDs_Q~FS>=zw%zn6y4s^u%;>sHD@=n^iTVYCRwjup@YDdnOR}<H6 zQ=)%w&}_txA9zFYFF2>DrYe;=(~m}_*}@rj54X6`7}*~WDeeLkSH<pDu)V*SV^?08 zu`eodmbBw5aVmFOweYvyp-*v44gN6wp`oOz)Ea{CaeybOsk*~b@x)$-74|3T$&se= zDg4L%-JB*6t1S<2VpZ8(`I({o)uX@#jmn*lwZzV9cO?87vm+qo-4AkQOdDeM!G*t{ zUr!l)cvH#q5?s?6syt(w>8t;NdH_wE-mht|8{HP8BRJ)N&@Z=r=ldx9eqv5(A+h83 z2g(k$lI(Al)$g|f8ma^hQ{}ad@pYS@r3<)Z)>IlVnQ00A3b^0IbRb>O68mv-z2W(R z!st^-FZfj*V^^AWQY7PzI^!inmI9TG?9R|}8o$+G9BxV`ixHEgVw-_qHmvRj`IO>R z9#M@@?fcf38eJSyNuWV&%#zL9q0pua1Q<9Npsf|wbM^mXl~}*2a8~y7ttI2=D8dGz z-yhrG_-&hOkssZ!7#4q{h~P(D0etWf%82{E^M3r#<iba~q61$O<c)%^#0}00BoaT9 zt1VZ9c3Y#0qv=_AsjAKSr^FSEmb?a;HvMIn*aAv-tTL>Asoo#y#<T>e88vthx-Ko| zd``V4eXi?Mnl9)|V~zU06`Wj#&s%=bYK~TFO(GI=PyWcMMJu<HFtg!RMrZQh8WDc| zC$?Ck{i&0w!v9j@URKh!nUB6!RrofCzfz4Sp3>&{l;E+!O=*k(Vm9wO4Zcu&Am3T~ z<2G0{lcGk3PozPLPp(0pNH|WSK{8I}wOVac$l}(o>Sh0~@LV<SzqZe9HuDMZm$~&u zu0ma+i&Z^rnqkd6+`NWRJ+9z3=zj_&1NDFrE)hQw@d!P{DB>286CL?89OKt*V(a)r z(>;@FKpuK*ddkBGd@>M^!T4aJYft#TM3~4{y5oONn@A6k?81}>bvlr&%Tb7kB{K(W zRDUxb(rp@yF?P)y(H^!s9LfYdG1tt!HTzi4K%V~zEPh=+13@?StpCf|L}EbQt_o2+ z&>#qPyGDDkn~W`ehFl=`nlrr)AABbbQ!_AAhN+=G=)bXIZee}aQa2k??2ny1NJ@;k zCUyma#5&j%p&Ls#)6F{n{D5y4Wb0j|59P$qHOdZ1X%P>4;ccnk5-A?kzNz<VSMm&W zH66M~q>4Wg$^nuQ@k-A|{oq*Qfdh-meng7gou_vW6EC@8^9Bw6s{K8+v5DmT#+QZH z<;`Mrm!drE54$9XCl)MYim{hc1zl7%J3J+u89yj7TBq7f@|C1)lM)@y0LvMO=NtNr z0VDnz2REhjE)_Q=NGb_EwIUVWxj?++!qOYmI25Yl1e{u(5|Yn6mE1&O+Z$h)RlOx? z@4DaI`lL+%S?5nR@UV)EHDX9@nj>oJJ5+&b(+OVidxJEr2|+NGSWuV1S?;b>3VP65 zS}PCED>L&7{VqC{NW9ArV$$^7xSH<@QeFf-o#jRa1J7GDV1slrl$;RNEfI}|=a>PZ z<Q-nHm8DL@S?S!CLLC$hbp#oGMi19WLFWV03EBX5OFuKIvKmH7gBOnCsBYWYpy;yU z7wwvPgH*R<5L;&;h^<5!bscoybRFvLd;X$4Rp%G@=)Eq=4}&d9<(qVI>$UMMB))*< z5&d5`mn7>tXSox`!zi$ibR;*_z!EDN-S9a}Jm`8;CRl$HiO+MnM>Wn+gE#<K>O9NP zbqzx4)~8sZbVwAfj=lxOg>i=CL{NY>5O@e$dGnP70*eV9Wx5lQcpjCf)(rlxslbv? zAalt5oQU2XZ@7KZxl_1(SK#KZQ?nACbbh^;#)V|+^n!jGY5Ov_j?o1&XROgDIFC<o zy}T3e@C<pobgGxwU9#P0ou<e(gWua%Uv-)^CSy6SIDLZAN!m*gUHRlUq50%snhzJq z_?)w|bFPXcb|`d(YZA+@gKRLAgm38mb;;<?A>wR^m)@Xawk|sg^^Za1*;*I*rdFiw zU2ZW(B<@C&*loEx@}}efpt?E3XYi`>1Pgc-u|*}1+Bsg_`T!rW*?^&(N!-3{lO7$g z?568F#8R`}%feFYp(ky(w!P0M|C0wyjr$m*H57T?jD_kQG)b<?jJv3|9-cGxPo#-M zoPK3H@}wHTWGap^(mqw2#C~uAx)K0r9tge2kCliqGT}u-m!=0&fjHZ%HUkijwuz>| z3r;?aNV0b8ffHb@R0GJE1lCISld+a@ygtFiu}0c=vXj`ETyF|WeiG4|w1_teex&QN z_trcy@CKc4$>d>gA#vex-hWBar?O7kN^uhbNv5>CK4ClC`%3=^)jtcJBM1J^x5J+6 z?!WK7bZA3QdJIXU=wf%eE4;|?1LKqjwqqR@shc@@sbSyR9oFYp2XeUwt1o2dJ2x(q z^A4^7B5oF`p+(49s1(NAS8N;C!I}f~Fn@Qpjg2mjjc;G+Z#|PA)|O4lQ7!6FWhny@ zmos^BQs@xMK=#`&$CUtYCwZy+%j^7{hs3JH(3)pT42$R3xxt8<XIfp0=i<#{)7z3w zbXIw(q2cYA09P_kD+OqW_ypUqPJ|&tN>(M_NX>aYpaPutw%h2Uwk;w*r%myXjO@HG zn(X}j$=!|SRX{NK3JD;2TeXS)oV#P?9ZB-I+1rChG$hGHFeDi>ClXnch*?$xY;$NC zEq<l<ll_A&N6CsNOIdt!x2ZW`6AT`pWRW_{0-uGBW8UkqZL~?VZG=?a7ry4fDtpcI zuO~G?Gx^E!07LM_w@S==N476^o<yq69euyN&A+7I{jCa&NLix7xNR~jPP{$BDSI8D zeO3^6#Uj-tH#vTG#Ci80ei*H6(lS56&|helWXiRYN%C^xrlNOZ%EQ`VOhC%@yGe}z zjy~#5zgKJ&7aO^Z6B<2bsE>k6R+@=?Q@KWY#krD&f2Ie|;tT(vDCjm2^umPsGUKtV zLRIH{PVB9BGsYswE8FM4Suw}X^~~>l;6hI1?q@oI6;T<L+L?)R&R)vyW~k&Cv=r6; z?6=Fi*zLDlx3^?}6=aoah79BRSk5yeB$Y|J57licnj%lF*tNGgg|hj3pF&0T^<oIu zW(p~gjE1$%RXxh_t@>MpQ!0L5j27C7-Rl8lkJ|vZ1M<T37f%*8MZtvU+#|Z#k758j zpIZ0#h0jIq@2xtyjj#)!D`4E2?K&CWYuttD=qm$cqueu>GXJ!@pAt%bikuS4@;7KB zQ+fUY&>dpcHdk(Wq3=1|rtr~&k8(Cy9^b&g2;&fP+lk}uDb3l{o=TRXJ70#R%S7q4 z(>rd8F?YWfM>&_L@6;=H+~bk^!ff2JJ+a7UM6d9vzihqa{Xo`c{|-XerUa)Cnz4Nc zp$#Bv)rU|A_(@+f8F_%aC_W33R7YC)qJGlyMSHxex6hGo=U(LH=&+EkK-shyLWwmx z!|yppbEPH1XvV`16IU#Oz4(4m!jwN{j{N%Gg;AQpcTxIRfULG3ORxdXb?0s{;jlWU z;84wU(%0s3wxX9gq_TV}VypxzV!Q-H%|U|6%>ef=!NgjUEsHh7JwIk)#(8}5EgUeR zl{r*i+uOW0)3!={DS5V?0RmeYkyw~eTYzl%lJcK<|1^vB%W2nPg6RTtZaLA!#PF@} zr{<V(8*f{AdjnG#6H?J<Z4?cm(a&7Ix~Y&9_1h17T`1i9`3NlmS#Q6wHz}uCzuz>S zpc1dqtherU%9m<~o$kPf33>|>QW%32S)ma-v{|1hWxd>METR@C*;5#;6^o$}Fxo6j zN?8y0B#R}HKl4su78v7`dMS)Nijn#eK{T|cluRza=U<1d-LwpHZNN{j20g0ORyS$T z@p~NIgDsXAVBVNP_`hfq_RZ2ee!V%u940W?(BXF#NZvFXCeSHB=aN&3=c$i#N;gV( zpv<>+Pq)CxnM_V$bX3sMAJ9?LDc}nm+JO!euoTckBS4gfR+LQUevjZ37vi;u*w2{j zd>u%5s69Kv!vX5vWA!-Iye&Pi!`gTJh6zsd@44hkVtHzC_<3Z%5iBu%dZ!)RnETVO zxZR@30?5(idc79(`TQHJ-!0waTf02@F0iLO%9uytV1OsXQy3NGub~a_8_Gq@6h^VF z1vGnh9~a*z?F-~*gNHHPU&}+pC{OiiWY?ctlUdOod?#alZxhXg*Q8=GgQ7H>KO&#? z6HY^~=mSRF($kF`iHXD<U(3N_ObEUszOVgt+<M<O)+jH+ZXxt>#Vq18NjC#se`D8Z z`H()WJ$Mz}LvTagLb1olUEC&u0jNao*XS8F9Afp(s*K3i9-`;lnzqCcKb;ocez7&( z7F0s)QB{*UKe;nH*3rA7YwlU*jCu-NXES?iRzQ@=mUR6oZz@~mU@jKcQbm8Nwl0mB z@7e8h3m1sq{#g0=cSEWc`=?H|I`3?u{LT2m2Scc~Si1q5y$O;I(LH<x9_}AChcy$n zKe1SgA@WNk8TQSY@083y@|!dDntcy#i)bh;RTH;ezbOuu==|o?Xq^M`*fZ0I9=;!i zk2y#DmJt2or6*bGq+z&!^m15y-(dK3lm^x|K@Qm%izH{JhMzjvnlGE&@ujCu$a-J4 z>~i6X>}7tXX8R7Sfea0Ufig`P((MmlsanR6C(B;G-~~D-;gE*%dA0>lOLJ=tK59kZ z{CU)cZzHcJv+b{#4%sa~T5AY>SMbf4$NA&Q=0wIJ+IC22>4tF#I>%rIkrAk)axrD1 z>dJ~zR>e7EnV_v}cX9OC1PP_xM>a~()v5Q@h(zh$ydqQ$RPI9<lT|<HyenG+6WYPv z_i-4JS0{)l9qJD1AB<I7I@P|dI_}B_-SZqoR~`3eqqdS>efo1)RooST;mdKLSXJD8 zBz?X}hyO>}Bszyk_Y-ljg)p)14m~E<r2um5V`i6YCqva5FDBP5r}W#D2jE3UiG>H; zb-J#`Fub5+jBDf$)+Mj7<W#~V^u9235c|4}boK<HNmwL^G%OMc9Ht&b)x#VlCTk@f zJb^Y5GeJ6$al&SzAuH0g5;h3BC!#|?(10ONM4Y@_W9a!96pE>Vg2y6`BAR)^wWie9 za9&0e%-zyAMEE;@xSR%wyJcXAa3p`foF<s7rF)35FP|DfxmxCj2!TBy0Of2M93rgC zzXwoGpFcx{W%(751W{56+bzKJumMS!AdxWL!cd;9g#@tV(5mpqnU>LLvA=n|s4b)6 zXP3l=AVuc}2|lA)0}R-0pyGdqC=;N<?;Bhr3N+^28_(XNx|KcfbaQZa>Q~JV9W$2E zI&EDO&0bcY-J^w;J;-#Ea0V(>jSUe7d^K$U0vE^|SK~b9kS1;=yt}G98$>fNdr(H= zk$7+Y?#(zB1bXWh7GVA7JPe7ryzQ;&8kF-`nL==3$QS#SuD3Cg*q=ncrpRP`0=1em znUH44*h!5YhAsUoX>>(`h^yK&t&m-aWCWi}S#lz?TF;FdgPI~XE1@OBeQXF4L{dJ; zQjK_|;fyjYeYiaHi{)I8DP&Bk){fAp8_4;gzkvKdO-|#NX_i~6s7-yq=`IteF{7^S zR-9lfq~O>Nm14vL*<gX;&!?^L7<Q?8x2niXA*pChXq5!Bl~rdtXi5)MroGaffrflj zL#qt-?>?>)sR4VMXgmFH!$#Z79t_pL2T+t;qfxY!hdr@by*2%9#`&xn)FR0gXH$1Z zi;VMEy&H$~Sv%<MFVSg1vc^`upaA|c!S@DcTX6#KziG~GBdaM5q!*znjfhUy5inmR zgSPm_1i58Dc24#w_;!%S)tnupQiu(tzrumZr<){!`$9+|-J-RvgMM(6%=u-fY;c-M zGFTg9R$o5Zq!!FKc5t+6P3jSH3eh4^tHT;dUq&I*McWuTVr(xr(~t@L*Gj_mEBJsj z&4M&epj9!xHbyw)KZwg`lLRmgm#*1Aa1f_1rWcL5458Em6FdOCI&jexKGQE?8eVDa zMZ#A-ZcL`HsXS{;GQgP}x{jp9#Fk~XF#?#iv%3BBA@3nBJf=JmTYf!$zXS42%E1O| zx-kc-L@CU3TVc4?<H=$1z2zZD*4ITy5SMZg_a{`_qm^C`M*^IhnD3}NW8BCjziy_N zP~xo~Y>uJ{%^z$WGaX62u$@015i*>%hu}iGfogm-Nj7N>dLk1(%D{|!a{@8!6g_zz zq=k{2Y4Lz6usBbbKhQpVVVNVFEVs)Ftt9KT*!xvPIFOSmgaWxR)i^+k-b@jgky_S( zHIVbS(7!xC$D|I7Ly-FcIJMvf?51%(L<!+n3u*=UwqZS*J=hpUUhzE%Rt{3UeiC$& z?R<st8TQqr5X|>fchMIl0OZ|K{7-d)`B#+47iK9S8;U@vLP2<(6u0?=<v>n~OWJ3k zOze!FiUIr<C=mL}jPCVQU0cur9F-T^PlfbqO03%eZt`H09%nlLQrDW47juFZXvf}k z478ipWZ2Lcc6Z+vLUJSqN@e_z(+H5Qk1B`|5IQ2q15n;-4z(h00-EaaO>;D0k?Hq) zA|0JYB9Gt#mEpu?A*aO_Z-@X*%laq$Il4Xp2G)yI9Yy|?2~_y=!f(`ql+T($p(o*> zjq^ef@pl03C4k>R`KCBJ2-T`%oY2@l0~oX8)^!LW<iDHg8k;KcK!`FV9ji!}Wn-Lm zLLSH~y4%ZZWG4nW2m{Y@E+}r4$4?=8%ye88#Q3D-eZBqVea!vk{RRELF@rJJWQpX* zoY`zE#t$J)@vxd3hEwg+ZUiMluD`Y~GIl#Ek%X6w-VlKa@h*d<KMbZ)Jb5CL&vJCl zZZya$zdZjY>J4mxwLe&;P(0Q4`)?@<sxC$WQTz7E&wR!wI%E4EC3oL+aqyCkr#`!$ z%AO`8CKBQOs{L~@sj-#BkqxU1M%*3BZ4kd$(YkBlQ-xDnz)#frtKBE+nCzNtl^M^! zMQ2IFuTymC8C^9_Qt~AoV_-2+@2VcnU)ed}_+DK7X;2mC`5S_dH=Bq5VZ3y7JzI)3 zkRoThU$t+!-?YpprdQ&a8_)k(pQhL7vFxkX`Nqm}xoc2vB>1&$z>-%s81GAQF&OWg zRWLY#fU9mutL67F#~=nnh6{3(Wylm)^^kH%A>=mSBps|y$kjMx1KbDR$W={oSh2so z6IGm;<JiWeDt8SAy*GTBW}B>v`dIFo4yv^dH^~K85aHAe2_druWSK;Pf$OY(=zWMO z<o2sc6S#v*8pq`KLlb@}49qvmVN9&nI5dYQP<Dpftp@i~<s0T$B^zlN@&cX;XNJJU z^fM0XUgAh|N?t^x7{LcpB5G`zYotjv_=v;=M~c)0=Q}DzuO-sJNg{IGx)qSNk;CeE ze`jeyZVQ2H>tAQ1x*woH-46;u!FQ0L(_3|5UUibk)tA2RhQVXNV=v(<Ti)HJXTVL# zq6JkWd`%u+N~Bg@O4Th0F9q}~4KZl|*AtD@m(GUVLh6f6g29K}y4K)(EHb^Br;vWg zj6&5&DIQT-O=;-N))B;`BzLkDj~u6_lzFD75aLk>YEGD8x!8wwi^6SLrO`Ehiyt_E zS+VbQXMTnRKs;Iivt+STn1Zda74&ABk=<|oy0zhmkBh~2clx9`3!d*Yt-+~70$rs% z<hjN=STCT-*$WDJrgKA~mIkalreHtYMIn@p-r@$sZz;N@2;C!Rj7to73%7~J8ZDA9 z(lOQ_beLCHN0%?MF!C|(A9`3|S8x|P3Ldf~i8Dsk$F97tF{DVO))zE*2V~Bu1Yd^# zyxw_Xr4dn^y?(IkJj<CWK|OXCR=eG!x9WW5Cu)adwcM-s>^v)wiHl>^-aDV`JS&ok zi)r=PGe6-h%#ewTZ57%xf8s3sGBX~-s`p9%FH>f`$#&Ii^aP@cjgvS`ql8saCP!Xp zStUL!QRNj$>|oxAx;EaAAzqTs8EtmPps~+h&iHFwOeuz4Z{C%~1f6dh)*v@Ayi7we zc-J@0;vB7#CP>+&hB+{XT0x+mj&49&Q{8T-eH8b;%VS8`p3gb7?QsrSgz$T+3!Bkb zuUFK!HB)#d)J9s<a~kL!9LFcPU2|dBR!GJ=4bf^R5mSyPt1BOxhu=J|;7R<IZYM5X zlWwP;s*yY9bYTA8A++Yo;5D^SU(a#$qu$O6yrgXB6#_oYm6$B`oXY+L&Y8-#2fwc? z)&&b3{)AjAE=-s02^{^Qbpq#1=eO}%YptZ#u^n?lldgrhhvfW5B9$G$t1-SYoy6Bf zfxLg+8}?qi7`t#ek`yDJ5N)vBKYgKnqzFa?$El`EJS?qAUEIKcAdx`etJ$5N5HtI$ z9Psf^hN<CFN@f1VvWzbzZax2s%w^F1Rm$)GfZFcT`lrLr*?%zcKREr@m{N?M$qe*) zjLr(k6QB+=aX+{v{z8SAcPmy(5bq?!d8=&|ri!-Q00wmyD)ey6m;L1p0A%Pts4v89 zGu^Wb8C7bryW|3DmWAA#!2(~8sOnZqNtMat>unW2j0nMJ@4T2?*}ppOm;&6>EFk{n zwu9CN#UQc&N}bjo#pg?%@+JC9o$@4RN}UQMMoW*^@QzL){^Sn&@Q&{dS>RPU-w^Ps zs&77cRm1lySV}4Oj4of^JIh+j$O@V?m;APyt&)0`!bPBv>XhGsRn}fjgMg8zh&6_Q zc>3GBsL0*_nEHAyNC*)oKBXA^d=l^baGx3mv75VBg@5+|#XKs>|NN)iGQf7eo!dC@ z*{c8zoMk>F#~}=)qdB&2KR6w8*8?T1uKf%#s%p8<SCGh-e76cbo2d&m?NwJ@I%C&k z2FoAo88_7L<rx~Tu(pOhw2&1@yVAs5X)4CVUkhNB*e=UAQL2OaLhq6asc1*6n*hGT zKw&%c9hJH4j-}fg9-tS*eivhs5ANiEO_l=pzlOazw2x(XxJX5J`p9vA7J>8@NUcD+ zM^?KmN5)z9M2a|)>qdq@DFyK_F?LZLkx1j^VDY8B53zv6V}N59NyzYXE*5fKq?<~= zx^<9YS}$4^ej4sQllCIhDl-_vwe2ET5kT1(_+&bx{a83PqN#xMq$AdkFy#@4#Ea^5 zsZG4LaVaru?$AQ{I}r-jtHgyomcJhR_+QiHYO=bBHBRT;t{+%%+;%95mQqWV_p0O- zk2e_;5_Xw#Y<Bj>mVu+t?em7-*mtn`nKQet0nM!T!+5V_er9QY@!ZIV|Ah9ml?0^9 zjy5YfdAMBcY_a+UOQ0x)Me5ZVkmvL33@8mjoWpy&c!v{S9uHd$@MB=@arwdXIosQo z2B*pKt1=xg%M!|aa#fRRYSDJP1?!iowwrU%Q5iAAigdm%TRh0!mP*--$!OkL*{5KR zRa-ork2(==joM^{6o;Cja@rZxLW=N{%l>BIPxqeR$R8)@{MSGE(R_hF7}BHdKN>A| zNIo!ctIksqKW}_UdO;<fHJe%SNlqoyvq(MC7S%_8be<;tS^epGCV<E8Ifw1@nV+Z3 zzJoVe39!ZP|4tLN*yS|9u<W3lK4R;`47IrR`c~oe#0@7Hul{OP8P3=O-RhERFB#3S zQ)M3%puDECgoo{GuUT6t-inmeZwUVW9*b4ptPI2t5P^<za~Kq7jxd+~Z7@S#adf{; zc>X5c0&j+E+f(oyy8m7>R3SV1Z3%By{O?t1K4l?eyUu^F$UJ1mANw89gm1c^Ewp@+ zA3iS#RR4Zbf8Hk16N7h=tGeNzH^Yg3^<FH;6w{37LC#^j?vjCew%OY8K&ZX6^jh%W zX%076Ws(!?P87NqDcgcK--P0Uz=WEU=N#U)>?-a$|9w>LemU}AHplIAOiQD<z!Ukk z?OkamWue*qt~&&y4I&`DyG>e*PK@(m@$V^lo@G?U81ESWi%e770l#G77Qtx+wqfL- zu1PJmxq@q|ayzvd{H52OE-yO!cTZcr?^#d0Wd)<hiSx;C#ThetwlOCKB{iZf|Dmw} z`o=GtV07a=%sM!mH7xc*oY5eE8<R1W+(Aylz^D$F)Wv&J_;=ry{Gul5KhW?WnEb!s zz?OWgCUq+Lp{xS{V%Gy8&+q>O18eEq8ro;tx&tXtQk*u&TPJOAV*NGl9U;9sXNHb7 zR2^TB7rJdve6v>TJ-t76nnFTz4*aH@!dn$^YBCNl#?wXz$1?D@=%?!J+h^7qTe0x} zYZb<Mbniu#q@Ht*p1c%?uM-sra0T|PE`ZjkHVAbq_~|0Hs5WBG%OmXK;3mxjO{gjN ze6$N*HB=8I#rUyJBRf9TGtTLglvmWrm^YA<pc%ix9@9>%b$ng!0IdzxoO<X{x47CG z-3S=<sM|mmDBy-+kxu<*3)jW4$5q5`NC@vn4Dxn76T%((_e}LUQA{)}gZjsHmykS- zErYgV*1sq&=yB`d&|;wTvv85);1lD4zY>>SIkO<q{P(g-krOkBo<^dkc6Dd4EX8+R zcC)WiCC(Q*EY#bJT0vRC<UHz(8EhBfcz9e7eSm!m(!>Z5D}#lYjcuj%_)5M-^UV`O zYf3u|YEQy+tXUXN2VJSKfDA@atNfgv`3^kVf~yP!-P`AFo2_?nd}CjOnrvaHDe#C$ z(`MTytd!$nx&XV1nKS=+FlyLR-D7nkja|LLo6P5u8P~0eywHC+k^}<p6m19D>9uj1 z;RITAvtQG-AN+8D{UUCL$$0?Zj3#@Nt7+CY=WnD@R{52ldNXI))td!)*_F5OjtgA= zA@=Qh$K?-sv5r^!ztMy)3O8)vhl6xW=Jf_I#is~AhQx*`wtyl|91U#iqYQ0y>VZ&m zc9rtG4_G@3`(-J{ND{N7wzs4cml{y+PUIHK@b^<@RtIWuf2~;BDH3i^rRlmqjH44~ zk%FoKKm!2h0Kg3Zb!=RoQK~&=kxg7cAx0^WPX34H7p4y-%7pCNg;6AXAKqalxBpms zsr?SCo}DRtf#i#<13=a=N17S7bYe|zyAh!XOlJ}Ch46)@^?x%NH_<as*b$aV08|ZP z<_TADWTalzLfdC@ntE)druN9_+GmWVmTbLjqdP}zrDj|yo104i2oa|?NwwLj70f(o z(QQuYKMsH)!;kCB8~h@ash&=I=JiYTj&zN{C`m0nAjIHXPtNBTLJ)YPtwbcWd}VKZ z*QVYF-f5OU;~EI_syu}Z0*&R2>%<0%{+d#kt2@oyjno1sDf6o33DvvP9unm|ZD4&H z4}dLnVsY;R(z*H$4*w`X2Bp1@)Su0jKC(T4z8Tr0$juNQZxlPS6-=bH_gI>-&VJLo zR|n^>>YU+M5E4lMn3nuy|5mQvO0|!!OB<>^{i7N($S_k!ggad^(1i;bG>j(`FP!C9 z@o)KAIpd;ZuCqGx4>UxX!~wX*zxzm;m+?2TPON=qP(vkaWltm1!J`;{`fJQE{_p9x zvV>NuQ8>9it(Oq=6?ZM5NF7&LWZqAUOELJg{-aH3nYz=Zm1Be0p>0`)nMa)ZsN5tk zK!hWE_)l4>fq%-<(*Axrd0~KfIyox*RoHkZA*@Hcx_5jeHM(~L3A}d430c|W9ppAi zvQ3Y|TPbkmGxLLY+OZR@R<_3Bos|bn?_oj)8}HszM?n9zGYTFMP&zaUJ@A9Cz7EKp z*@fo^Gyl`Wx2K>ohKe6!9nR$b+3C`2Jb3$!2LbnQ{l~mC>SZuqQ5Ya+&(WjZLqqE) zFldU1fQ&u6a&==;?tvfy6Cn@9!lju%5<e#Qn&8#G7ew%B9r;k_R>hyk`{j;tjyw@M z#-t7zb{@pq46lg1gfdbJ!hudwwGZqSl@wFp`hx}QQvYf5GY#_}pP!L{y$ifWkMIE6 zZBqr{#D?&Q{a?e&+7^~QG^%mH#=!#RfQ{eFIe&-z{CQILg@;TptAk@NGy-6xkThZ# zUu07f+e+1%S}+U<J4)0)iHSh-pVNO-z)9-hpo-%Ets~#-l6ncAyhHmputnAWWk(Lt z7>DZ>14oqBwJUpx!H5e;AdfgOLGk2@8}Ih>VhIBIs(}`=OJ0DpC7yzQAji;7NB5sx z>^D2`{D7v=yHab^zlj|j3w+Ca6oH=CGMyxW3Lug|OLNQDPX|Wvt|WmzxuG#q)Rua* zfTu<&E^%egOYw~lT#5p4>v&#L+g-*<wZ2em^Z|G?3q#vGIC?_eBmmNjY)B=b#Jzqy zV*GD1r1C}p);=@0Gr(Qr;}5R;^lfGz&eT`pb68rDV|uv&&T5+7qYU&chgx0w+TFeX zM<n<u9U#hIcPlq)E&cvV_fcj~-53tIoOT;~_VAN0AbNnDVQlL>#CVbmgdQ<24WFyn z<Em3^E%pBr3%E~usNgyeyFxR28nbmW{{edX<W)=;VsB1W?0p@DR2t6kZ<HGulM3Ng z|C2^n;F71{5jykF!2|;QPw%CD0msrnUM8ndDFy#PP7yhuW}MXfZ>jo#*y$lU2;khR z!wb#55x|Ld0$hoOF;XA5|MfP;^j{S+;mm5eatO!Kmy=1}{+uJFk(*jOw3^5pf$=?H zOkM<a*lykcVlH<b0299d$cNNo<HtvJS6WT)7>pRN$^%SR>s|z?BN$I@b2<L=Ek*ox zVdWdhsv#lB#;25=E%Mar`i~7DtJatKsI`M5BLNv;?7kEt(~_)IP)UVu+7)Rd$R|P) z7}0KW86y?Hb5Akqy<`FOmCWW<$!J;~;O<hL#0G}LvF4wgc8qaBT;vwO54RLm#PP(H zX7+DzQ{$_E!Cgja1^PYi$Yr_@cmv7vD_Anxn||B~VAQG`3th<_0(u)40K+xlQCpUM zT5Q8GU=^A_N&%nKiI2V0{bw<(rKVINWj;pIKw%RVwx>9HdqAiCFNUYZ_#EH|O6&=p z_>cVZq=5s>tsS=Z?}7o*=<9!hS(q)_^>1p7cZGd=n3o{7ktA6=@_T8xMg~k_@`;`- zDpZUVz}rakzdlDvOW<<Z!<*2NZzmwW08d`@Ln<p{iVCoRUZWJ0R>nZ`OpTR8)6$Jq zA+_aC)E?-x0N3!rxVvN2D9jkC&`5omQ>zhdh~`7LfOPPw)!fY+$S?Tua(V7e=zjpJ zC)SG<BPF4zCj%(X!w(D~tr;3HI|eKufJ>1|;y0GhQ+F8G!B71l71F?>%j%HqKuARc zaPKQiH~B}1t5jA=b<b4;AQ#`A(EMjaaZ)cH1aP-@-~;K8<++W(PeQoZo<?Xa|JAw0 zkzRl|%DN$dd1@zQC4k_Uod9)Z<UiO924qwuC6!cjh_8ro1^39);^wytWjE7J6IgLl zqmOgYV8Ajrx}3m78<#%xc}fpoxP(|C4NabpBfp&0i62&k$`}h(NPoWsZxn$6Av46q z`am0tGfSXNotmB#8qd^G=PH(8y<4Cn=gG|2V^&$$nwu2uHTK#%(P8yqdC;G49gPSH zl126jHBNWDu<8Sqg+BOl2>#=`YBu-As<A0r$L4&^f&UVD#Y}_AuV%<%$o**jLP|7b z4eBublGC}o0j)ODuAV#XMZ3+mULLP%S}PjuF?mTbDS`i){@;$y;1wB`h(L^wIOYz$ z$mP{NQPR|9d@+KVf)RotecXlI%*sn27GB5nT`s0fzN}bnh+}klY_OoQf$mU8?Kg50 zD;ab;q$?rr0BJ;XPWnbK|5anz5ZZ9qVA_b;P};n(L9-#VA+-^X4*XMXfoGHDqk*9J zv`<%DAc4j-pM2P%cDxwQ<IdHQ{V!KX=mm`hY6)!d1819h?0gsQ4~Oq%Kz^9k@bE3c zVZW^FvB2Tie?Z2T6F5~(>$;WWZl7a;))BR`vWVqJ*xsH>dc)-N_T{)?{$V_1jc3wR zDV#UI5x)jmB)UP4f9d5yLi*7A{KJj1E+C(v2hj0)WaD>E#`gc1bSz;lF)k!rxkg&Q zUAV;MUWgYZ2@Gl-f6P0ymb#9Vq%a)=irAy(*&-Rmb^fF0b&n(Qp1Iy=4)ku0xc(EX znfh|{I0D<V6T+G2g|DAyy2@)u^+|6-C;yhmw&7YF>YWv2x2wjrTygVH9T=M>Ef*z` zZ@I1Rgv$IyPu<fq39ycy1cDvgOb#%sig(ehvoDK9{!GLTs~bdzep*rQ6K8!P`<@kD zcIBh;dD``b^e<mahD{0mzP9ZbvMc8(jK|?WZby8pqjq_4!`xHRWm`Cvv31X8n2K6c z>OOl{5>I-e*bw@QpvflaziacMws}*zLWrSrj1`u$!fn>#tHkMjX+-FM{SCqoL=SPk z%#;4LsNClsXQHojZmUD+4;1D;Q*<{}Sg>ov>}=TWmGAHPLf+9Ee{|ZHSv?QdG`f~9 zDKC!N^+E5^y~GWxHWOc*{r2WXRGOnE!w+gAj9rT1hD(GR4IxH-JXTnnIdWcuOTI(< zC@ZS0_c!FcHgc3a@qrqLcD<oGX*LT5hNRc3eQj>YjK^)#zlL=i%JI*6fM%)y@S5<v z0wb&qj?BnwKHtzW(#k_{<_G}a-;LaVVA%A3LvZ#w#lh~=ijKV6HI(6puLQx=Y2xn& zT$7eY<h+DNl)MBlfYcEnl>%CB85-6&MBjQ&eVB@DTgVB+NVThVm}pr4`!*~z`fa#e zR1Q`o(f6?4sL`HvuJuF~e_o;IvcBOFDc)V`>W$c3iyt?y2`U0fN#fwf==F#_5x{zj zxmpH~Jk}&So%nSl&}1}=t9pn_lWJ`_m}<c9XZ;YmtQa<PygR9BopU`0LB(tsf6q+I zhgNbu_=mWqS?h9WxNrzG@+#;GXYbumd+$TA)2b%E^|SMMiY{C@&;14us~nA%Mi5Ud zsSf$NY-T-p?c=+H3R5Q!casEPxH*d3nm#SP_VOyU9$T;rnnh8Ev-)4~+FK!O%8qH2 zZomgZ+ffS~9f9LHa5RmwIx(cd=unkg3OzoPJ~5<ZqW0544>?{Ss9poi>n9SngSz@2 zkfLo6Ou4+*AdOu<LmSLj<Av6<jHUHOJ1!>IS8fS~onvf8cmjG#?C^x;{Ei-L<j+#+ z$1l6bG-=gMV4Z5g)l&WF$%sMKILHaHLyD4=)TAZ5{e3NqLgG!dF!P&XZ%MvDR;UN> z>*))UNLQa!irss%^ut|6g%PU^B*fab8-rq`_{*w+fHcuMw|8ICElIq=O}^&H@Xn22 za5?H%B<WAeEDGtoU*{tDGnw#gijpZT#uzHGpY&K1R^G5EWO!#*O31cj|B{evkBw1# zCUQNVsI*{Fc*Cg@=L$hH>Z*nk>snM0N4^&Md>?kYs{N_R`)429`Bqm8ZzV~(jS=q1 z>OQ2BH2rB#b(g=v=`(fjqYwO-+PQGEQ^|f7QNif(3&`y;u**}9;Damz8!M5F3ne3o zq7iN(37$!R1z=XuU!JC?Xd*g)_MM23Z*xBea`8XpkZ$um=ETaq?PR;{HjZd6b?x97 zlPh{|5xnkNP5MiEvxx9#4Af~O2mTa^ywHXXh#Q0J@-uNw+nid|I0N5=GoG<2UvRbS zLHldx?Pdl7hL9BgoqR<85dOjUPFD{8!N+<3L*N%n4IAM)tK%se(EiT`MYh0az9*H{ zBEeT{p(@vee$Eq?PU6WTG*k<`3M3-$@>lL8tVLgEUQRg~p_ny?dpCPj3(*YQvB_u{ z;|`wNv*$}oiLVRRZOlU@zf~m>r&rQfoHiG(Z<>uZsp3W*p}%naSX%d<-T3>nh0IQ+ ze64Tex(ue)UV7<isEl~yi;4{|PkIa7Z7c;S%Cp#=;%rxE!c(=-No7Hx8LmNhV9%#i zYz6(^<Pg(Y=X#SSAp_1X3PV;3Yg`eG7ka(#L%L_3V@;xjmR?cV;$qxQPR=@~j``}M zAP2a&2r(=uZtJ4R`n%@}F^nlnRlPvH-O;p@_Df8tdl7cELt!Vaoj6wa0`+3Y-cFh; z@u=#>lQE3e9ye-jl5sX@jW){;cZtP5ls@)_#EK`Y1TQ)Ck6{qm6-jP*yBw3Iar4A% zKsOo{1G$eBTa&chW{)TiHqQh`Gv8YUH1a4XoksQg7afNEA5~FSD;%@TaUVp;8pi5h zJW*roZ|k8v$A_1nmj^!&Ae(6bCun2$dUdg7rg+?z)8Y#(vp@_3HwVJQ*LJ$HtxHrX zlND7Fq;;I-rlf})cDiz{3skd{71a^Ab#~>Z#D`*buxL(&rG!))UuZ99U3=L&7&<~- z-o)Quhd8psg}Rt~y7b3`KZQb;(y)(F9nOsFoM4T8X^OxU{b*wcQyH{oc&&i0hZ17u zo+iXVr!c68B5Ug2D#U=L-~~lNHgQiCVz`nY*F)(sx@Z$}rgz@v65JL*S~ze1OH4K9 z-=*PG-uU7O<;;9Iq7rqweBG{F&F)4a=&qA=P1vv4K<T{Qq^O<;c-LXJIybdm9gVuI z{;8#E&ehIgNOA?LgYin&j;GH!+p@fwAke#|{;%xA7TRpas&$+AF!Y={K2=Ms5#*JR zm|a3%dQ)0l|CekHculG7vLj@D)+ewV!){rDZwl&$?Yy1FKAWK*^mY)Bi#HZZ4+W=i z%Ej7N9{joOfakzAv+rA$C!Vs^9~x7}em^@I%Ii(t{VJV}OwFq&o%8a}*N?pCIr_El z`~3VQwMjet{IRtLW&W||HO;lzX>QZV(CY_Y4o+Uq{YzUtEaUmn<vmWgND6o<gQT>g zQ;7SwL7-iQrq^Tnt?c@peyuEg->F`9f8VKmnEa}bpYtHTfb^=rx~)nofizrL6hemA zQ(fxJmoO79=TgQ_lVI+!u0*qsrMRJMEJ`*gyAGpipTHZ0gcG~ivt`Da@Av!^J<<}T z9hAVfLNw{D+tXb0WX5hthM&7EH99jU+>`PQxIFh1iqdH|(F_WQbGnFEISVDAlUDSf z0`E~di#Iu=Bt()p_MA@iaEsDGns5huvAxz{@78%}61kS*H?+cioyA+6c@qXnjs{Qv z^n{Ai>A)}sH?Xsu?e%x!%v)u3Xf)W|dr$j%Hbk?vVMK%9ur)SdD(iYQ8r<TM8#dwF zF5>MIw1Waz5-#Gk6V!vXSpF{JtrPfzZdfSJ;*ES5gXdUs&f=YXID^<&%+769d{~3A zSmw@cO?-HRs#wI%ZFPK@gTq+72$;7iR)P*m(K^h+^hJUWspUG%!xS%Jj^yt;%)t~X zL5hp3=d`7Vh^CU4tM@db2aCputE}g=sE3NiiKndhG^OVSjT5(h&uK%Cs_2RljB@ZT zR^=MZY8^~-%+VIHk%(2f0rOh_AGXds9_se{|1Ec^B$Z?fl_Z4hMPtgEJ;}b4#uAe3 z%Ty}LRw1&MCD{{`5YvY2`(T7mWG7i>+)U&BJ=gv3?{_~Q=Umr$o##2%d0+4Q;W4@I zU^_CzHS%RC<IB)lzf&K>$7>(>dw(qbqY}Hu^?vN%3l7S$?1xppl{x(sIwB}G|7q#x z7lR|poGSH8PgOZ$(^=cj`icHM&{*=I<7P<3pL4Opd+h%AulY~iBZ5*P55_qjlzNA} z`@<G%$XQpvH1oy(tcvl!0*wTmSonIGmUOF+K<*j*(kb?pk6JrdjN`;g$fUZW8ZDCw z-1&l63o}Oi9#V08Dr#|V8bgiQl!{OsHU529cC9NTutLg%7)Q_J|DO>b^{xQFy7Kqz za95V#+ou-x$L-7GpY3{D@%6k?ir)vV#_rfZ(*e|{0;FvIiLOT#**K*ae$iTa-LbUk z+f;9XbZzC4>~dF;fZLJ_>T&IP>A$)jR7eHfmR^Vwu+dQ-%x-bb3%D)3a5b*vb^2r% zsiFs09qac{OR=+kb^0XLLSR@`c_@3xWh&q{%Yt>>@2vExuHlLmTy=!sU9Gil$<^sF zs)hjWQq4eigiBID?<2o_t#sF<z}`f^Dy?A`vw+pJ3p#NbIW`krJr#wxpyz%uS{+>_ zwCO;quYhl!&7zSZl}&*5dU)E%j;b#}%O0NZ+Coh_&#TUmjeFQxH{W%Jni(v2kIosV z*|qs4Te_k&NG_J1B%uE?v@Kh^g1kJfLG8z-s50E+UU${~?Al9J#HDC3o@@EI5XZaD zQ!8<n7Z_G?hr8;=yAD!E11qBGHgTq%byHnp)HR%?T1|bnZ-o_(dZDH*Tfbrm7xaj} zJ<j$uvoqVwg}B&NSRoj=%DW(VJ}BKULd&Z&Y`)8?LKzp7O6Q0hdByC__ILFUTvhRi z*Rpc;53WdmKbXz#YIS}ik{&0p@RAv?rR<7dnKq{4gL~B(Ra$Ko#HH!D3cG++o&`JH zMjBl=uI?o>Rm-kBY@*Aog19#APA$c4JfsT>gz7S4v_`u&d$Jc@$+QpAbUT5@iqXKd z?#-d`^9ySNd<(?$uQ#)0;_|Um%gGyYj%c$4n=5EDB~25Yz(Ky%X%>%|H$Pxg@CWi@ zNESm96-lVX4M|E!8UaZxK#!^Q8yb*MUtV+yMZg&A5<o5kIa}mLkW)df4!JPoHj z&WI1XO<zFnC~_<)@fo>e$h|_&0lA;Z9YF3Waz@B?At#Mo8FJppErBz#LL;U(_7ZR3 zLoN%sXUM%n?lE!&$fY1xjod@zUL*G$x%bG$B3FW326A=C-9_#da!-*fL+%lB`N+LM zt_rya$mJrJh#U#I803n<t*W6%MfW%zgxpT#G?6=r+;!v*BWH@70&;%H?L*E0IZ5QS z(DM$X=M6@o0Jt~d=!{b2GLa*r)9xVm5?pT=ytSb3$PIv-{RQt1HwMm^4ll48y-pkS zhP9CMMBSZ`8%K@<xp?G^k?TQD7P<0_%UD+&?$u`Y)Om230jf-`j$m+jn)=4#??<bn zUpZ#Tc_Q6JDZ?CWB;yhmdj9DqBj`9&5o~P*pv6b4_)i=&#Frx7@begQu+IRg0TclM zI{<>v1^)$r8~{!M&;@`K0F3~|Apmvw3_unDCjj7rq}{6eM&>*u>LF182{}m2K&31s z2~gRw48Q^ajR2GYa2|kl09XOw0ze7?JLo|E20%UlG5|~fAP#^T0Hp|k4&(*^iUCjp zfCc~`0O;|&02qZ1*fU6WfM`co-@vLM5C@9<M}33X$1#H?K~NfaoQX9<;0rzMf{!!F zKcVh5pjHT70(1znl@Kfj0NM_L4WMh#b#x7m8G|{X88H<~{2;*&2|U~ZRttg_lo8>$ zQPi{y1Op%p5dm*$bOPSeFDQot$b(>TV^|!jfbp?b2s$9hgqbjuVTDpMJRETbdMQFs z3VkqmM;Hkj;~_xPV(`jgS{)2qzPf?68_!^)5R3+kF|kJDS-j**!bY5sVLo=24jT@% zp~1!{;|k_I0{QmyxtmUiX~E@gj_-l|hi;HdmO&~+5-*Y{NJ7*clJ4d866a9^ag_TE zInM=An&9G3<YthYK<+<n9PQ?in?i08oZ$b!RW3m{_EqH2QADH(&LcO5+$?gF$o)nR zbrwXO1yN@~)L9U97DSx|QD;Haxe`6vP@oR8Q6vDlAmsiFgJGA4v^=EcAuSJS1f&s= zMnD<?X;Vm>LfRD4rjW*kG%loZA&m=ZNk~gVS`yNdkY<K7Go+az%?xS%Nb5%$9zAa< zy2sKra9)3qLz)-5126Q3ywJUPq37^IoEPF25x0oA#sBW=7d+}Hx`WF9vZz8Cow0__ zSVQNop>x@h#*Q?8^wuKaO^-*QodLYNB_Z?z3Frkz!R!3d2X8T~7u;`j>-hg1x_Ugi zdOW&%Ji2;3Iu?(v9zS<(7Qb0G^#=R*T!#_1WO!bS+1L>r3-5CF+zh#9DhCtDh~Eqj zGT2z00HG2D6%ZI8c&(<bj&}HT6Nw$#*!J@xOm-0P-+j6<dl1x+Km(x_gqt7;fe?p? zW)NIJa6$qi+Cc~afdd3XL^OfG3a8kiU=V^skTu3Zb_IlC5cYx~3qr>-2tyzo0l^0e zh!_Q78wji*NC80}0O24Ax<~+m`~!qNAc%udiU=wQydbzE0TCl0>;!=i1TRFOIdowt z;^es*%o#HHwX{|2F<gjUfB}4Eg0vK{WRx~T!=to2a9$|g18FN%Jq~FPP|5J*SS(bJ z212?Y(!r1(g(7l21g3xt!F_n4E_VTAhu#<(N((UTf9Gb15unC_x(K&~J%Ydx1u*L9 zFUX=dbsd^WAbc7QHG~Zwo(v;^ni*`cfkgo#1!rJr_9Voi*~KAEM5mG<O@!I821w(f zH*qd-2D8gZ+9a=hT*bUPbm0q>?FJS%m5=4LuJjTQ24-v+I(8Ui+GByUcx{{^Q{)_q zMj-bL<q&k`H{|mFoTp`84Faj)JWzcZd7JUP2rWjv+7Y%0m}meHKOpLEM(%$gxh{Yk z{0iZ_JYcU$K~>WTst-k-7^o+G1-j3p2IoGZx(0B!UIP8=D5BXB$Px_Tz9j&U%pwqt zcIyLTb|K~|>X?l{Ed<8?2hJf74R`A!8uPzd(^1JksN@kUiAN<OsKfx3r2W^s4V6?Q za4!O1Ag~;P1O&GK2maT)1A%o2+=jph2#i7?7Xl>_XpK5n{WonD0{0*=5rKsWG(%v? ze<13({t7Wlh@l~d4>5}9jy#v4*^hbDtR9_Oh(HAdE+9}Df&K{mjljR(5mO0FPAvij z0MuqdbS<J8h+acS3!oQ!ej3`&AQy=0mfxbfcvN=))e(^6Le30z$VMGJk!wV4;!vB6 z|Jux;4(QD<SD<1ZM3-k6VNG$k?9KS8^WZWAG?^kD!Qk*TJ@^3i0zN>=!Ure<e1Pge zAE3110~GplbrL>6orDii04=_N4^Xo30g3=0paA*|kQzV{0I&lf2wm`B0LTI06aZZS zI04WIKpX;4htB|H0dN8UE=by~>cIynNYq2301|SLn1M=JND`p3V;O)202%=(0pL6U z>j1C<zy*L50Cv!U{0)G70Av7|06-i7GXP2v03FB;02BkD1ON>HJ^;|;c>ypA9k6GR z>;Tb@t_L5WAP@(N{6`PIOv$1TP}=YT>Lh%Cg1{Gg*ae@24^U9|8c-{QE&)0O*-8i& z0|0G@zy{DY=sLOv$Be-o(2ST0C4P`#hXnlWGWY-mf)<n!;kZ%Mv<w6TAPf-!Z)tP_ z-qJ59hXcriU~psb0SYQ$e5@6M4hS+~CJbd*p_B{{N1TCPiV&1S9}M0RMuNt82+*_` zymGA4vl}D-$iWuDh&9^SC>Z9Qz1bt9IE#<@@dlIggWy}thM_SCZB<5?>j(t05Xgf` z_(OINY>IEgMhtBb&x<y`uu-bac9|QFeI@aMUu(|O!_}%P{ld`y{0@4!R~oyl-Bgb8 zGpv+#S-Yhi<>yuD<Fe+h9Oq|O$?CG^QxoY&tkiX3zgZLgK4yrsf~DF<BlyXXd<Fg{ z<JiJy&;A~PF+ZV&SDuPJ0+W8?3qL(8djx*^i7Y(z#Ao4}i*XBGp8PIxOITx<&5rt8 z6%I!P=YBu!3-o(hzpv%zP4kc?4Yjnh-ecb$aflfFKN~vy^#h-!%#_)glB$1AXg^v9 zYK#jV7PX7-)+&+?(^Yzv1{g*?Z`of`zN$o0w=nG8gyz-q_207RDSTCVM%~6Z<t9Gw z^oD1k(P+p%^MXf2=yB3^dQ-2#K;D%a`%Hs{hoL)t*#-zk!S<PIHXQW8UXp#Lp$#AX zL9eg9ot_OBJ-3%;Z>MP^NayUe9WXOeyc5dit2WSoMe$xJ&ev%`@rvTzP+4E&fy&E@ z;h}sab~=A=o5QHa@HYBzuY|*>?(iNuv$xm*e`$CpU9H!{0k66c!Q}Q;9x%LI8Noc^ z%Q9eS?0=tm+E-+t!`S~JbDJ;MfRqu7Jy~^_lkVO-Y)>{A=BKCj;_S)#!yNRQ-dcOI z)-WHPrT5~1pwZf0=5AlRfy^sw;mmWs!~wf2?01;*v<n09UybfD`F(fM*?YqsFm>EN z^p0LN2TTXIm%iBh)dADSZKK=u3OQhE{12Iev{Pr5Xf9_@(zwsw3p#y71Gg_$4JQz* zh1+WIL}{Cd9`1laLeRk@mkl3s<YjCVNevQ9vz~Rmx%?*YtLV$vFQV{^Ci9YmPNp54 zwYaI1PxvaDov}SHElBbRohWdGj^7!<%w&&X+HC>b1@;fvUa)Oodm@-|Fi+BFFj&n# zfqemk*bL%+h&gT!U?ebKFd7&eSPYmxSR2?0IEEEW9E=Z48H@!?1dI!g-x0waWdqv| z#tOy)2IJsi96XF;2*<F)aqO_h!EteLd>q7REJKK8;fQ!JW3V1D6qkeffUSU?K0?Q~ zfgJ}s2qpuz2TTl%7mkPH$os&yg6#%_amX+Z8O9;QI2~}zA{@5}s~{XF2*(RTEC_KX z#H?^c9vA^^3XBUZ3Cs+v9}FGK1||W<4~7HV4kiS~afD8W%f{fcF}Q3DE*pcFfx$Q! zjDx{AQg96Mvol8g>WpEZz`lTe7RFS=bvGaEOZv;YU2>i4r1i4Y=?}l`c7a_2I|Vjy zvx$83f6s_NzX)Sr0M^(7;6+H>2l2o|5dHzd2!wxu+yWgOVU7GMj2&l%#2^IU?*b(W znS&@mJyamr1NBC`lKw^=huWe$ph|=K43Ja6*Xw|q0B1UKg4zsh885V(fb=C8J8K&R zi4eTG2Zi#0xS@8e&`t>obACd=4#7?c<e*E|Zs6O1cR{m=122ODG>b9>N>JRj8+b|J zZ^P`4Y_M7V1RH(W6zzZ%33`_81DNsv#tVXSb3tfY3!4FSCwypFA)s&U1zI0XEDE#& zIztd`BB1Orq7MRX1rOoqj_B<`dqD3lH17f`!vXCF7g8UKXf(Mp8i@<&y=Wve*v#() zdKitw0yO<T(6)%?13DaSSYX3IBjFK^dT)o`-baDn2X|J#A8p|E)gJ@;>>;2dV5G5| zKp)u(v=H=`Mo*Iczo$fRx%10Xv3IpL>&yOpC!gIXz`zTDZ53b$-fi48ybpE{>>(J6 zAAp5}MKo?|{Vc;|{|5$ZIjrTd`oQV~>k6#W0rOZ0*fua#u;XBkU<bjj1k4kU2r$Td z!O*%5>>$`4FkY~o0*uT%jhm%#Tqzt^3deat>;>a^!8l$pjtCrM1;<#yIt1$wtje$| z!&(EYC>-MnCIDs&rUDiQwiWCm91q73cY$$({R4Ig48}oY5n-H6c-l-jE)$N+gya5; zVVq1DClkgYz%g8K3>U0PuqMH32CEsY{ji>cV|>Bb!1Tc+z&ybC!EE4oxMU(bn4kay z+XA*9493A=91O;>gQvyAad<cm566)qCc`*n7>5kwpkuw@7%x~CVO@k(5LQ80Ghr2m zV+deeU}j*7VE$n2V1{r!4;;g~m5wQHo5uwI8NkT9-eTDPqu3R-JAZZgw=PSu{qvnH zci<@2tqQ{3E$c}KLFC-_%Z|G1332A=h0WY35CuTk31u>o5FCS&y+Ri@o&Nze8(|O# zqwGV-dPBAqnzh_On~SiqhK(L{az<SyQQ=nD96k=41F$K%0E{DIkg^*o>Y!W!#rgp> zbcPeEc;ToP7*hr*oS;}df{h8<#K1-#ZP1{;uz8^g<v~z>19jF!8#K>#v_bQj!lo6? z!v|-*NAs}2#t)s&g*Ko}@Is%#aA@cb@`NQsRSIY_B+Vfy2uUg+(NVM$MaLlWybk~$ z>HvRvmsll=By=mGC_0BCbjMbx#uQ2NNJ34AKyt>TC;~;O!#)HEf%F?SRYsB|NayZA zRD(KrB0w1dsA({gY>}i0(moWaphyY<s3`+=*a}kMQIG^sQ#BNwLD4;kB2bM3lFlLt zHPu4Wf53yI5D8t{oRHr2j2L+O9sm(X;fu&cI&s^*dE!5?9=|t_o%m-EYufb=Gv0p< z%RByk(@^aRGc)!mLr??OyHLOZ;9&r70C)~Sp99yhsbk+a8=+uI==-MBg(pnA$fFGM zE&!zgJP2SefZnh=!`cD`W=FqomZ}5z06<;<*<gfiuu4FI5`Z)S`JkgBjNqmEggF|0 zl#vMqqxYbI6F@!y{Q%?#P#HS<!w7j$;144#UIZ`-Kz0D}0B!{^96(oC)nJW)f;bof zJrw@oQTSqVk&gWXBkY9r1Qdt@*aIK|I(EPanQ#mEI2Zv6$akRN0DuPpbOulyKr`rA z3L{KGK`D$d3b#Oh1RyJb3IOs0SOZ`ntiiCZL4hEQfQN@7-aiUoPypNwBW#6L6bfVk zoB~h^I@-YqWVi)l%u$9NDhP*y!vOLF7z`jgfP&Bw4<jT&0Ukym!YyEr0b~PE89;Ub zGXX?1+wCgD$OjxT?C7^mOe2zsMeJWU<5m4-H?!+0(fO$QX5u3d4ui1!{&(^-5Oen* z$C@=G|BAC5TQ0Q*aTx@$J3w88V9zo2O%ra&90!zB1291dP*xhUkA)zMnmMD*KG;kg zhs`!X{_BF+J<zUTKWrYu#%%{MoCrP$iVjkQK}m$FJ~3!0rWX0Pun&%czYx7{CJIWy z1yFR*Min-0Xmb%ZmS}@uIVkT#4Y$Ka9-YpCHb`NG4GAeb;Vdc|gC90ZXu|=UYP8{l z4Fw$`01YjXOhM<64!~smNa8{gI*0~R0g4n5&V~RX0I2A46wpZeNRkC<7U69uVnqOY z()XxoF_QR@bQq)!6e*(!eiC}AA8N{vBoQR>APF_yiXu)Fp{BzKU`G;~l#ZI#A_-kD z9pRxU!Xp4({XW!mJ4mxfLE=StIEwZ|q;v=YsOeWE?Lrco^dX8)-ESf*@j5J*#$HVR zTj+G)BsP2Y{vfurs~qFle;pG->w)W-$g$Q<L(ODn=DjlvJf{Pl$opj;yA9weSogyE z0>E-8APBW?c3cE73P5%TI{qQ7f>5v(Kve)W0E~i;Nk>~Zr8JV6aZn(omdvz^Jp&(3 z02BsL48T4B-Jv4~TA`pHMkv)vW{%zg@Bn}u0A2_11gwW)Ee3E13M!%F;spR70mup? zJb;xC3fKX(1uzsq26SYH5d_tfnTAjxsG7{gN1uTYC=T@h9!eU(aR5c2BmAG{82n%o z%n(M%gj>Le19%v~BhWDrz|*kqfHexhBq)%Aj&^Vh<i`NA!3Yts@<YK+0QCX10<aP~ zF2V?-a0?w!FbcOojynS%QUE*#pb&tK02)F^R<uGvCX9fGTOi&A@F0Mk0J;Ns99BM9 zD*;@Df>G#5gj>KO0o?6CC*Oya2MSmLGy~8Jz)|Q(gb^^f1vE3fAtn~Hi-EBmpkq?U z=P|tccXIJD)lCon1Iu1~kxz(2>i7Q+9X|eR^e_Zg$074z*LtM~U<*ef-~ucdGRk*A z4M&^%u=$EM_h6F^n;|XeZ~;sjiuh4rfzo_XIRz~itU*pk`9LHKg3N_vRgi5^Gcy!9 zA_$El3{bEz%p<7*QQ`h$m>&;BwlP4q9DryKH2AMX2Q@&$79yDqpb}K#i%voG9Fn(# z?1}p7gIvP{wUy{NQ*_)#kUfx$?!q6*1|SckmNigI=S4Xd$dx_<sb3XvcOjsBVJLbv zB!h9l*Q&q~ztPEjs0ACU)I>=ql-v!;kwehK>ml@Dpvp;<WJO8zm?P+UywJRrXr3W> z0}Ej&$&Zo(kX%Gp?~k5A8D88%IyyiS_1J=vk5N($k~L^F96BHaC8bagMd%@bDj8_B zP*fR)l0-;`Zh@rAe&`{H-a-Vb{0vFPev~|gl6z4y7Lsx3^=YBe98mI579@F%AQ^rN zk{StrhZ>JHZ^mgQFf;F*VhCP@HS!b#zuSmTl*yXM4yg}f`H}Cip8fD+4TYLFwGKFA zgrm)y9qIr+0FV#BeE?bm7zm&=tn09{LIKzD=1nQp1g2f|DF*o;07bLl4?wW;K*22l zIRO-hj%F}IsV0Eorx=+RV2y%;eE{MB+zDU|fT_??5k?S!f=U>{OCy0f`Vc^V09gPu z0MG_NQCNpz4Tgd>7-3Njz_?Qk;ua%1b`(b7g>^p^H~=UFAbO}c7(ozj0e=@pfLp*n zf`UB&$^pm&U^#$O(6IwXAV7f>j9>@1K)w$k4}g0BGy%{Zz;m$9!Kw%aUNFKa+yXfU zKo$TcVFUqK1)v}lKo$Vmp`##-fQMTk-aEyxgIgdzKE=TH0(cHURsfR#EQOACFaj48 zjKT<HxCLSafT-hk0JQ)#1W*{(4p{A=fD9uL;TEu10Jj4u0wbWAxkBI%LtyM+Qec81 z%Zo05n#kE-MX=bdnSYf}f?y7U(Es9zT3<lCXSm7Fr?T#U<lkST-aq4sjp2ry>05yM z2Lh3Qpu_<(k3NZD28RF(fnY0Szd^moKFC@?vv@YxoI@K{*z5+R33WlN=pERoq759B z&Iye1USPD5au<|Dr0fBu5E|y~g%eC+RD*MHL=IB6fg%Qz<n4h?0ov?@jT_qRgH1Oo zXNPh&*!1jzjXv6-BP7rUb>@MyT+uv!u$e*g7@!TB#}hUd+o4YooJG(_5i3NLhmi9{ zk`0pBkrV-vEkuJ`AX2ywQ49i{kn|6d9)Q$_Mn<>-!X*%(ivTqId(_keNmd}uAYcJS z!3fw2fFEj_jwAw-c7U`KMP?{sLjbD5A;}O)Xi_?AdJ#n|C_*zZ5kLg#9GY|=Y8sBD zT_{4h8bni<5rD3HA8LyJZJ4?Q5)T5hw=6FnVS7TH;=c1&xp5nS`|PpC?eo|_cbIWo z<}vj<%*=n@V)0w)#66!j4R;J+u3H#*etRq%mhJW!VcR@*8W^^>n9mkEQS#Gf$Myk? z8y1!UY{wP`dA~izwH3aNatFTk`WDmOO2_Yei?slH?$c)JmH{jgm_7EG863%bhiM2$ zS^~O;HRjo}zs2|f6#BI3wGF=Ox`mMmf9#h4p3@$ygr0tPn4??YV#+WZ*Qd=qKovi2 zE^ZybYJp+5$JU_d);sY1*0-1|Ebtf+Tj|)YPn&}97*1Q@&pP%P97x;=3p|D>Fz^_J zEp+Vkr_D@wj1@Q%P*y+>*ke*~r1Kpn86Lw7`tW|*oB~wo)8;5VMk+9@_LvtO$qx+c zTPzS3mbcg%pj$s};$d{HE%0X>dn^-<+zJaEDSL-WgzJ!kKEj_i$?%l@TNrkLDgt`g z9vg)tgYPi0EpIVF=)>`8GYL@HPn$$|%2Ht1>@hMN3EzOncE3f_VGp<&7@stJRdAfg z?7j_P#K@;aGqvcyHA;@ZM&<VlVI_~a*Zn2FeJ6{fKpirBq?Z?|fc0O5KoT$-WIVTk zy7K^RcERQ$+WZ3>P1uygL5I6wPEe#63!8FOpa7L^s6`c$QGNx<Dj-W-0QmvPm8e+> zis})BM$rZ6w+_r>^%x?vW15@8G7#190{L7BqC?Q27?mWV254AQB=e$@C@7gjry!bw z<eeZ7MS`4)WLc>7Kr<Di<HA86Lb5W*3#er}YRL+<eyA2*k0(3iY&bwFc>s97CQx%n zA?XWG{yPYG|4?)UI$065;5!b<7^wW+fRY?&c2Vdtycc@V(c`qC%EKtBi;|ouiRSf0 z^Hgd;4<<?~qa+R`w?gtadIo=0NGhYzY|sH)P?8fRAEKldB!kgtICOw5>fr@Flu_jx zdT0h3jfpBZA-T2%lEFuz2M)c3eQ30BRCx>~FQX(kO2V(BTogdBFAn|7@f9UceQP2I z%Z)*Dr#B>{&O%ZxjVTy+7QXN5O~>DZ^?)~>cyMeUyY_7m6OAm#j1Lg7ykqT~hFWRN zxZ~}c9T(D=nU4Tu1yBLNBLG$bxU!#sIiVE_xQ@1ON~xzY?e3ptkhuZe4d4|3&%!DL z>jZ$}P+$ffOH~1k0dOaba2M9YP%w;D;(F(xl_IqAf>xub6%P<_HhBjS;?PO~S}i~; zWoYFOtrnq`Aq=~y2?gN*asem^U>Jbg0c3%WJ+MYV0lQH9rr^aiCjRkR_y(*u{lDRM z1GpCov|%*{Fb@hkV1!H!03!etfDxi#h5N#e11Jn&3xH<Ou@pwIgA46|5$xc;$nZ2o z4ge1W=mDTIfd0^N1=ckvScDPqaG}J=v+zw=0Hp!s0B{?u#;_6q?0^D07=aA8Kzslo zuQ#2H3gEsl2>_J=Tmw)LI^tmjBHV%$j6j52z~G%?oB;9x=ntSEfOzPLW+p$W-^4Tz z!=G;~;H%8FG7Nj7v58}|_%+(|6gJyoBa1eyu;KWA9LrEYyuNnm-FGtlDCobz`(QJ5 z95w>5;ksbjH0e)B9MQ0wXcOzHXcmxK#(WIRNp}wa#eTXUldxiSU$;~jr({_UVx?DI zJ7-DBl!AJaq=c>&0~1o{yj9UwVeR2A@oM4aglo+v7F$c&wy>r6vhr2&?$~Zq7m>fj zhsLBFzvre|>7~WJl6^X)!U_{A4a=k*_8|EsnU)Nf=2mD`>{-w*z7o8NiPvVCxO=(D zQ-dvw>5okFLi2M;i<{()4$E+Q9_0-)Pku(#oq{XYh;u6rdjGtOwL+m*-Mznsw69ik zu9uG_S*t%s>F=a;_V)#?##G4D+DN2T4-$!%Ug5hsO!B3LR?t?%D`>Q@BwHr8$9AT= zhZ^&?hY<6KhZ9rPgM%sKVa(+9kY#EX8<O>htjShGs>I7fSBQE;Iz-DMOX9^LO``sg zDbZ@KAK&@D2jBO;pG@)VBzF4s68rqRv2H(w+a6qMuG=*)5B1%7pZc_L!Sj%7Fn2CB zL-WD=B%{0q4>|X6&4~ALWv}0tmesw_EPM2xT$by1r!3v?Wm%Npld?R8Yx8;hH;xqX zJ08jBcRP~De?6^;-!ttMze8FczpHf-8=skr7EiyM7N4SfBe%axBk!79BM-Z4BcGv* z2zQ5@P=hY@QNtWnyP<~K)SyKbZQ!EjH~3Rs8>FZ+4R+Kwt}cY+62I3o?t~Y+7jDSr zr#ro_@PS`Ip7Elqp;cfZq};6L(|nJl9D@|qx^=<P=W@-rBi)kn5hQOP^_tcreUgfe z72>Vl3pzfkHO*<gB?@^J?yasKU(&it<O!s?)^iI%KDITVtvfyCxJaq3!VA}ZEK)1> zE*x&@^CX2VD2Trr_7o;57bW=RB~pIBlc6T`We<DM+}6xPskNqLzfAd;!(MD|?B;6J zaLQW+j~Ewri)`vwN-{lCz69r{?-FMbPaUTu(C^C^x0%aQ<0(b-1o=FiN1J<xIV-iC zl0{D=<>0&|+{?do+U_r*XZ;~1sjCKCoFJL0>jazRkowg%Q#o+dxh%6_wN+QI$6*T+ z(l2Wzc9Q(RJ)xIyQzq*p=^5O8BV0~Y7DsEwWjz<cN7@Tc(z&6>Uz2u7XNQViCv|*F zqgN&O*X?JeCOH~0bWXe4MLByI@lqAL`|1+w=;?Ycqb)h~a6MOia|J!V)kXK67Q=$> zM*gm{U^ZCFJjqfqI`NVoain`Q;Vbpsk*>{W+0@ZndJL^tcdU8$0$!Wklicllu9)wZ zrs71AXVW>G?}0YWJ8YUXhM((J3nlrQ@l@wo<6ef~-W&|NBusm&Gjkx3k}a0aDA0<S z?Q<$Hj4KSo>9S1^x?S!tQVS~KrEs{ZcNk{})$#VQ_I|K^b8_{#e17R=<Djw>O1zt< zlu`MHj(lEHL11X2WoJuoR-L89%!HeT;ow7Chnk?=g*g*H)zbIzK{4sw?h6&R1j1^? zaCZMtZBY1do+6bQ6pwqUI20Zfh0Cd=ehq36=o*?gsvQ>SQJ(j%?aAn@nb)oz%INNY zn@1A}*0k%%=<9zswMtqD4CN2LXxDGs+h3lvN?UNQ?U!C<J7PB4xkQUeyI)rp->c|- zW#hGh<!Ecubf`gGT~$w^*U!}%D<$TJY5SczlI$C=@x3!cN?(J>vRPhJ(X&I!P8<8$ zKh$N*zFPdHH><2{ydl|Mq4K}h=^CZ-4bS$px*FNi#h<6AgO#E-Y}=pJRhAdAS3j(a zo10}+*VSdFcCPuyZ*29{!FTG<u~hMdeqZQf_Y0<}{ZL_EuC&9q@^`ZPv(SWo9AjSc zHy8BNTFw4p#B}l3!#D8v$N7q^j{neR2KejXKc`c)e(*5W{Y~*r={<&iQ#9irJD6Af zjqq(Y-G=^2G^38rjz88+y^j8l<%1i8wpZ|tx-(NjuFUgN*>Qomjdk17u)F<vcGI*u zuE6aZ^&>CC9x3M7&9cpnk3@#OP%N<f9W!GVFusvEaz89lG2d=Mf2Kd6XXCzNw%uIY zY=5B725sbHSa{{j(P@cU#X#MSwvl%#JZDy|wv~jrf9m&QJ+V5pU7HzuL5D2+gtEBj z+G_rVxG?{hW@M4hyivaC{zcZk(`zg{X)N2+Hp1^ZgeslM!XM)96WkX)6ZcO8O=~;H zhSObb=F+ExO?7+A%-yZihC8p*^0xVG^xO?(zW8)+^M<_<QSxmLUeKIE2!FV#+SzBf zcVk2M^Zm_RXY$Dh^=3+U_H4L+j#lBC@3Ld3&wBmCSXB&XZdiTZ%3S#0%T0rumxzjI zi#k}eR@d%jZ!kVfGsFM)VbkHJDt78@KJiFeH-5Ll9P4KuX3zhMHZ5)%VCT=45)W8+ zlJ`o^+U-bMEe&tkaQxm$-d(j(dCU%zOz0%D3)2KuMVXD4EiuuAt|V35M#n2#X42)% zP4_o;n1tL*On|o++r>6ReE5(y(HXgE=5iHNmV1qH@b+VD`qS8hlWY=l&eN}4zwT<| zzV1SKtLpP`R~w&9h5eh(EQg5adqpa4d~o>s=S#_fT@1}LX=hY_<{a3U7k%lhhx%8Z zuk35wyViKiZe|`}U*og*xm8H{yvwiq5z#;XynVVWjyv$Dkr4j;^+Wd?W4`>kZ*(X_ z&h&m>^w^(@r+YiNg@0N&IR~_#V(Z{5`~p7#G@#3z-&UsiYm26sBRA)P{x{M8YMPvI zxT^I`Q~!i>uV%NV%?YO*A)IDtPQOd!Do@PQuxwEodpWJ0G0(q0>Eh*4ka>C_TSCUI zLaQM<_WOq}o)>4TkH>5JUu!lOlJQtozaA|wRNi3u^qkYe_m5=;*FKvozH=$!vXG&~ zo#v}G`Z{oQmX}X6)G6EL%fQ(bIfX~BqxG|0oyuJrrlaWGsanA?5?P@Q&%45$3a9Us z`QGjvIH`2)1|Pq|Mz&CcUzd>+V>-D^?e>oWX(fmGL+NsUu?9Rf>UlADr=!c<Z&L;& zlnC<z>5BA7N$y}xu9(^^-G-4aXQxiZ=+Kb<f&R4^=HL5e<V?AJe~cUMhEdOc@8DJo zi}QXv>V9NwjVEG*+2F8w$NK}`<;YKV9<7b94R7&|M<(KUwHQtf(wiT=i|`IdrVM!- z8O9B}H!GyaI=DqP${Vyd)4bo|z0$^{xbrrm8eBJ@c~_HfM1MKce#bp+_vl&H-Qzb- z#P~dsY1g2hW#@6)i)&b)mY2Mc>3wV?ChCm6b@avYgL`?B90#}?BfWVvV_KxITi^8_ z*U{rPbLjrSYuq58tZ?#-lXaBExKb-mzthNvt*i|(=5n52o_WhYk7-JF_;JuD#>%PA z+v>E#4*^|X|8G|s(#tBm%}zV%)dxk_IMp`b%2dWj%*oz%H$Hv9E4ZBB&nF`g&BoVL zc3}L~z?-F;H(CQuD0rUdO+6zJrOzAJ_&Qp|v8O@rMniy%g8O;SRN0K!HolH;hocEj zQ4Kz2!sF`$@1*$@qq)XPmK=X5+CCPEP8!!9PYh@dkk3%CjUq%>1;i}{ee4eq8X<h- zSyUW(%+BrA$P(i}rq)oi<lv;D;`otEP<|vXjz{oYV+{K^M}yXq_W1a}2}{}`RP)FV z?#u>4Ovji{!_-pXc+|i5mYhSn{uQgc7Q%0*aJYQ$c<Sl?e-&C3>soZUM+w3)g72<0 z#96qG=M_blCG<J{P3v?2`>c=fH>J<(?{j(kzZvo_f1k=<`};!v#%V$fH_<tUmq>`= z!LG&dVb}G!F=zc0OG-jMK|fWK6771uEya|QCi-qt{{_juph%;q-BKpK$hoIYK~D;P zB<^4xPpd)ltN9$Bc7qpB=PP*H+LOcl;vUW0%03?^G?X*iisrY<DhGGAHVMf1lt;9w z(<5Ib;oK$(aW8fZj$e16-?vD>xt4s-kcleKYr95|ws?kfFKNw?)h(ZDGZ|#PZb8qg zQVMQ5-C?U>eD0ye)A5wVb9EMp@n;Hso?X{BXfA5gPW3&<Bb(miM44JmVLKOk-N}GF zm>_GfFts;D;+)!b_x86hns}s#ZfUmB)1=FV2tVdqU!1AAb+YYuny61qnrpcTp}|^~ zK(Q7lv|B3^Myy2$pRE-MUDi^BCTl!laK25xmF<>|&sXcwAEy)@JkwI;6r1#4q)xtW zYr7?T-Oe+vD$ujEO2ad=%Gr}#W%Bz@mGAGDRr<f5RC)Y<JD92L=$WMK=9#H{{r3}P z&)><)4!;wWU4N%3JO6&B?6L1xdveWWdrHkj`-_^X_SE2ClF7l7k}1Ixk}ra%BvZq8 zfBhlyGlg+7#D}c@<p=($9Q&o5*6kdwD=*a>j_9l=vxo$>sT~ZReDx@7<?XjSfdP)4 z=Z{NY6L`U`5WyidY4pfwW%^rkpq}H8^9s@q0!hhoafW&?L{7YJd-^Rp(9w}{UR0Wp zk(R7zsC_y)@8sdOo`brRGmo5o<T}oDeD`UST?tt!`glLk&$j!#h?H|iYLY@nOG~m- zAZ~I!uy%4sVCdw7K<1=I;P%P-!0<`oK()!-z^{`5Bawj?BX0r&N0I|IMm_{OkK7M5 z8OaIs9Z3k(AE`L^RME*cRngrxNs(ZispvKGq|$yQxzc4Mq4L^DTICIcNxn&m^^!pM zI<JxEnP<E@3{(7n<+UoW^i0~U^Z1C78$T+O`#*}1J3cCsM?XptKYhd#J422VzlWS5 z4y3gUN((j%$_us&$_h3KDhjq`o)K)xloRa8l*#;_sX$mJw2G_{+VYmCTJu(>+6c>B zt%Mb>wyEW$)~S`Gw!v**LtcH7w>$l(Eosle$(9}3D~b0K*4-{rLyC_&wR5f}mvXJ9 zcpX}O;dK~(s1oPiWG}A0DT{~pzF0iGH+5x)&}8tA>`BHBr%9F_<C76PI3~4r#7{Qv zFrF0I(KD&~IeOjobJ4oR=d|^}&mY${KHpn+{+zXL^7+}i@8@?_<}S&jhpHzlAJnbe zIDGkAcgA(|a<UBZv|cKn^LlIU7lD<jFSaX5UsP85zl5z+e%ZRR_T}PA+?Qi39bX)L zs&0P!TX?hgZ_Ultzj-%*{H?tC<!|ZD?(RK#r)zIgW%dwGm*1qk+cS0A=&V=MmmRvC zl9qlypG_Q+wDNrF5U5eYd1|@X-ssC7PT}I4M$L~8<rcdbH7rL3ojydfEXz_6x9#<E z=43M;)Ce~<=z5Z9C3i#kv1ZZ7EF*EUORLx^-pV~uCyTPOwB0qj5=^Y+JcOgJ7d^|e zaCh!XGqIHODi*VR+x+-&ai4~+X<*m8L`w&API2qPTMxWUiZ7Y>i9a)Kdz@fWbKIk^ z_`CTGC(e}l*tXC?BeU;A)~K7Mw7q;OcZH?tUW;P!hsCXr(U0GJ(^u!%I%_WN>06Tg zw%SzBa#;Lzk-Vv%6;Awmk-S-}rF(I5ImK4mtGL|pv!#E17HQ<Musf5p#nh|J!Q=A0 zCEsBNMYDdl`}kN6N!z=bT5;CH!!)gI<8g3NTU2nd#A8O0L=>aA_%TaSaTH6j$K!}1 zkEn>^&9MXSHDgBZj4^5Vh%s;X#<AV*d1Kn{Q)8m;Nn@_=F9RB=qyP%FIG~+c8!$r6 z4){zh59p#61~gG?0tR{YcquB{{Zz#nD~2!!WwR;A_kxTwf3ltxi?A%^^1DW*vxDyZ z&*sbb>C>$ugjtHd#)nf5G##7!{_CxL+L5wYomfjPk;WpYXXBKzrrmQNe&zUv+-g=j zwvJVf|BCi?yhTwGJx54SORF@{mNd^h$yMC*OqVj#<m_JY?QQ!h?_ycqkh!8~_kI1e zyOr`zIHy}Zd*3eJWbP!4qpS<pQg#T3QXU91DH_7tDfPnP6k%aCO0Mu%N<dSjuSL@v z-@vA1UyY^@zRpeeeNA9`-=+j#{iX_eBN-<fD;akiGZ})7os8G;<#+bO=I>mFufDrB zZ2j(reu-R>m1#AlSUhy@ed6vpdZPARY@+B~d!p-HNg|KCn{%A+TC?q3Mq((XR-94H zFx_XqR(hmD!2H}b+=p8ODYoYvaTT|Eg90X!Y2TZ@=eiO(C{E%c#f@eL7KTM>@2{J- zn;Vv-kuogL5pcD)MuM(S+@sAmYs^(8>QYw3lZpqgd<}ZlOR_ypD^AkkptR&_&n0#z z(A-?9LB(=TZHaXA(j>a2R|4I_>p9)ZD{-H>SJFPq#e{tpi_iC2t>g+(f^)Mej9e!Q zOYS%&BA0`rl^aiK%r&Nn<n~ZhXQFAYGetCunKWA9%txBW%sra(Ocu>#<{8a*<{jxn z^V>R$3Cq!v<>EzC;Uf4Aa>atCxkZ9zxy6~L&PBN<I7&xhP_dmU&4OGqTN!30Z_liA z>)deadqSHkaBvUoi=_1z7|ku3I8pG04aGz=eRHfh<q)+%^i^rf;f4YphmsUdO2N5f zrfsZMZWrH}M18R(ok%lj`63~E-)!>ng%?uyoOd4((|vr?LPx#1`?%%v17Q|%7c5F6 z6KRhEEXd!*`1TJvhab<oap~7{wkY+%$nWBOoa@d`Subx`A9}7Ine|S)EbE5Op(OpN zYlG3JL{mA%TPD?A2S1vdyg%C9e7Ju0ov@MZ`_oqn*^J7loQd!=TS-dC3d}?_+GZ2p z*rXr!EtEZ8Tdmbw`kRxjkfA<48`f13bV06E;E+UNg!<g9!&3{~ajI$DV|t%cmJ{v6 zv^DNnwW;Cb-+ji8F?~H*1X{GY53R`Dot9=EO#5g~pxra~r)8OY(Vm$TY44^b6u<49 zC>ePBgNrXw<XgjpcA0jd&JD|q!>Ne`b-Td0fsY@}ZWxV-yg$9jWtGStS=_=>uP~wJ zIJE50Wv6ody|^IfP*U6@{^rK|*a;5Dyk+e&pY?=++z`vX2_2C(Erfc{2_MI`<-jtn z^?L*5Ax85ibtmYOc89}7)#l@G)z^vI%_r$ZGL5ypFNg{6)61>Dm><opLyHVIt{r=F zHS?@opVU71VL)Gv!^a|fpPZGEKmE{HXzWezo3l#tCu6l^qMVF5#y<4soK=w*Hn^l8 z^|UwothBtiflk|_c;l6^gx-5+<w>UubR{137`Hf9eA!R9`eCefk6oI{)BOaq6ZPjf zMZG;WEYr-M9&qBsjs1OW>wQrp^TXRLJL{{`M<q+R4<%jQ`$$*(VSPY-<cA{1tJb#C zCrjRNbD5dyMHY&ktncGA9!q)bDs3b!R8pMG*>BSNXij{xo{f`rtl_bSw{iWm4^@s9 zdZxT%&vndxSk6QZiE)h4n{z&7%LxB2(u=AQlXWb3r}e{TQ2clPJja?TJ&Ga5@{O4o zK6bbH*pmIk+vJiX2iQ$wA4iBceiKR@AM0w~y<|R-6Y%kt&UvGA64%8D-{KR?$MT!c zE#02@81VYm#q(BGr!oqy4|bSIMh%LoeY`yJn5!^k>57T!N9)8xrB`#m6`H_r-80c_ zHK9fJ7Y5bynS_qD6@)FB_T34nal8D{SpLLFG4J6O6QQx%0;8p{zT|&jx><*q%O6uI zNI4{ErvJ#W;B~!fU-Z8fZl)oo@**mwDO`3}B_gE?57(QS=#I@5IG34wM0yq2EP0Tm z>Iw}a7YpOZB4!i*EmM*RD`=0*ofTN}@h$x~x7zTp<*-y(p}>B!8T(^=LBzMrzORl| zLF#`^aAKP!0vy=YxF}+w$TwnN{FTCtXF;?IxdK9t1x~zp_MB+JRBn;&lY$^4YM*X* zzU_0*m}9lPW;@+Nc#5>YU)I0!(EW<cmH6jfDbcI$K_}dToQqx?Hn?v%o3`C)E#XNx zC$A<`dENY^o8~p!wl}S%Jn=i^$KSoZu6npnubETc_}z!=mM7h>U(;?YvbK;F(RH7k zC`j31VOoC5tp9Y=a*Fed0{Lqi#p2@bp%x~oPx?sO7RIU1NF-Mav(%?EQ~?XSA#px8 z#x*Ao@{I!iCvBwgce#F--c$Cq=q*IvDCAFEAUVCu_Ote*7<@0GY7g2d3-`ZCe~u%` z-fE*-RGBWMS=ad4mKfI@?Ju@TnCp{lqPZtId!-*!eB(3m(6{c#8_8peCA!V}vsZ5Q zR9E~ck`!Xh2K}1!t-Tdhty1M|L;g|VdBM|0@l<6#-?JeKTgztkfhwEfH$Un;^?qMg zl=Lr3eWKi_-<&@8`j@0{&#jl9n!ha-#r+FY<7@icT5z+6e`WYa-72jXuJRv#cSMix zR%V6xnm*$e`L^osOoQg_-J*f^N)qfkgkP7dwFJ_BCr0Eje!ZFr3p5Y9Adn%Dpp_Hx z>*<Wcxio>NTDe*iT{F^wdO_9#sTofib44bWW<gDhin2)`c9SOi`PGRR2FNXpCM z`jtPU5oj5tosnVtJe&6LeD+8pfx=iW+PHtdMn$wE->}JNu4nn<M)Z-w#ivvKYt5{) zj9(9E%;l_&t%2UmmmhP&F4<b*PdCnK{c@&dFE4LM2Wl`se0&$CYHNZQEiK7>*57N` z@@Ru6(1Tg@u_VmE)($V_^~UarB1Nh>bvEf&8?EKmyU$N5<vuJ^cG`_lo;;~kJTbw~ zCK^akvmEJr^3<3OxBUB|ZJ?oA=Eurcb|d{~jxKs}C$P)yZDQejIC1-HWXKzbt13Uv zoD_8BPKr~|``*ZVa$=m#c=^#o*K<8*gfed=CmPDPHs$e6PRO#cE)PD`ShxQAETqoC zqFsS^`GKZc-N1B95--Q{L_<zUuC%b7hh9rRuk5XoGOfCi0r63n`FJk{dP^lQ%derB z@a6P|W9y#dZ_~VvJYAHJZC>MR{KXP8zWlXe_qx$|&fgE-I$_;sCAfGAzw%<rm&+T@ ztp|>O{F~){F>LU|DYBdOGdo4emim)wVLiW^y;4KgZH!gJMiUb7a=E|a^j+7DjWs3Z zY2PzbgC?Z(Lznwshpk)n-1%GUdU>-;?gVy&_j!xH&~oW(qjmqD<iB~Y)|*3e$1wMl ztCl?p-Knn=yX3N4Ut2iKw~2Pim0s()cSS#{+0*ihLC?EescaMSHDaCfh4wzG4^raA zexzM_I$7~pfsiozBfIlQp<`R9*vOC4cPT7a{Z?K!y9!*XYWphIbv|o3Mav{?C0Wcx z!0bUAN5PxGE5$AuSL)k(#0Jl2>!c9+nkUbhP|uf|%1ga@H>p9Y4%ALmlq$R$^-9dr z+GKF7u;BUq0#EINl;;Tr9@>S~&!crJSKn+rx9#if&f~S(Ffneq<L1e8RYF3ofaGlM zY^izGs^yKF7mqQ&#CSouv#Kviui*D{QIcj$#jNWKBlq{M1tiPKUaG{3Tl(`IB+r&C z%Tj0U;?Z|SK~`*}i-m;>H)wsD#k)z~?pHjzQ?8`Gf8BSzn5VCwnyuiqU}9B4&zG=b z^qCfKcblVJB<asRp}zMur&Y$jS+LaVqZd25MNqs+PILFE`My^cekkSoxu%<LFP3%d zr&y4z=F+IOzP1Zp)i3EcY_0~AB=c*nlKSi$E;FuKle`+t7|sXXFug1MPqg#5%ewkr zKAHVc1~>aZy;7wUJ$d`uRtvw%Y@hwp`cmn*Y))+J-ol@)kxF8+1+neX`A#z9vjeU7 zl_X{JV>|TnIb?d=PRM2(w6+$+%lORxYW=7rT>jFa?Q}tpjPC4e>pS>wUA;UWB}(OO zW(1OO@1TdauYr|L`p|RJDUx%qxmBDJx!BC6laeQSW6q3=#P%j?XlI|WhuUoSdk6Uu zg)B*TK9i)%n0#?+Ltml?$85oSZC~G^gzDEGmiiTKZ`_Bj_xXDG%x=67^i><WS6${| zG~D|>$J5iwG=AY>b?&f9<$K2Ld;0zAT3r5b7sGtzp`O_idUT50qLF{)T0t<C(ObK~ zoUNm8^(8W12E7cugd0#PdOf7otG19m`;#tByTteqR1vC*qp0Kycx7HOtS~HmLFb`e zV-y7ygc{(6RZ25l?Jjq`mnxW|CiSi?w79+hdRglBhuQjlcD21vFH8BK=o9A`rMYQY z)>57t`S9arX|c96O|8tJ@@%`>KIxYuzqzk2-rk$<ulx{xtwLl_sngZkQR&wz)7)l) zetK`>luq_F@*B^_$GVa_rL$EQl1(ywTk|`VC;PbgS!Y{fHE1S{&o-)^EF}DRXHyN# zLWgDw7nL|>8SOb6uViz>;CBFID#^O#muoS93>JpX%o~&a=!K(7EWL~A;j?k=$7qD9 zx0b(;7!iGA3&_fiz4-L;+0pjhG`p#sVqb&7ps5Ov+wB9_r;0p$+Xu6JMxLj$zMr+O zSZEg>nz4RAEcumQZLQonG4#3QKL4x^^=C-}|BTL1S4s4OKW$)omgHm;>i4m5w0)NM zZF$Ykg|w1m%9ZW|2Df7d0&TMW!usLYCCGbn`RNa6*u>Kxmx$JUaHkshwG9Z{l+&9_ z&ec@7kJ$E+?2~*YsD(Ap=a);ImHRvfIEPDY1{a1*hIiLgE4%jJ&YP$HuCVD(FY6h` z`GxwI4tEX{6#dqQ^oO_m`K-Mh?#5lK^kW}-@%uncad5BaqCmNFb>l+&@7*<p!QH=q zXT0m5&UhbOO_-OjAuN!pr{+mDQwzS;T=Tv)Tnn`7q<LCR(!z-R-r#U~>)@~QA;H=5 z2k8y&Cl>T6mj+Wyp1xOP*v0uV$<_{9TmLfbLseKfXkF6ju^v0C_vZ~=uJo??uy%{J zzTyA#Ps$KGV<yyg%6IdAe9N;Wj_(~jhkl*k<0Jg|mb2KTScOB04&Q{^)#g6eaqDn} zCVAH$>nMd5lIx0f#QX2Qt}WJa%~dKMiF}=us$(AUd|mIWq&<>SJLy%T3r|vwG$OlV zx4DQMyQs{nP1U&6Ric{W$01Wu^CY+6Xs5uvi@|#Y7K9UAyk6-sc5zb8-gJkl#<;1b z)46zW-|5WR{@^hGiHaHfS85TvY?Q7}8`(_vIDEOYkL%&>`)9I*9!T>G>rJ~j=rrz< zb&Hf%GW~~N<m7aKw6;j3sFIOhkGA7OgTv*$hju7w$W34E%I^7gFkSNb%-%9p!ebL9 z-6A91qMkv=@b&|#w@U`HR=z2uOZiQ2E7RqAjB|?$t-f@mvwrM}<N>YQ`Db6ZeA{g! zX)v?LTa#Z@(@f`OVa`7`62ddQq8j}=uGI$3owO^@tDjv^ytH%pRN(FSt68bJGQ-DB zrcLv8Dz)WjwSB8?+&cNM#Q#pPyq(nhx+Ztuu#oSJZN64$zTuko_G&xc?(N-?0tpSP zPvl-j<ci{sx49f`oHpWFO-_5+IB^1ZEN@!-oW5ZbPmpDM_vORWJcBO@&T$#>x~m_p zUvvH1Q+vv6Mz~5-sLDX9g)K<Kv%BzClx_UbYW0s-ioYalMb}(TugypVUhryB3(^wk zs##7Ri5FR|JD<z`i$_0!JM_&Rl`98V%bw*JCL9Va$eEE9R?8H(ND<o>`igrscdW}y z=TV($^J>hMS6+!?p?SS7uX|^Lb1&jg>2Dahb{XoVhM6jz&$}I%(LJ8rJ+&iYtJIsl zfybP`v5Gs{s=qiRYJA<f;j+^av(HflyKVLKm&e>5CtdFOn3M7|xA(Nj)w@ZiY_^)T z01MK$l|C7%Jkx+cQZxCAd)n2xzwV^Z;&1eAjXajTdKF4@`~sXwEo776v@49i%D$h- zW)Xi`e7_aGak4c@|Km2BU}i>0qd0zixYO2H_m3dy1g5RKlu44qG+O>xT0WOe`Q+}t z6Ej%};4l6*=jObbYWkDxZn7C+I$mTtMXT6ZS}Gs7y|^ChrT&#F{)$nm(|UqVyM!Jl zZPledarXH3SmC-!>f6`)7X8<6OiL^HzReXmTPiY0F`l1x^`q_OT0I?H{i)9L=F8wC zv%;~fGF-GhUT@3-g=!mwYuowe*hbX7mR|=&DfSF~tQz?#u`216zxJVMEl@o4lhvHs zh^FAu`;Fwv9+8i=Dii#xJZ90{i!OKkWe$EUfBMTN`p}|VPN1UD*BU;H65ef#4%{E} zelFQ+K3Y>~{upQUGc-nQk<k0$dT$^x`!fr-zDlRd(nZZwb_J!7$gT;s7=iv66~XI! z|Gnw-U5i^trJH-jsNsH`!t0P|>G6j=<4*d2yszJjQ;ZL}_hO8rO)m4=^?$F)w&)xG z&sZ<qP#&k!c6w>%`iqV;;vugsCdylRD_fN^Jrw>uQr<L`BB9c8V`cq%gw&aukXM7_ z?+2&gf3dK;v2XpL&$px$r@Gd(KNFJ)rDq5~${a&-choiO{OL1&R$6u?q&RVMu4u2F zmvfc-?vQZjKQYf66)lA82E|q+OdoiW3PMs%#xqQ&hKhHNI>@gZ6xRD&c+?He{=u0h zEs}zMRBnW1%Kwj1d<<_N^Y2CXR(1=Huz{3iAxbpMIyXLr1^?Xe&-nTY{8PiF_;opa zV#lAJ_0#Mt+wk#<{|<g^?3mE~8&cOQ^-KJ(V_mb<g!}pC{`HBFaJweO^}diOyOzpz zT1dp`cmMUakhsQm6>_5BpP}_*<aoiQnssS%Qsy7Vx+w8U=F+#=r3i(8g_J)F4r%`% zV{aYSMjL&L7K*#OyL)kh1gAI@C{~I~ad)T1o#L)7PI0GLu~6LI-HOAVeCPggpL@^w zJr|zrtXXUAJv$-EJ4|NYdHJn!QR<!{UeEi~lD$*TeoolfW4uTaV4iko+cvs3kN+}T zb?M<AW9gpV)kOLfva(HiLhx$VbZ^-fBGeY;<&MeS76*R}L(mYRJ49h(;u9@%j69SR zd_uhb8_Oe5CL4~xB~f=-!33ExhCUlD)wxby5H{5vjcv<Qcb3_tQ**#s1%5<C`{_?P z^}+OoZD|mG7Q+YEk9RRs1Bxn$tRjX_vj@~W*B2s|fome*rygPxe9LI<Y~&9vCAur= z)F%Tq;ix|k7|!JczKORmKP@P4aoQu;w&<A|z}U7Syc~M#4zimVHbr-};6JTYZc^H# z>ovvREF;W%WX^Yg*~qmgeRUSOYg&>SKaq5N#9D!&^FUf4mvkCbTS4aYKv~J|Vfy`v z;LVSCiO%>?L-`)&q74EbCcL_H6xgTWpuBZzwqz{)KTHHH^EGPyvSB2OVZ!_zd^HOB z-;`0=?LJtUUP&S9<F(G$LBK5#V4_)=Mh>)EWs}e^sHS#0-#<O};)&o{lzDO=@56|A zAs-*p*G8rFRvD4Bc@ZC<nycTy9d8iNPhHid>GZA|5kGq3A0KJg=IVgQewYSS2fb}) zz_|V>IApu^sX7GQ&Vg~`UFPFQwu|oAEbtq96-mz9lx#=Yu|c4pdld~`Jlxc8T~It| z>zPjFTvKpTb&F0sB<Yzgqcc#`_igC|h02wZ;0os!T30adGt2m;t<}9-)`@^)?Aq@Z zf7HGEFIi_EjzMevVg8t3y5gdqU^xCoH2<dD&<Kbgc|zv6Ep6`2&By)iX#U0kpU%-O z{`WgclsN=z141)Lzjzq|EJyIC^?~j_Wl3ZKMDt}FEk|3m{x6c~9eJ@!Aqb~P8O^*_ z8&!ERZ6O$^$gRx+`}vgDPR3l_&plX}aI~UC(HCl5J$*fRad5n7y+jn~L4&<;6qre# zH19WtxnfFt(Q+{AiNaxXkkLg+y*)YDHtuVp342kD(0+I_|1`myy>OoIW;MaB4rgyC zXuR;A?;$lIbO;xV?gOo&AbN_BZDu=$dh~IxqB44lXKjW!hAZIpMPQ$+CwC93<K#*+ z`;ru2=q2~;sS`}ecM~QAanfQM%h3Chr(7s&^)#vDugSa{EfDUEBe|ot*&Hkj%Prvd zj}^XXDI?7#yxFWRqco->`Arxdei2rn?z>?{W=xmyn>k}ZD5GCJx_?XNHz7O2W)yzX zMSoQJ9ZtWi@9<}aPAzUyRlKmfzcRF)?<b=;_1XIO2uCh<B2(@z`we$D`&afn?N^^> zcCGAJIj!yO`;D`1qfm<-(z_mB9R^%bU#p+aTw{!*$BeJU)szsC2HvYQY9zjS<8$@q zjhfP1IJ`GVz%Q!#kno%T#}65RE$!Wag66KA=JuuzX4dwWoC?w^k{qUXCN3_OTKezF z%<*3Q-7Oq2j$yMKM~Vs6TkQy$Iw0=lYONA_`E3nq_A`HB5OiBd?bB9D2u)3;{kTB$ zjMksyoALd)BykDZSQM0_FM9Svv?-%&AIzc$h>ZCfa{>^o*q6c)d553ouAcWq)`a%z z_2)paYGFn2dT2)xzs$^aHE~la__4^*Z2MAz!asGu!-lwM3H{KL#al$ZiK}>vjNsGJ zRa<?cYpR)-NnL$29`;W<%g&al?pghdXuj1q75YT2${KE@y@pF?gsY$$0+nf=@5|=d z4M%Yp74F~TX?tQLh{!6p<+y}qs|Q4qU%vkNq#%8?^c?gCT<&wDZ=RmhB#=X@X8Mgw z$fQR&d@TLGa=Gr482pA&9(XvP`kj45G?|D2Q$yam_y(7~0+ST?1qqS*<_#WM4>{9S zX5f+#@D<usB@Trwa>zUEcXmXxExdyEh<$}PSxn}Rmg|d4nUnJ2`clNA+o3p7<%?7y z9?A(kNQX#9u@aYft<RXvds4-r<YfhEG!^_=M3d%d^R=ixZ1ZDk4Z;uvX|}2XIxSO9 z8A;6ntxk*i)Nf|8vG?;6xW5P2oti-V3HZvke}uo7xl8n#awXZnsMQpLu<XuI!-M@Q z(Z|T@V@)Z{;(5b<Ohtmxer8SC$3wm{D6%OYdVX$a9WA$PINX`bq=&n6WBrzIyqnV? zZ?%&n_(9bA)Y{e_?Xo^E6ia->Sg1|&vpbng8~h*<$_HErC7V6#3dMa1j^P5zvMhbZ zz1d>Mzt3Z*v8nK4Xrv!(DPz$tS@vbgU&VTGcND@e-&uUOH|%3?axN&PW6CP~MT>W6 ziw=*e&n2PI#UR6;XRlU=z=PH(ecepJFV(|EV}ev{@Le6b6g&Uw!tC`<gZYnEO}fS@ z6Cbj=SVc$$%uX*cvQyPhO|c{`nynxcb`qWEKZ0Hs4si@yZ*4Tc3$T-(apIHV>kq%R zfxq^U3{96st*rZ0jK8HE_kweRH#KC1C+0HbFDKv#S^Mdb+AZrxoi=)DMGrCRw0F(k zrHN7HlsHZA3!g2%_*(9cASc#uZTFMFtVfR<K8<brbSOirif#K#MsRlcSarTxn?MXZ zg9$}kQEjDdTRlz8iQxznZ;g+6(AoR%y0wfkkq1i-Yo?M>3-}Hmhejtf&TYeMHiv9J z<>IG({tp;^5mYu1FuqshxXKpQc%hNy2XD^$pRgzy>7U}#ZIowv(NIK}6Jllx*n~NY zKjDAPGnM*O_o?~D^n#Ax8)dJyJ`BUR7xvP}pqK0)JAv|Nsfhhf)ZR=fbaebFJfumz zbSWWpkf|G2*ce|H*N0LKJf2A}Cla232e)m<eGhfsh{gUkvgX6#AF6!;@QENH(H7qe zCx53(Hc?Q}*J-cIpP|2CokGE$yOX=Pf<o$yjN==3o3O1ump@(h-LOx;@u@t(fqr0> zBvh(qxs{tIgJL&vESP7FG;A;*(qn{lDG<`8eL`$VrxofT3MlRg94qq@-YpO%7WZD| zR<B9b)VD=PRMw^H#?b}v+znf3E0LyfTY^z=4Dr9sGddLa95!GH9I<oPiG3q2FNCsJ zyIt-uCboRq12Y?LS&e?5c_IgFnlJa7TlBGRFVN{nu-f64=;CYqgwfGMa?lt+Q)jPv zZG#QJ@#Vkt`-0Eq+lAs8x0zOQH>L^Su3FnBd*3C2e-5MF9f3C~6S*y_-R)Kp80Q8m zMxflyYj48orB{vT8PH-M&x6oLWrgeUUlr9Nizbob(j>|B<!9CbGp{>eX14vYjCpE- zO(+4W8>^c{=rctO_*!hmju_}l%N*CUv9oh{)0ZqYkJfL?;(t4)ZHe20Q%PJ#k>!@% zvBn}VXn50^XLg?mcNh6Ek1qU30)H3oz0fo-<ztlCgd&dhN15d*x9mJX7S~^r*T1mn zJ|zB?X1i-LA|Q_o+jJByMi1L`p;;o|GjiK9S*_ie;RPN#G$fw<QJRE*^X3=I|1>nv z{~w128BbGlM^|eH`~NjY#Ap~g;7H<$y&X#XvEMjdy~v?uUap~GtgnnzELFEaFGb=< zvt%Cn?g(vxBlU%?FXS8M%bS4Yi}6$li=U%Fx{u|l(4PP3)5G%?W1ycFuRNDs-0y}{ zREn9F^KA%Wq4(a9eS-x>u5>3JaS_ohsLgoAdtJkk_*3(o>#={K=`BK|Ddx{Y{t$aZ zY9DoZ8$`4)`l{#JCHsY<CQ)lX{gBhgS*N|X;Knn-w<EP{2|oMqo#%y3XbSb-z411G zs3$f#`Ybdfhi>}Qsf)_gKlG8d<sZq2iY|=={rT&Ndcfuy9@%d=lSmDwMKKgtd%63} zvl~30uz?UHy4Ux;v5LCTiWE&>D}@{Ro-x4UJFof=Z5;^aJ2U(T?wvNf>90k6u*|Yf zzM5bR>%*0Tg~ch(QqkkKQW#5lN)8g%j30d!Iok=+3Vj5P#O}(rH|`t>S}SH=_^6A# zGCnH53<*!;z+P26lx5r*0?h8Eo52SDhH=zuNmG!m!A_QsuSd$q%wEZ5V{{!wcy5Ys z897TCh?b6fcRyzq_)#<=S5Kaz>)qhrh`8WgKf3%p=og~ckK6UUjDbZ{wO*l8@6P)r zz0HF%-y<yZJ!4F&A{y>l!uxi|gGguD*Y_iJ74g=Hz=p?5e;17}`#{$n=M!kdcuFDc z32yYi%?tsrIqG|uH*fUb{!g!^|NUl$imVd&|9%O5_+qDTiSKXpXtbo@Kq9ij{^O*r z_+-(Sf8p;mY0OEZ(+85v8TK!A@AL@=JCzN{L|l&jW8C!9YE?cLpoLnY+Ga`f*3_h0 zDfPv(1kLkND@##*550TfhLPF?`+hb4lr!i4*L4go;M6Dgs&lV>FKaK$<t*;y>L2=> z+YNdVHds<Q-1J@D-uD8T-{g5nl%n}>PtQ;m@{t7NB2+^&w@m&#$i`+SGz2cLQRMK! zOP5N>Fr|NgAAx%i<S1(TG05v&qDfR@J@L~g;!tD^_K>W=N|EGIy1&x%5_~nmt_5J$ zA*JcIXtovU=aDj#*da=#-+v`xY`?4o2I45njyda^Sk1#VNtg@J9*srEeJ=-ZBnUoN z$<t|WZFn9>GZ*5`8!h?q4!yWWUNp_DaMYQiYTl?j`RvYf^J>SAas8=9f9G!3MQ`1& zNn)ceXH09lF%2qFD?j;(${mPVmC7p<L*kzItx9%G-r1K%$eJS0hJhn*E`0V}deyyJ z_Ti%yk0`eZLjm7qfQ-6plk)0fg$bcA?2(TB$$RNB&A%;bhNbOWFkXX<@S?U}>UCP- z{BXzTsME_vGUW6lwXSUG`}w7KDmF-;F@IPZeCmUI?D^6MLO-G6ZEQ{_QjWuKK1l|N zmzjuz=+`4dafhYZaAI$Z3rePwjQq3W+}`qJkXWxzk+h;n0*6u(sC?$b!&FuIQ%Ql| zv5#AmR@Y-wiJro95g#5g$*IO~T>_@Zm{}ZGo4hnZe@lc1DX>_6pE-gkN_W47JRj|M z=_K8UMS<&Bl+^zg)?>P=$BQ`j^L#8LT;ofes7HEf`WBb$_pJ#e-EiR%tbT40BK4b- z)_i@Oe3OPeq9kE%^g&5n8YzVE@cGllLq%pVEUr5peDu394w0e_1#1^Wh1*Y_)5#U> ztn8JXBO<*AHQO7Z;Yo=Rk^0_}r&+UD5vqrv;*EOGjMk)fR{PVqVumSrO0e@SG5W+G z!^-BRiDS9~=dG;py&c(mPllXW{06g@j=T+*y4PdIZLA}afw#}Y?^&eUoQ;x)xhLs} zsg2vic+1f|q{3o`RLp`xn(gp87>$}xY=7hbIQQQCqdl*1{4wmuSAn0s9#}^|&Sf`M zfA(IwQ}2=IQYfNT1^@UMK)!l*F0;-7`U0Qd)8|px>Zz6WS;9Qo|4z)#|5~`wUH`3+ z>$DG{lPaXl*({$_`=-9kjw=;X^L4j}tnt#VRCN-6gs%a?6#G`Qxzhxu&8=95BE1gD z;hE;2#g&5qTYeu&4MHV|KH_~y729Svj<8=vRePl5nM|^m+YO3$QTkhu{zc$K)spKY zPOBfrib+fGE&|x2z3yvB*a<j9Q_)B#+FG!v8X-)v!7A0Uqsk~)Stq!a<hw>_734s! z?*7VvqN6eKn@coh8MTueT}jSxXPQt8Ci?uaCF|*)-SUVf;VmLoH+I2bO`I~(XH!?I zVIfxn#B*5T3m#QJc(FT@y+N{vb7724^zkTx$+)vkuGJo@RnxRCRaEf-+&ktkPYAT_ znO9BH^H*k)JFSC<#@$;2)1KX1<R7*qVZr3Km(2Et>9R7|EPcvX;g%#7<~f@}f@lF8 zueh}FBVAoMpHOWvT&IGO|B4LTDAg;fIG)jU$&}vrc%h8h6&QMwv|XS*$xr52;YYNV zmpfLvi;!DB*%Mw`zD51&nGqarj&Vf5Wzpc7xm$U~D$uHD)V)VMF!J-6vnGeLMx|@0 zgL9H+(0%w4xG=zn6QvIU7<+gD9lw5Ozx&>&+mVl!rWgwEj*aPM9%`8UFip02=;oGg zYnUF!9zl+WuNZN3$-!EDUa@p%aid!9W%%s<Vpz>b{Jjn(r2qaa&e(3(am)9Be-;6v zqq1+SxUSi<v+^@t?8fHiy@eWI1R!4>>i9clUW_dT*BIs;)}0J?M%%-QZgYOaPCYSb zK9Q7IZHZR#Uf(HdU?!QP&IzYa!$+?TDPr8yI3=x_rgLm2mlnrgl*C!wK8_w^>eh&x zS*+y`dn}BeU7+|kE1n!v+w!#OtmM#}!5X>89cFuQZfHRqH!9g|(9%4e5N2}Vvl0@m zqJFuNq_E0cXE%*%-X^~%h_k5e?+C09yWP~=Q`Qx<GmsT=;~dS4`D`%sxzu1S14gdb zMRvsg7gemihQsLkxHA3pVf{g)5|7b}EG=sgg^5-71kvdP@i8LWKSHvIF0-zeNcczF z7yGBw=R0bjeGj&|wfgFpK<=jm;|g)wkggiq*FQ8*q@9snrUb84wy$)iuQd9v76o^? z+MAzK4Th3sm$hTd)?A2pD0KP^2rzbS4nJBG{cAQjZ)RJ$*vK2fPj$dmaqyilZ8i{! zn-b|Mu;VjIcw3{cgYu)w`3Pn9-Jy-T|H!=cXL&69vh88!_NS>1)bM7~cLgMEzb#$} zzx4Rm;&*IPkl`=wpAVZ`T-aDkletZmTXp*oFLjKgCn~fOpeKgKglpyo)&JRWJ2V}r znG)d#PHsu^aYHD~>>&s-G7gRqZYeXn<6&{@Kgc#;Zslpu_*zgcVuD+F?MBFtLRr!O zcAgsc=>n|)d@PwZKSG)7{?aWfUrC6%R&e$D-v%T}T)OrT#5Zq@(Eg`EpXz_R0jcI@ z?*;5;F#lfzzh8=%9iBGXU{|%zC<T}pCB)qwyVlm4FdwN7R?JZ!h5Q7jp+QaE{ebP{ zu(k4J_G`x1l7ZLg&!SY}kOIA!o7v!CqJGbKBHWk({jCH~Y18O$+$4v$%1dralj83G zZXY{t{r4<avxJ}jBEKQrVu6Q;mG$thp-ERUW5GG7GGa|Xt(xciz6$2f?`F<3#O<Os zN{F0Vtvkw)){*UAm^I@^MbiBA!O+2*3Rl%~ajU#1G{irwgJOljJjD4+!!M&h)G*Zx zc8$QfeA#1vYjh;Cd8RWaKUmwY2i;7TC?})FYT9=cbb=R^ygdE<3Kz^8XB<qng{=)( z)~ggtlF~_F<n+8mZs)jdDanv31PS|L>q+(WuGZb!aGt+h7?#7S&TDHhvD-d1)y=*a zN3CYdwZ=K0S({JUAEDDL3r2-gd}%Xj$&O_6cu60(LG(CNxqeg&&clpSugbIg7{KUW zj%13Advf^gR?fU>Wb{&)5-znuHyj0qUPz6UQr>;Ixb;%y;OsL#YfWOrrk~%p270XZ zKhd8VHg*2Y|Im_lWX3GQIXHbEw<0m+baZ#uOc+)3L598pPL%!RMxURr(G>}A%q}KQ z#MZ2E4td}5$f9jjxT1i-jVvtXSjFPQ5dX~$!&FjOy0cP8B>FtldZhjZh@*MreZ3|} zO1GAiP}L`f^i||)*sDL|!VFC*`*o#VL}M%;&Ex}EK=IsDA2tV4SL%L_u`~|Vwf~yD z5gFT6)?YHa=Ev7RfpaOZtkF!_&>0@&$6uNpMjF1BD9F8s9~pf;<p{DqAwND-w3Am{ zwNS3DeSd0+WA|?1rsfMrb2;-girq?P>0{aBmFvQ;o|iZE&4O2}te;Abk+h$E4k)fQ z_Fm|j>;?5c_S_m$7x)_dT6K;Mmy=M<tz1JM$bP;l%C=p5RW4+$Plt(rT@$Le-0Fex z?}JdqukZ|0rUidE!YVgm8V<SN+5H7Irxajo>B*GBW-D=&sO(mr@Evk62lqBXtB7d0 zQuv_wlp*2<r@M{PPR8k`x|7l5;n&Tto^`rJvtob0>D(fOtC#t>nZre%#xQ{?@_iT# zeDhgheptCd{;rJc9-81$^c9>;d>+Hr>cUC3{kw|$V>X3l>0ruBMJ^8$|Lb~?b%d38 zs7MHQE<xm-+iP&&xiGB_L4Wc)T7I-#3;7kLmB_MIRUNtR#I#yz{rUzhO268|X1iR& z596tkci~U@$9GIk4<)G~Jd!JwZ5WbH78|Z){SPE^@7j`e%yF;Ca5Viyp3Q4r(9l)) zc5kRZT(o5He(YPQ+*xM%CWS87g#lwQpdectdbXuFeerB8R}MpJa_MF*&6)v;wQ&8+ z``K6B+lpA4^q*SS+a*WJwP0{FPT_n|spC7NZk6`YY)0%s()lpW{a(cR7}d!b&iLPR z%>-+-VaAT+FA^lBlZ;vWg#Kt>rO+ZZmZ?6_FwcI9D;rcUz!iuhZ<aa!J+t}IpZssL zvOye!6K=S!+?L)QYthfT>)rIHFnR@L?6mEQKMb|LB;Q)p9TE%2C7HiX8}@Bc;!Lpl z)Aj55l14XYV~62+x~ADZ=386#wMJz!DhNl;epS6)AY$RAx;}`6gYX6=8W(Ke6Vi7{ z4}+7RmiL>~Gk);?JZ<u(JJ{ZF=lMLG(4?e+vF(JD)ld@o0rBU7)7zF`x--f1I)=w+ z2wx555Q8$9Y(3lW&@yu9Si4t_FU5+iDN7wWty|+dx^kyH-w<v}vi1A(cm&#sNvBd! z2_OzfZf|oDdwsVPg+<l-d(BieXxa=Px23}4N|>`=&e-yRR=jsX=H-oT>WMCQ&R^`| z6wOCDI4Bt8;Q4~s&Vu5ofw$pS`^F*Cxn0J4l|WmNes-hAs#~Oe^o}^a9fI)vSJG=5 z!Y%mSE*_bxwnaWsl~%C{oJOspoHBtwm{ma=Lr7|X>|%H0VvW#>x^NJpxKKW6fZN+1 z6?D6Q>}TXod7k?GwP}wL?H_aST{M$_EY=SFT_nGM9wROjb=BqNHEEFx9LHXn>2<Wv zjR?hh)5ZI$;nqGQOyUe~*tq<D)5359k_2SZ)J9SMj6vh^J>S)VZq@5&UUBj+u1VvA zSAmzt9QuLOVImW-zP&YQNdO)!8>z49RQdYtn$hbnO8upzYf6`C`!MC-p!wi`|E!h- zarfFFym@2#KkoQo{vXG!|JTkBb2VkvUI{EerP_w#;14}<zu~TX<)pUsKGUFlLx!RG zDyR8J(dICfkNt3hhwQ!R-P<Sifrap)pcOL@%iRtEhrPYqBhqf6SYCPVtTAajpI|wD zLVK>8-=h@2H?wovpLZ|4w&7_)`1)4s>mBXZsJjD#B#+{jJhJUygL)3Du=|+kict|d z+}y4_mq?f6kd|EiR6Qr@Lo~``iT}<`%Y-P@yaY$6`kyaCdg6I&;kElPLMEL{=v7Cz zn96k-c+`k54eOSpj2T49gm80t%f?b%^Xm=@h57T=yMKdFiiFTMAv@%%myx7hU*v`V zOe^OL73V4OUjH>eqAQ$CwMUCQbR9|gRi|X9e^2i&&Q#<znXW{qNT<edj%+^M9qFkk z#oRjc@fo-O-JpEkyG{9nzM_puO6YDVsmlO!0btj`FW~ln{)U3`fBV<akOlMdz2o~| z8xhCZmRWc*gr}tyt(mX{^Slve8LKn+(MA1PGTd?!J!tZ=u)A=uG$<^eRjAbAlhHOg zh_J8{%!B%~T*i^%?8Qna9y?btZ%3ZlC=Z3)O4<&p4zJ$d96trryARgwv=~&mRnpq- z{2V^{YrCGp{)l$W{nI=yXa&)5)$&ty>RzLR&g#Fs#$V0}!}zx+-r94i&u!t?dMgkA z_CcfD$4-^X<A$ClZCDhPQc**cYZg{<Rp8cJ{+7kTCgQ)Qj;~cKKHtfVJs(~%ASUzi zj(4;*PWP|;9Is~sRfb2ie;a{W5H|U#8&CdBHpsYOWrR$U1@A&2S%EHs)OLGu$E#fv z-Jrf$43X3NGcN|hU!<;HaUX@woLdxlA;)NA4Hs6YQuV@o_3=KYBqY-M`gzvhN+?OT z8)u}F<fib(POUH`UGOqYA!Kp8(tKBwc4%Y&OeeF#cJ29aAwMNG!z@Hd$o%EFGw_s& zNuKsZRHR&ZGBB*X^AF-IurgRD*WZY^hgw)-jG^#x7WBN<UTO1@LbM9KaL4qmR>4;= z8Jv)(z}<;Op`;^?<R}+pjL5AME-N;Y2nH$K!USb5IuWiK5u3vDkP?mz8onFIwA|F2 zF%`1T0CkSc$S;CV{AB*57{H9~YvFwkeH%?1=SxJ&V7?d#pX?Nz<;O@1RX(5mp1_l3 zQe|GgvB~2Q3uC^=`~}J}7%L3vko%Qy)T;|9%C>x8AjyT+QM*)ph=o0LXQFsxCRP}O zZp-?~KeDfWIp4k-_b03@fo}7L)2l$Yj`8-OTdVj}(5+|uh@ZW4JOxOAUS2gflYs7+ zi&owt*M~=*GS^2~-Z(dtyeM}<47aFjVho+9dv6z!c;5vz1nsh=UlQSQ`7f2u-Etij z*td#iNG(^N!tDD*2iCS?t`GB&HmHebXa>~8GV~7A#4z*=)WkpJ25REaf;^z)>Qi3t z41=0r9zrL+gsNP$j6uplP4L2Fd#j-;w=GTiyuPP~`|opoC?AR@{E+<q?192TCoZ{C zmiNnhkOj~!y=&}*AG+VbUS}BS$Yl+@_plrX@dDlQx^_-HqZqEcbb$#UmUAI8peFp* z`MsBLj+>1V^oJ}=LVVYB0fL8i0qlm}Ot_B+F%cZMB`T17a0fF=t8=KpO+IZ0b9n4O z22AoTW$?bP0}1%-yoA}cU7$_s?9#$xAI<><@@+L);_S*ob^q;ZvLxkY3Gp?y!@nTV z?wCJBVU_HSUvDM>q<pm@SmhRBx5>Fgpr$iL)$8q+zR(Ei{OTW}RWb~}*-YAyts6Z; zm1`?H0#6q<*93t<aGIwJEFYS@j}_6^q<oV%D(DY?93505RyW7eA?mAH=p8eeF8NJf zQ`}F8wyX%=E)+N>aKhj|B!f5Tw2s(((cSbAF4#25J|x$WaO`F>64^XPzGw*tE25xI zKzPnKfkTk$LqZD=$0mYBrwzQ#*6BqufCqBXfm}DhA|SEn<$}wH*6nCT6sVtP@<!HV zK*!UC^}&S7J|sM-nVbaSvjIe>&ufj?RlE7^X?VEEI>q+c&92dPpTu(9%k!!z68hW? z*X33_a*Dl9#E}=-y<>J#{)TYr`i)O}diaZ(gM~!jjTkce+!f!of`f%=Tg@8pe#B8a zYWCTfuT^twn5S6u#AmDd0A{{uRVLpy{`a5YA2tL>CNcM3VINF<jiki0ZWXWhyz5b( zmpb&`qF*%=+=s1p!+c=>hk#MTpT$Y`NxO_ru)9Ky+c9uvBRuf!PmGi|h`Queq!=|1 zDh}&!ew;y_!pE2ZIe-qJXhO12HzCj(;>YL!EQG>{`v@R&4iTD(378Bh$v(M#4-o7= z<T3&Zo4jni`O$aN0~jw*FxDTcP#NJ+bvwHCb-NE`R(oMTtn9I~eVRdWFoF4zdqqG{ z^WX)AtQ}$SKQXHNU}vMx0n(zVsV4AUA(SNE0{mmTfXVjsKdBumd3d3s>hksgRWrT; zRcAwADG6$JVW2LGOQ66m_J0t%0*gc-K|9U|nlJ-RIDjUMUPE2XP?yDjwFZ}H^C!Gf z5p{Vd^aZ;!xG)?8Z#KL`-ZtaF)db$uLtDWV0TRWb{rCyKVav100t#0+ngBth1DzoL zXMp|6m!sbGZur@VS2&Iu|IQ}IpqmZx5Y(T>`|Jjv{D^#;yMehSdf{g|F9-m=9IB7B zhoSz&OnO78OUVEOkS$Qsgl8RAyRRb*RV(b3kV6fh0iHwc-5>pC3GMG>%@Q+}K#huC zx*qrn`zr#djLM<r)&?Y2a9Q`jCss@@{OU%o=neh<hMaQ(6~GVoe+UEkfG~ioqUP7s z<QRPDXbMy~y8u$i?Xd(UZ#q_ckt_OQU>VCg*YpJ?-I`6-;bt(sQ5nlH_K+FN{O6&h zpfTVq{Lkst2iVc!pfV=oJlCAQU{5%grDHI<$@n@PX>V2!GJmL02(BHH3j*Uj)-IY# z4fQB-)+g|HUcl)1+6~Ap|H+7q^J*LHPz4Mv5dkfMu>m*pzd}2JnmnOhxBy-J{|>jT zS$V?C)w-x!5s&z?YJNJpj#9bj7_w?&Ga^KiH?C)&;AVI`La?>OcgUmjyi+~6f)9mO zdypz}Z=j|Ls0kKoifRW;oEHH3oCP)QL6da65oybeHprttZ6N_B(lelPjZ-_I$80<S z%Z#3gwDW?KB1Am{k3hbiZ#NW1{0DzS;UE-dZ36{Nn?b;`qaQT&0Z0YjUP%1mM}Ukr z7g5{|DCa?dvi=sTAVL*PKtZIOC#u2()o>e7`T`|7V<CVq5bA@;w7<ZhsIgA=I1f~A z@<zm*cg_3{`T&q`T*R}xM5H4G(GFz}9djP9ij<;;*+4+_lV-C$pg67oNgJ&jFqyq> zeQ){0j>7-{8V3}iC8l425@oMI3H8^^-kX9Kfe0_~vjfEe`C-77)tTCB=AdW9!<y)< z$n@(jS9RIzn28bK>}xN0vF*Ljf3YnA<Z9%-Zx7Y!yX1#m3|X9qT^8XUWv>~It3Y7v z06))#UdcVriJm}Z14KY>{7)7GWXpD_d?fWeH+q9{V~kscd1K7GCNdqM+^jMkFeU{w z@NUCf{q<ece|7F<pXb>AGY-Jq7}t+Njo$-+5cXe1%DflbR3B(Rw{H&vMjU}`{ocF$ zm!{Ciw>Mq%(X@vFO3kWJ(z5_c(oY9y@sjH!AUaaAqqq5UO3v@eA@>f5D`CmL>LB-? zzj8<ty^7N#;nrvebG;2v!m_U=$9aFPt`hv{Yew(cEtdd?dC!!vj!o%>OmU@7j?8dh zCLhe`t7RNq4q{3D)Eak*GkUEKM$WlZH$}F%FDr+0@oo44H}PQQfxLTPM%4pLnIc~^ zB<G`8^IOgwM|7{y0!Q?$(2uU{deR@~=lLWIQV!`xApuVGwK^-Z>|<FBoT=~hhu~U} zux_x3uWK3HmY-`goX7pXJTk-Gz7=xs9T}@6QSKH!(w0jwoQdzE64t<;89-;T0Q3}; zE&=HARI2ES7M#$F115mJqC?u6(hKGS5y}H@8o+Hp1JEN-S{b0zfFh-(K$<rcR0H6F zR+nJFG7mrq0A=|V0O1NiE(<i57RWsUa$Q0I+CC9jlOsUG@j7+Pg=wPOZ-!U4jmh<> zEYBR-->RSEdawt7VyZe?+yRj=`h;DyXaZ{l=4c$)qX4p&p^xSfX!{DfG74zhg*c(F z*G_=;9=e1F1xWxv1Ar(q;4TH+yrex>CcZfd0B->BqiFz;0stE{MFR?e6xA@GWGZw` z@Bq_JC)phEK@saTR~skv(J}^Z<3*1Zpk{%`W!V8Z`GF_LvJeWO4><||tI0sMCE!`~ z(gAutgH{3qm3-NNE>xjC3k64RfF3l0xk!wa9HZiX2e9<ke0|l5zD&4Nl_8?M$c@zZ zqkGZBMo@ez-L$9t_No;+iS=6EJSevb%+;<7_)l+Y?^OH!Km@Pl-;Yg!1V&%B7ftT| zLBOEt2Zdu$IQ1XwgF@c_;2acQ{pVeSLR2WMg+O7{e{dcOm7q{)8GtFYQ0NsE*B`(l z_n`Y!>YV%^d=$J>#Y>&U^;>4qS5q}0#F*R_cM??8k1@tX#9^$+S~qnn_*0W6sBTV# z0U$(QHWe-60hz2ap6DnjNeGZ!9GlW9CI-L1vGg^6#nldX!e*>M+X4>0!l)<B@z|`V zCkr|^Kz5LvSMN<gnn-fQ>mA35mGuk?ZK7$H@8w3~OmO7s9ij7uH4#8ArD`|mEl2WE z6ht?1KrW>{X5ByweWuU)=1A46D0KP>d8Zjnm%N3Mq!#Ow66(Bc3oIBh=9Aqb0E&Qu zAfd^5mDRJTbQ4uZj8*bBmyjooR45zSapBHJNvmP7qvp2|?eJ(pUGt%3c0{AEV`n{* zsZ_0mle}L~)5tKMs4&{;L}~=}%$o)JhgteMm{mRypDH`mK{tT!CrmAxlS($2CN`LO z`J!~uzVxqv2*CQ-_DtLje;mc5^0mVsy-out&U@8&w>Zdy+FbLOs|5!>`;pfYEk!y` ze5<WQy3Hce-{GN*s?`RanQ}McZ+!4ksA_}NsmGBcjk3Zo5W%iYAd77!c<q}%ZtY)Z zNqf*mtKu>Hz0Shw%Z8w%cVNo)BOL99`{|^(WySBQ1WwE^I&7v}5;V|jv;T&&ZzcR@ z|IGB~&+ss~(UYx76L(Mw)#&&hPH4~z@G^xMD`6o#=p*+^1aL|cHBizch5W0B+u#dG zp~~7l159_on-fc)9*Oa#32x)JhkVU4qY(0kJGk9{7r)#5a1^+D7{9^Y-u+hMnq+jN zYo242!CBr*dcaveOZtpVajsw#jOh1QEjYsWuWoRJ-(Rg@Ip4Y;aB&Z29>C|Pf@JWZ zp9W12UG6b+k6CWA!g;7_h5}bV<D)#+4CA8$*BB$BJl6^%JKgt<qz}Lcs{$!<&b5L* z@ac-oR(ZQ#1?mCo&awIhN7P8_+{0m-3~f={eNvlWc!<PWXSS126AimTjV!J4U-1nt zt$~rez?)@d%IQV8y+#Hif|x!A7OZIaP3JhHuG$Sa5Ps$j8~~&Mzy$?;)}JKby@4Un z>cCpJwsRCz7mYzjThxrDgcXfNM~WP*^_RR5<iE4YU3aqk1nH?WK{^-Zr((((e1Pwl zsxY3>&HY3T<mU{v8g3-5%PHK(IkZ(9bLM_xp7B#d1ujT*eCe3)$#&#csd}zE>r(@b z)w$5<5C}y6<|frok|Br@a5*Cgm>0-7BjMq=zg-q)HY7Ybj))PECd|bi@8F>E5w2tk z_nRC&60vAHI{9wWu;->OQI20CvmTy>-$#P6%V9L>k&DA5J^NTy;OOK~k3q9WxTd>p zVr1C|vnsekUmoM&Nst~>PbEl?t%oR=EoGfQ7x=_PQxAh{dNgZ+^SIlFM;^G}rbixl zG%JSlcrZ%=#vrp8xcu%}MJyD%Y$#9yKnMW%p-eph8s)K2j+K$6f;!kGnQA=fJ)7Of z>COmu4z~|!9%`6$lCQpkIR4CxIOh`V99p(aL^-3^?T-`~)IPyD?HOCW$eu10kSUyk zpJvWfpXj;nYnjs0mffHHoZFt@HC|$wt6z+gO}%cEk1v9@8wqwuEaX-rEl4v?JWVXs ztJFD=)!8+ZZL?&mnC7JUR~r#Yo=n_GUl^Lv12C4uyN<r}<z6?Ef7`X<y91vzZb2Hr zF0dK@takGkLX&<QdpG6AAOr}l`eTwj-FrU9S-lJx3n3N~hwrlRH9vi{R<A108Yw!+ zPmgBJ0FFkl$L`>M$ESaxGhBJ6zdhU8%$7AUjtaS!t|uE)vO4cNF^ED40Ih!O;yUwv zJGNxC+W+dVrf#2RaK4C8dP_XNHOh+Udc<91I%ogv6Z#;c@xo=qxMxHDLF*`f*`7hC zv@ee}!u4#j6Vr(EZ`XZOw=thfam}Rx$Eb$plY*eM@<o&W<YL9fDi-@+f3cIfIsdma zpI36Vt}1>ms{Kl^F`Z$kP}cUq{<Trow(E|%*W|--YoF`*VPmZ?YRJGKeW@@iie-}{ z*3P;V!>~XwYRUZ&CqazW?DLo?ZMr3xVR95Rae<iUS6#FSDY1w3kmnd$>L?_hd3I%4 zJF%6Z{PozQqsU(RP+Vk{tvo?~W_)~NB}j$*BwDT%n1eG<vnZRz_3*&tCBAQ+Eb7Rz zTFw+=okzaVEVv~2Ku#(bKqZs0$iloJo?E>6xoGo)d~L~inwDh|i3MUTC%81h-5y+8 zYwsIj=PRJ0eC;OmTC%7YKF-m4!CF_FwNsVxAgdux^((W)AIwr7HGQhbQqEXzn6L=e zY*VTT)S`auO2l#1@Owt`dL}AT<a5g@;>zzY&Ui4=xLi9cmrK}KU_F|yh*QyPbgFz? z>r|O4e^OaKMd!w=F~;|fvV2jfD8o{&oIJl?^`G}i-_8wf{GyJgr6S6$<%NI7Azk@Z z!lJRJj=YVa2I78@T)s<QC&<XC3%8sgBZI2kC*G#KO*Bk}^<)%W`pdpug5M}qi&U9C zY5Gb&<%lC?zhP$1T*|gu>X1sggQfhJJo(S^o5aQ7Y3dAbO^q`uw=#-5KUa*YIq{S^ zaqyv|@)vMLtmNTWHtj(LMcG?<<(ZV^_e<&-GzvQj!orVThsROl+>6#R<F$*{QR7aF zLU7qzH(WdpZf2{C2S-46!JVrrMh<b)-!g<{G)ie^j5K*>+=`l2{uUZUj}JdQ6kmE{ z7O6~5rz9qNiEDc#c!?{EY(az!MR=Yqt>hS9-k%Kp&MhWSzpMXMkCp9m9gxIaO{?i& z)yZ+SBq_pEPwr-#z96gt$>!5$FUO1*R@J0bP-M9BRet`eWyqX3z7TZuhtGZ3sG1et zSf}IyR(Y6jHpRMK%_G6OU0#GIhVW=$^Ue)Z>JUeH_-Q8PzD-M$QC_j+m`8ayc?Otr zrh+-Wt~ERUu%vuEu@$TQ^kL07czox<TfocEqBf$W$onW(qN4ParhZ<@n2@%T)d8;K z<_3BHdUEb8ZH`j9qPp`1N%*<pib(j`ZELu$mgwS*vU1w=`yvDzo7AFRs(12nbwt@c z53S26ZpG`>km->`Z}@WR){!6kXfty=;bpAFp!b>@hi>9>hl<M2!CDEUFWL+0k!Js@ zXH~>pt0pn>T`Jwp2CAoGrw?xyxTDOxql#!8AaknHd$K24!Q;xUwePLf<%;ZQliQE* zH^zdT``$55=}v>4Y55p!0}HSd+hpRz6uoJG2^e`7HV8<17yi0UzP6uPl{$!-q#bc2 z)K)y@U)jVzh?!aa@wd&eDXo@ck*!69?>2mUHECIJ<>>7}%p5x?l^v9{oSl(m^V5>f zL#I)vL*CoNwmRpU!78rEBkte7l-1wIx;JJNhvf7vKJOUaKAcGpuax>^({wz#p{B=s z?<t(Zj433{j96?-jtxgo1NYSb_q~ajH$QFMJ^|(s0j9#K`pW0dYl<nOuxpCBleCe4 ztaJhjE<fng#=6bMIv84R5`CoNw17RBi#}j)O}9r(^T%8|0cDrE#q!*w<!d$_<5`ZI zxYT8|F+;kRjl|4!@{Skz1F>@b=u~$5lx5A<e%%AHO8u{c)0B)YdKqn+&bagf`nTR{ z-YyLSdfpRO4jI=uGplF^V>6~=%!7YUFT7g&?GDD~R(THCAt&ZpN0wXdYE46@cQT9m z>>d5B9m^LtKj@mIT^y87$%olzmLC(Bm|OPhXx|Cyd5_ewlU(-^pd%=qdX2>-EgL5O zfOOO)lua9b$Q*HdoHKv4`=?`NAF^HddLL$2y(w0FTk!8+!m85ZlCd|Zr4M16>Dguo zU6Y23hHC$y{3-sJAytb)qJD9UcH+o@#jo9$#N`jem6OYBi6i6ZGi-9sqOH=-w(kVA zoq6eRGj_M{gX;X|%yr_c={x3rc_d!X+H(H5sIWV0pZ0uV8~y@eA5Sy-^{-Xlq0m0y zn_ceAE5pj?=xcsk&bBsNSD%)otA(d8lk7PutE7vWj2!}QkNtJeIKv&q`ewJAON&10 z-e>#&czW-TV|{g+h6WzRPRwUsI{*2{uOjNjk;<QePs}kM)ZNYOqiJ1mhy8x)7yW&d z_E~85uUIl>S~6y6nc(v%+^+N4bQ$~B#5dZ$69vp=XtPbS#@535?)Lk3onP1AW!1!y z-G`%NwhXf~*fleKKI>5S470ua%3X{E1NSEX(w11jaN#5N_szj`UI%N@ZK1vR`^Jg! zbH=d_#+KvkW6Lo=_LgI`fZ^C_KGGfIdiIRdNcId1%e&0oDxk#m+PhmmXCE`U2ig&Q z3Yn_-nBm-vq{puKFSk0WO6I43?M@qQs;F9yUsp<6{z2E}Fs2|=q$guHQAKsa)<M45 zCgCme%LCh+p;W9~$MjlPV7PX>HF}1fKtWX;TcKYs#-Ab4KJ{d0<<IZd{<gnUar_#3 z_(hlY<~9ceT?!Mns<OS)<BgmLfhS7aV$0K$S?v*NW|kjyT+)=P;<h9C1f-q8^rgA( z$;<RY=`fncE|-pmG}@LVRw^JVrr~iJ@h7Gf56E9yz~i5s!_neGUrHH}9GjTs89q57 z{;xvHzWUe`z1~32W&6)|Cw~kd<HU=(vvKCY!q;STpLfHJR<l_8e71B#&k{v?ng<7r zG-GD78RqpRl;8N;$Xj+bepxixRqxhbUvI_lx|v0_CN6=S;&1T_DZ}{04ZX|%jVI^$ zqy075E%#y^PB|pl?6Xi^k)n{wjOzN{!RL{?O%ZR9e)>+w`$13s3cpT<U*N$+{>p)# zQN=35vgO%j=+{t{SMISqJ4I@aKgHioodp_FC7_obg6)qMa(`8&KmPI28?h64mM@yA z{W~=w{c-qDbxL~_>9bnVucy~ab3faUHY%V+>lH=khYk6o<0^=%+(*t7cHp8k;uO~P zh|XV%#+6%k%_^66?S>Bq>Au*<FDoZbO(-n>OfumAhzQK-pLwi!&70`#ba;70=TWw6 zX0FKrvceeo$1?HnZ=Aw-yvHxzI)i^g3KZ_i6XQIO-|38l-<O-!sVZFh(A1}y#g6ls z4;{0oo7TPOHOo-iooB1Z<f(fR7&K3Rj!)2z83qXsQwEL(B@TlGhMVHYk@ZT8T~$Vf z7vLHuge!}a{1g)%XtR$s6Gdkg?i&FY-7sb7XiuWhyOH&5rhqatl@Xo@YL{j+l?fil zZ@v~dmS*XN@d;r~LcAknA@AKavs27t!MmQrX1RIWOA32gKV5=d$HyAQu$LOs-v5J9 zY?R_zKxDd4x~Th^_`dXbM-y15b7Dl_cD=?p&|7ZM`w!#U^`m-2W=;D4HWXgS%y=?K zKqAA1n^)xYNq(-06BVxo$L78qkty@R278+;+Z=z!dJMOFYfWu3Tn`h~rdqRGrwdAC zvRgfEK2~d{ZH6jJRWuW%gc{VA;?UV@4x39JZudpjHQR%JYDPv~ZVVSU8@+5oW(PB> znk99o+?YAWO_lz5pnm~T<{U)|t%)_DUu`_+H>-EbS&{Dfgf}X5>R4s&`b4;=`Q}1S zGtQQ*C95b~Se+XCzsGNG^|cT*p_YCmW2yPzMC56_OtGiui=$G1XO?At!7Mnusp%Bk zU%EjSr8+1?kQ?N}2EyIb^(7duy|c?Qy$}){+;jm9<c`1%xX%Xe_W<(*VD=aQZaqSu z{fydeJ-;H?>3d=z)%ke7L8_C}y+>pYr4NYb`*|6X92({q|F<R;v(8et6LEp{=X^+V zn2dLPM_;R`e0>cb=3mjDogv4#sVkEI(2q{29>c=i<DdH$g@<5F)XBHIYceqY(y--) zG@!BWQC0RP3dtYUC}R9&VEY=99P!REzR~1@bUUx+5Z&2PcOOBB?x$l28A)oRBnGPO zB2`30n0!2KuMO=`f{6+Cc3F)#lC!HW4V)0e&$q#3q^r9jWQ42zA!L-RMIjBSz@7;e zB!^l_6|}QF$;F7KVJgP3+g>Wh2!VF0(om0IRHfkpHB_Zx9_3V}5d!&CmZ2UQRF>fa ziBy(h9#K@55dtApdvJr8&h}i_ROG?7hzCUPh2%@uTO`L(8A!ID){`ZL5qZ&IyHK4a zYZ|Bs5#~^w)oaSA2oc3moE6TqsnQVYk)8F<lc)?s%;63Q45;OAKfy?HU=~vp$uS*J ziGgPj4)9TU<<HatB_HA?wXf+zg7@VRenE24{(O2vtko^S(|nJZa6oFtmHr}GMa9cC zgvApQf(A^ZsMg;%6uRSbkz!Vb;*6hOv&`O^G5SlgirU35-gY?DGHml`Xqjx=n};@d zSz<SpN+1!LwO})IXqjZ&g2z-iY-i7r$26aIXc?m;44Ab%!R$0Nmd1t9l`p+5zbP^O z4LR6?=9-`9R%$S@h0<Fj9Wl=%-U~}OcC-+3VMY<Ms$hY0&B2qD?~#-an=N5Ma!tX* zn}<6*8oH{q%e?PrW&u89yh6K%;hB)4q~pbWz)HV|L=3Y9f}||4uhn^!^5PQoQ2esq z!@J_7r$C0yjDkRt7Vlh9(%(VK&1R)a6THxcvqz60#AX$Fyu(`HT)KMX2fTEW{VB86 zz;T)@0$2WYk35&5c1*wU(Flm;urFG+(yr#dC{HeUFX<kqHE?te5@yyJ#zAu>=E|K; znXfeT1ZSwYYq{@Y<{!pEdnI!1#S<XGI`o8GNmq~Gnl-ux!3R!3G^WZ7>6D+9GNvJw zG-k+@&`G?3=nTyURnh3f87en|T+tUk@Bc8ng8VWgl`^JXB5IAb)7(EY^9ZYAY!hjS zw1a64vO{jjIL?8@n2qFR4gqKTFtlMdgdh7u*v&8lJ0%<8ua)a6^BfYsy!Fdm{s!?F zGDP%CTdsuM4y_>g<z_9PQN|}dK7*aN@+cDkVCwAL6(FT@daF7-{QN@P;**z~l=S$5 z>g>E0pl}M>*V*2FdCkaLeq967UiF<ZCA(;ExvqVj<0Jy87~L*th03FHhr}?R)3c@r zIk$^I{`9wS*8<L(`CUm#!uKJ|uKT&$MMf_)j5l>D%Sn(g+eP*-47Yr)A}x9l^6gzI zk3`h74?TOsUjj*-n{#96o3IauHahuDiff2TlKP&%;5h5&{Tk{(zS&+4pJlk^XuuF! z-YemNhOcC&E}C)BkPC#VKqz{Taoa-e+&rP211$AzJLYDFLxU_d3_t_JwtonJG16`I zLKw~4l@yxgK?{LMGFOjCNAXNCrpSEwNJrz$<bsb7oJhxjOpQnz@NE&&ZOcMbK`VqO z(y=SEgSi6ni!Ao3&s0_c0>qE0_u1iJ@z=aZ^-y81N6p`mw@gxE-`_IZz<rU#KJ0BM zDno9-mnp-X$|x|*`@$rZ{oOgzJ*2T1>E<&=ffeR{4_?0gC^cR&1k5b;{JoEfC5%D^ zcnZiQCygMq%u-_Mg-na2-h47;tS)FWWBG#`p$|NR>J6ONo{?&nCFC-XVAVXN8w-`9 zeF-a{NHvdLy2y`GswMk8`^<Q5AvubZJCG@+Lu9e+f>j7F(;=!@Qo#$Po{0oWEVG~o z;=)7%E0$JZ0>QvDgg=p=d<Rj%%g-6}!drPGmRpdSm(5IqaUz9%xL_aw4f4<+jeR(8 z@E-ec&HxZ*4HU5tXAESq52sy$$7J2A9@@&c0`#3R!YoCeL4mj7_vg9@>BiC<5O_P7 zr8?3<c=_Y+jU&%N<`3$jx6D(yG}D>H64<M`qY{w>Qi$peM8e-`+Bwr%nLZ+rOF?<H z$W(BI`Zdk9Vx&>Hkqq`~_2>-V#`7No@Z=AOEpzW<a!V{tyK4Fob7E^}5KZ|WDRZK5 z=Qo=2wM^#32Xd8!=`*CrB7cW``9lvn8I7(&CV*82*h)O$A_M??%MZwd8gw^4B7p3n zMt36;OH;mdfv2#ts(`&3H)@Edw6dyPJADKfS*&uFuY2f1)31?stHE~TN!hOvajVI8 zbNi;hG9Oa|ZA}1E-2lVy`(`6VjtPYHz|@ZjrYyX}+TX&XM9G%EFo6u?QDXQ7Z_?&z zGJ$Y}Q#K3prkFq^!r7aqdAv*@0^y|1tvpo?U(svk$R)|#k~_G4w#W;RnT6&ug>b}X zQr?7`FVD4Jq-xN3@txMbXryY$c<G(%K5XPfAV<;N`+b_oiC~VBJG*_H$cZ41;yZ(V z7d($Zj>2ZzYp+NVNmeEh=0^qYSsx1_e6wX8HOYZzc$T5&E_rz3+q5#Otrs3BtpU*Z z09{=We79o5@^zvzKlpCxhZdHxz7qUJ{ahIps4*60)3{nw($`iD|95o-!2AkA*;JhY zJd5)17lq1NSd@$J;V*JYSiYXw<-@L?jge}_dj%w+@T@tgOYYu(VHtYr1jDD#0fXe# zJq5lQ#ae0b=o%tmdW=WmF{T7e2d03@R|-BoO%*U*5CbMqX>jx_p;o-pYa$BIs<FD{ zz`ZStYq&o+3^i{}V}oYjL#r9?0qBV{ATRiCCr%5i>**WHW}3LB<kKY~%U9zUMfi)6 zwK6LIdlA6&3N__IO;LbJznsdyB?bTifZG|Wd#C|`5x*BKsr#gEf;X)Ob3|ub9_W_n zrWKgG_!Z?`lT;JN-v*bZTlEV&5GqSypQdL^pdlYPK%$WYfBi?}R}|gXd2g-2uEhtf z?uSACJXqfu0!^4sn{O!R+L@)m5)afy4Gq}Pzzq$^(7+4?cS4qKos%l9!0N@7vNy)R z+Mubo{}q8QGUFQsrv6{-y=PEU-4{M8g7n@&dhbZ@(u?#Cf`Ei3MS2kdLwRYTH$jmu zO_~$|L5K(eq$^4h5D6$K%^)Sz+<ktZ?%bLGhdcM{oq^|Bd#z`!v-duGo%bDL5-=|= zN5dPcR10eLuSt8D82+-|AFqquyw<D0FsE5;;i}f5#PFjfoKxhz%Wgk3mCL$o@HgjH zcvn7D<<~F1av0peHaygX;0^@35ST!q4L}?$>uYB<q|*UIwIb5Lc2UHj;ITPW&=o2; zSRZ?YREsD5dpC-&y3Q+#zS@3up-NcSX~|6pbvDdlB>ZQILtl7K;rNlE#bzfv6s8l> zRa>GHMx70H*3ySPG^?cFri+rUt_z4Ft+p>)uoBk2{5C6udi<f(RQS(AsiyE8-LbKu z#q_b5VQcAYFDpb(=cYO0=s&eW%P%dv8sHOA!ofR0{ZuSS;hmcnh{v6qR=_HOCLxjk zp=|d?e&v(h#QYB~ySn+6nY$>+;?J)v-K~Z!4`4mC1LZq!f(0y<Sbk~md+}Lfh9lpZ zc=yh4)Qoe!GwH60@Sm^86&+L^lGSyNOIe?v%v?cLuNe|)5LqIWI}?Q13D}K=|9o=R z{7t+?ZCEXlY^hAEoNie^Eh@}T(TA|CpKTCMEL-vwDtO%Y)KYbRVOyx6r?1pfb!6$L zP{CPW&S%U_u~30>|1(R~&4smmL$$1O`e~(OM#Ji6eM`h9n+mA0|0y4>H1gfB{>v$| zVf9o%mGz%!v1-fBE-R6+Cq%$l2m3abSqmka8n!mKMOc8$D1~Y?KAjLMB(pEs5|fac zkB%JqZd8x`5c5CFtR6dv4_UVj>aj!G|Fewiu_)gES%&r4VYmFLxZ9@n*bzQM%xPQ+ z2#(O@qeJjj5-l+~_4$Y_<0|?x&V}Fkh_Z?DL!~WaLzG?V%frYmt9%4f)ubLfE(Sc{ zy~bh1CE8#l1G$Za=K{hds?jq4giy*;Q?=F?o_N*v(~F7uh<&k2>u67@>PHgoMnVi_ zcMXMa2fUuP5P8y`ZW+CIzpU0ex;EZ2`s%)@Fo>G|7Mx+oN36cnsK-vG<v+oTNwvh3 z6bfIG_T*Y(%It(L340Khn2N8UaAU<G(^f-10@qk=eX%JAmXqM5Uyq&H&cC|hWF~w& z`L#{He}aEGeVP7(k4R4BvO%?d;ev@ZVpE~_nIYzdr*ED0g)dnFBA`#R8toWhS&yA_ zv_^!b#uOW3*ucBHEE~;sdVyTxoTC6116!@N#I#b?Sx4_^i!gAWrx>C}Zr1>pSsnd0 z{kd=f`t8^gy=wcGh3R_wZHDt31+YFC@}(uFw*}<v`HC=<ohKQhHv6kBF>m)l4&%96 z0c^zwUT)cFx0_`xa&<&kfPh~bSKBLma{+OJbJ2qE#4Auza$&W;L*<Z41l2Qeb*Eab z9Bv^zM-?twa2)SnWr?Xq)>}t=s}vw4cgw-3#G2G4SV<&NQc1h|FTYnkeg6hq!P->> z4FpmUkU;RJj{F4q&pPRR^=pmvGOn4jz(#A^lI72P28%_~2WldN=S>Y}9*;_cDC)?M z))4goQpU_VC4jF#$k?NfZa#a=T(Fs@pu+T?n}~Kvw}5q$a*#<qc^EppLi$VUQo-2Y zi}mm->33$mEA`}M^KaGaE=V85jU{VYi6Chmw0{0|u`>kFC0H;BUvajk#D#f45M`xw zF)vpYjBW8Xg~C(?g8?i3)|AMwa|@-5xm~lLe{CYJ6%5*~#933igo)R&_5X3OREqxk zrZO1&)Ys(aU-9{*u{Fo$7Z8XS3}!8BT4zqntPEI7{0k;77=OoR_)}Uk+2ZZQ_!{IQ zfLwQgOCNH5f?VW~%LuqeAQuL>K4p%1T$q&yv*76J?+qi>3dXTzIzOfN1g+ktp9ot^ ztjCBzSMs)|<P5I0Qi>ie(fnzT>z1j%P}{m2`F3||YTPNp)Y-o$<e&Xg4`t-DSDBHG zf#5C4#tV^=jUg+ik<U7(A{)b<3NOB9lO5Rq>mmC$uO%_&_H$ce%7yAJU)E7euPmH* zqfOOzpxO7z)1d3!M9j%M<IA6s&rUfapJ7WQpPe{IK0E#%`RwR+<g>&6$akAPPa@y_ z?7513i%+=mlaRTn@RT!uWU1+9dVoYuFHe?&qXM7g$<WNZW!k}mlTe53VuQW0vE>-2 zdslJbwW|wl_MV|redW+Q2U%fTmZIwQ+Dv8e>&AvpL~i9@gk}q#K8rOuFpHD^IDOqY zw+z3T4}809?uF_tzSA4A`Uhzm85@Py=s&6x$@Ae<1GA&~iL)<A%Q;V(2BJ4y2!G|k zZ$#@qk$azc(QsespapMr6iEr=b-7`{>p~&HizLy|>n9}FyP~+yblRoi0KVNAmIJ5q z)4js~L4TU1VZNb`C!2#K@6fp-yGDE3@?K{HiAR`&qukKGBI2StEz?li0AIYCjib=f zzM?882cLx@xzUAZKN>((pS?<=7?**U{eBov>pmSm`1fFBqj<&N-jgqUx#94>h9mI0 zJVh+^Ywr8_e$4N$73*o-Sdhizd+*8g1J5rUpZ2{c)%$CHme;QN8Dgs8@=<GPSANIC zb{C7XBlBmAJ83Nk?Tef)Xs-~i{{HD2{{HUi8oB<q=^8edIj<1v{+j7u)X|z{ldf3H z+r_+p!=mN&*V3?lnFEFUi)_h~%kAFDl8fz1G%k%^A+-IL)4%AWGfF4Dv42#HW&T!2 z%6qMCANWlT*ljF^zMn_m-9n5nyvS-nw*QWAdDs4y+9kv*M5_PC)Gy2E`Vten=$sOh zi0H%;6RPNkB_@*5t|ca%(RWHr)T7l(Ca*<Hl}vI)vy@CSV6Q6|S71LY6^mlRLgek% zMSuA<qvppJ?`28mx4)%v;qeNQ=~tZcB<L5L^5p9mnDUhE=bG{)?`NIz6ziv#P}n{4 z+k3C@eldL{0=c-H7!cF`EH>bA`?Hh)D+;d=&QOA4qVlfSk;KZmle{w)ejEvzo-!nl zMT-T?-4=`!zYlvVhl&+Hn^{^^z0sF2DYm63A5y-)s7ltCH>tYi<j1J7@7YeQ95+e3 zrRG<fVCw!)_0U<qVCH<GG4}iPFWoJCKj);|qrVuowEb+gIX(Z09MZ_QXmWb|Q$CcE zx0xAPwAL1ET_h-JJR>M(-J<_m@Ao~{)T(6am-rUB{Jw@)TO`#PUolm=S?ekBnQXCH zdHX^%Vaen#vMn}w7tJ!)e-wvz<ySQ~+fMP6vnI`EPW_(5N!<T;GnBhny*zE<;)c_N z=gm-(;@z3*SJSPFBu>L~8f9MF<qUpq5BQfHW`6qlYTLbTB8!Q8sJ4~ncT>X!W;9c{ zC>_ebq&H)?ARpHZ>m>`7TUsgiUD(5mDR@ZgG~P*n#=6v3zP+$V5mWLoWb1L~xmLr% z9@WbGV~q!LOHXGq{2a9vTE&z7J)@{Ql6JXg#Qmre`Uj4Qw~GC;;`>p@%v(!-Sqc4v zo$QBBoq}4cZc(&{F`cy<>i45q54AhJG}K{HjE8QWn;Pn_OL%9(j;C{LUVhWbPo_G_ z4#_&1w2<ymQir0Qg<43@C5AJKrM;Peqv(FOCHynBCFdE=gW#yE(N3yE!OqKa^>+4a zmx;SvTP=Pqu~)<4LWdEZc3QamQF4c7o%32aSd?0*=+e!KrG@Y0m&LopTj8C&6)Fpv zNqZBSUcrkVEO{l(t&2e!<4J=$i%$f=_qOJ_Z+iH&vg055jcEC{_u)Gv?>>6q)ES|f zwqP1N=SJ2mb+q`w-x$C1^-Ze@#&EY3@txrf;34-K^kDUz4`BU$DnIwnFPEa%dyKKu zJ=~SdQM$J+QT*A;!iT35dw#A)o>ZN$`K|5)zp&#%t}rC1hTLYr-OdEL+<+^p9prcd ze~l7wEhdZmecTxb1&^WNITXZ)3dTW-8;%pb-XB5Gp%wV&AQy$>LXNN(*-hz(iyxj$ zX!^OT|GMA#nlpshaUn}7UwmhTZJ6=cjna$kTuT3S;$;ypB(s2I4<H#iBzp?UMu036 zlI<=41qr0k0gBmD5PUJj*y(2KNwy?a`#NE_$ZByQe8PL@zRIuA@Yn1igkYbQ^4R@G zUZ5yD-KIQ=mZUZzSqP9B69L6+4hV+AAb%_H|AYKqkUtUl@4W{}67C?#1O?Ne+Wb&$ zOQ<#rsQr5kD0-ma9^?;(G7~`NA(Yg&0Ez`bu4MMH<wFnPx`bSC;F5_2Dso7b09+II z!!5n+powvVGM+*zr<UJtg<F={wE<THB>1|safM8R<}?nj*z6{F6r`q7Uv_h0z<(lR z=ZDNMf$+a9Au=l1bnum2e<BG~>f0R`?v!M>6O~C-Eu?a$dkP-GMWOH@<!v{AH{f<# z9Ppah-5HYHyAMX|3#n%5UV^uS1XVDpy<o6BX&Mc?4hB(RVC)Vel3;KSMW#)o(Rkr# zI;yt3Gk8kL7u?{^%PUS-!6TfIN<D65;m)Nxm;{^_3_gNL*?qwy^+X`E4!6Y3f~c7n za3lbSF>shcMG#;x3#4AHd1qylAeR#4dO?N8!9W5GB0+SsJ@3rrJ#cUXhc0k1L5>f= zAq*UwKrRV32B!)Jq@Z#EP!vLn0n<OY8^9q6T`Cn^Y8*uDpaC>15fEuuymQ$CEkH!y z66dRwdj`+ot;dD2-MK_g<$S?C&U|^*pqP8M`ab6iTn<QX0?FzSh<JjCFBJIz1~(!7 zM_@QY#w0LQAY&XDQIIhW3?g8_M}eUa856(|gp4s@ctHkqIVQ+}>exXBR7U|apgIwd z0o9=b1`euY1{qKt$rmyF=XPK|@O6VfxCmh2egMM^GSCKp;G$sOOJJ(FVz9JbkhKrO za6$b#c=0;%Q2+%ne3i5=9Y<*Xtm?5<Ts@osh5%%UXPV>YLjF7JdIRE1%8<(mxH?mK zzaX0+`P_8#s{9Y)+xOFy;;HP>!1%{DKqMAI!1<a2coy`)$j>eF2Yx4s{$ISMd|qtq zN+JXW5M)450zm=*@j#Fz3}lWUXrkXg4F;pA|3MJ2JV2qH?@%=vsG1Ux^-@6~2>~Yr z>HwmyLBIuIDIS!3_z_g<gr?;PP3fT`m{Ks5FAmA5A-DwrF$6*oFhigS0RaSj5YR&) z3jsL<Vi2%FpbB6q6I@3v4uTx$iqqhVr9%)*KmaYJbW94sFa%Q&3_$P^0u%(35DY>v z4j}vo^X>a8!Q`B;OB9o+7XJMYlz=tGHb~^hl(~j~d>sNU2zVfXK|l+EB?Qs{Iz>mo z%re}tvAfU}ogp}e3P(YO`=FZNp>mv%Rua-?LE32`ql9EckSsy*sWS5flnzapat-*C zA^)KLeWoaWkQBuLfgA)Gd+??`c*!2TZx5cZ2d~<L=k3AU_tamwVN=*a`q1|e05Uh2 zZ^QJ1$T?f9l#;R*93hZm8`R%<*n_iQ!G*8jC|BSw_SBtEkX9#1qZ4GY8>WJUEsbhr zuoXL_lZi^+`)MD&bsI9ki+Njkz~K0D$@%$`bMBJ!(<SHEOU~I#&iPBh-&c7`jGR&N zZkSeKwzMo0kmkoaf_9q)-r|8)?1FJ73R${gf3YpRg8RJ_G(Cm3zwnbE0sj-L$fzEb z<c4YYQespu9&g1is%E05e}#xW>5K*5#2y?^CTgD1E2}!3WCR^xq{Il1%5=kYd9bA+ z)uvmqjyHg}01U*ZOL04-;AKVUANJ9Ex{!eeh6gZggT-#2kb+kr8x$GK94A|`%dAis zOwwN*cw2(RZg+v2Z|A`)myV$3JqF;t8H)4CMD5G}@?e$^66@?zI{)%<E>P^ai(k_2 zTu>^T5_w;&Rvc`^WJc$l}87s4O?k_{qQENY0I)e{N5Vqhj(ujy#M0&}#pumMyLN z$uKZBBj4sqwh8*2d(2&mNUooUIZtgDznegJEiS?f3-hjSOIjUkJL_GI>?GiyTOAWT zginp@;6Ai6AGffjx#EU_u@4yoz$k+Z6fkTvQLnp##F8!*Mqmp|N{oZwp|EMD>w?6H z6!{VhFs6dZ2g5Vzm^;%H<6L`-fMEm~4lmxnF4-hV+Vu&!J{TSbxq5)hiAM02pIsJE zHB6I`FUkD?3WQRes|p$z2SC6M$ti%RR}YfAnciP$CILC~`5<R05rP5;G9V~{AOV1A zAjlGiN`C-V3xdHY>VFUvA0Orc3axyHs>wjrlz^;@3Ia*NTlcy+Ay5YpaZOOjID!jU z^YL`d&AuN=YF6HS#v$bdZ#mB=(J|MGZW0Xt{uX?FJ(MU2f)D`7fe=8xWN%!c>HYFO zV$=Jvdj_U~j&G|J<M4W_lmNJOz{Lb_X+^L>pbB6fY*>X#90WOZ%fFh{pa3ld(t@`r zBS;}j1OiqFlp!D#1n-X!5WFQ3!3bIM5KuxOAt=N$A4m5keS4JT&p?=^S{5CBj!GGw zb<Xw#3Hfx`8iDS<#1Dd>dlDN2Nt+UAf*Zdjei0n)ORN!iY)bqj(EA~=PN28h6MS7T za78hWp?mK|`Ps_P7w@<3QJLNkZ59-~r97WT$6T^KNs>Nxv<9?i!Pl!oE*0ZAyRU$3 z`5KV<gN;*GNCC2&;Hpzj10*jdDb@(4){=s+Cj<{FM%E6-Z}bJ$UZn+H{@;GWPMOxv zaPPYbRv+78noj6fAG=_hsOVSE%rQ+_fb20%W`L|QP1AtxVVWcXSz?-606Acq0sz@! zn)U%XW12VtSzwyV0Nuqjxd5`kG_3-1!ZfJ^vcfbW=~utK!p_N~x~^=a!8ZUpsz^tZ zF&EzFP(pR3!yIg-#A}OeUl!Rm7TH!7*@~k&-oYH+FwDNHDzbG#bs*?xUx9cGs)JRi z#-_1|QMjhS&Nz)>)~Bw>mKS(MYrg78HPs-zcPoqLngP`m&FulID6-X*YO<DUqD6HW zGR%Inl4|OspB1q(_6<OFJQuF{dQYk;hJN;&omA5$AQ!17eEL~sbEzgqg!db3<Aws5 zLld|Pn8jO|!$XEyWdo_E1VG?o+JKCung#)BNj32TGL&kn0;DI^<Oax8s%agh))vi? zAiPV!Jflz@rk2Lr?tm<ex2*wL8E=Q8I;PBxw~YaTm>(bzyNBvf7OMGbA=P9GQbC1N zgm;*&aYGu+fk~()tOAg5O;{_;p%9Gf0fB|sNHzHbm7Vc+FskD*$OcPwMtC2Av@DoI z48!anuz_$?2cb}n99W+w!kfa@c$*Z}kpvuIgIp2bPW44|Hh`Ln=Hvi16wQSJYAKqd zKzOgz70sCdYAl)yM0Mza>w?LEMYC2H%{@SM_}du!g4@_7Tq9>I)wIMg+oLVj6ol~3 z0P`_Lb?kw)`J*}nKpL0~9SDOBKc}DV0UJ(4Kl>O=C>fBwRFgg+Fq;uT;MUwhc$<J( zlAt<jz%0QMy@A8d*f$C0Aj2^G*ix#g76=`rn(iXJCvA;=Ghq(XLN!N?FozI^+2>&6 zqEQ`;LN#wdeO-jNI8da*9E?CFxH%pOZ?%>p+eDZ{0SJMjz>);Xm4Jk6j@n=jqCluC z)daSr31nu#99l$b-hk!J)6Y79+S|ZyXWRhpI@li@(V92let|7|2zDGC0da(PUq#Ve zF(9x-OMt41=6V5v%yWcyOnK2<GN6}5b0dJjsjUSBPVFWjkXHx@<jn&Dd0l`&-U-6{ z669q80(sMbKwb+Vkhc#A<dp#edA6vIPLCqSTN2Ui49rY(+V8txb6g+h@76b!60a(H zYGXVuT*Cl<L~9B_Lm5elgPnMY>i7c&;Lh*>OSr}c+#EuLH_(8+`^hj11AQh^^A&W! zFv45T!ngsPyk4-m4S<Ae-t@v8qCmR2v8au41LzM+RL8Nkv9BbmV+?ebqg0b8$O7BU z3H;!+r~?9r;~J`i67(6^dvVY#)kU_xsE%)-OmmT~BM5<Wa~}}s33EW8U%=tZ1pQ(F z2*kk2%LFldKp^%Aq=LSPhdBs>c{)oq<$+$lE7fEL2%Mc+Ku%IkGJrsDv;zW@3IPOG zObJ>COd}8Gun8*k!yHOL!+_1b0U7|De6Rsd;N<fIdQ~*%0mNX9#W05zaFW3><p6yK zvI}7jeIN}yEL>0>XP_s+2I7G}1G|t7b4UPM@SxxZ4zT<pn1h{2O&EB-*ooGJfwMIa zMkRp2C;{f607hUk3ZgY~pgs*~JTMusXg$zi;J7=2#skOVA!slg<Lz+JVCKfYFJKPf zfzt!l)(bidtPMPOR)9(egn{ZdAh6+hs16Qm<85w0ptEQIftVB^aBFg54te0rgINlL zJ_ECS4s)0VjRejWctDkcG+{uX7oNf#+JPSwmjPV_9u(k-^$Sc5EEw#VI9PBF%mF-} z9l)%?IVc6s+h?FPMQd!p1GyUJFb+bXC>dx6u)9Wp!0sBNI-D(xeZiJAfH0`t02&NT zP7c*E2O6>mX12``@yc@9I{|I@6(Rc2`kr?l+OU|x?v=$o?=-YwfKc;c4Its>!%no} zJ{b8YiQ=v2o<*w<7Q_bKiFs1AW_VmhZr8@?)t!6EH(0P!%hK$wJ|4(_9+@P%C@FpK z<CAAV(f}kbkVF7Tx_|@;Nn(J66G*P0Dz!kO4oUcdqy<R8yI=Xwqku#ml0a2jfW+}e zR_hW$Rx6y0!>tSaMi7Hv&qu}*gKox2BManNK`b0}9*>M)tV!KT8u>Ezm$__B>Wz$Q zjVTyS{w=B`&#Et6lR5$(&7=`}uSeuSe0$JManOwwl&K=m@&>6U(yBGyNh3SCYf`<Q zk0$(CINGDYFlS9Fkv!{8+z20Mw&*ES*8lSdj+Tl?y=$<ah(e&=wb)M(AyCnE_7nPm z8to?p0ll)H@B-9qKfwg3-hRRkP?P<H!efqA5ypQdFsW59`w1!p>H_4M0RnlFfIwaV zAdtri2;{jSP<}RIp2aXJxF}=0Q)?0X<98(p)CRqR6ar}vKGPp9nS+*WMN6ilCEw7) zF$m-r+l%T<v}70qT-frWx)d#W!~pj$#~K06ORSOebTSy$VU2iEF07(gpLH;WH3;NR zC3d_SPz`o`4^RcxNE1_NjVYu>xfn9Q7p*Xbee`f)s|$|+l*@DBtIzi^g)#K-MLSI4 zB_J0}AwE4^$sAM2h(LB&UsM;MC7Zxis<1|H(UK1t;7SIV!URCzV%mU=F@=MGv@nId zfDAE(Re<y`g>HaMF@@_OwH7;0f<V3i^Nd2dm|9-^bO&T{@zWZR)y2<Hl*^R)#ZO~E zAm#@M#O|S7l!dN7TVM)JK`N+lia>^f%}7H_G6`J;R{#>e3I^Ly2uAgQz(Q;=h5kTg zckweA<?<M0gQYqnkcS{G3oRML0RLT!HG-pD2!*bs!TK~2NOIeYpQI?4B;WuW<cdJv z1Fy^40BXXH%K>V@j)wti!H!cPkjr)0aT7p|*zrJ=iypWxm<(7nOEq@<0m{YS=E5T# zE!ib}C2fl-Tw;K~)y5PCA&}`{KBg#_J+L<LwG9Fw4NQg(gu#ZN)5G6_4JV?9M}i3@ z1G2{y>H`9^836=t%^d{N7|fCc<x&G?36|&$9CjBTNoYwK26&_;rmz+W9WaG=5y%PK z3lDHwriHE!8qty=4De@Q<DyY6j6zp!puR2wDFzhaa2bJ2aC1Ds3(zfCqeQf10SJMj zz>);Xm4Jk=4%*O?qClvNDFj>62r@I!k}V=vZD4ux^zgf&_BQa_T~vd+4)(`d^r{Wq zFR(>^V8_7`5Jw>2Rba=90f8-A0#t<^?*#-h&k@Mza_o3ApqJS35kTP7)&c^jb`ucD zD+C1c<^h4cE<hmf1cAH&d0Bu!-ZUVP*8&LS?E?aNWq?4QEy|_S155Uo8T_G&<?6bs z-XC}^T2cw+0&bEmh6x-6&_Rt@qe`riILhT6=r{&=Jvik~C>I1hydK13KvxM}SvF$H zgs*b#E)xI$Ui*LDYj%V}{h-$hG!ZT2w$Y&1?2>@P8dKofgDdF4+4SJP_Tc1taBq5W zVLiB`9vlUt1@zgN37|&oSRl$yPpBXCnJ6!V3rqER*4$;l*UOQutFGTyZeh5kFq}## zE(p<*ZWj%D%x=#z8uXZ*07%I~i_$T;ytO+)nw=nBPT(3RaPt$m!3o^{1g>)e|6hN( z{2%*k{?ZFH8+d#OGPp#7(_IT%2^=Z#Z2AS-100}fkt=Dtld}Ks?d9@+Zm)A>bKu9b zbdmb8x?GB}Bx})|Z5E5!CSyr{w(>9a7PH02lHOJLjTQr{_8VOSROL6?%X0I&f!^}Y zWjaMGr@LRu<t;bu9etLYF!iYg>hn9pNegB&@<UIawsIf;0}>ZVA`K*VK!SuMCO{GZ zNeY4F97xn5i4>5S0SO$E7y*e3kX%7kPJjdsNo0V;1xUI)#o||<wh|xjr|Z66l3^U! z8?`6swPN}2#VZTO0g<#H`MN3Kr$E;rU$?GWEZ&Z>qO*-S3=A5?v~t>rkAT%8riJf8 zgDBAD@}M~w<9XdiOi`fw;H8+Bn+MHvp|lz6yWo?Kbr)>z{<i|i>F$4O`MN?vY1y7) zAM_8l6;b>pjC^JER>xL~2aY`%$?LU&hQV0j7qkgwAB0;WWB$$)Qli!8RByZUF6b%y zRb7e=ed5f@X`_?-B?`U}R%q~JMPmAPx<dX~-7(T2wdPSz(QXP}!(EC!b!i=u{HKG$ zeyR~tsV!DX{C8g2Jpgy1sFi1{eOi3DnjthGiTu;@_Ung$HU6{SM_7K3ONy@CO6qON z?t)Rt-9LK#SdvyW&W|72ab7mLak6?;xNX!^S%tjk@|lAD^5<FZ-qyvY;L6$9bQ^`% zE9c`X?HC#_<i_wvyEPBf{$ZOKy374a#ZyyfEQjO;HSS+x*+ybn(3|I{y3$D4?CMpE z+Xc7eMJm(P!GYFc8SY5k4fU}Tm&qUq$3--5ya;VnT+Gzo!H%@nS6_%ZkH7vG@1RtY zxpT16iYq3LSjGudg1`0y7*H30A>qbDSGX4`_*Y6aL{}j^4i_OjXMoQx!SA@v1F!eE znpi`^F}4R@)Dj;U_fNCZQVMbVJZL8H&t@>=-6?*=u+xHB`{6q>(n6RPTyMF17yO=i z?$`~FC4uS%d8K<2Mph$+hEKvA;U>3O{=$ot_umV>+S@lPdu#R7<huK8)Y9R~;rFQh zzLW0_JOmcRDcR*(=KozICE?*iP-}3PYgOiR5#!NZ7vW2x7UOGuw>Np=T!vFDi}DH& zH+vgl>WS4N7}Teyds+UUeAp4ZUnu<qm!|lKNRhIjMwdd9R7Bnqj$?Y{BbyJea{VDm zBcuCDTIaWh1AC@6Q_5JJ?1aqY7Sj5(WDUHq3|!Ew(BH7p8S{^iEqKin1Z?6A8op=c zNifk+&{SzX=ebVZD#AxMT}gYA=aagw%9dQ%D9%Ho^EV+(hcA(M%wrp2z|KR#@R{zD zWs3Fl|14u@#FGv9U4`YSbI5tb8KmiR<aK76^msle8kjNYp7}iZ0l(XZm9QJenb~;v zkL_V4Uu4JOg0G)qkuNl?uMfbi>%MpMSO+N7U%#VcZp?Oi3I9M6*{oHxhWjt?&rv)) z=Kwg;61Ea>B!WBCI{L1PsauLVwK&1LTg=-FKXD`?<YS6%Cpf{p*CRMO(?>+)f}bA! zgkQgN^yGTQW6?FF#s`J>8nh!7|B3gLCFP}*Q%XKrLzc&z{iA#3^$Q0#A0XN!k*nMW zu4!{z+K)JCngRUO)hjY_EWtkV!5(rZp6cIK@i>mo;qU1^t)s)=I4W^DY4*xxoR(3> zMDmsmvjgm_JyC+sr)yaF+Dk&~XBC9YI5I)G9~3#S5Qe(^hSZcfhS$w}cuIAv!vy6R zMk@M+VnuU>v`Na}37OwfG16r)oVk%>DDEhNFuyMJl;THLfG|&;0;zm`wvZ0VWA1OY zT9uUiu@0>o)zQLl7+VbZ`6b@aj8t6lDAs6I67$DO&uiEiS6349$NHduydX`b&A*07 zO=z(;ur4PMQFE;q(jf642(tgHb9v{lnofj`L4Fy5y4FkDhXsf~dDmWfUoRl-u%<6_ zU(1^Q5Wmh-$xl6CC`4-B#!5Zl6j!JIag5vYqpabI?#ozWf#N#NkILFFbKUYEBStBB zw)`b&PBjQtcEx#^ts4!0+5TzA-h3^xYhT}@=zM)-t@4K;PaWGhSPJqHacF3)A|?A| zvt5No(1lz94PT~qOM9`6kiE{#w%Fn0l$7%MyIV)*G@8N=;r59ibPlC-W=__4lu2j~ zWB$WpL?|M?Un)}eO=-30r>+-T>vcR>wqTJ$yKmjIt=1HA`ci4Vev1Kp-xHNetXycd zd+-v&1K!bG9zv%>P%^H$DS!a(geenRnotR%l43C)rj&9)D;)y5LaUFShE_~1#R>i< zbR*hp-G*^a&n0+-O2-F=rl_ebyk`t$P(eZw(;f}xPgBZ8#EC-G9CdDSC>Cuiq3@Re z3qb{KMN`f#snQJ4jt_`UGg(mS1k{<wrF3e(w5%>*L<l}{^q@~&SNYNHvnejlNF(-T znS()u=F{yIYon45YaJqP%ce)4rD<ZW)1*HSrWrsC)DMkTGw>)=e5xb0K@gMXhP+O( zPJKYm!)*E$9X7~g$(xBI7_o_Z;JwR(wqQWJ5`0Z1)}y8ZAJwHpn{uB(E```X{}Hoh z22VWA&|si9EluMMRq{elnp5qUpYIfOrU+5-Y%ST+Xs#aInqSf(*jA)cTbAJ2a^;xA zP||2p{hJvq;fd$?<*J9|;wk#1YP`y%OE6oQoN3>RUB|pyd40$q#I~o8ZO2u@1Nw9b z$&}!fZ8kg!rawlww`mt`Mw>M|9aK*rKIjvhitQ!6l5qFcA*3sHq0fbT<dEE2zkwam z+OWydOeRrv_thm-6ENU*6qMeQ#xvCAUExW%O}EVLC@F3K{6^j5G(Tz<`ddsNxS~wl zX|gpF9o*N^U9{!-vIjki_{z4U$$ojG<z9&nqw;CwJ+}4~ce6&z0}>Uuw;Aqox+ill z@wB;)W@;ZNJz@~7II2;^e{71q-qxi<=+U1zp8b%4W!afDP5R%Gjy&07OZJhtG|2=D ziM6O+XBzoa!&KU~E?vTXUp{jjQ>4CoYqp10r?z_o*LM8Q3MzmrlEpy<#nSSD#g}`D ze`+hq7Wtr$uxSN-As%=;e_QW3g`83DW97?B=bYVmKLz*wRIhJjO((kBF%Nd>HU~R$ z$hA6M+|9-8ucO}Q;N=W_wU8!XEPqs^TgFE1rBP<U*!~+oXt*+&5+U;=+$I>mjY^j= zLNj-tOQmD<>3fQ8T9Z-AG~=7nbu<~|;-xVpUy}8bbjf_Qc{x-6xeiIjp(jR1coK@I z`5Cg=X|m$mevS%Oz9DqbN1X;nAl=p6M|229PjjcaZ_=<dvKaNp?{q&B5F*HYVgG_V zan*qIMo&&2k4zl-SO9MsVuDm!$-PXx^o|dHlU3yn-Hx2u$~V{&eN>fes3Ft8qx8}H zT}C~R`n+@rFS%kU7dO$*7|V}PXmYtneLlalV}zx<?=>80hnu<wYFZa3>|F3zC6Bxs z#Ay+-(6Qhz!oH_VKB+u|{X8{%fhU^vSk~Pojr{w1eXT~grm6^q0~3mcB~VY^y%0<} z|4cO7i80GzqMam&@Lisz%S4MP&l16+=4d|+@WwWv$&2v*aB7E}xSQ)ZUs{d!Gh`{> zXxc`nTPV6=PLSMfA=yr`ewOYtf`8JsKbqtW{HeZTZgb>G$Y7x$abFdGQaOx%9vBsr zM0k%*_NnG^->7@`Z|!h>_oQs`vyJA_4_xE1eunOUCCt}vjP9k9>lF;cDEg42Pd~8s zyt~oH$+#G7PgHoKd0aKhc-~^hb?%+x{h{d7y?gr{Ddf!&&waAh=vm%*PNLX~7+IFH zA4tr_v*ZjI&!i{s<c!|G_rO;3xP8=zt07^hb@YCS!9QYmWD2=w->*uhvi~vKbgh20 zKhBS~ZBcjs!T0z%nIOVth6lI*+nLuDu#$WH#oZzMQa~DO;?b0SDIxvHqb(-;vUT)u zO|llr-nPjDz6s(AW;-P=jjuR;UrOYcE@9ON4XU;qIRn#j#7R45IRkaK>?bCXI)ov! z_gm*K`miPxjN2&n${Th%^fcl{RYD>h6uzkgY1ytk39C~-ct?l6H{!iJl~=@jwlE|c zyO@*<Zh;G7;8#slO)lQD{>}G~(-BVm_`qk!MYm-5sw<TEtBRtCz;OY2Ih>qBQ$YSH z`H#$jYkDdo;ZLmtK2yIsakJjRv9{k5{e;_|nA6_IIkX3sXreN6X`&D485|AuWIKjR zb7>ls+j9urVOAfB&nOsr4Mn7QwfOJ8gc+e&YGxb+9DdC>NH_$-QxGwHyxr=uZHdNy zd@PIFg#SnxRPKn>SHfAA^($ebABn#+vz}@R9Oqhp*2T32jt+U|(oD$lcAsmb{Bud( zP0Rj{HTDyH_71NJB~bnR_tGntnp+CytxX%(B0f;2A+s0kf@3MXh(t$+hI8?E9w;e- z_en}GR0aNxH}<=w^gfD#sGCR^MVU9Kl06VZFVb1W_T%=LD~ELJ$i`nmcbtZR{4=(- zBc%^=tPH)znSUMF6to07f$I#7C2^nQNqBRwg6!FXzvcT2D*`ahV*0=H)}dMg@-OHm zH3{v6talWJe^46Z?OT}><qUM&T~It*h_w9RQ2t*5D}$rinCa+`+vE&UW`;#%V<<P& zuRJ<cdDiCmx`h~og%rg%>NeDI9^pfRXHxFXpyB<bESYYaqg}!u$c!$dB7bEMl+g4n z#9Q{U=+-G{wJpS1_MPd}b!oOO#9H?K)~P$uK#P}tq%HN9vW(UdNS<JocF9@P=q#dp z!qc8G!66OLQ34}DJRU2J8f&@95=vg;_|Fo==v7Ja^OIG!4_vBk^fc5VI`Q4yM%lzV z2zPED1M$ktP;S=Io4Cw9?Wf$FyyH0*I&^PSMzbAL7!SxQGcHoM%CCLW4Wm)}!tqHT zpBi75MM{T^nzw^dO0Soi?l5eKKIW#Bwz|&5CySx$eF*zXDr(VCyc{=jSjKNI`66~$ z+9_|iJvl7PgNM?d0-e&NMZdtPle(+*;&m3a*N)N9jbfd9tz|R{ejGs~H-_*PbX0>J zhsaJe-eDdL5lw4HV|<3FTvD;?eFoRAIA~Kiwd4OvX5YUcq>WeC(!#*AZ)vfU2u@@Z zYsKl%_8ZXCB<j%pHUJ+4HAK5>z}AYFD)?QOHiern2TOj3M<ClBO~jX2q-&W9-cFsX z|M`wMUxKW@^d0_O-81e*cb;7BU)*oq<#P3#bq+o{zl@Eh66VX|*4<z-kcz|?=H}$C z-e9xTvoKJqPP8_cH{k!7W^F-YAZL^Q#r&ax_#49ds!pDxFI=BB*mYU!gI=cgWXf8} z7?2&Yc~{?gnemi+w?po;<~dhMDBr>Ll7x2#^Sq*445LPep6>j8M0a)J@u8o*a=spV zY<Qf>w<VQoI#-nOwn($JJ<Z|XW|nzb9Hc!bV=+o7KoyzcttBt*G`c+@;7-?$zc|6B z@wkZQW#QXcKUaV5fLpVp#S^QejvDNXq~tjd-;?~tcO4DSj(<mi$d1s!Z^LiY`F_JO zyW~D+8yTDC*#L9f&1Jpg*t_nMM%??YMmZ;UjodlGe|)_Xvhn08Slk=3@plY2@WXk7 zvtw?aW~=?j2Ak$dUfdp~J||}J+|0>RBsq|(O=DYQ%Qoxg+7K#?Wm`YUrfDWrn(B*v z@k5?l@Gbjj?K0km%pQF(qBr)%FMsZ;Wx5S=GcK=4mII}L%;<qAE|&wTQKj2tO4D{+ zZWpBPFZMP2(Gff@|A=zPE=V?b;3RK{R`n(RP3Mrr={FN6jVi>`1=|p7H<R2Q?b2co zcCwFKrk3Z*)8Y)aQcPK<HRW0*aT|TOCV$ZPm-sF31aAaCt-E1m+H&4#&N(gT2GJe* zgDO7!(>s<4s@d;iRr5o6XLFlI(>K&MayEE3ygn*zv~I8-q;1?j&^cg>?D<dMvyho* z`l%u}Qi4SLiDPc!MgPm|r*0ofH%@ao-2FdBjb7wtWhe4ijg}cTbHl}->0LP=C>&(v z>(kV8BMeK-jaie>pT+XC=PF(vdgSN&>w5pj%g-s*iaWeMW*AWMB9!%K^|Xa%hCaW~ zw=G&ZBkNbc5?|HpmjCfls!MWU=&^3XcdF^6acZ8+@_EIs>EYv6_w?ICYsZI-UoC3Q zox&bko2^iOwWHFY_+n+QeMI`jAm)ZoV?Ump#cJyFSDZSNU-T_Pj(qD9&tkq<UMl%i zYgPnjRM)*plJcoqi~r_BP!Z1RUDv0_@TdG!oU)If4g>3Do#i_5pO-<5VRPM?Jr7j1 zoC<mBmMlsB^nYPKvi}qRSRzBC?`ciNccTXLvT9L_)oMp`Wc9f@u3B&=w%YB%kIzdF zW<KAQeZ&%<B<6@nl916KeEPOxZJcK&#pCXSjW$+UpG8C2$9Jh%+x@6mdv|WJcI{Zn zK3P<J{(49GdG`*HtoI`4gM;AM8nJmztHPy9@9~&Vhd(h7h7Yu4Ln39Kzj;SC>3pU9 zygi!fdG7_+^R5f}=g14+j{B!457rK9ALIyRGWtqr8_9~#SegiS7|UE+lTG+!IBC#f zD8tb-XRPZh+y2R6QmezXovmrUQTwK><0rjIh6j1SSUc{9;D4)JOz8CS*Ikm0DBpb^ zHA6Xx*J1UK`Yiqz&7tlj-4^Mj#UcM>$d=(G*_Oy;z>LJ?ozOSG*bhA>IX}rg&ziB5 zg`b}M^ZXR{Jmf*wuhp%`ESdh<Qd_>#cq>9y`YweZXH2AHLfa?kcXK{|a(;&2qx&nq zpZlNIYW|J#fR7($n%bB{i^WKG^E}FzJR-N2+Gr2i?=tjg&&BqO`f5jv*_QXZOIBUB z`G<D-(e>ybGxpeZ;>VbEGR3%rUt1BpsdqB2H-oq69cms<sm9ft@`S55i6cKI`H4_( z7Dw)6d9p|QR<<7{`<&KHR>y-wH*u23I=(DtsZS*yTaOc{)$r@<cd&h0cktgL5qCL! zX-j-oZ!3HD%$D}Cp(veNlTB=<PeB#<7T}q7ho-Gf2hkbHj=6FdpNAUL-ba<2Z_Z|< znw++}=WZX0Hc@?Qd6QYr)L~l5^k%BEuw(esxC7nRe{&Rvh&lGdn@wdi4GvkKd>xP# zt3H>h&hx{cZhjL}u5U{E{^e;!R|mz+e#hjerEi^EC*MrB*dLl5HiutRu4d2tKAWk% z?^|1`{$R6Q-G`}4-P^8$s^jLT<ZtX-9mgV}dQswM2IpaiUb_mPM!xNrBOmN*mOY@V zG<%agb9dKmOJ>(<tL2+ZCDPkP13ur6xT=UDi)oIbDw!?S+k8`2N%n2}llmK+Chl{^ z3^I)1kh7$kxw0yuLV1|E#w~G8nUc9;9g(Aao4J}U{gbi<b5&jnUWsw~SK%SW62tU) z?;(N`Q{&2ZR>#VAj=VpIFdyY5sj!ljqNFLVPHQh_$C?l}$L0{i*)J?3?#gzz#7l~c zI;Yf(^}PsZzeXng{w;R@tVhwaeB3n&eA8V{Go@#vZ~U_@2e+CY!wKVgI+=NjA+b<i zDWesg2}1?CylqC<Tu(t!hCi=o!&2(v@8;p1uz5Gip1z{0y>R1--kVl`C}E~OgGKFo zK@++s<iB32WWN3FJg^)V0ORO6xn;J(GGTPW@~f#g_H=8lsD&f>^tbo@tH;Xrv85!8 zbzT`aehatWS2GjSk)$U3nl|*|khV3j&sa>Wg*xp^!%*cRYwLqPQ!%{&ImU)Aj<nfr z6#A&sjpT7}t4^P$*qs1oqdAq#>aCIi%cJ2|**;PGp6@1N+WQ<&>lG3_eya_(9WlOU zi(wo8y7^i)hC<B6g-CQpVSx0gsg);&-?ni-wP1?~R(+OZ|Lh5mZF5<w%@z}^;H<#D z;0dp7(`xG1t(IY*qj|Tmvp)O2tMEomxWZhWdWzg{D!0kAkyge_8T*DS#km^z4c~cW zYS`B5pz@K|Yo^08SIIw;_eIGAclhxs9lgurnxtn2ddQ7me<hq-7$-FJ%ZL*^Mrd*! zztZIEoa3T#^vX^RyGak*rVweRAk0|sB`jIcOZd95O}O1^LfE(9nXqf0HQ?Vkf1i2@ zb}PNlHIOZ8_6Pa#(*ecKuRlmTCw~acc?D7}`QJ+Dd-#_;YUDoNl52|FK5OuTsWydQ zVFl$}z=QZ*`HtaZW|7vuq|$|`q_~Ciq@0D@gF1dlR{{C^_9+yswlE^{o2^vjDy<1g z4XsoZ^KQxHQLTeXORe04D+{mJxQ=tyZXLI-1?{A)vFy+d2JO_XG3*qrnfML;<p^I6 zBvf(5lB;-k$Hw^l=T^oNv>?n&vD1-5DevPRUn12uJjE*9I-Q}~Dw%%0RWgI8HAF9U zA+pNYZ=#O+royYCercbfe)&H`63k7*60A)l5-dls!i-KgI=$XjQN4r(1--!qo2vB% zxhk23F1_`Iuqx37imKv;m!H&jYCe&Nk8iOYmwdV&zQjDzukh=&$}sDKlN-C=*aAVX zmtV$;f-Ov)ISQuEN(579(T7o`)3qiKKU?Ss;+A*2m#QZ1KlDU?Z;0b&%kUE^=PWg; zJya=cz=&r?gxhpFQL9Tva_ee(mK*YB*}&B;j*-%vE(5>P17QD#PhQ_xXW21Z_gZin zCR<n)P(02eN#+$`RrIM$a1#(v^oM282^hYR#S97OX}pk69b(DTVJmV+H{Ri%dS;D& zcZXM^C=^Yb_Z3T<chvpm<;kkb_ucNEkN)=t-KkxCq|+s3lrkk1loEWOr>{%riFQBz zXmW39gQM9^I$`^{>fn(vV_=LGo5HQ1f!bCS%cIsr3i5ITCdN%cR#yD}o_|t{iwV(; zH96hY-aP&u&r`=u$bx)l4VQ;IXu9Nfhjxwa){kqpgNSCGmp_H7G~Zgu5H%qR5}b8i zUOZIXgFPmUkYgWNF>d*>SECR_H5=7k`<r~v<Ba@7-syeJMBws#`rze+Y#>~QUG@D0 z0hMg~aKc3Xqu0*_Ibe(_$<KAsuAZrny6*~bxZ0-ZKes_!cxF86xGTuv*2$VB=a@C} z><EqVT*45vuRN+;<SKQSPZum^AF-O4`cdz>{^<E4gX+qTK&fju)wFE!K>I}L+M*}f zqfDjD&F3MHO5YNe1~exy6&3$T{5AI|=Pj+I{K=5f1U|;{pTWBcRT@c!=^@bxGK}Fr z!*^rvXj<g=hkPgO*5CZv#wh=De)m0E<@^2qn*p+%L&X!x7|(y}kJ3(A-hGW`3y?v^ zcNMP=sZ8vzmHd*ylKq<g%QVUKmw{37D)&ZmOUKN6ySrOIoEQbLK4iWZ9%TIe!yoA2 zC?0C~R~}jy-<*_|_R*nUaZ=0?V*!>hP47Z3%{00S<#Q31c7zp3bB=CDg})ntDSY>p zN(pFX9$tN|n2GcbB7~2_*j9alZmfC+(e1Z)CkJ#D4Xk!PN<zA|#_qo!!bFHGMb}mn z_K#Z<?RUuzL^wLEM~M|+osG;c)W$U~V#W=k%RG4cSEcDVUyBV9iHl<JpJrf*o|a%W z$G>8epKfEcpY~y0$9J*WKmDT@f~j$%!OXaY1H~sp2jo|&KNX*RIUs#9aUgIT7D=V< zuar>sIy$MW<KBDqHy<$5jfxlf1%yw&84_{6ksg?~zq{_$l#kuCEyXg~#$gL>bFfMc zIv4M31a5oUq+~hTpk40Dp<Nuq&`gcC>r72^>xGSvG2^yN7?Oq+EJK6l#mxrSi&tNR zE}nm7xo~U<y6E}JaFO)YB>M9ojwiD|gh-Dga@>>;9#VV+v;Px(DNu9VYQgpo@F|EF zrOT{HNjtRqs2YazXB^h-z~CZIl?E;}JyiQM5u5&w7S0zi1b-TV&idJaaoO0$2p%|J z)JLn_7G2Fy&!a*k$C5Ft8zY$2pI(2}H`cKsrwq}iPw2`DR|lCkWUyriURald8y5k- zY`Br<ywtuF*Wb)>-}0rq-qk5U?8~p|5Jj6G#--_~Pn#abgV!iSGS`#+qfwOPdruB^ zqY6ptkq<2O=&_d1ic#I&0KqR!5p=9`2}73KuCQlEL9n++ELyXVUu55P;qGV*p#3&? zLd?F+qBVcUQsLF7v9<K$zc>ng=5G(E_2iZRYt0~Wg}Ip&eG?*)xoP%cSs?rM>r_6m zhqNT3#l~9xRtEM<*0l2S8UHnz2)cT;KY!hI*GzHYkTz3(i6n8-U&~v@Kyi_rZc2WH zgsE8OzlKT0HP4X5z^=D<9xW{Msy_52mMr%AuWR!9np+xOe<$0TSA!;Y=?^ttr+`j* zlN^nE17G|@wN&aQ4W2LZxy0=zd><alq!KS_@qF&gO=)|`SNTvSm3ir_PUG%lo~h2l zl&%$1zJ)yj+J{7`d`qr8i^qyNu&5-1H|&C+{aUDhcPgZkFGcCp?2_kroTra=I&lT> z1oF&h@*eESrbMf-SH7S6PpG3^0I`#=(^?{E0b?@A|E5dp5uU2^)=9v^)y}~Bn+>f^ zc!tg!CqWChuIF`c9L>Hg9?>3!FQpRpuIN;)aD8%DFqU0n7j)Q}qHYRb*C}3Ms9f0- z_~aUqwbfC~?fg1Q@7;qgjmFm_sf9aAu<Aa-)-mVgtu_U2+a*Uj$tBTLx#Q9y(c`$G zhU1(ehjSfRNsPd!hb{(<T`hd_3ktL?ixIRpckSp}mRbbm7f)!5cf07+j(by`&oyCb zm$xuUmqBQgbD1H><MkoibI~FB^J1N{OEp;UB{`<^QU=X_egl?_Z~AWgJ&g*xY>E@5 zvJNtVq;+ZF`NDcR-?8!|+I=Mg+I<xr+H*GA)Jw`|L$TW2Qd{PC*a9E$-45L1qf~Ab zxE*S5#umKAPpRT3n8X%N2fk`;NS|_WXoPYkm6y^h#f)t@wTjX%#f?%Sl_oiAC@7f) z{okMr`sLttOg*n@^siBxS~j_q*-Yi3x+;>O;ZM&Mx9j+BM;!9?2a@ykho<vQDGAVS zvdg4OjcCD^TXV5vtvT3lt$E!)x}SG%b(eN;EEwGjUp6&X+!JV4q@-O{q@=TB&!U@W zo2Fh>&ZL`XZ=qIT6HL7`(mP}_LNp{k;*zq@1{d^Kxzdep;Yv{<&FpS47p$Ro7*b2* z4svnTyeNOo`@~w2PF?t23K2pBUBMGyWIIGBgOEk%@DyV2T4<@-TGJtgo~H;ROwsj~ zX+<`TyrshOG)R%}JWs54xSrVU@L!p;ag~ZDr7EF_rCJnC#Du13;35*VaN%YexTt^m zHhq_Ybx_$5J=L9im?A#<X#-2li<k89oI~W&H9Zo8@_SlsV;+39U$`TyX@rHu4N^Zp zy;o_SYgw&QUvtR+wP4_7l63C9SLuR<!d4%Dj`>+y-8C4?|M~K1+tV+$@_EW*rj~YZ z5nrtO4gZL`@KWUWy{rhn>HRXgP}X*j-y}cbW&Ob|@0yGMWbI1%#PhujjDALbHjK>4 z7j4O%8!LX9aUkK{aFN<!b!Gfbv@C~mOzE@5DOG(S&z)*IePyNkoGH`iFVpfke*bYd z>`}U#w`WTFdGKS&Vdw#G-wUlf0kzDZM}(gphK=!Dz978=uO*d!UtdZd>cgAx!kH(b z#F<<Bg)^^qNoTgJ>C(r*+9%Q<ywzELho+<lpZ%8}ewLpeboL@W><p0}(xWx3Vv<W@ z8u3x5mdHJKR?@v~cHbQ_>*D@OMzcmK#J#6o`Po{duBY<N+`ChZ?w#%I&(?R0e<?@h zL{7!I_lFSN{lR9&s9c+)JN4GRHH73Y`ku*CWrZA%sS@|MAxwAI-eoq1e%G;8Lh9P8 z>~s0PILUo8MKr3s>Du-^@;|@8+a~hLWxT~NBy%UH=0_Pf_eX6v&)tjvkuUD48igxP z=afhgpT?8v_HXfIi{5*hEBSUSThuB2qm4vx+qkY~b2x^}C7gt7zFQ}|rJFCirN=$n z*NJpAOoG9^%LxDN_v(b@AD?yme|<Lb5B<&U67ic?;q75wu@m7aM<I9HyvKjbXlcX# zHEF&6-_n}>Kc(;ZhdtxzdTX2)BhkJQUKn|>3l9)q4f6QN-u!2yxB1(KshwMJVZ)1^ z2%GF)C$&+vX1opOdEx`Ld4hwOdGg>gU%a=gZ{pbkA94{nsf^+`J8cj(uWV?}a~x>T z-#*CpRgYW<i)9OD=Sg<bAI-X_|1ryHWR$m=ZbPs+Z^L3<_@HQ8Rtc?a#1T;<Xx8nz zaYy0l#TS#3iwTor)t{cmrQvybRsN(0>BU5mbK<cV%i{4DAH?G>K8q))ZrW;;Ml^7Z zEVGUVbx|IOc1axgcKIK~J5oh{YRY=IF=yr+ev?aZIcZeXpLavSziPv#OX}eH62WQH z5?|!XL&Uo^c@xu~$y|k%UmqR!m`_VojJ}842_hrr1@^md=0&Xh+{o{Zf48}(`8|S) z3m%xo1rIgjf(K7?adtChQ>}=OdY=#m5BDWRZ+zFi+WBsBJA9uT9<<L})_sy^wsMl! zzL)&bYj0%KWyLHH`L;|D9)UEzT6>ZZz4xT>MF`wrs#l$#X?b&0UCsPJl1k%hw?gk~ zy+W6pLy!KCtF9|YCjH);DGkRJ{cjpm3l0qUONgly$0_|^p<4T_$B2IqY9D3U<o{^R z%zfln^YoEl)k}_EA-Sx}{GJh4!@+gtH(%Ce-%PBlzFA(EuKpdAkQ=%De--wY!ErQO zx^9b^nQc*9%uE)uS_~F5Gc#MZ*cLOZ#mo#AGlRv<%y=~S#EqG6pFJ~Kk<nE@>WP)P zvNGPxu3D?0j-OO{nG{4r62l|2fK_nA4^ePlEJ5I5rSv^hBK{W`$Mob-D#fEkr7-g? zKE<5d^o#(c<x!}TnE4o=V9rBzUj{A{_)9}Hp%!1h&pSNs%w~Gt9OZPeBF^J=2FA_| zqbb;D86LW3-#zinbh>PlYxY{pUg1AiKFdU-L7M=_gZGJdcSDue^a8FfmGgYs>%Isv zQ4Ft-gd<)!<wLfw6n|p!r(L8=N4yLNi?mM{Ggtc1u9T*SUzC8!+n0;KRH~`gE%4Iz zTeIOD*GGk4FN^nipMo*lP*r~F4HQvU&ZyQbc+&PAvnCw52FqNx$QF1D<g>PADyQf< zt0r>En0iCe4roUW-_GY=wM7;A*wdAC{ryFI;|30Ido4CPcPRP8mq~l803L3;E_OP1 zD(Pv>EV;1*m$Ydp&8;055uT5!mfv%hjC<p$owsLMT?oo?c#-9$wt-Z}*7l2W&qq{C z?@>y|o*C!PUSp3g{A66cCX|>SvS%X%1HNtMNwn|eiI?B7<f=bvD(MPF&sveWADNQ* zTSbAmZ^J?Sw<RFn`gvg1w|x}_*XLQ4W8dXs6v5J>1)q5(B419G%4eHA&c~Bn&gT=b zmk+8+yWl_(gCMw=%V%80{z<2B?W$SW_O@Bp_S#eG_L0A!;dxZa{yBG+uOnc2vs9w} zxK#Y~h9lSQ@te|XNA#?nzPnXSrBM9>SGv~(SEkoGSH|*w8tC+%0SxPNTr9lqb`)?< zdjz%aIxD<BHXGLQw@9?3wWzn_x%l&X?`+jM%Mr!;%<MqNelbNyQZdNKUQyEbTzSBU zOqrqsRJ`5cJc}R{&wB`01bUq<ns})zQt^|RwG^VWnw|K?yS=ZFaeECGyhj3eTtt97 zZe+pZkGm@SufxSGonBTel^IXN_Bglo>%2!n>t;u}>zqfw*BOs$*8Qw{&Y4~N&hc-f z)-8`p);*6>*G-SKJBempJ6mT_I>To3*Hw-R*NI(6$O<~H;bv|9IgY&j8IGbmF<ckc z!&9%^^UoezRqkJ3i^*Pki^*QMi?d#4is9ZKXGPzgtd=`7Q!nkoq>q)kes}tk0(a|j zuUnl_UR#|JUPql-skcIM0@p$kuSfo=Ph;==x2^A{M`-Uvv(E3Wv+3`mR%`Dx^&3Kx zuLJ?g{xE=}a{$Lt7Jz{efjM^yKu3t=kbenqPldk#4+S`+BK`m$2Dqdm41$Hf@{GaG z&ggvQ8-pv$4GnOuqcmV^r!*j9Kv@(og*gGwL7~nNLJS-fK!6WTA@&b<A(AY|0*LD9 zHyF!tE@J0VJ!FodN2gi>zm(&_TfBbdSpK9K!HLYC8wFWzvHewYnQ}6N6Xgax2H9(Q z-Q}@N&YaPJJPIy{9I^B?5U?d#RQL;Bk!uUJFy$7QX8GJ@TPM1~xXj`pR1VKCM+X%% zr4R_V-0!-slie^~=D2`8#q~&XL-UdHh88RkfZDgH{1ktO3Rwq=B|Ig{7k`E!n0gad zcljDiL4v=d00;9p(=EK|BBjVrLKv?Q2D3Y}DZJ|<rYJx{FsmR5Q~t4aI6uWAoOZaF zZR?^l$;c~cA(VmclB|HtD*=SbD2xjppP>;>I-JcWa``r?%PVm3IRoP+ejGV9uQo`D zmk)oEr`yWKt_n8;&qiz?PJ0TbJKDvticc5&1cV0{Hbd2Y>0;@?tBacsN`gz8!Rfwr zF?Hb6#c2z#K-H66fVMBR4sM)s?QT7I+IV#ly)bNHdB9)A_DQuv6$CXx>lbPV+fUkd zyC2?dgt<swsI;(oMEiY)F3?AYxCuw+cq%|=@G|{@(N6m({0z}CUn8t(hAHe}##*H3 zP(x(vP(yV3u>SMoO-rm(3txVw9@(^lJ-n89CvHvj8h%ZRpMVKbJB<lmJCBLbDwb37 z848btJpzw>Cx%m|AKMP=tNI{{m-V2om-e7&3)2owyMRfwA0KwXIs(j1v?9mTsv?7z zc@aiC-E8<7nrps$Sj&vJ$m?Ny&gPAG&gIQ>&f!hRq>q=s1&;vwHxSzQh8Z{!jVZE_ ziafOMc7;O7s}f|0tKwv+t01&c(!wy&m?^T*%t9el0T3BNyPQ9!SFj+VSCSy^Q!FWh zuM8PlMjj|6=Vplct3P3(gg@@bOCyMExu7tusXW8zn-pgEC!1uUS5HmuS8+}LS5r-1 zUq<>YK{9oPn9#YIZNt+W4a3rd%HH`YydKUOyxxYXq#n1aq~5z3EW@xvI>Uhj`yPcU zjo$I8g&xMK_3ygi$}nHhI{fpmOyuX34uU&6Upkw>H%8(-`!J}dX9tcag{H_3BD=4k z(6pKR9^1p`O@$k@O}(3#P2n5RrqWIDh1ip!2ekl+-q(qcq?wqW<AbbT?Zbghx&!^5 zg-K8k*CeRd`*7*v^rrS=^`>$Y>c)Ok^yYk%;)ZN9@8<e~#f#A=C=)F!AFl^|Ak+&! z?Cdc=?Cjk?^e1PA{b@kJE|SqrUPr*+ll+-{2bmzppa>rAdo;X3@(*}eF-m3|G1y*l zY-S%Z7z#0V=HEY1&7{TfD54I`X34$qZ+{3%P~>K55wdjAN8lSJN=7oLV&p~A8%0iq zCmYmJP!nYQppoD*N}Y;GHoc+PBM6p?WQjB($dhvI=T=T*`N?i3N3k2Jl^?_sb7MeH z4uwB52;Wc38u&}njCuYSOr*RCj4{zt*P^%^^W87qNKq56ZTzL)FXYeorY1t$*gRd_ zlBg_<zbGQDcfM@n^7Mav-p5S(D=yM}2YVZbXUs!#oK^7Gb)-FZ|ATmSq<=gw7J9)L zv;+a0u#yusw@i14m?v|N5`>(lDl`^pLYJ7BDf2HS7&%o{7%Y;xu0LX~%+*S|ayqJ9 zSY&g(lw!9mKb2nPlxG2P#2kO}#iE#tmGb1i&Em(Aa&()B$+M;?smQ6%vd58djO>Vw zu{BTO$Kj2!K29CU3D<F|;M<O3i;tviS-_}Zo_5Dez%iRnVaR#9K&oJ5bgN3>F{@4C z$ho>esbH;k&q}znxK6Fg`MRLZpsx<FOWd=`PeI8!-=NQ6`i6+*#ju=Cfs>;TCQ`-^ zSoT5>B1R*o)|u&Y?U|Xx{U^#I-vYI81bSV>g-q2Y-@Dt0U-4?GVa@e^LX4KO$R^jb zj3m3V@XEPIV$=%u2Q8r+kF??DnQ-<uu~iN{u%;OWrHrxsk^{-{&k)58+x#3dT>C*| zwia1zv=(k@($Me1{MSgG#h1l8<&>q8&3>S5s155HwU)vR?b>eiQ!Sg>k0l)E$io<( zzLV(3-%D7|flEZr37$-QxYvH80%rQ7?6pFBG;HYC=>(CFVLa%vEM$KWN4pmbM#HLk zM{_id_Z-S_*szbgkOx{=$@-p{$p&EAB#rWtK}J|9dDR4?)r&r6lns$Qq}n6tKWq&Z z`a1@F2%lN6wNAYDRBh0ldEJQE2wUTLu$~2-IqyDQd!7u8;#C8anT#ix_l*XUud9<% zsuzz(Jx=aNHL8VJ^#|TYb$+}iG~>5+>4f(tk2nUT{D@=K*kVty-?~XDbu=5T=O)_w z%T47hFdp2Du|FZ#AIieDZIq(zNHgm0xHNj&M85ajB(tZW1Le$Bk&zOvJ+u<xozP6y z`0MfW8Oq*3Q)5cjmKz(|7Ho2uV_3>zQ{JfDiuq_>6H{{5c83}1fN$>$rhA+xCRZPS zl=t9hzkp$8-)r{^;XT*2HviBI=>(hqA8Y1`?fR5v4`VYyy>a?Kbjd>70?D0QP|2O! z6v_TuSOCl{h{*@YfIbZXe+LBmB}qW!Ii#u&SN66y0BarYtB;VuHXHy?2>Rgx<I|rQ zNa+`RO-vz({L8qn41S1310blV2dyf0KT>+xuC6O+Tnp+VD6JsQNf~C?Wdx_}xNJZR z0_j(#&wvA<7$7(V+8{X=A`%lZz)=K-S=s_nh(OXspM#VPbb*QpAvH*uge${*3gkBg zXabQT(n2r{(wGrXF#7|1d!QYplA)s!RKEUVMu|tL?V>Rx<pvscQT>9c_<7XDphVOJ zB!r3)<GGMi1yqWmZDimBd@v~j?2RBVWJdvSKVd$7s)mH7<_yUGgNmNM2qS{oDr{kd z1}}R8wfXb)6S*Tmj2bnt=nn>Z1~;M+=D=5*E$APz>Cl%yRX%-oB&4Js56b`J8Jivw z7*C0tPhA{bM`;_IX@bo9d*>6IG(^pB{;zJzfI;bSK(jQ$Cng%G9Ux9XP(Gq!@+=_y zH}6+RWxOxaN3aFb0@?J%Xz{??;P8A1#T0hvlHU?vU8lbkNfScVOJij-T4K%u<paOx zTTUjkBc=Y{6Lw~W{q|dHGPMkK`FFjrcMZ#dRATVB35>_*C8)M!Vt_iOWI)nytghi5 z<SN=`fD4sIz}yhZ#_kSk6?HRG+wT<=J^3>T>$vBxmL0#z41T~o5G@d8h+?CDN2!X% z6S*yuAA*w#6f`!Zk`44EyrG^5Vi>yKh{8s0OX&$}RG#gg$F{9v=)=D$80@~ohVkI* zgKCSz1i0mk1-PqVc8$j)SJ4#!ZosMmt28JEAQ`yDv}u?%*+bZK@J)a(jjw^fj1ayQ z0U(%0bmQwV{KF?xY+^YAD6&Gi08yH_4ToWDe3=y3UYgpCym-$GM_SnE{F;q8RaXag zH6mhJ4p@p}CkK8t2!(vFfVg6ajhR{a3oR>1?u1kb1u$;F)GVR{bv;D7{3##{>=wwR z+}fQ~EU=+tMaG@AjMlFV*X419{y^&r?UTWa$e14;7*UM1p?pNyl+Fu7tqkr?nAN(F zKjLpn{T^s-N&mnpPoe{wf#sTx>^4ayUXfD?(6%JqXsrV{@G(I8WF-R5@=XI;Eny63 z%OO`}tpWElyj^IPx*G#^b{8t&&^%)2;YbT_gAeN<nBzF1NeiL^vSuW@x9eCgWS5~m zesdyZ7Rm=M)mdK9+v2{Ya-#Xk4s@L#(mzn>lJJ8TV4V;94Fq*jai?)MCS1@iG`s*0 zd;*X!ahYA@hXnMgdR<0`IP{roU6_X?^eJn7%7?4;8Ed_)hraYu=jKZ{5Q(y6Mvpfb z>QZE;RENeVzi$xKQw4`g3P9CIhcjgoPxP(qzL~m-fz=~yn(Az#AL%?SYQGWmm$`jU zpBqxFY9Syk(~|&{W?^&_now4KCm<+Ol7O&ISL#kRVXrDAASu(5z_ZSr8vAB)Q<X^I zTc#!<L^pwNP|o&UGc6Khp3^wKegxn6l#N<5EK+)&#W-BeM6Px?Qfr>ZIMa3fk7klw zqU)Hd`6_F@*1eqZJcY`*ml>^Qr5xHkA6vlfP^5t`8<uA0DDu2eZ2-z(nE@0V(PH)} zDkpbs1j^8fnJAn0V%4Z1Cx2~L)F80|1zXr+(I^HduXB9V5V5f_8*s5{RGL%JIb41) z-3*J(d?|m_lamL@SfxgjlS4K`eq`EgrZ#dZlAb3mrNE%JhJW#-48RGb3mO}fF}SW_ zU3@8nZ1_|f#4u`Q5K+UsxK+m3Kv|l`Fm_}(QuDNURp!?~ZXHlQN@!GCBe8f?rqn=f z9a%n>YH(abz4TN@)9~3k)pj)1G_7WDY0oCocF1gL-o~|oK|9TMg42wzX4l5NA;|ah z-(X)Bz5v}{B;6hH8C?~l;|3b0cvZSfI44IZuy?yBsBZFZc+WC!T+dc+Xsw*BF}g{s z6K>{cRmZhqizrJJC)P`OC;cZZcef`9ZYp<_tvuf0r$d=$-nHgS3`^H1L_GM<W~d__ z33=moV^e00yZE)fJWg)j(Lug^1HryPV8H4xtnQAqxURF&Ap`ea?5bBDoRhP3ST~RY zTq_qi!j}o0<|_maTTPl7IGZ>$hjW5m>`woD_jMfpS$O=5H?w)<E3<i!Ks?(J>3E7! zm{Z}>X1dm0Ub^SqwoatL?~$6UoswEf=lUh%=Kd3@igba@QUlPAR~671Y7yj2u{hy` zwW!ieaB{c;>Bim|BoO!aBO=wQfzZUMQRm>PS?B1f;l%D;^}h4-QuPXi8^8OHS6cUw zS6=t{_E^4tz0nK<rd@@aBxmsA&lSr%nKSxl`7?fR4m9J+-RhG@&!dxDe%m{VOcuTr zpt=1X&7!s^>5021#K~zJ{M~aK^qqnptT$I>K*n&X!TByn)%`W^BH2~TBH4AzQr4B% zBAlo1NpG8<8?Svp#t@Ma*=|&o(0)`+%ys{w{uT8i&@=92rj5pp(>~QVk!$2Fm22WH zF{Zk6zxIUe@#y5*$JUK;Jvn0{sTS!G@ovHg?XL0#aCiO!f0y+FjXE^3G5G?CI#RiD z@d6t?c)l_C!Wcb#zIX6K8a;Hr{nbxsU=Phf=M8;eKgL1i?F(>-Y&&rW<S_jrt-#<P zt}>Ce$9`qrT=00kQUe*Ot=Hw03UicR_BCyWmU*uZX(wGFFldJ1V&eu8lKV9XemwhA zARGPQMkFF4_jVBCcz$*u8^giIC}Ioub&%b7ZgyBL{lRt_;uDW&H^5w%`Ogw|q(cKt zUb=2KzPUbgHxIU)Q#6c9dagmL3ht<r0?c)~^XL9%?3#4z9NvBPqOoQ?LTA!Yr}0|F zZciL9hqX|MbdVwRzIJlgBaWHFTPTdqS3?*)&BZPl95;vVP+c7<LoU2;i@l*ZcaEE( zuR3Cz06Z=3KjJvi4pX6dI&z!%cprJ+`*0MTE<;sxL^j!zG`UBpaK@d7#PO4q|2P$k zAL)Gi#hIjMGHQxF)I3TKlccuOZHfouz$1>KW2Xd}q!Hh}i-+R?BaWkEs05{<I@^td z=juo$zN%xXgr=cBJCJ~P>x?4~rDHmUuA#=>qlOpd#3631V><<{p}{^hhbQldB0i&I zJVn2t%09q>N1-FjGFFc(+tjdSs^eYFxS(Xy<BB`dj2BMQj2E%mgwxltBHQ<QWq8ZN zPR$W>K`ni#oRM)ukCAbI9(%#D61&l<61Q?=9=CFH9>;#8CBnP;w$FFv`<CvCb>DMS zR3DjBB_7!(Cr;K5CtlXBSNK5l+7^PH>?O)s)E3`LTAz@kJ&w>`1MYjjEuG(Z9UhZ| zebUAX9~E+Ap4i43gVMfRqJ>kdj7#$yrm>y-PpU@npXk5ZTYuU$wz}K(w+2q>5H|0U z#2lfh5LOJN3Ei_P!=AJAfADE4cl&B850KDWZlWf&b)h7<IQCLmH^<0uI*}#WY(~f5 zIA+D4>_jKF4Uo|BbVbD@I}XT3I{{?`cNG%TcLf;;wgu^$|76fM_h&FR_eCYjIhxCm zI+)9nI%g%l4ErjvPWWntJM7EQocYj9L?x6sZx^thl`8w59V@Gxi4>=|Y94jz(z<Rk zCV4qx6$Gv%Ov9h0O?#YKSrWRJvnM?_)P=O_eH&Z-V!K5x%h#M%pu18&?YiP#kk<6K zz}|5^>1^XH{%rRwk#wU_Cal@JfMVr!dS(T!V84k>mdQydL2sKh-fuvFzI{SIY21OW zpmrs1n&)hvHN;y-!nreEx(R4H(gZebS+Pk$xG$3%fBm*M_^Q6w|Ejk)@~VW}Bfu1~ zw>SK|>9I!6E~hNuxwb6*xwI_$xwS0e8EgX+6JNeLRfEE>K0mT;>dUXx5CI&yyHs5Y z<JWZyF&|dA%08i=NQ}DHS%RKOTHOe(;cLr30s2WV8S8z!BdS!t16JxqUlZ=qch>1d z>8mqtCnXVGr0$xvm92bVpw+lq-X(2QXcnr}CLKRc7`T4gJ!}*96tvgW8z)LwxbELQ zZIgbaU90mUu~+X%;bL0v*N#8mV)zKaroJ2I>G{aA*7Cw`ui}^4$j~|ZH(`C_bmaUB zbr;QZ;0oN9>l3Y^p53MbvynkJ>yd=WuvXvm!@aa>Yn6`JGX~Lpt+prYz65^1oo>rB zE8JzRkv!|Z^vnJ$-O*z}xSL>=5e}JZbu?PV;%Jzv&9*3=+od7S^W#N$ua8(Ci(t(b zJDHkeW=uuX=z!|VhB4jQl_L(?<3l*uN2HH9OY`TIbV2~ALUmh(w*FyOhC;A>IviB# zvcpEZ`Zy}%FIdW&K2Z_5?@T-MxH9Y`SXq-kQCYT+MEm!#XIRZgX_vR7$%##0xjBld ze5Ef*?QDO94(%EzVc=nSc*aL<*R!MLidA35Gq|$6ZDc`BaOapV>k1{o*~b`Xm`e?! zqgf`(zIb{|yEO8lftIeLefZaTk<&h3>B}QtNzWr*>DD8T+Tn|=+T+V`iIbn2n!vi+ z+<0Zhx4urD`e=QX`V{{HE24L+IYvL*IX^$$Im3?DBmB;eBkazcBjWdOb5wrDbFOc< zC44W1C2%i$B|sn0oO4Gb;bx;M+Y8a0^4pjd!Ml3>=g#`&-|On9UH59Omw!uN9~w)0 zAKXi}A4ujbUs~rpU&fDE{WM%j*7aBW&nxtX&WrU%&db;SbZWFG_;-2%J1f1&Iy;}x zg%o|`$;t%#$ch99{1ttF3TgUgyjMM;`WHPx_%}Tv2&ulNlT`>m#8~0KZ4=V?=S%ea zD;p1zl~?b?%yC~(aM-<E5(>SE$>aOiP)EPlQAfR(QO5|Wsq|-66mLsfFF&wx&^^|2 zSU*l!b6)Dt+U$0gEe&OrE)8T=^8AUJBi<dbR=CukOW*FSX#S&L)I6?V*4(RK;@PEN z;n@S4<=?NIC4b?nNA|B*AJ#8TxLltnyjrkkcqFPveK9E~@~@qb=~N@?_tzjASg(-Z z?yMZ!KA%mzbhkc!C|>4#(>s-U^E>_a7Pc(^5>v1Jm}TXDg=TesiDr#<Ia4qBn6j+$ zlDF*qGEtxOFi^knsBd+C0kR^y09j{U)YeZtn!CckTa)y@s{?oaE8{NxX9=z*j_Dtp zdExvz#-sF$uD9RIkhb4TBDUWvWVhdoN3ddBSRu+wv8q})Au6?L&|R%zYV6{^&e`G| zv}8c4G=c!GVbBd{MO||lm=7(^L5l9uv9r2(iL<L1`L1Zt^)0|4uT^K^JW`CrdA6P! zui~mUJ!*@2BE%XmS>e((;mHbjESIBK=+!4?;YvY;$x09w^3gSP?-OfxQHKI^g*}$s zkp^Pntu;*TlYEfpt9o~?AJ{;v6I4|qL^*gIgE)T+hE98O4zhiv>aKWeG0^vybSU!w z#62&BfqgpxV+uvi&A}Yx9IWbK8H-SX@;yj9xL{*#<C6z_6GA46Uyz1q^2RDU@PR!a zp##M;NMAH%V_gvl&0dEPh(Z^d{k>kqp_lq|zF{f)a+M0a^&&8Yix`ufFdFd}3OJ<b zyR(Q(FV*M5%@*{(4w65tJwE;6;>W-w%tZPb^&@t65Pm31`E!91bv`E{qGeQ~h*w^4 z?9>6Z3Fi}nR+OQLn{j&VOfvNj=N^J*l&OfHafagLA~iN=1$H>$0%BiOTFCGIauLgI zg`6_SEX6essUi!0T2;<W%o4&0gt@4skktNT5!-E&oQlgp#q|d<3kx4ccFxZtDp(Zk zT+*S5)G3q8CSU3}v_2A%po&PwrA;pF0NW<9soNH@fn^plSbA2&Sn8Y!2&Jh<Ar*z3 zhORR*o4bYeJ*kEAJ#_Ngp&Ds!h}LO$2*;_Y2&?jvp||qj5ES|SkcCu61fsMGq)M(; z3{DOKbWSb-46oEor1r5NRRt*+YZi%!_M9Ujjj1T1<ztCG4Q6mTl}qxAYbU_ARbuM4 z8Dijxg#y-^?KqYjXA(kd>T$^19;c!EwTvO?`kSHsHT7ouUU|>+7+<LG*mKD1SXfBl zUS5yEHO=PNYo5*EJ=vb_z2ly+G4~MBF|?50v5&3kz5N~sByykG9(b}wsZa_A*3CFv z(M^kp0*A6bVSGzRtmwuE1mL%xkT?d%9x#Jtk2!;9PjMpari*L_^YS!xx}_FPx~&$S z&svT2L#}D*h3SaGrp}1qrq9S{!?N8X<~1johmzg&3)c~<O_34TO`{Q#P2~}&O{Wno z!`$6whXNdo4olOJ(sJd^Z>4e%4ReZ3YgRNX7Ov>j+N&XH<$gWo^URyA^W2+m)~Of1 z)|n3Adby^*-+*%U4G8z&G!XB#7Z8Q&>@fXoR%u^mTU0zITR<L*UQ)?+0<@!bnV6*Y znOJ^y?Uej>?TjzeUXmWuPhUNjpTv@FeHr<!MML!e;%_!`7GHR$$vxzaDSE7#(Tvvf zz+c<i^@yZpU6^YpUubBjU$|?hUVyYSp)Kj+vTa>4%gW`08q4F+ZLO(H{!$~%HK>U+ zp2joVK2v6&#)jDPJ)KKj#fRAQ0Wp>tr73L}sAQMVr1EXiD6MQklt;D`RD`ELOf2~* zwB{KT=<SoF+5e(Y)ws$2RBsIyYh9JkojC(e*`mcA)DKAC{GFkMJ@v%wy<`2U<el-S zsa@V^x<lD$xkKG(zC+q*twYUdszb$SsRLv*=O;yOFGO2yCqz|kDFm#x?WC->?qsaC z@1$_F@c-m!<4>+sCzSMs5B;YK9EIaqtc(t?3FZQ-=uhpif<NuO!dp|D)R!k0aUQNA z(rtWOl!7FdnCsE}KlLS3{&eOkT)lfWP23ZsaUySkzR(=;GS#X<t7%7(OXz7Eh2ejW zYBvfCkKHGo@D=htw^eE7u=-O}(hy=5yi8Y=%aB{HUcYRycHjGa=uW!tNV<^aa67{Y ze)|>*Yf&Cwa;u!mDFan+Z5iu^gff4Y`*|6PUG<p&WhOI!bGbIYqFscduF*384sLkz zO)jr)!m=(qhoz^KUEN?9do9~h#F&t&E}uRJsvYQ(XOn{_j}AK}W=JWI**{}qh$xR? zHlu2YA&-?f<070x5R_nssFzA5MkA>y`w<$RU2;*}ITVT=#4U3jidFaZOJQga)i92X z#V>~}T%>}Vj*G}dc++^GdSL;%Qio<z;!o*19UBE0BfjbIA<7@^QrI(6m^0G2Y|=ml za`ANWlBU=jBS8YOl*rr^x!kl-qh$ImtD5k%LF%(ltxZ|PTi_jRP^>IHb)&~mej^0W zzULh**&!yuyZ}uJ;bPWM%G@f|Bywd;@q#_<xMd|BnL-?8rf)O_Q?xW0>ar<y5~*U= z1zL3q-=vNUe3m~A-2|ExM*U9Xlr~(ZFE3=6re3B!&9<HPTW0+D4@w4jKvA6RCY59X zRuyT@f3DM}Er=;Fual(BYj-kT24bBi9V_Rgi^1*exhUF6hV7W}(%<KTcKqhlhl^cQ zNky`TdPhj4^#@aK3itz~M`jK}_|w97LS2-{^HgfS>JNGGGW<QTUXooO#Gp;om?7|_ z$Vd>%cfKNhQWq54-!*m-7S!|Gr_@c1I1Kkms2E;P*!Ol3^%LXTWu=``E6{FfanZiV zU7f1WJ9nXR(ct>gu@F_@-D2sYpCpUsLjIavI~CKCa1&>TBrr>oP1Mq>TEZs*a@ikl z|Jr#}F{QFf@g#rm?&&A(|0Us|SsA>-brAYn%%86Okc=v2INt9@SvpLDK!43VFP9ak z@=L_Xm}oBfhFV_`tqeddfupF<X24qJa|xY(P`q=1GNd|b?)NKVjyaj4f_X99dW@qY zTO|#7iQHw9+gU*m6_W2yM;`2o=Gi%^F_d%R5?1h0bGH_`XT91-((G!L+qU)CW3zY` z6~MYlE@4?;^SbGKaqCz7x~cu_azV871GT!D)+xPCRFWI-DJA_7_glP4>32ZJt$$8L z4)1T2sHwS0gjHnA1G_;Hv|gWle6d-!gUJyCVS7<%U*xo@g(|pLWXY*@2SO-hDk+Ya zAoguKd<!3v;K*{8#YHU9ND7u&Zj#=}M|?Z>Ppb!g@Y}SJ>}Mk1FX1H!CXDJX8T;|G z49kiUS>;if$7e~m<zHh>2_x?1YJb^cGI#Ivi_IX)vD$W<%oxhC;24)2q86seu&kyB z5bP}{TiOL`?U4?$pbgkuV~?^hb?ejydF}!B(zpx*A3x!yc1lz{(&DC&8CE}1tu@a6 z!IWj&(P}X)HvMwN5LY!?gFnI`fvrhC`K>{?ia5}M2WiL&t7g~ypbRHRlc1!Y=4Kw1 zS@XHqVk~5c7tX8{K4K24)K$P{KBG!oD6H2DR^b?>sSLEypcXKo4yUIr`(Q(J@pl@d zN?v?2F)Vg0sEXmo4_mg}2GJi&;pmOJy@-E}%j&GFhV@8FPot{)*AT2vEj7(2dc2<L zZL07#pjxqrPOYnk-dH$4Vu?q*A~r0O8Kt!&|0UtL$e}<W<KZ<5GX}Wv_8TS{GrI9n z`kY)C#TY}~@!lC{ZDZf@*=0{&Lc^uwI8186g{3n%E~W&5(hs?}M*G3zI>fGo7b$E( z#^a|CE1u~3+@0M?<9ys_FC;)6HN_pPA8{4Y+`AuXx+>_?-59zS7;)B{_`kT>b`fZN z9&b_DPCv%&a24qDbSGzQI^M`_#bIpr-m2k)(pX`0oYM`kw!^DvUD*8YO=i~u%K76< z(71x;`1cif=7D*c0Tw*-THf{s`LA4?Y;>5jl6oX=z{S7_d8uyzC)D|Gh`T8!Ecx$N zM2h!mGCi;^Ya0dqE*p9(*D5@YNInvK#a*_#Lu7iwylmcXG`mB+-QaF9ojbN&==H6y z4Ll4a1+bD`OfST8ba19`9FO7n<Td9qh3Q{1?8*odY21}>iLKlD&AF$SK2$iVtwUAp zd3RSncF(<{q`Z(2ys4VKTU2aLY^M4JT0h$A{Ot@sesFizeOK~Z_0L?t5Zds1!+S9U z=m<^56G8Jj^?s!V!qhY=89;EM7OhaCZ#6<{H(PGNcam@qj6vQvd2WF0Fv`Xmg5{gk zs*oB{QTI5zf39#gC9fl-Ht90=p9YgThHbE%;q&*N!=5{VH^^3aRHIr$2pye@u-s8l zcI<L&&Pa!MNk2n@L&#sUCf&{mcn8}>#8>!Sem#fy?R4b$H|aOQ-lK7CL2N3d6Os;E zZrYIIkM9Z_LZP8bdPsTjp`noN7;ci2l6DLpZnpB1zaYg#s%}MoqzcEe?9QXm^^nUK ziit9DFf*Z!iNL;i_z_V{e*DlrC^#OSzJ>5Bji2Qz7AUTFwPV4MiD}!dl1IbOz#9aX z1YbuUux1jtUX&dWj{iK{T$&=!#A+XR&I5Vqm61=xw2vbh*?Jh3aqag@T<2<{GDRc2 z_>K0;8WC|bsSnB;gL#D9B9i(tudY1E@%|iFbFO_4^#I{+6VUgW*AO!q=&tn1_>h!d zt{&j5mlo$rOP!PyS4vN^Pg<~}jL3g!R6g$cWB2aAon8FWdDS^Xx~ncF_lTz`3kUxq z%`*v?0svUO0sxA#P|(-__>Tk0bdVSDUkdrhxw)Mylck-h3zMmxvAv0<ojH?=i_^!C zgOjNPqp^*lv-6yWwPO4NfuG(T>~UDxR*4Rl_^;9~#3Bq~O<~ThAg5n2C|U;HR3kwn zL5<WFCDN3Z)6{#pA88(Dl)>Zd%j(62X1pnsGb8zyR}_y6b+0p)&v`R1Hj>Zj_DQ<I z_|FtGDZ@?c&za}G6P}s(Jo~G)ogKd0xB;x`^`C@edGLvuF5!GPG4-qL^Vi9U=`B&h z9`I2fB^a0yZA8})?4`R#xW?K=J36X9*@A+dd(9**V_H4EeMd5%5;GG8#-b{CHPSxi z{H2j9J3@L0esiericMPo%*-qK<SUI%KWz}C6+8V$e096Gy+bjrk!u4hx%38^4q0j{ zHd0Ih>jw218(r8=PlZ?#dNc9GI}CdMsn@q-s>+{|+pL?ldzpy>Kce2C`4gXDhBrUD z1;Hg;Z-*j%zsv(2$6_qCW+NcI0_H-~P%<1QC2040eJ%<O`9Vb8<dgQ4uatrQ4`WG8 z_0I!AbM(*cs`2Q%IJ<=N1`O8v+WkT9?tD12u7p>y6XbVM(7k&84w2C3x}SoKkesht zf5(Q4poo9L&F4*9wXJ7#w+6MgHq_76_v&`)R=IrsUOcFdFUw&^OPi*sQJA=%okNTh z@7hIXfCHm-ufIZI*sRn`%^_-(VLZBza!aBZ9AmK<L@TVE5gY{5=DR{$yo$7mu4-M> z&6#MhIKrUvM1{o2EbJFHovRRxWs-_d`ZE$KahKtX4HO~6qOjq)THk8bOmTN8RnX3c zl*J;^1=($}u($>IJ9Xdm2EFr_NxK4-YpA1{0#<kH#g8`&xJgiV8!assOx^7i&-73- zFdB85bqQN2>_VOHtv%?s)M@V>QPzI6DmD8OK2e-e*CWBQBl|hxjgnkEozkvU8cLz9 z>lLm9eBb<Wthhu$D52J%zQ25SRBUZ$y`u6rKb&Zq8TJm%c^$&ODDgYXL_($gJc3$? zD5Pwr%6d5M(~s|Y-2DduOx*Z_*^QV<sqfM#pyJ2!rx$tKblqD-H+<K^ITs+i9J##k zbIbR*DXU|}tf>o|y6^mS-v+rjSxJu~s1z(cP%W))@z{N!m{{}I@h(Dr$G>bLlXqk( zpz#_!!9FK`Pr5|Zx)gg7Nw4OfxLvPnIN(=r3#Y(sy9@2$Z&WES=S_j_JOa~PayIIP z{^qx=y+xW<Lo2Mu|5<e*1j1`)#Ls!-vH5AA!VmlR$Sr0n@$VVS(tN%5Xv1%}n7%uy zR^XKS+*x&s?c7V<Vnh8q^gP{D8KF>;vsu-h8Sy?XuqxAyAT6%wJE<-(0<<}!>Oc~) zU2Nv-fFf$683au~H-K5xs0$h?EGHj@`L0#w;jE|EoSEcipDFj7UHE6thA({!LhC;7 z^m@lnWVED-<pf7mx`>LcO|6~GzO6K=TOAnvGXJz-s#=E&B~P3*^J=vMY+cb)`Xe=R zeSY2u-TjT+xt<&6qMW%BZJat@m(tio$wu|5Ww17##qEJQYx!Dh(w%scU{|-5VAe+M zbh0aMv70gdm!cqUb!C&L@4;Rd4_fq0<So7ZZ;O-7%@37_ahP6h7NV+fi^6?Ghvz26 zZlB@oj_QeUPFOiC@)m}K(7c-2AWx{U7A4j0jl-jMki8r-?HLUL8jEyx%v&U!foKls zWS>JOJSK%C@f#hJ$>jt!C%3O*e6=RDr6y&Sgf)D3g9OWwc=6-hgvwP~6w6tD>9YK? zHX_&fBgPo{vyGPeD!gbAqq#i&(Vy`i8ja+_clZ_RDM@pXOzCVS{&^t&S$^0z!RbBT z={+)6FE4o^MO5v=dDu7DX+3|%elzR=hQfa8iE3@2^?_uq7yN+o_G5kP`~m&F>zw9M zvId$=mRc}JXF@>pY391%JtFgdE^GHWV`Dyf^nJkmQ6Kw${pP%jF^E{Y%Zud_(rnX~ z8o{nQR|PjmgB_ZZ0ILRnfC@&%sFz^aRWEV#ciA5t>0Xqfe!eSo!B}FMX4tHuZ$6C8 zO$;z6n{B0H&ktY4khzgRK6cee*3z>rVjnlKR1aL0+L&P`V9H_-U)B7|h<EmKY7%6E zyVl~cuhP4Ve>azop$r)pPcA(iOOC2n$@MAtjyF1KSi*Pg<sg;JSsp2CU^W#FiH*e0 z__Ev*8=GjDF6z6?OeC#c;3~HEI;ES6$www6gHmZ2``O@#sNDo=(E?A{CEDK6$cQQy zO)jQ`A+zc<iXs1GsP}2z4Wg#T&uY+}2^*yd9p5{-8$Rn=dG-}i1lktGd#&jaDbn#x zeu}cd#1r?xeyx*C@fJ&U4GPPJ2K~x@vZ_#n=IV#HI)oO8BHlL55Rpg^T21!Dh&U;{ zf#3Nus=o>|lOtFV#rzkcHkkSTYC!?0E`wK7kmhYlc4Z<oyvx#KD;jl!iOF=XB(<%S z!9^!kz>+az%nLm3zxFma=#V`ZnlOB1ek0Kb(2WU;@O=FuI=O?;gP?e2*n=<3_=?%F zPHD^=l9Y@7Mv&kuBg~Ca8cxCJEunK~vihUz=g2#lVD`AaGzI8yr}LKJ_!#F(!7A-T z<ik2($vR#f+>YS%BmF@QC^@u`@7^7!`5EL0lyd?S1Hs_UY<&i>2XR)QZ07DS{-{;f zP)<)$(JRRFKBg;J{yt+*c<?UH)xLeomv>82yLvialsPsF#?e&ccAD{)Ps1%=MlMN7 z3q`jHJDRzy(pm0=Dp=1LhgyLszY7+1e%2Q6h@)KbF110FR+SDl8pfSpeDzBb5}t6* z^NEowR085DO}N|jpCu5Ob&j7vw_TF`hwRu(Yc>GF0{{l-|C8*X`(I>-xQDT+gNvoT z-T&1ewo1D8n8MfsQ1D0<xqp?9?*W9x)KpJa91!15snZG!7dkkR<PPxDm*|5p?FmTb zd@kS~@*>^UZKRidlWXtSoX1Do@9(p+Ist9{wTOtw6XsS+2{OqQidX^(R`XGE60v6F z0#BS6#lOC(DH<(4rTfUYT!(zYgBeEsZn$#YdvKz%7(xDS?BO!F0h6@j@Ana85tz4G zy?$>j>-zkb<3CT<Kai)_r8v_2X&h?bfHg@b^&Yuze2qrbG8^2}Z3`<nIZUa{@Ssc; z5t>fJvO62NQJgqTe^+YIw7ms8jM^semwM>TlekCt)({cCd(K?P^k8f|{`doEHSFDu zGgN^zAVbRBh9G7HOjeOk9BfA6gx0aVURN;RN#x^qQW8(eA)O@c*-fe*+%n<EL*5N` zy^b26^E}I#R}`D+!{RTf7WYb#{{v^~+PYBYuuhmQeUD@LO4ah4TGU_duVeH$VJQ#p zmx_;#CEf5fjOEJB)o(dxtGb3G)@2S8t(`r+=c)!Ca{H($km=*pKedbUqHIf;p9kyJ zBFd0Lc9Sao0`#q{J?~&F`Qj~iK^E^Y|DObn8kntx001f=|6?pbKw<;_Q-o?A>XyiT zi~{+Oiv3alS>(l4g&Cw3B$(ud6{ID^Ra6<}CH|FA=M9PQ2?+q0{J5R^AGb$;T>ZbI zR@C0s$kOgZ*NXm!r2W4G>tC6UrS)u~A29k@0D$5jOi1MahUsAMZ26xf^<RNAmJ|xr zeE`5WHV6RCKY)v@{|+c-YHV-&|088hJ^vd!`{fiGlz#&N-q!#C!#}Va5C1Dx-q69} zqZ|Gk^zYMQ*(n$RpdJwbApQqBDgxr)bgQ(Og7ClZOfJub&yOGO*Mb57sQy7J`t{$D z{^h~{*X|^YNl`0>0|4|syzx)tZsPtOQb9si^xqp-7|7CN1q%Qee>C&cKa4v}`*$Qo zS3A#-)sgAHr-@won{s_Lwf>|2)6F@#{}b(hY3_er!;$^NNT&RMhgFskWn<@H|Mxcj z*O~c0mVN(Of(0P|jbs0H5%{mZc=<0+_kYai|5={I|7YI+(`uLxM*sjQ9|sXM001lX IF<$`w4<3QFKL7v# literal 0 HcmV?d00001 diff --git a/java/misc/GenerateNFKC.java b/java/misc/GenerateNFKC.java new file mode 100644 index 0000000..d4a5efa --- /dev/null +++ b/java/misc/GenerateNFKC.java @@ -0,0 +1,586 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.TreeMap; +import java.util.TreeSet; +import java.util.Iterator; + +public class GenerateNFKC +{ + static String stripComment(String in) + { + int c = in.indexOf('#'); + if (c == -1) { + return in; + } else { + return in.substring(0, c); + } + } + + static String[] split(String in, char sep) + { + StringBuffer sb = new StringBuffer(in); + int c = 0; + for (int i = 0; i < sb.length(); i++) { + if (sb.charAt(i) == sep) { + c++; + } + } + + String out[] = new String[c+1]; + c = 0; + int l = 0; + for (int i = 0; i < sb.length(); i++) { + if (sb.charAt(i) == sep) { + if (l >= i) { + out[c] = ""; + } else { + out[c] = sb.substring(l, i); + } + l = i+1; + c++; + } + } + if (l < sb.length()) { + out[c] = sb.substring(l); + } + return out; + } + + static boolean isCompatibilityMapping(String in) + { + return in.length() > 0 && in.charAt(0) == '<'; + } + + static String stripCompatibilityTag(String in) + { + return in.substring(in.indexOf('>')+2); + } + + static String toJavaString(String in) + { + StringBuffer out = new StringBuffer(); + String[] chars = split(in, ' '); + for (int i = 0; i < chars.length; i++) { + if (chars[i].equals("005C")) { + out.append("\\\\"); + } else if (chars[i].equals("0022")) { + out.append("\\\""); + } else { + out.append("\\u"); + out.append(chars[i]); + } + } + return out.toString(); + } + + static String decompose(String in, TreeMap mappings) + { + StringBuffer out = new StringBuffer(""); + String[] c = split(in, ' '); + + for (int i = 0; i < c.length; i++) { + if (mappings.containsKey(c[i])) { + if (out.length() > 0) { + out.append(" "); + } + out.append(decompose((String) mappings.get(c[i]), mappings)); + } else { + if (out.length() > 0) { + out.append(" "); + } + out.append(c[i]); + } + } + + return out.toString(); + } + + public static void main(String[] arg) + throws Exception + { + // Check if the unicode files exist + { + File f1 = new File("CompositionExclusions.txt"); + File f2 = new File("UnicodeData.txt"); + if (!f1.exists() || !f2.exists()) { + System.err.println("Unable to find UnicodeData.txt or CompositionExclusions.txt."); + System.err.println("Please download the latest version of these file from:"); + System.err.println("http://www.unicode.org/Public/UNIDATA/"); + System.exit(1); + } + } + + // Read CompositionExclusions + TreeSet exclusions = new TreeSet(); + { + BufferedReader r = new BufferedReader(new FileReader("CompositionExclusions.txt")); + String line; + while (null != (line = r.readLine())) { + line = stripComment(line); + line = line.trim(); + if (line.length() == 0) { + // Empty line + } else if (line.length() == 4) { + exclusions.add(line); + } else { + // Skip code points > 0xffff + } + } + r.close(); + } + + // Read UnicodeData + TreeMap canonical = new TreeMap(); + TreeMap compatibility = new TreeMap(); + TreeMap combiningClasses = new TreeMap(); + + { + BufferedReader r = new BufferedReader(new FileReader("UnicodeData.txt")); + String line; + while (null != (line = r.readLine())) { + line = stripComment(line); + line = line.trim(); + + if (line.length() == 0) { + // Empty line + } else { + String[] f = split(line, ';'); + + if (f[0].length() == 4) { + if (!f[5].equals("")) { + if (isCompatibilityMapping(f[5])) { + compatibility.put(f[0], stripCompatibilityTag(f[5])); + } else { + compatibility.put(f[0], f[5]); + if (!exclusions.contains(f[0])) { + canonical.put(f[0], f[5]); + } + } + } + if (!f[3].equals("0")) { + combiningClasses.put(new Integer(Integer.parseInt(f[0], 16)), f[3]); + } + } else { + // Skip code points > 0xffff + } + } + } + r.close(); + } + + // Recursively apply compatibility mappings + while (true) { + boolean replaced = false; + + Iterator i = compatibility.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String v = (String) compatibility.get(k); + + String d = decompose(v, compatibility); + if (!d.equals(v)) { + replaced = true; + compatibility.put(k, d); + } + } + + if (!replaced) { + break; + } + } + + // Eliminate duplicate mappings + TreeMap compatibilityKeys = new TreeMap(); + ArrayList compatibilityMappings = new ArrayList(); + + { + Iterator i = compatibility.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String v = (String) compatibility.get(k); + + int index = compatibilityMappings.indexOf(v); + if (index == -1) { + index = compatibilityMappings.size(); + compatibilityMappings.add(v); + } + compatibilityKeys.put(k, new Integer(index)); + } + } + + // Create composition tables + TreeMap firstMap = new TreeMap(); + TreeMap secondMap = new TreeMap(); + + { + Iterator i = canonical.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String v = (String) canonical.get(k); + + String[] s = split(v, ' '); + + if (s.length == 2) { + // If both characters have the same combining class, they + // won't be combined (in the sequence AB, B is blocked from + // A if both have the same combining class) + String cc1 = (String) combiningClasses.get(new Integer(Integer.parseInt(s[0], 16))); + String cc2 = (String) combiningClasses.get(new Integer(Integer.parseInt(s[1], 16))); + if (cc1 != null || (cc1 != null && cc1.equals(cc2))) { + // Ignore this composition + i.remove(); + continue; + } + + if (firstMap.containsKey(s[0])) { + Integer c = (Integer) firstMap.get(s[0]); + firstMap.put(s[0], new Integer(c.intValue()+1)); + } else { + firstMap.put(s[0], new Integer(1)); + } + + if (secondMap.containsKey(s[1])) { + Integer c = (Integer) secondMap.get(s[1]); + secondMap.put(s[1], new Integer(c.intValue()+1)); + } else { + secondMap.put(s[1], new Integer(1)); + } + } else if (s.length > 2) { + System.err.println("? wrong canonical mapping for "+k); + System.exit(1); + } + } + } + + TreeMap singleFirstComposition = new TreeMap(); + TreeMap singleSecondComposition = new TreeMap(); + TreeMap complexComposition = new TreeMap(); + + int composeLookupMax = 0; + { + Iterator i = canonical.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String v = (String) canonical.get(k); + + String[] s = split(v, ' '); + + if (s.length == 2) { + Integer first = (Integer) firstMap.get(s[0]); + Integer second = (Integer) secondMap.get(s[1]); + + if (first.intValue() == 1) { + singleFirstComposition.put(s[0], new String[] { s[1], k }); + composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[0], 16)); + } else if (second.intValue() == 1) { + singleSecondComposition.put(s[1], new String[] { s[0], k }); + composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[1], 16)); + } else { + if (complexComposition.containsKey(s[0])) { + TreeMap m = (TreeMap) complexComposition.get(s[0]); + if (m.containsKey(s[1])) { + System.err.println("? ambiguous canonical mapping for "+s[0]); + System.exit(1); + } + m.put(s[1], k); + } else { + TreeMap m = new TreeMap(); + m.put(s[1], k); + complexComposition.put(s[0], m); + } + composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[0], 16)); + composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[1], 16)); + } + } + } + } + + System.out.print("Creating CombiningClass.java..."); + + // Dump combining classes + { + PrintWriter w = new PrintWriter(new FileWriter("CombiningClass.java")); + w.println("/* This file is automatically generated. DO NOT EDIT!"); + w.println(" Instead, edit GenerateNFKC.java and re-run. */"); + w.println(); + w.println("package gnu.inet.encoding;"); + w.println(); + w.println("/**"); + w.println(" * Auto-generated class containing Unicode NFKC tables."); + w.println(" */"); + w.println("public class CombiningClass"); + w.println("{"); + w.println(" public final static int[][] c = new int[][] {"); + StringBuffer index = new StringBuffer(); + + int count = 0; + + for (int i = 0; i < 256; i++) { + boolean empty = true; + + StringBuffer page = new StringBuffer(); + page.append(" { /* Page "+i+" */"); + + for (int j = 0; j < 256; j++) { + Integer c = new Integer((i << 8) + j); + String cc = (String) combiningClasses.get(c); + + if (0 == (j & 31)) { + page.append("\n "); + } + if (cc == null) { + page.append("0, "); + } else { + page.append(cc+", "); + empty = false; + } + } + page.append("\n },"); + + index.append(" "); + + if (!empty) { + w.println(page.toString()); + index.append(count++); + index.append(",\n"); + } else { + index.append("-1,\n"); + } + } + w.println(" };\n"); + + w.println(" public final static int[] i = new int[] {"); + w.print(index.toString()); + w.println(" };"); + w.println("}"); + w.close(); + } + + System.out.println(" Ok."); + System.out.print("Creating DecompositionKeys.java..."); + + // Dump compatibility decomposition + { + PrintWriter w = new PrintWriter(new FileWriter("DecompositionKeys.java")); + w.println("/* This file is automatically generated. DO NOT EDIT!"); + w.println(" Instead, edit GenerateNFKC.java and re-run. */"); + w.println(); + w.println("package gnu.inet.encoding;"); + w.println(); + w.println("/**"); + w.println(" * Auto-generated class containing Unicode NFKC tables."); + w.println(" */"); + w.println("public class DecompositionKeys"); + w.println("{"); + w.println(" public final static int[] k = new int[] {"); + Iterator i = compatibilityKeys.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + int index = ((Integer) compatibilityKeys.get(k)).intValue(); + w.println(" '\\u"+k+"', "+index+","); + } + w.println(" };"); + w.println("}"); + w.close(); + } + + System.out.println(" Ok."); + System.out.print("Creating DecompositionMappings.java..."); + + { + PrintWriter w = new PrintWriter(new FileWriter("DecompositionMappings.java")); + w.println("/* This file is automatically generated. DO NOT EDIT!"); + w.println(" Instead, edit GenerateNFKC.java and re-run. */"); + w.println(); + w.println("package gnu.inet.encoding;"); + w.println(); + w.println("/**"); + w.println(" * Auto-generated class containing Unicode NFKC tables."); + w.println(" */"); + w.println("public class DecompositionMappings"); + w.println("{"); + w.println(" public final static String[] m = new String[] {"); + Iterator i = compatibilityMappings.iterator(); + while (i.hasNext()) { + String m = (String) i.next(); + w.println(" \""+toJavaString(m)+"\","); + } + w.println(" };"); + w.println("}"); + w.close(); + } + + System.out.println(" Ok."); + System.out.print("Creating Composition.java..."); + + // Dump canonical composition + { + PrintWriter w = new PrintWriter(new FileWriter("Composition.java")); + w.println("/* This file is automatically generated. DO NOT EDIT!"); + w.println(" Instead, edit GenerateNFKC.java and re-run. */"); + w.println(); + w.println("package gnu.inet.encoding;"); + w.println(); + w.println("/**"); + w.println(" * Auto-generated class containing Unicode NFKC tables."); + w.println(" */"); + w.println("public class Composition"); + w.println("{"); + + Iterator i; + int index = 0; + + TreeMap indices = new TreeMap(); + + i = complexComposition.keySet().iterator(); + while (i.hasNext()) { + String s0 = (String) i.next(); + indices.put(new Integer(Integer.parseInt(s0, 16)), new Integer(index)); + index++; + } + + int multiSecondStart = index; + + w.println(" public final static char[][] multiFirst = new char[][] {"); + i = complexComposition.keySet().iterator(); + while (i.hasNext()) { + String s0 = (String) i.next(); + TreeMap m = (TreeMap) complexComposition.get(s0); + + TreeMap line = new TreeMap(); + int maxIndex = 1; + + Iterator i2 = m.keySet().iterator(); + while (i2.hasNext()) { + String s1 = (String) i2.next(); + String k = (String) m.get(s1); + + Integer s1i = new Integer(Integer.parseInt(s1, 16)); + + if (!indices.containsKey(s1i)) { + indices.put(s1i, new Integer(index)); + index++; + } + line.put(indices.get(s1i), k); + maxIndex = Math.max(maxIndex, ((Integer) indices.get(s1i)).intValue()); + } + + w.print(" { "); + for (int j = multiSecondStart; j <= maxIndex; j++) { + if (line.containsKey(new Integer(j))) { + String s = (String) line.get(new Integer(j)); + w.print("'"+toJavaString(s)+"', "); + } else { + w.print(" 0, "); + } + } + w.println("},"); + } + w.println(" };"); + + int singleFirstStart = index; + + w.println(" public final static char[][] singleFirst = new char[][] {"); + i = singleFirstComposition.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String[] v = ((String[]) singleFirstComposition.get(k)); + w.println(" { '"+toJavaString(v[0])+"', '"+toJavaString(v[1])+"' },"); + + if (indices.containsKey(new Integer(Integer.parseInt(k, 16)))) { + System.out.println(k+" already indexed!"); + } + + indices.put(new Integer(Integer.parseInt(k, 16)), new Integer(index)); + index++; + } + w.println(" };"); + + int singleSecondStart = index; + + w.println(" public final static char[][] singleSecond = new char[][] {"); + i = singleSecondComposition.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + String[] v = ((String[]) singleSecondComposition.get(k)); + w.println(" { '"+toJavaString(v[0])+"', '"+toJavaString(v[1])+"' },"); + + indices.put(new Integer(Integer.parseInt(k, 16)), new Integer(index)); + index++; + } + w.println(" };"); + + w.println(" public final static int multiSecondStart = "+multiSecondStart+";"); + w.println(" public final static int singleFirstStart = "+singleFirstStart+";"); + w.println(" public final static int singleSecondStart = "+singleSecondStart+";"); + + StringBuffer compositionPages = new StringBuffer(); + + w.println(" public final static int[] composePage = new int[] {"); + int pageCount = 0; + for (int j = 0; j*256 < composeLookupMax+255; j++) { + boolean empty = true; + StringBuffer page = new StringBuffer(); + for (int k = 0; k < 256; k++) { + if (k % 16 == 0) { + page.append("\n "); + } + if (indices.containsKey(new Integer(j*256+k))) { + page.append(indices.get(new Integer(j*256+k))); + page.append(", "); + empty = false; + } else { + page.append("-1, "); + } + } + + if (empty) { + w.println(" -1,"); + } else { + w.println(" "+pageCount+","); + compositionPages.append(" {"); + compositionPages.append(page); + compositionPages.append("\n },\n"); + pageCount++; + } + } + w.println(" };"); + + w.println(" public final static int[][] composeData = new int[][] {"); + w.print(compositionPages); + w.println(" };"); + + w.println("}"); + w.close(); + } + + System.out.println(" Ok."); + } +} \ No newline at end of file diff --git a/java/misc/GenerateRFC3454.java b/java/misc/GenerateRFC3454.java new file mode 100644 index 0000000..7b23de9 --- /dev/null +++ b/java/misc/GenerateRFC3454.java @@ -0,0 +1,226 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.util.StringTokenizer; + +public class GenerateRFC3454 +{ + static class Range + { + int t, f; + + public Range(String r) + { + if (r.length() == 9) { + f = Integer.parseInt(r.substring(0, 4), 16); + t = Integer.parseInt(r.substring(5, 9), 16); + } else { + f = Integer.parseInt(r.substring(0, 5), 16); + t = Integer.parseInt(r.substring(6, 11), 16); + } + } + + public boolean hasNext() + { + return (f <= t); + } + + public String next() + { + StringBuffer s = new StringBuffer(Integer.toHexString(f)); + while (s.length() < 4) { + s.insert(0, '0'); + } + f++; + return s.toString(); + } + } + + public static void main(String[] arg) + throws Exception + { + File f = new File("rfc3454.txt"); + if (!f.exists()) { + System.err.println("Unable to find rfc3454.txt."); + System.err.println("Please download this file from:"); + System.err.println("http://www.ietf.org/rfc/rfc3454.txt"); + System.exit(1); + } + + System.out.print("Creating RFC3454.java..."); + + BufferedReader r = new BufferedReader(new FileReader(f)); + PrintWriter w = new PrintWriter(new FileWriter("RFC3454.java")); + w.println("/* This file is automatically generated. DO NOT EDIT!"); + w.println(" Instead, edit GenerateRFC3454.java and re-run. */"); + w.println(); + w.println("package gnu.inet.encoding;"); + w.println(); + w.println("/**"); + w.println(" * Auto-generated class containing StringPrep mapping tables."); + w.println(" */"); + w.println("public class RFC3454"); + w.println("{"); + + int n = 0; + + String t = null; + StringBuffer o1 = null; + StringBuffer o2 = null; + + while (true) { + String l = r.readLine(); + if (null == l) { + break; + } + l = l.trim(); + + if (l.equals("")) { + // Ignore empty line + } else if (-1 != l.indexOf("\u000c")) { + // Ignore FF + } else if (0 == l.indexOf("RFC")) { + // Ignore page header + } else if (0 == l.indexOf("Hoffman & Blanchet")) { + // Ignore page footer + } else if (-1 != l.indexOf("----- Start Table ")) { + // Start of a table + t = l.substring(l.indexOf("Table")+6, l.lastIndexOf("-----")-1); + o1 = new StringBuffer(); + o2 = new StringBuffer(); + } else if (-1 != l.indexOf("----- End Table ")) { + // End of a table + if ("A.1".equals(t)) { + w.println(" final static char[][] A1 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("B.1".equals(t)) { + w.println(" final static char[] B1 = new char[] {\n"+o1.toString()+" };\n"); + } else if ("B.2".equals(t)) { + w.println(" final static char[] B2search = new char[] {\n"+o1.toString()+" };\n"); + w.println(" final static String[] B2replace = new String[] {\n"+o2.toString()+" };\n"); + } else if ("B.3".equals(t)) { + w.println(" final static char[] B3search = new char[] {\n"+o1.toString()+" };\n"); + w.println(" final static String[] B3replace = new String[] {\n"+o2.toString()+" };\n"); + } else if ("C.1.1".equals(t)) { + w.println(" final static char[] C11 = new char[] {\n"+o1.toString()+" };\n"); + } else if ("C.1.2".equals(t)) { + w.println(" final static char[] C12 = new char[] {\n"+o1.toString()+" };\n"); + } else if ("C.2.1".equals(t)) { + w.println(" final static char[][] C21 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.2.2".equals(t)) { + w.println(" final static char[][] C22 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.3".equals(t)) { + w.println(" final static char[][] C3 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.4".equals(t)) { + w.println(" final static char[][] C4 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.5".equals(t)) { + w.println(" final static char[][] C5 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.6".equals(t)) { + w.println(" final static char[][] C6 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.7".equals(t)) { + w.println(" final static char[][] C7 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("C.8".equals(t)) { + w.println(" final static char[][] C8 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("D.1".equals(t)) { + w.println(" final static char[][] D1 = new char[][] {\n"+o1.toString()+" };\n"); + } else if ("D.2".equals(t)) { + w.println(" final static char[][] D2 = new char[][] {\n"+o1.toString()+" };\n"); + } + t = null; + } else if (null != t) { + // Filter comments + if (-1 != l.lastIndexOf(";")) { + String c = l.substring(l.lastIndexOf(";")).trim(); + try { + Integer.parseInt(c, 16); + } catch (NumberFormatException e) { + l = l.substring(0, l.lastIndexOf(";")); + } + } + + if ("A.1".equals(t)) { + if (4 == l.length()) { + o1.append(" new char[] { '\\u"); + o1.append(l); + o1.append("' },\n"); + } else if (5 == l.length()) { + // Skip characters outside the range of Java unicode + } else if (9 == l.length()) { + o1.append(" new char[] { '\\u"); + o1.append(l.substring(0, 4)); + o1.append("', '\\u"); + o1.append(l.substring(5, 9)); + o1.append("' },\n"); + } else if (11 == l.length()) { + // Skip characters outside the range of Java unicode + } else { + System.err.println("Unknown format of A.1 line: "+l); + } + } else if ("B.1".equals(t)) { + StringTokenizer tok = new StringTokenizer(l, " ;"); + o1.append(" '\\u"+tok.nextToken()+"',\n"); + } else if ("B.2".equals(t) || "B.3".equals(t)) { + StringTokenizer tok = new StringTokenizer(l, "; "); + String c = tok.nextToken(); + if (c.length() == 4) { + o1.append(" '\\u"+c+"',\n"); + if (tok.hasMoreElements()) { + o2.append(" \""); + while (tok.hasMoreElements()) { + o2.append("\\u"+tok.nextToken()); + } + o2.append("\",\n"); + } else { + o2.append(" null,\n"); + } + } + } else if ("C.1.1".equals(t)) { + o1.append(" '\\u"+l+"',\n"); + } else if ("C.1.2".equals(t)) { + o1.append(" '\\u"+l+"',\n"); + } else if ("C.2.1".equals(t) || "C.2.2".equals(t) || "C.3".equals(t) || "C.4".equals(t) || "C.5".equals(t) || "C.6".equals(t) || "C.7".equals(t) || "C.8".equals(t) || "D.1".equals(t) || "D.2".equals(t)) { + if (4 == l.length()) { + o1.append(" new char[] { '\\u"+l+"' },\n"); + } else if (9 == l.length()) { + o1.append(" new char[] { '\\u"); + o1.append(l.substring(0, 4)); + o1.append("', '\\u"); + o1.append(l.substring(5, 9)); + o1.append("' },\n"); + } + } + } + + n++; + } + + w.println("}"); + w.close(); + + System.out.println(" Ok."); + } +} \ No newline at end of file diff --git a/java/misc/Makefile b/java/misc/Makefile new file mode 100644 index 0000000..b87c758 --- /dev/null +++ b/java/misc/Makefile @@ -0,0 +1,693 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# java/misc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +pkgdatadir = $(datadir)/libidn +pkgincludedir = $(includedir)/libidn +pkglibdir = $(libdir)/libidn +pkglibexecdir = $(libexecdir)/libidn +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = armel-unknown-none +host_triplet = arm-unknown-linux-gnueabi +subdir = java/misc +DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__dist_noinst_JAVA_DIST = GenerateRFC3454.java GenerateNFKC.java \ + TestIDNA.java TestNFKC.java +JAVAC = javac +CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run aclocal-1.11 +AMTAR = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run tar +APPLE_UNIVERSAL_BUILD = 0 +AR = arm-linux-gnueabi-ar +AS = as +AUTOCONF = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoconf +AUTOHEADER = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run autoheader +AUTOMAKE = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run automake-1.11 +AWK = gawk +BITSIZEOF_PTRDIFF_T = +BITSIZEOF_SIG_ATOMIC_T = +BITSIZEOF_SIZE_T = +BITSIZEOF_WCHAR_T = +BITSIZEOF_WINT_T = +CC = arm-linux-gnueabi-gcc -std=gnu99 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CFLAG_VISIBILITY = -fvisibility=hidden +CPP = arm-linux-gnueabi-gcc -E +CPPFLAGS = +CSHARPCOMPFLAGS = -O -g +CSHARP_CHOICE = any +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = dlltool +DLL_VERSION = 11 +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EMACS = no +EMACSLOADPATH = +EMULTIHOP_HIDDEN = +EMULTIHOP_VALUE = +ENOLINK_HIDDEN = +ENOLINK_VALUE = +EOVERFLOW_HIDDEN = +EOVERFLOW_VALUE = +ERRNO_H = +EXEEXT = +FGREP = /bin/grep -F +GCJ = gcj +GCJDEPMODE = depmode=none +GCJFLAGS = -g -O2 +GETOPT_H = +GETTEXT_MACRO_VERSION = 0.17 +GJDOC = +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GNULIB_BTOWC = 0 +GNULIB_CHOWN = 0 +GNULIB_CLOSE = 0 +GNULIB_DUP2 = 0 +GNULIB_ENVIRON = 0 +GNULIB_EUIDACCESS = 0 +GNULIB_FCHDIR = 0 +GNULIB_FSYNC = 0 +GNULIB_FTRUNCATE = 0 +GNULIB_GETCWD = 0 +GNULIB_GETDOMAINNAME = 0 +GNULIB_GETDTABLESIZE = 0 +GNULIB_GETHOSTNAME = 0 +GNULIB_GETLOGIN_R = 0 +GNULIB_GETPAGESIZE = 0 +GNULIB_GETUSERSHELL = 0 +GNULIB_LCHOWN = 0 +GNULIB_LINK = 0 +GNULIB_LSEEK = 0 +GNULIB_MBRLEN = 0 +GNULIB_MBRTOWC = 0 +GNULIB_MBSCASECMP = 0 +GNULIB_MBSCASESTR = 0 +GNULIB_MBSCHR = 0 +GNULIB_MBSCSPN = 0 +GNULIB_MBSINIT = 0 +GNULIB_MBSLEN = 0 +GNULIB_MBSNCASECMP = 0 +GNULIB_MBSNLEN = 0 +GNULIB_MBSNRTOWCS = 0 +GNULIB_MBSPBRK = 0 +GNULIB_MBSPCASECMP = 0 +GNULIB_MBSRCHR = 0 +GNULIB_MBSRTOWCS = 0 +GNULIB_MBSSEP = 0 +GNULIB_MBSSPN = 0 +GNULIB_MBSSTR = 0 +GNULIB_MBSTOK_R = 0 +GNULIB_MEMMEM = 0 +GNULIB_MEMPCPY = 0 +GNULIB_MEMRCHR = 0 +GNULIB_RAWMEMCHR = 0 +GNULIB_READLINK = 0 +GNULIB_SLEEP = 0 +GNULIB_STPCPY = 0 +GNULIB_STPNCPY = 0 +GNULIB_STRCASESTR = 0 +GNULIB_STRCHRNUL = 0 +GNULIB_STRDUP = 0 +GNULIB_STRERROR = 1 +GNULIB_STRNDUP = 0 +GNULIB_STRNLEN = 0 +GNULIB_STRPBRK = 0 +GNULIB_STRSEP = 0 +GNULIB_STRSIGNAL = 0 +GNULIB_STRSTR = 0 +GNULIB_STRTOK_R = 0 +GNULIB_STRVERSCMP = 1 +GNULIB_UNISTD_H_SIGPIPE = 0 +GNULIB_WCRTOMB = 0 +GNULIB_WCSNRTOMBS = 0 +GNULIB_WCSRTOMBS = 0 +GNULIB_WCTOB = 0 +GNULIB_WCWIDTH = 0 +GNULIB_WRITE = 0 +GREP = /bin/grep +GTKDOC_CHECK = /usr/bin/gtkdoc-check +GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf +GTKDOC_REBASE = /usr/bin/gtkdoc-rebase +HAVE_BTOWC = 1 +HAVE_CSC = +HAVE_CSCC = +HAVE_CSCC_IN_PATH = +HAVE_CSC_IN_PATH = +HAVE_DECL_ENVIRON = 1 +HAVE_DECL_GETLOGIN_R = 1 +HAVE_DECL_MEMMEM = 1 +HAVE_DECL_MEMRCHR = 1 +HAVE_DECL_STRDUP = 1 +HAVE_DECL_STRERROR = 1 +HAVE_DECL_STRNDUP = 1 +HAVE_DECL_STRNLEN = 1 +HAVE_DECL_STRSIGNAL = 1 +HAVE_DECL_STRTOK_R = 1 +HAVE_DECL_WCTOB = 1 +HAVE_DECL_WCWIDTH = 1 +HAVE_DUP2 = 1 +HAVE_EUIDACCESS = 1 +HAVE_FSYNC = 1 +HAVE_FTRUNCATE = 1 +HAVE_GETDOMAINNAME = 1 +HAVE_GETDTABLESIZE = 1 +HAVE_GETHOSTNAME = 1 +HAVE_GETPAGESIZE = 1 +HAVE_GETUSERSHELL = 1 +HAVE_INTTYPES_H = 1 +HAVE_LINK = 1 +HAVE_LONG_LONG_INT = 1 +HAVE_MBRLEN = 1 +HAVE_MBRTOWC = 1 +HAVE_MBSINIT = 1 +HAVE_MBSNRTOWCS = 1 +HAVE_MBSRTOWCS = 1 +HAVE_MCS = +HAVE_MCS_IN_PATH = +HAVE_MEMPCPY = 1 +HAVE_OS_H = 0 +HAVE_RAWMEMCHR = 1 +HAVE_READLINK = 1 +HAVE_SIGNED_SIG_ATOMIC_T = +HAVE_SIGNED_WCHAR_T = +HAVE_SIGNED_WINT_T = +HAVE_SLEEP = 1 +HAVE_STDINT_H = 1 +HAVE_STPCPY = 1 +HAVE_STPNCPY = 1 +HAVE_STRCASESTR = 1 +HAVE_STRCHRNUL = 1 +HAVE_STRNDUP = 1 +HAVE_STRPBRK = 1 +HAVE_STRSEP = 1 +HAVE_STRVERSCMP = 1 +HAVE_SYS_BITYPES_H = +HAVE_SYS_INTTYPES_H = +HAVE_SYS_PARAM_H = 0 +HAVE_SYS_TYPES_H = 1 +HAVE_UNISTD_H = 1 +HAVE_UNSIGNED_LONG_LONG_INT = 1 +HAVE_VISIBILITY = 1 +HAVE_WCHAR_H = 1 +HAVE_WCRTOMB = 1 +HAVE_WCSNRTOMBS = 1 +HAVE_WCSRTOMBS = 1 +HAVE_WINT_T = 1 +HAVE__BOOL = 1 +HELP2MAN = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run help2man +HTML_DIR = ${datadir}/gtk-doc/html +ICONV_H = +INCLUDE_NEXT = include_next +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = include_next +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +JAR = +LD = /usr/arm-linux-gnueabi/bin/ld +LDFLAGS = -Wl,-z,defs +LIBICONV = +LIBINTL = +LIBOBJS = +LIBS = +LIBTESTS_LIBDEPS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LOCALE_FR = none +LOCALE_TR_UTF8 = none +LTLIBICONV = +LTLIBINTL = +LTLIBOBJS = +LT_AGE = 5 +LT_CURRENT = 16 +LT_REVISION = 44 +MAKEINFO = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run makeinfo +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = <iconv.h> +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = <stdint.h> +NEXT_AS_FIRST_DIRECTIVE_STRING_H = <string.h> +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = <unistd.h> +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = <wchar.h> +NEXT_ERRNO_H = +NEXT_ICONV_H = <iconv.h> +NEXT_STDARG_H = <stdarg.h> +NEXT_STDINT_H = <stdint.h> +NEXT_STRING_H = <string.h> +NEXT_UNISTD_H = <unistd.h> +NEXT_WCHAR_H = <wchar.h> +NM = /usr/bin/arm-linux-gnueabi-nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = libidn +PACKAGE_BUGREPORT = bug-libidn@gnu.org +PACKAGE_NAME = GNU Libidn +PACKAGE_STRING = GNU Libidn 1.15 +PACKAGE_TARNAME = libidn +PACKAGE_URL = http://www.gnu.org/software/libidn/ +PACKAGE_VERSION = 1.15 +PATH_SEPARATOR = : +PERL = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/missing --run perl +PKG_CONFIG = /usr/bin/pkg-config +PMCCABE = false +POSUB = po +PRAGMA_SYSTEM_HEADER = #pragma GCC system_header +PTRDIFF_T_SUFFIX = +RANLIB = arm-linux-gnueabi-ranlib +REPLACE_BTOWC = 0 +REPLACE_CHOWN = 0 +REPLACE_CLOSE = 0 +REPLACE_FCHDIR = 0 +REPLACE_GETCWD = 0 +REPLACE_GETPAGESIZE = 0 +REPLACE_ICONV = 0 +REPLACE_ICONV_OPEN = 0 +REPLACE_ICONV_UTF = 0 +REPLACE_LCHOWN = 0 +REPLACE_LSEEK = 0 +REPLACE_MBRLEN = 0 +REPLACE_MBRTOWC = 0 +REPLACE_MBSINIT = 0 +REPLACE_MBSNRTOWCS = 0 +REPLACE_MBSRTOWCS = 0 +REPLACE_MBSTATE_T = 0 +REPLACE_MEMMEM = 0 +REPLACE_STRCASESTR = 0 +REPLACE_STRDUP = 0 +REPLACE_STRERROR = 0 +REPLACE_STRSIGNAL = 0 +REPLACE_STRSTR = 0 +REPLACE_WCRTOMB = 0 +REPLACE_WCSNRTOMBS = 0 +REPLACE_WCSRTOMBS = 0 +REPLACE_WCTOB = 0 +REPLACE_WCWIDTH = 0 +REPLACE_WRITE = 0 +SED = /bin/sed +SET_MAKE = +SHELL = /bin/sh +SIG_ATOMIC_T_SUFFIX = +SIZE_T_SUFFIX = +STDARG_H = +STDBOOL_H = +STDINT_H = +STRIP = arm-linux-gnueabi-strip +UNISTD_H_HAVE_WINSOCK2_H = 0 +USE_NLS = yes +VALGRIND = +VERSION = 1.15 +WARN_CFLAGS = +WCHAR_H = +WCHAR_T_SUFFIX = +WERROR_CFLAGS = +WINT_T_SUFFIX = +WSTACK_CFLAGS = +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = --flag=error:3:c-format --flag=error_at_line:5:c-format +abs_aux_dir = /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux +abs_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/misc +abs_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn/java/misc +abs_top_builddir = /home/nani/workplace/etc/pkg_tl/public/libidn +abs_top_srcdir = /home/nani/workplace/etc/pkg_tl/public/libidn +ac_ct_CC = +ac_ct_DUMPBIN = +ac_ct_GCJ = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = armel-unknown-none +build_alias = armel +build_cpu = armel +build_os = none +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +gl_LIBOBJS = +gl_LTLIBOBJS = +gltests_LIBOBJS = +gltests_LTLIBOBJS = +host = arm-unknown-linux-gnueabi +host_alias = arm-linux-gnueabi +host_cpu = arm +host_os = linux-gnueabi +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /home/nani/workplace/etc/pkg_tl/public/libidn/build-aux/install-sh +lgl_LIBOBJS = +lgl_LTLIBOBJS = +lgltests_LIBOBJS = +lgltests_LTLIBOBJS = +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +lispdir = ${datadir}/emacs/site-lisp +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +lt_ECHO = echo +mandir = ${prefix}/share/man +mkdir_p = /bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +JAVAROOT = $(top_builddir)/java/misc +AM_JAVACFLAGS = -classpath $(top_builddir)/java/libidn-$(VERSION).jar:$(top_srcdir)/java/libidn-$(VERSION).jar +#dist_noinst_JAVA = GenerateRFC3454.java GenerateNFKC.java \ +# TestIDNA.java TestNFKC.java + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/misc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/misc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +classdist_noinst.stamp: $(dist_noinst_JAVA) + @list1='$?'; list2=; if test -n "$$list1"; then \ + for p in $$list1; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + list2="$$list2 $$d$$p"; \ + done; \ + echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \ + $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \ + else :; fi + echo timestamp > classdist_noinst.stamp + +clean-dist_noinstJAVA: + -rm -f *.class classdist_noinst.stamp +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile classdist_noinst.stamp +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \ + clean-generic clean-libtool distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/misc/Makefile.am b/java/misc/Makefile.am new file mode 100644 index 0000000..d82ea05 --- /dev/null +++ b/java/misc/Makefile.am @@ -0,0 +1,26 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +JAVAROOT = $(top_builddir)/java/misc +AM_JAVACFLAGS = -classpath $(top_builddir)/java/libidn-$(VERSION).jar:$(top_srcdir)/java/libidn-$(VERSION).jar + +if JAVA +dist_noinst_JAVA = GenerateRFC3454.java GenerateNFKC.java \ + TestIDNA.java TestNFKC.java +endif # JAVA diff --git a/java/misc/Makefile.in b/java/misc/Makefile.in new file mode 100644 index 0000000..2a9f924 --- /dev/null +++ b/java/misc/Makefile.in @@ -0,0 +1,693 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = java/misc +DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__dist_noinst_JAVA_DIST = GenerateRFC3454.java GenerateNFKC.java \ + TestIDNA.java TestNFKC.java +JAVAC = javac +CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +JAVAROOT = $(top_builddir)/java/misc +AM_JAVACFLAGS = -classpath $(top_builddir)/java/libidn-$(VERSION).jar:$(top_srcdir)/java/libidn-$(VERSION).jar +@JAVA_TRUE@dist_noinst_JAVA = GenerateRFC3454.java GenerateNFKC.java \ +@JAVA_TRUE@ TestIDNA.java TestNFKC.java + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/misc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu java/misc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +classdist_noinst.stamp: $(dist_noinst_JAVA) + @list1='$?'; list2=; if test -n "$$list1"; then \ + for p in $$list1; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + list2="$$list2 $$d$$p"; \ + done; \ + echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \ + $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \ + else :; fi + echo timestamp > classdist_noinst.stamp + +clean-dist_noinstJAVA: + -rm -f *.class classdist_noinst.stamp +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile classdist_noinst.stamp +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \ + clean-generic clean-libtool distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/java/misc/TestIDNA.java b/java/misc/TestIDNA.java new file mode 100644 index 0000000..6b7c3a8 --- /dev/null +++ b/java/misc/TestIDNA.java @@ -0,0 +1,146 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +import gnu.inet.encoding.IDNA; +import gnu.inet.encoding.IDNAException; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.util.StringTokenizer; + +public class TestIDNA +{ + final static int STATE_SCAN = 0; + final static int STATE_INPUT = 1; + + public static void usage() + { + System.err.println("Usage: "+TestIDNA.class.toString()+" [-a|-u string] [-t]"); + System.err.println(" -a string: apply toASCII(string)"); + System.err.println(" -u string: apply toUnicode(string)"); + System.err.println(" -t: automatic test using draft-josefsson-idn-test-vectors.html"); + System.exit(1); + } + + public static void main(String[] args) + throws Exception + { + String[] tests = new String[] { + "domain\u3002invalid", + "domain\uFF0Einvalid", + "domain\uFF61invalid", + }; + for ( int i = 0; i < tests.length ; i++ ) { + if (!IDNA.toASCII( tests[i] ).equals( "domain.invalid" )) { + System.err.println("Dot-test failed"); + System.exit(1); + } + } + + if (args.length == 2) { + if (args[0].equals("-u")) { + try { + System.out.println("Input: "+args[1]); + System.out.println("Output: "+IDNA.toASCII(args[1])); + } catch (IDNAException e) { + System.out.println(e); + } + } else if (args[0].equals("-a")) { + System.out.println("Input: "+args[1]); + System.out.println("Output: "+IDNA.toUnicode(args[1])); + } else { + usage(); + } + } else if (args.length == 1 && args[0].equals("-t")) { + File f = new File("draft-josefsson-idn-test-vectors.html"); + if (!f.exists()) { + System.err.println("Unable to find draft-josefsson-idn-test-vectors.html."); + System.err.println("Please download the latest version of this file from:"); + System.err.println("http://www.gnu.org/software/libidn/"); + System.exit(1); + } + + BufferedReader r = new BufferedReader(new FileReader(f)); + int state = STATE_SCAN; + + StringBuffer input = new StringBuffer(); + String out; + + while (true) { + String l = r.readLine(); + if (null == l) { + break; + } + + switch (state) { + case STATE_SCAN: + if (l.startsWith("input (length ")) { + state = STATE_INPUT; + input = new StringBuffer(); + } + break; + case STATE_INPUT: + if (l.equals("")) { + // Empty line (before "out:") + } else if (l.startsWith("out: ")) { + out = l.substring(5).trim(); + + try { + String ascii = IDNA.toASCII(input.toString()); + if (ascii.equals(out)) { + // Ok + } else { + System.err.println("Error detected:"); + System.err.println(" Input: "+input); + System.err.println(" toASCII returned: "+ascii); + System.err.println(" expected result: "+out); + System.exit(1); + } + } catch (IDNAException e) { + System.out.println(" exception thrown ("+e+")"); + } + + state = STATE_SCAN; + } else { + StringTokenizer tok = new StringTokenizer(l.trim(), " "); + while (tok.hasMoreTokens()) { + String t = tok.nextToken(); + if (t.startsWith("U+")) { + char u = (char) Integer.parseInt(t.substring(2, 6), 16); + input.append(u); + } else { + System.err.println("Unknown token: "+t); + } + } + } + break; + } + } + + System.out.println("No errors detected!"); + } else { + usage(); + } + } +} diff --git a/java/misc/TestNFKC.java b/java/misc/TestNFKC.java new file mode 100644 index 0000000..06e1b94 --- /dev/null +++ b/java/misc/TestNFKC.java @@ -0,0 +1,165 @@ +/** + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + * + * Author: Oliver Hitz + * + * This file is part of GNU Libidn. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +import gnu.inet.encoding.NFKC; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +public class TestNFKC +{ + static String stripComment(String in) + { + int c = in.indexOf('#'); + if (c == -1) { + return in; + } else { + return in.substring(0, c); + } + } + + static String[] split(String in, char sep) + { + StringBuffer sb = new StringBuffer(in); + int c = 0; + for (int i = 0; i < sb.length(); i++) { + if (sb.charAt(i) == sep) { + c++; + } + } + + String out[] = new String[c+1]; + c = 0; + int l = 0; + for (int i = 0; i < sb.length(); i++) { + if (sb.charAt(i) == sep) { + if (l >= i) { + out[c] = ""; + } else { + out[c] = sb.substring(l, i); + } + l = i+1; + c++; + } + } + if (l < sb.length()) { + out[c] = sb.substring(l); + } + return out; + } + + static boolean containsHighChar(String in) + { + String[] s = split(in, ' '); + for (int i = 0; i < s.length; i++) { + if (s[i].length() != 4) { + return true; + } + } + return false; + } + + static String evalUnicode(String in) + { + StringBuffer out = new StringBuffer(); + String[] s = split(in, ' '); + for (int i = 0; i < s.length; i++) { + out.append((char) Integer.parseInt(s[i], 16)); + } + return out.toString(); + } + + static String toUnicode(String in) + { + StringBuffer out = new StringBuffer(); + for (int i = 0; i < in.length(); i++) { + int c = in.charAt(i); + out.append(Integer.toHexString(c)); + out.append(" "); + } + return out.toString(); + } + + public static void main(String[] args) + throws Exception + { + if (args.length > 0) { + System.out.println("Input: "+args[0]); + System.out.println("Output: "+NFKC.normalizeNFKC(args[0])); + } else { + // Check if the normalization test file exists + File f = new File("NormalizationTest.txt"); + if (!f.exists()) { + System.err.println("Unable to find NormalizationTest.txt."); + System.err.println("Please download the latest version of this file from:"); + System.err.println("http://www.unicode.org/Public/UNIDATA/"); + System.exit(1); + } + + BufferedReader r = new BufferedReader(new FileReader(f)); + + String line; + while (null != (line = r.readLine())) { + line = stripComment(line); + line = line.trim(); + if (line.length() == 0) { + // Empty line + } else { + String[] cols = split(line, ';'); + + if (!containsHighChar(cols[0]) && + !containsHighChar(cols[1]) && + !containsHighChar(cols[2]) && + !containsHighChar(cols[3]) && + !containsHighChar(cols[4])) { + + String c1 = evalUnicode(cols[0]); + String c2 = evalUnicode(cols[1]); + String c3 = evalUnicode(cols[2]); + String c4 = evalUnicode(cols[3]); + String c5 = evalUnicode(cols[4]); + + String nc1 = NFKC.normalizeNFKC(c1); + String nc2 = NFKC.normalizeNFKC(c2); + String nc3 = NFKC.normalizeNFKC(c3); + String nc4 = NFKC.normalizeNFKC(c4); + String nc5 = NFKC.normalizeNFKC(c5); + + if (!nc1.equals(c4) || !nc2.equals(c4) || !nc3.equals(c4) || !nc4.equals(c4) || !nc5.equals(c4)) { + System.out.println("Error at `"+line+"'"); + System.out.println("NFKC(c1) = "+toUnicode(nc1)+", should be "+toUnicode(c4)); + System.out.println("NFKC(c2) = "+toUnicode(nc2)+", should be "+toUnicode(c4)); + System.out.println("NFKC(c3) = "+toUnicode(nc3)+", should be "+toUnicode(c4)); + System.out.println("NFKC(c4) = "+toUnicode(nc4)+", should be "+toUnicode(c4)); + System.out.println("NFKC(c5) = "+toUnicode(nc5)+", should be "+toUnicode(c4)); + return; + } + } + } + } + + System.out.println("No errors detected!"); + } + } +} diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..c54d750 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1,90 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +EXTRA_DIST = gen-stringprep-tables.pl gen-unicode-tables.pl gen-tld-tables.pl + +AM_CPPFLAGS = -I$(srcdir)/gl -Igl -DLIBIDN_BUILDING +AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS) +AM_CFLAGS += $(CFLAG_VISIBILITY) +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + +lib_LTLIBRARIES = libidn.la + +idn_int = idn-int.h + +BUILT_SOURCES = $(idn_int) gunibreak.h gunicomp.h gunidecomp.h rfc3454.c tlds.c +DISTCLEANFILES = $(idn_int) +include_HEADERS = stringprep.h idna.h punycode.h idn-free.h pr29.h +if TLD +include_HEADERS += tld.h +endif +nodist_include_HEADERS = $(idn_int) + +idn-int.h: + if test -n "$(STDINT_H)"; then \ + sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \ + else \ + echo '#include <stdint.h>' > idn-int.h; \ + fi + +libidn_la_SOURCES = libidn.map \ + gunibreak.h gunicomp.h gunidecomp.h \ + nfkc.c toutf8.c version.c \ + stringprep.h stringprep.c rfc3454.c profiles.c \ + punycode.h punycode.c \ + idna.h idna.c \ + pr29.h pr29.c \ + idn-free.h idn-free.c \ + strerror-idna.c strerror-pr29.c strerror-punycode.c \ + strerror-stringprep.c strerror-tld.c + +if TLD +libidn_la_SOURCES += tld.h tld.c tlds.c +endif +libidn_la_LIBADD = $(LTLIBICONV) $(LTLIBINTL) gl/libgnu.la +libidn_la_LDFLAGS = \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined + +if HAVE_LD_VERSION_SCRIPT +libidn_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libidn.map +else +libidn_la_LDFLAGS += -export-symbols-regex \ + '^(idn|pr29_|punycode_|stringprep|tld_).*' +endif + +if HAVE_LD_OUTPUT_DEF +libidn_la_LDFLAGS += -Wl,--output-def,libidn-$(DLL_VERSION).def +defexecdir = $(bindir) +defexec_DATA = libidn-$(DLL_VERSION).def +DISTCLEANFILES += $(defexec_DATA) +endif + +nfkc.c: gunibreak.h gunicomp.h gunidecomp.h + +SPEC = $(top_srcdir)/doc/specifications + +gunibreak.h gunicomp.h gunidecomp.h: gen-unicode-tables.pl $(SPEC)/UnicodeData-3.2.0.txt $(SPEC)/LineBreak-3.2.0.txt $(SPEC)/SpecialCasing-3.2.0.txt $(SPEC)/CaseFolding-3.2.0.txt $(SPEC)/CompositionExclusions-3.2.0.txt + $(PERL) $(srcdir)/gen-unicode-tables.pl -decomp 3.2 $(SPEC) + +rfc3454.c: gen-stringprep-tables.pl + $(PERL) $(srcdir)/gen-stringprep-tables.pl $(SPEC)/rfc3454.txt + +tlds.c: gen-tld-tables.pl + $(PERL) $(srcdir)/gen-tld-tables.pl $(top_srcdir)/doc/tld/*.tld > tlds.c diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..7f477dc --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,989 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@TLD_TRUE@am__append_1 = tld.h +@TLD_TRUE@am__append_2 = tld.h tld.c tlds.c +@HAVE_LD_VERSION_SCRIPT_TRUE@am__append_3 = -Wl,--version-script=$(srcdir)/libidn.map +@HAVE_LD_VERSION_SCRIPT_FALSE@am__append_4 = -export-symbols-regex \ +@HAVE_LD_VERSION_SCRIPT_FALSE@ '^(idn|pr29_|punycode_|stringprep|tld_).*' + +@HAVE_LD_OUTPUT_DEF_TRUE@am__append_5 = -Wl,--output-def,libidn-$(DLL_VERSION).def +@HAVE_LD_OUTPUT_DEF_TRUE@am__append_6 = $(defexec_DATA) +subdir = lib +DIST_COMMON = $(am__include_HEADERS_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)" \ + "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libidn_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + gl/libgnu.la +am__libidn_la_SOURCES_DIST = libidn.map gunibreak.h gunicomp.h \ + gunidecomp.h nfkc.c toutf8.c version.c stringprep.h \ + stringprep.c rfc3454.c profiles.c punycode.h punycode.c idna.h \ + idna.c pr29.h pr29.c idn-free.h idn-free.c strerror-idna.c \ + strerror-pr29.c strerror-punycode.c strerror-stringprep.c \ + strerror-tld.c tld.h tld.c tlds.c +@TLD_TRUE@am__objects_1 = tld.lo tlds.lo +am_libidn_la_OBJECTS = nfkc.lo toutf8.lo version.lo stringprep.lo \ + rfc3454.lo profiles.lo punycode.lo idna.lo pr29.lo idn-free.lo \ + strerror-idna.lo strerror-pr29.lo strerror-punycode.lo \ + strerror-stringprep.lo strerror-tld.lo $(am__objects_1) +libidn_la_OBJECTS = $(am_libidn_la_OBJECTS) +libidn_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libidn_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libidn_la_SOURCES) +DIST_SOURCES = $(am__libidn_la_SOURCES_DIST) +DATA = $(defexec_DATA) +am__include_HEADERS_DIST = stringprep.h idna.h punycode.h idn-free.h \ + pr29.h tld.h +HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = gen-stringprep-tables.pl gen-unicode-tables.pl gen-tld-tables.pl +AM_CPPFLAGS = -I$(srcdir)/gl -Igl -DLIBIDN_BUILDING +AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS) \ + $(CFLAG_VISIBILITY) +lib_LTLIBRARIES = libidn.la +idn_int = idn-int.h +BUILT_SOURCES = $(idn_int) gunibreak.h gunicomp.h gunidecomp.h rfc3454.c tlds.c +DISTCLEANFILES = $(idn_int) $(am__append_6) +include_HEADERS = stringprep.h idna.h punycode.h idn-free.h pr29.h \ + $(am__append_1) +nodist_include_HEADERS = $(idn_int) +libidn_la_SOURCES = libidn.map gunibreak.h gunicomp.h gunidecomp.h \ + nfkc.c toutf8.c version.c stringprep.h stringprep.c rfc3454.c \ + profiles.c punycode.h punycode.c idna.h idna.c pr29.h pr29.c \ + idn-free.h idn-free.c strerror-idna.c strerror-pr29.c \ + strerror-punycode.c strerror-stringprep.c strerror-tld.c \ + $(am__append_2) +libidn_la_LIBADD = $(LTLIBICONV) $(LTLIBINTL) gl/libgnu.la +libidn_la_LDFLAGS = -version-info \ + $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined \ + $(am__append_3) $(am__append_4) $(am__append_5) +@HAVE_LD_OUTPUT_DEF_TRUE@defexecdir = $(bindir) +@HAVE_LD_OUTPUT_DEF_TRUE@defexec_DATA = libidn-$(DLL_VERSION).def +SPEC = $(top_srcdir)/doc/specifications +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libidn.la: $(libidn_la_OBJECTS) $(libidn_la_DEPENDENCIES) + $(libidn_la_LINK) -rpath $(libdir) $(libidn_la_OBJECTS) $(libidn_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idn-free.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idna.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfkc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr29.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profiles.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/punycode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc3454.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-idna.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-pr29.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-punycode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-stringprep.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-tld.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringprep.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tld.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tlds.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/toutf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-defexecDATA: $(defexec_DATA) + @$(NORMAL_INSTALL) + test -z "$(defexecdir)" || $(MKDIR_P) "$(DESTDIR)$(defexecdir)" + @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defexecdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(defexecdir)" || exit $$?; \ + done + +uninstall-defexecDATA: + @$(NORMAL_UNINSTALL) + @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(defexecdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(defexecdir)" && rm -f $$files +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(includedir)" && rm -f $$files +install-nodist_includeHEADERS: $(nodist_include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-nodist_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(includedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-nodist_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-defexecDATA install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-defexecDATA uninstall-includeHEADERS \ + uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-defexecDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man \ + install-nodist_includeHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-defexecDATA \ + uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-nodist_includeHEADERS + + +idn-int.h: + if test -n "$(STDINT_H)"; then \ + sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \ + else \ + echo '#include <stdint.h>' > idn-int.h; \ + fi + +nfkc.c: gunibreak.h gunicomp.h gunidecomp.h + +gunibreak.h gunicomp.h gunidecomp.h: gen-unicode-tables.pl $(SPEC)/UnicodeData-3.2.0.txt $(SPEC)/LineBreak-3.2.0.txt $(SPEC)/SpecialCasing-3.2.0.txt $(SPEC)/CaseFolding-3.2.0.txt $(SPEC)/CompositionExclusions-3.2.0.txt + $(PERL) $(srcdir)/gen-unicode-tables.pl -decomp 3.2 $(SPEC) + +rfc3454.c: gen-stringprep-tables.pl + $(PERL) $(srcdir)/gen-stringprep-tables.pl $(SPEC)/rfc3454.txt + +tlds.c: gen-tld-tables.pl + $(PERL) $(srcdir)/gen-tld-tables.pl $(top_srcdir)/doc/tld/*.tld > tlds.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: diff --git a/lib/gen-stringprep-tables.pl b/lib/gen-stringprep-tables.pl new file mode 100755 index 0000000..b1670ce --- /dev/null +++ b/lib/gen-stringprep-tables.pl @@ -0,0 +1,119 @@ +#! /usr/bin/perl -w + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + +# 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 3 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, see <http://www.gnu.org/licenses/>. + +# I consider the output of this program to be unrestricted. Use it as +# you will. + +use strict; + +my ($tab) = 59; +my ($intable) = 0; +my ($tablename); +my ($varname); +my ($starheader, $header); +my ($profile) = "rfc3454"; +my ($filename) = "$profile.c"; +my ($line, $start, $end, @map); + +open(FH, ">$filename") or die "cannot open $filename for writing"; + +print FH "/* This file is automatically generated. DO NOT EDIT!\n"; +print FH " Instead, edit gen-stringprep-tables.pl and re-run. */\n\n"; + +print FH "#include \"stringprep.h\"\n"; + +while(<>) { + s/^ (.*)/$1/g; # for rfc + $line = $_; + + die "already in table" if $intable && m,^----- Start Table (.*) -----,; + die "not in table" if !$intable && m,^----- End Table (.*) -----,; + + if ($intable && m,^----- End Table (.*) -----,) { + die "table error" unless $1 eq $tablename || + ($1 eq "C.1.2" && $tablename eq "C.1.1"); # Typo in draft + $intable = 0; + print FH " { 0 },\n"; + print FH "};\n\n"; + } + + if (m,^[A-Z],) { + $header = $line; + } elsif (!m,^[ -],) { + $header .= $line; + } + + next unless ($intable || m,^----- Start Table (.*) -----,); + + if ($intable) { + $_ = $line; + chop $line; + + next if m,^$,; + next if m,^Hoffman & Blanchet Standards Track \[Page [0-9]+\]$,; + next if m,^ $,; + next if m,RFC 3454 Preparation of Internationalized Strings December 2002,; + + die "regexp failed on line: $line" unless + m,^([0-9A-F]+)(-([0-9A-F]+))?(; ([0-9A-F]+)( ([0-9A-F]+))?( ([0-9A-F]+))?( ([0-9A-F]+))?;)?,; + + die "too many mapping targets on line: $line" if $12; + + $start = $1; + $end = $3; + $map[0] = $5; + $map[1] = $7; + $map[2] = $9; + $map[3] = $11; + + die "tables tried to map a range" if $end && $map[0]; + + if ($map[3]) { + printf FH " { 0x%06s, 0, { 0x%06s,%*s/* %s */\n 0x%06s, 0x%06s, 0x%06s }},\n", + $start, $map[0], $tab-length($line)-13, " ", $line, + $map[1], $map[2], $map[3]; + } elsif ($map[2]) { + printf FH " { 0x%06s, 0, { 0x%06s,%*s/* %s */\n 0x%06s, 0x%06s }},\n", + $start, $map[0], $tab-length($line)-14, " ", $line, + $map[1], $map[2]; + } elsif ($map[1]) { + printf FH " { 0x%06s, 0, { 0x%06s,%*s/* %s */\n 0x%06s }},\n", + $start, $map[0], $tab-length($line)-14, " ", $line, + $map[1]; + } elsif ($map[0]) { + printf FH " { 0x%06s, 0, { 0x%06s }},%*s/* %s */\n", + $start, $map[0], $tab-length($line)-17, " ", $line; + } elsif ($end) { + printf FH " { 0x%06s, 0x%06s },%*s/* %s */\n", + $start, $end, $tab-length($line)-11, " ", $line; + } else { + printf FH " { 0x%06s },%*s/* %s */\n", + $start, $tab-length($line)-11, " ", $line; + } + } else { + $intable = 1 if !$intable; + $tablename = $1; + + ($varname = $tablename) =~ tr/./_/; + $header =~ s/\n/\n * /s; + + print FH "\n/*\n * $header */\n\n"; + print FH "const Stringprep_table_element stringprep_${profile}_${varname}\[\] = {\n"; + } +} + +close FH or die "cannot close $filename"; diff --git a/lib/gen-tld-tables.pl b/lib/gen-tld-tables.pl new file mode 100755 index 0000000..73f4af6 --- /dev/null +++ b/lib/gen-tld-tables.pl @@ -0,0 +1,252 @@ +#!/usr/bin/perl + +# Author: Thomas Jacob, Internet24.de + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# Copyright (C) 2004 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 3 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, see <http://www.gnu.org/licenses/>. +# +# I consider the output of this program to be unrestricted. Use it as +# you will. + +# See doc/tld/README and draft-hoffman-idn-reg-*.txt inside Libidn for +# more information on the input file syntax. + +# Use this to generate TLD tables: +# $ ./gen-tld-tables *.tld > tlds.c + +use strict; +use warnings; + +die "Usage: $0 <TLD-FILE [TLD-FILE ...]>" if ($#ARGV == -1); + +print "/* This file is automatically generated. DO NOT EDIT!\n"; +print " Instead, edit gen-tld-tables.pl and re-run. */\n"; +print "\n"; +print "#include \"tld.h\"\n"; +print "\n"; + +my @tlds; + +foreach my $tldfile (@ARGV) +{ + my ($tld, $version); + my $data = process_definition ($tldfile, \$tld, \$version); + + push @tlds, $tld; + + optimize($data); + + print_tld_domain($tld, \@$data, $version); +} + +print "/* Main array */\n"; +print "const Tld_table * _tld_tables[] =\n"; +print "{\n"; +foreach (@tlds) +{ + print " &_tld_${_},\n"; +} +print " NULL\n"; +print "};\n"; + +# Print tld domain structure. +# void print_tld_domain($tldfile, \$tld, \@intervals, $version); +sub print_tld_domain +{ + my $tld = shift; + my $intervals = shift; + my $version = shift; + my $num_intervals = @$intervals; + + print "/* TLD $tld */\n"; + print "static const Tld_table_element _tld_${tld}_valid[] =\n"; + print "{\n"; + if (@$intervals) + { + my $last = pop @$intervals; + foreach (@$intervals) + { + printf " { 0x%x, 0x%x },\n", $_->[0], $_->[1]; + } + printf " { 0x%x, 0x%x }\n", $last->[0], $last->[1]; + } + print "};\n"; + print "\n"; + + print "static const Tld_table _tld_${tld} =\n"; + print "{\n"; + print " \"$tld\",\n"; + print " \"$version\",\n"; + print " $num_intervals,\n"; + print " &_tld_${tld}_valid[0]\n"; + print "};\n\n"; +} + +# process a definition file +# $filename, \$tld, \$version +# return @data on success, die otherwise +sub process_definition +{ + my $filename = shift; + my $tld = shift; + my $version = shift; + my $incversion; + my $path; + my @data; + + local * FILE; + + open(FILE, "<$filename") or die "Cannot open $filename"; + + $path = $filename; + $path =~ s/\/[^\/]+$//; + + my ($is_int,$have_num,$num,$cnum); + my $line = 1; + while(<FILE>) + { + chomp; + + s/#.*$//; + + if (m/^include\s+(\S+)\s*$/i) + { + my $incfile = $1; + my ($junk, $ver); + my $incdata = process_definition("$path/$incfile", \$junk, \$ver); + $incversion = $incversion . " $incfile ($ver)"; + push @data, @$incdata; + next; + } + + if (m/^version\s+"(.*)"\s*$/i) + { + $$version = $1; + next; + } + + if (m/^tld\s+(\S+)\s*$/i) + { + $$tld = $1; + next; + } + + while ($_ ne "") + { + s/^\s*//; + if ( (s/^(0x)([a-f0-9]+)//i) || + (s/^(U\+)([a-f0-9]+)//i) || + (s/^(0)(\d+)//) || + (s/^(\d+)//) ) + { + $cnum = $1; + if (((lc($1) eq "0x") || (lc($1) eq "u+")) && $2) + { + $cnum = hex($2); + } + elsif (($1 eq "0") && $2) + { + $cnum = oct($2); + } + + if ($have_num) + { + if ($is_int) + { + push @data, [$num, $cnum]; + $have_num = 0; + $is_int = 0; + } + else + { + push @data, [$num,$num]; + $num = $cnum; + } + } + else + { + $have_num = 1; + $num = $cnum; + } + } + elsif (s/^\-//) + { + $is_int = 1; + } + elsif (s/^\|//) + { + $is_int = 0; + } + elsif (s/^\://) + { + $is_int = 0; + } + else + { + die "Parser error in file $filename at line $line near $_, " + if $_ ne ""; + } + } + $line++; + } + close(FILE); + + if ($have_num) + { + if ($is_int) + { + push @data, [$num, $cnum]; + } + else + { + push @data, [$num, $num]; + } + } + + $$version = $$version . $incversion if $incversion; + return \@data; +} + +# Build minimal set of intervals. +# void optimize(\@intervals) +sub optimize +{ + my $intervals = shift; + + return undef unless (@$intervals); + + my @intervals = sort {$a->[0] <=> $b->[0]} @$intervals; + @$intervals = (); + + my $cur_int = shift @intervals; + + foreach (@intervals) + { + if ($_->[0]>($cur_int->[1]+1)) + { + push @$intervals, $cur_int; + $cur_int = $_; + } + else + { + if ($_->[1] > $cur_int->[1]) + { + $cur_int->[1] = $_->[1]; + } + } + } + push @$intervals, $cur_int; +} diff --git a/lib/gen-unicode-tables.pl b/lib/gen-unicode-tables.pl new file mode 100755 index 0000000..aa87cc0 --- /dev/null +++ b/lib/gen-unicode-tables.pl @@ -0,0 +1,1337 @@ +#! /usr/bin/perl -w + +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# Copyright (C) 1998, 1999 Tom Tromey +# Copyright (C) 2001 Red Hat Software + +# 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 3 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, see <http://www.gnu.org/licenses/>. + +# I consider the output of this program to be unrestricted. Use it as +# you will. + +# Contributer(s): +# Andrew Taylor <andrew.taylor@montage.ca> + +# gen-unicode-tables.pl - Generate tables for libunicode from Unicode data. +# See http://www.unicode.org/Public/UNIDATA/UnicodeCharacterDatabase.html + +# FIXME: +# * For decomp table it might make sense to use a shift count other +# than 8. We could easily compute the perfect shift count. + +# we use some perl unicode features +require 5.006; + +use vars qw($CODE $NAME $CATEGORY $COMBINING_CLASSES $BIDI_CATEGORY $DECOMPOSITION $DECIMAL_VALUE $DIGIT_VALUE $NUMERIC_VALUE $MIRRORED $OLD_NAME $COMMENT $UPPER $LOWER $TITLE $BREAK_CODE $BREAK_CATEGORY $BREAK_NAME $CASE_CODE $CASE_LOWER $CASE_TITLE $CASE_UPPER $CASE_CONDITION); + + +# Names of fields in Unicode data table. +$CODE = 0; +$NAME = 1; +$CATEGORY = 2; +$COMBINING_CLASSES = 3; +$BIDI_CATEGORY = 4; +$DECOMPOSITION = 5; +$DECIMAL_VALUE = 6; +$DIGIT_VALUE = 7; +$NUMERIC_VALUE = 8; +$MIRRORED = 9; +$OLD_NAME = 10; +$COMMENT = 11; +$UPPER = 12; +$LOWER = 13; +$TITLE = 14; + +# Names of fields in the line break table +$BREAK_CODE = 0; +$BREAK_PROPERTY = 1; + +# Names of fields in the SpecialCasing table +$CASE_CODE = 0; +$CASE_LOWER = 1; +$CASE_TITLE = 2; +$CASE_UPPER = 3; +$CASE_CONDITION = 4; + +# Names of fields in the CaseFolding table +$FOLDING_CODE = 0; +$FOLDING_STATUS = 1; +$FOLDING_MAPPING = 2; + +# Map general category code onto symbolic name. +%mappings = + ( + # Normative. + 'Lu' => "G_UNICODE_UPPERCASE_LETTER", + 'Ll' => "G_UNICODE_LOWERCASE_LETTER", + 'Lt' => "G_UNICODE_TITLECASE_LETTER", + 'Mn' => "G_UNICODE_NON_SPACING_MARK", + 'Mc' => "G_UNICODE_COMBINING_MARK", + 'Me' => "G_UNICODE_ENCLOSING_MARK", + 'Nd' => "G_UNICODE_DECIMAL_NUMBER", + 'Nl' => "G_UNICODE_LETTER_NUMBER", + 'No' => "G_UNICODE_OTHER_NUMBER", + 'Zs' => "G_UNICODE_SPACE_SEPARATOR", + 'Zl' => "G_UNICODE_LINE_SEPARATOR", + 'Zp' => "G_UNICODE_PARAGRAPH_SEPARATOR", + 'Cc' => "G_UNICODE_CONTROL", + 'Cf' => "G_UNICODE_FORMAT", + 'Cs' => "G_UNICODE_SURROGATE", + 'Co' => "G_UNICODE_PRIVATE_USE", + 'Cn' => "G_UNICODE_UNASSIGNED", + + # Informative. + 'Lm' => "G_UNICODE_MODIFIER_LETTER", + 'Lo' => "G_UNICODE_OTHER_LETTER", + 'Pc' => "G_UNICODE_CONNECT_PUNCTUATION", + 'Pd' => "G_UNICODE_DASH_PUNCTUATION", + 'Ps' => "G_UNICODE_OPEN_PUNCTUATION", + 'Pe' => "G_UNICODE_CLOSE_PUNCTUATION", + 'Pi' => "G_UNICODE_INITIAL_PUNCTUATION", + 'Pf' => "G_UNICODE_FINAL_PUNCTUATION", + 'Po' => "G_UNICODE_OTHER_PUNCTUATION", + 'Sm' => "G_UNICODE_MATH_SYMBOL", + 'Sc' => "G_UNICODE_CURRENCY_SYMBOL", + 'Sk' => "G_UNICODE_MODIFIER_SYMBOL", + 'So' => "G_UNICODE_OTHER_SYMBOL" + ); + +%break_mappings = + ( + 'BK' => "G_UNICODE_BREAK_MANDATORY", + 'CR' => "G_UNICODE_BREAK_CARRIAGE_RETURN", + 'LF' => "G_UNICODE_BREAK_LINE_FEED", + 'CM' => "G_UNICODE_BREAK_COMBINING_MARK", + 'SG' => "G_UNICODE_BREAK_SURROGATE", + 'ZW' => "G_UNICODE_BREAK_ZERO_WIDTH_SPACE", + 'IN' => "G_UNICODE_BREAK_INSEPARABLE", + 'GL' => "G_UNICODE_BREAK_NON_BREAKING_GLUE", + 'CB' => "G_UNICODE_BREAK_CONTINGENT", + 'SP' => "G_UNICODE_BREAK_SPACE", + 'BA' => "G_UNICODE_BREAK_AFTER", + 'BB' => "G_UNICODE_BREAK_BEFORE", + 'B2' => "G_UNICODE_BREAK_BEFORE_AND_AFTER", + 'HY' => "G_UNICODE_BREAK_HYPHEN", + 'NS' => "G_UNICODE_BREAK_NON_STARTER", + 'OP' => "G_UNICODE_BREAK_OPEN_PUNCTUATION", + 'CL' => "G_UNICODE_BREAK_CLOSE_PUNCTUATION", + 'QU' => "G_UNICODE_BREAK_QUOTATION", + 'EX' => "G_UNICODE_BREAK_EXCLAMATION", + 'ID' => "G_UNICODE_BREAK_IDEOGRAPHIC", + 'NU' => "G_UNICODE_BREAK_NUMERIC", + 'IS' => "G_UNICODE_BREAK_INFIX_SEPARATOR", + 'SY' => "G_UNICODE_BREAK_SYMBOL", + 'AL' => "G_UNICODE_BREAK_ALPHABETIC", + 'PR' => "G_UNICODE_BREAK_PREFIX", + 'PO' => "G_UNICODE_BREAK_POSTFIX", + 'SA' => "G_UNICODE_BREAK_COMPLEX_CONTEXT", + 'AI' => "G_UNICODE_BREAK_AMBIGUOUS", + 'NL' => "G_UNICODE_BREAK_NEXT_LINE", + 'WJ' => "G_UNICODE_BREAK_WORD_JOINER", + 'XX' => "G_UNICODE_BREAK_UNKNOWN" + ); + +# Title case mappings. +%title_to_lower = (); +%title_to_upper = (); + +# Maximum length of special-case strings + +my @special_cases; +my @special_case_offsets; +my $special_case_offset = 0; + +$do_decomp = 0; +$do_props = 1; +if (@ARGV && $ARGV[0] eq '-decomp') +{ + $do_decomp = 1; + $do_props = 0; + shift @ARGV; +} +elsif (@ARGV && $ARGV[0] eq '-both') +{ + $do_decomp = 1; + shift @ARGV; +} + +if (@ARGV != 2) { + $0 =~ s@.*/@@; + die "\nUsage: $0 [-decomp | -both] UNICODE-VERSION DIRECTORY\n\n DIRECTORY should contain the following Unicode data files:\n UnicodeData.txt, LineBreak.txt, SpecialCasing.txt, CaseFolding.txt,\n CompositionExclusions.txt, BidiMirroring.txt\n\n"; +} + +my ($unicodedatatxt, $linebreaktxt, $specialcasingtxt, $casefoldingtxt, $compositionexclusionstxt, $bidimirroringtxt); + +my $d = $ARGV[1]; +opendir (my $dir, $d) or die "Cannot open Unicode data dir $d: $!\n"; +for my $f (readdir ($dir)) +{ + $unicodedatatxt = "$d/$f" if ($f =~ /UnicodeData.*\.txt/); + $linebreaktxt = "$d/$f" if ($f =~ /LineBreak.*\.txt/); + $specialcasingtxt = "$d/$f" if ($f =~ /SpecialCasing.*\.txt/); + $casefoldingtxt = "$d/$f" if ($f =~ /CaseFolding.*\.txt/); + $compositionexclusionstxt = "$d/$f" if ($f =~ /CompositionExclusions.*\.txt/); + $bidimirroringtxt = "$d/$f" if ($f =~ /BidiMirroring.*\.txt/); +} + +defined $unicodedatatxt or die "Did not find UnicodeData file"; +defined $linebreaktxt or die "Did not find LineBreak file"; +defined $specialcasingtxt or die "Did not find SpecialCasing file"; +defined $casefoldingtxt or die "Did not find CaseFolding file"; +defined $compositionexclusionstxt or die "Did not find CompositionExclusions file"; +defined $bidimirroringtxt or die "Did not find BidiMirroring file"; + +print "Creating decomp table\n" if ($do_decomp); +print "Creating property table\n" if ($do_props); + +print "Composition exlusions from $compositionexclusionstxt\n"; + +open (INPUT, "< $compositionexclusionstxt") || exit 1; + +while (<INPUT>) { + + chop; + + next if /^#/; + next if /^\s*$/; + + s/\s*#.*//; + + s/^\s*//; + s/\s*$//; + + $composition_exclusions{hex($_)} = 1; +} + +close INPUT; + +print "Unicode data from $unicodedatatxt\n"; + +open (INPUT, "< $unicodedatatxt") || exit 1; + +# we save memory by skipping the huge empty area before U+E0000 +my $pages_before_e0000; + +$last_code = -1; +while (<INPUT>) +{ + chop; + @fields = split (';', $_, 30); + if ($#fields != 14) + { + printf STDERR ("Entry for $fields[$CODE] has wrong number of fields (%d)\n", $#fields); + } + + $code = hex ($fields[$CODE]); + + if ($code >= 0xE0000 and $last_code < 0xE0000) + { + $pages_before_e0000 = ($last_code >> 8) + 1; + } + + if ($code > $last_code + 1) + { + # Found a gap. + if ($fields[$NAME] =~ /Last>/) + { + # Fill the gap with the last character read, + # since this was a range specified in the char database + @gfields = @fields; + } + else + { + # The gap represents undefined characters. Only the type + # matters. + @gfields = ('', '', 'Cn', '0', '', '', '', '', '', '', '', + '', '', '', ''); + } + for (++$last_code; $last_code < $code; ++$last_code) + { + $gfields{$CODE} = sprintf ("%04x", $last_code); + &process_one ($last_code, @gfields); + } + } + &process_one ($code, @fields); + $last_code = $code; +} + +close INPUT; + +@gfields = ('', '', 'Cn', '0', '', '', '', '', '', '', '', + '', '', '', ''); +for (++$last_code; $last_code <= 0x10FFFF; ++$last_code) +{ + $gfields{$CODE} = sprintf ("%04x", $last_code); + &process_one ($last_code, @gfields); +} +--$last_code; # Want last to be 0x10FFFF. + +print "Creating line break table\n"; + +print "Line break data from $linebreaktxt\n"; + +open (INPUT, "< $linebreaktxt") || exit 1; + +$last_code = -1; +while (<INPUT>) +{ + my ($start_code, $end_code); + + chop; + + next if /^#/; + + s/\s*#.*//; + + @fields = split (';', $_, 30); + if ($#fields != 1) + { + printf STDERR ("Entry for $fields[$CODE] has wrong number of fields (%d)\n", $#fields); + next; + } + + if ($fields[$CODE] =~ /([A-F0-9]{4,6})\.\.([A-F0-9]{4,6})/) + { + $start_code = hex ($1); + $end_code = hex ($2); + } else { + $start_code = $end_code = hex ($fields[$CODE]); + + } + + if ($start_code > $last_code + 1) + { + # The gap represents undefined characters. If assigned, + # they are AL, if not assigned, XX + for (++$last_code; $last_code < $start_code; ++$last_code) + { + if ($type[$last_code] eq 'Cn') + { + $break_props[$last_code] = 'XX'; + } + else + { + $break_props[$last_code] = 'AL'; + } + } + } + + for ($last_code = $start_code; $last_code <= $end_code; $last_code++) + { + $break_props[$last_code] = $fields[$BREAK_PROPERTY]; + } + + $last_code = $end_code; +} + +close INPUT; + +for (++$last_code; $last_code <= 0x10FFFF; ++$last_code) +{ + if ($type[$last_code] eq 'Cn') + { + $break_props[$last_code] = 'XX'; + } + else + { + $break_props[$last_code] = 'AL'; + } +} +--$last_code; # Want last to be 0x10FFFF. + +print STDERR "Last code is not 0x10FFFF" if ($last_code != 0x10FFFF); + +print "Reading special-casing table for case conversion\n"; + +open (INPUT, "< $specialcasingtxt") || exit 1; + +while (<INPUT>) +{ + my $code; + + chop; + + next if /^#/; + next if /^\s*$/; + + s/\s*#.*//; + + @fields = split ('\s*;\s*', $_, 30); + + $raw_code = $fields[$CASE_CODE]; + $code = hex ($raw_code); + + if ($#fields != 4 && $#fields != 5) + { + printf STDERR ("Entry for $raw_code has wrong number of fields (%d)\n", $#fields); + next; + } + + if (!defined $type[$code]) + { + printf STDERR "Special case for code point: $code, which has no defined type\n"; + next; + } + + if (defined $fields[5]) { + # Ignore conditional special cases - we'll handle them in code + next; + } + + if ($type[$code] eq 'Lu') + { + (hex $fields[$CASE_UPPER] == $code) || die "$raw_code is Lu and UCD_Upper($raw_code) != $raw_code"; + + &add_special_case ($code, $value[$code], $fields[$CASE_LOWER], $fields[$CASE_TITLE]); + + } elsif ($type[$code] eq 'Lt') + { + (hex $fields[$CASE_TITLE] == $code) || die "$raw_code is Lt and UCD_Title($raw_code) != $raw_code"; + + &add_special_case ($code, undef, $fields[$CASE_LOWER], $fields[$CASE_UPPER]); + } elsif ($type[$code] eq 'Ll') + { + (hex $fields[$CASE_LOWER] == $code) || die "$raw_code is Ll and UCD_Lower($raw_code) != $raw_code"; + + &add_special_case ($code, $value[$code], $fields[$CASE_UPPER], $fields[$CASE_TITLE]); + } else { + printf STDERR "Special case for non-alphabetic code point: $raw_code\n"; + next; + } +} + +close INPUT; + +open (INPUT, "< $casefoldingtxt") || exit 1; + +my $casefoldlen = 0; +my @casefold; + +while (<INPUT>) +{ + my $code; + + chop; + + next if /^#/; + next if /^\s*$/; + + s/\s*#.*//; + + @fields = split ('\s*;\s*', $_, 30); + + $raw_code = $fields[$FOLDING_CODE]; + $code = hex ($raw_code); + + if ($#fields != 3) + { + printf STDERR ("Entry for $raw_code has wrong number of fields (%d)\n", $#fields); + next; + } + + # we don't use Simple or Turkic rules here + next if ($fields[$FOLDING_STATUS] =~ /^[ST]$/); + + @values = map { hex ($_) } split /\s+/, $fields[$FOLDING_MAPPING]; + + # Check simple case + + if (@values == 1 && + !(defined $value[$code] && $value[$code] >= 0x1000000) && + defined $type[$code]) { + + my $lower; + if ($type[$code] eq 'Ll') + { + $lower = $code; + } elsif ($type[$code] eq 'Lt') + { + $lower = $title_to_lower{$code}; + } elsif ($type[$code] eq 'Lu') + { + $lower = $value[$code]; + } else { + $lower = $code; + } + + if ($lower == $values[0]) { + next; + } + } + + my $string = pack ("U*", @values); + + if (1 + &length_in_bytes ($string) > $casefoldlen) { + $casefoldlen = 1 + &length_in_bytes ($string); + } + + push @casefold, [ $code, &escape ($string) ]; +} + +close INPUT; + +open (INPUT, "< $bidimirroringtxt") || exit 1; + +my @bidimirror; +while (<INPUT>) +{ + chomp; + + next if /^#/; + next if /^\s*$/; + + s/\s*#.*//; + + @fields = split ('\s*;\s*', $_, 30); + + push @bidimirror, [hex ($fields[0]), hex ($fields[1])]; +} + +if ($do_props) { + &print_tables ($last_code) +} +if ($do_decomp) { + &print_decomp ($last_code); + &output_composition_table; +} + +&print_line_break ($last_code); + +exit 0; + + +# perl "length" returns the length in characters +sub length_in_bytes +{ + my ($string) = @_; + + use bytes; + return length $string; +} + +# Process a single character. +sub process_one +{ + my ($code, @fields) = @_; + + $type[$code] = $fields[$CATEGORY]; + if ($type[$code] eq 'Nd') + { + $value[$code] = int ($fields[$DECIMAL_VALUE]); + } + elsif ($type[$code] eq 'Ll') + { + $value[$code] = hex ($fields[$UPPER]); + } + elsif ($type[$code] eq 'Lu') + { + $value[$code] = hex ($fields[$LOWER]); + } + + if ($type[$code] eq 'Lt') + { + $title_to_lower{$code} = hex ($fields[$LOWER]); + $title_to_upper{$code} = hex ($fields[$UPPER]); + } + + $cclass[$code] = $fields[$COMBINING_CLASSES]; + + # Handle decompositions. + if ($fields[$DECOMPOSITION] ne '') + { + if ($fields[$DECOMPOSITION] =~ s/\<.*\>\s*//) { + $decompose_compat[$code] = 1; + } else { + $decompose_compat[$code] = 0; + + if (!exists $composition_exclusions{$code}) { + $compositions{$code} = $fields[$DECOMPOSITION]; + } + } + $decompositions[$code] = $fields[$DECOMPOSITION]; + } +} + +sub print_tables +{ + my ($last) = @_; + my ($outfile) = "gunichartables.h"; + + local ($bytes_out) = 0; + + print "Writing $outfile...\n"; + + open (OUT, "> $outfile"); + + print OUT "/* This file is automatically generated. DO NOT EDIT!\n"; + print OUT " Instead, edit gen-unicode-tables.pl and re-run. */\n\n"; + + print OUT "#ifndef CHARTABLES_H\n"; + print OUT "#define CHARTABLES_H\n\n"; + + print OUT "#define G_UNICODE_DATA_VERSION \"$ARGV[0]\"\n\n"; + + printf OUT "#define G_UNICODE_LAST_CHAR 0x%04x\n\n", $last; + + printf OUT "#define G_UNICODE_MAX_TABLE_INDEX 10000\n\n"; + + my $last_part1 = ($pages_before_e0000 * 256) - 1; + printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1; + printf OUT "#define G_UNICODE_LAST_PAGE_PART1 %d\n\n", $pages_before_e0000 - 1; + + $table_index = 0; + printf OUT "static const char type_data[][256] = {\n"; + for ($count = 0; $count <= $last; $count += 256) + { + $row[$count / 256] = &print_row ($count, 1, \&fetch_type); + } + printf OUT "\n};\n\n"; + + printf OUT "/* U+0000 through U+%04X */\n", $last_part1; + print OUT "static const gint16 type_table_part1[$pages_before_e0000] = {\n"; + for ($count = 0; $count <= $last_part1; $count += 256) + { + print OUT ",\n" if $count > 0; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + printf OUT "/* U+E0000 through U+%04X */\n", $last; + print OUT "static const gint16 type_table_part2[768] = {\n"; + for ($count = 0xE0000; $count <= $last; $count += 256) + { + print OUT ",\n" if $count > 0xE0000; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + + # + # Now print attribute table. + # + + $table_index = 0; + printf OUT "static const gunichar attr_data[][256] = {\n"; + for ($count = 0; $count <= $last; $count += 256) + { + $row[$count / 256] = &print_row ($count, 4, \&fetch_attr); + } + printf OUT "\n};\n\n"; + + printf OUT "/* U+0000 through U+%04X */\n", $last_part1; + print OUT "static const gint16 attr_table_part1[$pages_before_e0000] = {\n"; + for ($count = 0; $count <= $last_part1; $count += 256) + { + print OUT ",\n" if $count > 0; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + printf OUT "/* U+E0000 through U+%04X */\n", $last; + print OUT "static const gint16 attr_table_part2[768] = {\n"; + for ($count = 0xE0000; $count <= $last; $count += 256) + { + print OUT ",\n" if $count > 0xE0000; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + # + # print title case table + # + + print OUT "static const gunichar title_table[][3] = {\n"; + my ($item); + my ($first) = 1; + foreach $item (sort keys %title_to_lower) + { + print OUT ",\n" + unless $first; + $first = 0; + printf OUT " { 0x%04x, 0x%04x, 0x%04x }", $item, $title_to_upper{$item}, $title_to_lower{$item}; + $bytes_out += 12; + } + print OUT "\n};\n\n"; + + # + # And special case conversion table -- conversions that change length + # + &output_special_case_table (\*OUT); + &output_casefold_table (\*OUT); + + print OUT "static const struct {\n"; + print OUT " gunichar ch;\n"; + print OUT " gunichar mirrored_ch;\n"; + print OUT "} bidi_mirroring_table[] =\n"; + print OUT "{\n"; + $first = 1; + foreach $item (@bidimirror) + { + print OUT ",\n" unless $first; + $first = 0; + printf OUT " { 0x%04x, 0x%04x }", $item->[0], $item->[1]; + $bytes_out += 8; + } + print OUT "\n};\n\n"; + + print OUT "#endif /* CHARTABLES_H */\n"; + + close (OUT); + + printf STDERR "Generated %d bytes in tables\n", $bytes_out; +} + +# A fetch function for the type table. +sub fetch_type +{ + my ($index) = @_; + return $mappings{$type[$index]}; +} + +# A fetch function for the attribute table. +sub fetch_attr +{ + my ($index) = @_; + if (defined $value[$index]) + { + return sprintf ("0x%04x", $value[$index]); + } + else + { + return "0x0000"; + } +} + +sub print_row +{ + my ($start, $typsize, $fetcher) = @_; + + my ($i); + my (@values); + my ($flag) = 1; + my ($off); + + for ($off = 0; $off < 256; ++$off) + { + $values[$off] = $fetcher->($off + $start); + if ($values[$off] ne $values[0]) + { + $flag = 0; + } + } + if ($flag) + { + return $values[0] . " + G_UNICODE_MAX_TABLE_INDEX"; + } + + printf OUT ",\n" if ($table_index != 0); + printf OUT " { /* page %d, index %d */\n ", $start / 256, $table_index; + my ($column) = 4; + for ($i = $start; $i < $start + 256; ++$i) + { + print OUT ", " + if $i > $start; + my ($text) = $values[$i - $start]; + if (length ($text) + $column + 2 > 78) + { + print OUT "\n "; + $column = 4; + } + print OUT $text; + $column += length ($text) + 2; + } + print OUT "\n }"; + + $bytes_out += 256 * $typsize; + + return sprintf "%d /* page %d */", $table_index++, $start / 256; +} + +sub escape +{ + my ($string) = @_; + + my $escaped = unpack("H*", $string); + $escaped =~ s/(.{2})/\\x$1/g; + + return $escaped; +} + +# Returns the offset of $decomp in the offset string. Updates the +# referenced variables as appropriate. +sub handle_decomp ($$$$) +{ + my ($decomp, $decomp_offsets_ref, $decomp_string_ref, $decomp_string_offset_ref) = @_; + my $offset = "G_UNICODE_NOT_PRESENT_OFFSET"; + + if (defined $decomp) + { + if (defined $decomp_offsets_ref->{$decomp}) + { + $offset = $decomp_offsets_ref->{$decomp}; + } + else + { + $offset = ${$decomp_string_offset_ref}; + $decomp_offsets_ref->{$decomp} = $offset; + ${$decomp_string_ref} .= "\n \"" . &escape ($decomp) . "\\0\" /* offset ${$decomp_string_offset_ref} */"; + ${$decomp_string_offset_ref} += &length_in_bytes ($decomp) + 1; + } + } + + return $offset; +} + +# Generate the character decomposition header. +sub print_decomp +{ + my ($last) = @_; + my ($outfile) = "gunidecomp.h"; + + local ($bytes_out) = 0; + + print "Writing $outfile...\n"; + + open (OUT, "> $outfile") || exit 1; + + print OUT "/* This file is automatically generated. DO NOT EDIT!\n"; + print OUT " Instead, edit gen-unicode-tables.pl and re-run. */\n\n"; + + print OUT "#ifndef DECOMP_H\n"; + print OUT "#define DECOMP_H\n\n"; + + printf OUT "#define G_UNICODE_LAST_CHAR 0x%04x\n\n", $last; + + printf OUT "#define G_UNICODE_MAX_TABLE_INDEX (0x110000 / 256)\n\n"; + + my $last_part1 = ($pages_before_e0000 * 256) - 1; + printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1; + printf OUT "#define G_UNICODE_LAST_PAGE_PART1 %d\n\n", $pages_before_e0000 - 1; + + $NOT_PRESENT_OFFSET = 65535; + print OUT "#define G_UNICODE_NOT_PRESENT_OFFSET $NOT_PRESENT_OFFSET\n\n"; + + my ($count, @row); + $table_index = 0; + printf OUT "static const guchar cclass_data[][256] = {\n"; + for ($count = 0; $count <= $last; $count += 256) + { + $row[$count / 256] = &print_row ($count, 1, \&fetch_cclass); + } + printf OUT "\n};\n\n"; + + print OUT "static const gint16 combining_class_table_part1[$pages_before_e0000] = {\n"; + for ($count = 0; $count <= $last_part1; $count += 256) + { + print OUT ",\n" if $count > 0; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + print OUT "static const gint16 combining_class_table_part2[768] = {\n"; + for ($count = 0xE0000; $count <= $last; $count += 256) + { + print OUT ",\n" if $count > 0xE0000; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + print OUT "typedef struct\n{\n"; + print OUT " gunichar ch;\n"; + print OUT " guint16 canon_offset;\n"; + print OUT " guint16 compat_offset;\n"; + print OUT "} decomposition;\n\n"; + + print OUT "static const decomposition decomp_table[] =\n{\n"; + my ($iter); + my ($first) = 1; + my ($decomp_string) = ""; + my ($decomp_string_offset) = 0; + for ($count = 0; $count <= $last; ++$count) + { + if (defined $decompositions[$count]) + { + print OUT ",\n" + if ! $first; + $first = 0; + + my $canon_decomp; + my $compat_decomp; + + if (!$decompose_compat[$count]) { + $canon_decomp = make_decomp ($count, 0); + } + $compat_decomp = make_decomp ($count, 1); + + if (defined $canon_decomp && $compat_decomp eq $canon_decomp) { + undef $compat_decomp; + } + + my $canon_offset = handle_decomp ($canon_decomp, \%decomp_offsets, \$decomp_string, \$decomp_string_offset); + my $compat_offset = handle_decomp ($compat_decomp, \%decomp_offsets, \$decomp_string, \$decomp_string_offset); + + die if $decomp_string_offset > $NOT_PRESENT_OFFSET; + + printf OUT qq( { 0x%04x, $canon_offset, $compat_offset }), $count; + $bytes_out += 8; + } + } + print OUT "\n};\n\n"; + $bytes_out += $decomp_string_offset + 1; + + printf OUT "static const gchar decomp_expansion_string[] = %s;\n\n", $decomp_string; + + print OUT "#endif /* DECOMP_H */\n"; + + printf STDERR "Generated %d bytes in decomp tables\n", $bytes_out; +} + +sub print_line_break +{ + my ($last) = @_; + my ($outfile) = "gunibreak.h"; + + local ($bytes_out) = 0; + + print "Writing $outfile...\n"; + + open (OUT, "> $outfile"); + + print OUT "/* This file is automatically generated. DO NOT EDIT!\n"; + print OUT " Instead, edit gen-unicode-tables.pl and re-run. */\n\n"; + + print OUT "#ifndef BREAKTABLES_H\n"; + print OUT "#define BREAKTABLES_H\n\n"; + + print OUT "#define G_UNICODE_DATA_VERSION \"$ARGV[0]\"\n\n"; + + printf OUT "#define G_UNICODE_LAST_CHAR 0x%04X\n\n", $last; + + printf OUT "#define G_UNICODE_MAX_TABLE_INDEX 10000\n\n"; + + my $last_part1 = ($pages_before_e0000 * 256) - 1; + printf OUT "/* the last code point that should be looked up in break_property_table_part1 */\n"; + printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1; + + $table_index = 0; + printf OUT "static const gint8 break_property_data[][256] = {\n"; + for ($count = 0; $count <= $last; $count += 256) + { + $row[$count / 256] = &print_row ($count, 1, \&fetch_break_type); + } + printf OUT "\n};\n\n"; + + printf OUT "/* U+0000 through U+%04X */\n", $last_part1; + print OUT "static const gint16 break_property_table_part1[$pages_before_e0000] = {\n"; + for ($count = 0; $count <= $last_part1; $count += 256) + { + print OUT ",\n" if $count > 0; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + printf OUT "/* U+E0000 through U+%04X */\n", $last; + print OUT "static const gint16 break_property_table_part2[768] = {\n"; + for ($count = 0xE0000; $count <= $last; $count += 256) + { + print OUT ",\n" if $count > 0xE0000; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + + print OUT "#endif /* BREAKTABLES_H */\n"; + + close (OUT); + + printf STDERR "Generated %d bytes in break tables\n", $bytes_out; +} + + +# A fetch function for the break properties table. +sub fetch_break_type +{ + my ($index) = @_; + return $break_mappings{$break_props[$index]}; +} + +# Fetcher for combining class. +sub fetch_cclass +{ + my ($i) = @_; + return $cclass[$i]; +} + +# Expand a character decomposition recursively. +sub expand_decomp +{ + my ($code, $compat) = @_; + + my ($iter, $val); + my (@result) = (); + foreach $iter (split (' ', $decompositions[$code])) + { + $val = hex ($iter); + if (defined $decompositions[$val] && + ($compat || !$decompose_compat[$val])) + { + push (@result, &expand_decomp ($val, $compat)); + } + else + { + push (@result, $val); + } + } + + return @result; +} + +sub make_decomp +{ + my ($code, $compat) = @_; + + my $result = ""; + foreach $iter (&expand_decomp ($code, $compat)) + { + $result .= pack ("U", $iter); # to utf-8 + } + + $result; +} +# Generate special case data string from two fields +sub add_special_case +{ + my ($code, $single, $field1, $field2) = @_; + + @values = (defined $single ? $single : (), + (map { hex ($_) } split /\s+/, $field1), + 0, + (map { hex ($_) } split /\s+/, $field2)); + $result = ""; + + + for $value (@values) { + $result .= pack ("U", $value); # to utf-8 + } + + push @special_case_offsets, $special_case_offset; + + # We encode special cases up in the 0x1000000 space + $value[$code] = 0x1000000 + $special_case_offset; + + $special_case_offset += 1 + &length_in_bytes ($result); + + push @special_cases, &escape ($result); +} + +sub output_special_case_table +{ + my $out = shift; + + print $out <<EOT; + +/* Table of special cases for case conversion; each record contains + * First, the best single character mapping to lowercase if Lu, + * and to uppercase if Ll, followed by the output mapping for the two cases + * other than the case of the codepoint, in the order [Ll],[Lu],[Lt], + * encoded in UTF-8, separated and terminated by a null character. + */ +static const gchar special_case_table[] = { +EOT + + my $i = 0; + for $case (@special_cases) { + print $out qq( "$case\\0" /* offset ${special_case_offsets[$i]} */\n); + $i++; + } + + print $out <<EOT; +}; + +EOT + + print STDERR "Generated " . ($special_case_offset + 1) . " bytes in special case table\n"; +} + +sub enumerate_ordered +{ + my ($array) = @_; + + my $n = 0; + for my $code (sort { $a <=> $b } keys %$array) { + if ($array->{$code} == 1) { + delete $array->{$code}; + next; + } + $array->{$code} = $n++; + } + + return $n; +} + +sub output_composition_table +{ + print STDERR "Generating composition table\n"; + + local ($bytes_out) = 0; + + my %first; + my %second; + + # First we need to go through and remove decompositions + # starting with a non-starter, and single-character + # decompositions. At the same time, record + # the first and second character of each decomposition + + for $code (keys %compositions) + { + @values = map { hex ($_) } split /\s+/, $compositions{$code}; + + # non-starters + if ($cclass[$values[0]]) { + delete $compositions{$code}; + next; + } + + # single-character decompositions + if (@values == 1) { + delete $compositions{$code}; + next; + } + + if (@values != 2) { + die "$code has more than two elements in its decomposition!\n"; + } + + if (exists $first{$values[0]}) { + $first{$values[0]}++; + } else { + $first{$values[0]} = 1; + } + } + + # Assign integer indices, removing singletons + my $n_first = enumerate_ordered (\%first); + + # Now record the second character of each (non-singleton) decomposition + for $code (keys %compositions) { + @values = map { hex ($_) } split /\s+/, $compositions{$code}; + + if (exists $first{$values[0]}) { + if (exists $second{$values[1]}) { + $second{$values[1]}++; + } else { + $second{$values[1]} = 1; + } + } + } + + # Assign integer indices, removing duplicate + my $n_second = enumerate_ordered (\%second); + + # Build reverse table + + my @first_singletons; + my @second_singletons; + my %reverse; + for $code (keys %compositions) { + @values = map { hex ($_) } split /\s+/, $compositions{$code}; + + my $first = $first{$values[0]}; + my $second = $second{$values[1]}; + + if (defined $first && defined $second) { + $reverse{"$first|$second"} = $code; + } elsif (!defined $first) { + push @first_singletons, [ $values[0], $values[1], $code ]; + } else { + push @second_singletons, [ $values[1], $values[0], $code ]; + } + } + + @first_singletons = sort { $a->[0] <=> $b->[0] } @first_singletons; + @second_singletons = sort { $a->[0] <=> $b->[0] } @second_singletons; + + my %vals; + + open OUT, ">gunicomp.h" or die "Cannot open gunicomp.h: $!\n"; + + print OUT "/* This file is automatically generated. DO NOT EDIT!\n"; + print OUT " Instead, edit gen-unicode-tables.pl and re-run. */\n\n"; + + # Assign values in lookup table for all code points involved + + my $total = 1; + my $last = 0; + printf OUT "#define COMPOSE_FIRST_START %d\n", $total; + for $code (keys %first) { + $vals{$code} = $first{$code} + $total; + $last = $code if $code > $last; + } + $total += $n_first; + $i = 0; + printf OUT "#define COMPOSE_FIRST_SINGLE_START %d\n", $total; + for $record (@first_singletons) { + my $code = $record->[0]; + $vals{$code} = $i++ + $total; + $last = $code if $code > $last; + } + $total += @first_singletons; + printf OUT "#define COMPOSE_SECOND_START %d\n", $total; + for $code (keys %second) { + $vals{$code} = $second{$code} + $total; + $last = $code if $code > $last; + } + $total += $n_second; + $i = 0; + printf OUT "#define COMPOSE_SECOND_SINGLE_START %d\n\n", $total; + for $record (@second_singletons) { + my $code = $record->[0]; + $vals{$code} = $i++ + $total; + $last = $code if $code > $last; + } + + printf OUT "#define COMPOSE_TABLE_LAST %d\n\n", $last / 256; + + # Output lookup table + + my @row; + $table_index = 0; + printf OUT "static const guint16 compose_data[][256] = {\n"; + for (my $count = 0; $count <= $last; $count += 256) + { + $row[$count / 256] = &print_row ($count, 2, sub { exists $vals{$_[0]} ? $vals{$_[0]} : 0; }); + } + printf OUT "\n};\n\n"; + + print OUT "static const gint16 compose_table[COMPOSE_TABLE_LAST + 1] = {\n"; + for (my $count = 0; $count <= $last; $count += 256) + { + print OUT ",\n" if $count > 0; + print OUT " ", $row[$count / 256]; + $bytes_out += 2; + } + print OUT "\n};\n\n"; + + # Output first singletons + + print OUT "static const guint16 compose_first_single[][2] = {\n"; + $i = 0; + for $record (@first_singletons) { + if ($record->[1] > 0xFFFF or $record->[2] > 0xFFFF) { + die "time to switch compose_first_single to gunichar" ; + } + print OUT ",\n" if $i++ > 0; + printf OUT " { %#06x, %#06x }", $record->[1], $record->[2]; + } + print OUT "\n};\n"; + + $bytes_out += @first_singletons * 4; + + # Output second singletons + + print OUT "static const guint16 compose_second_single[][2] = {\n"; + $i = 0; + for $record (@second_singletons) { + if ($record->[1] > 0xFFFF or $record->[2] > 0xFFFF) { + die "time to switch compose_second_single to gunichar"; + } + print OUT ",\n" if $i++ > 0; + printf OUT " { %#06x, %#06x }", $record->[1], $record->[2]; + } + print OUT "\n};\n"; + + $bytes_out += @second_singletons * 4; + + # Output array of composition pairs + + print OUT <<EOT; +static const guint16 compose_array[$n_first][$n_second] = { +EOT + + for (my $i = 0; $i < $n_first; $i++) { + print OUT ",\n" if $i; + print OUT " { "; + for (my $j = 0; $j < $n_second; $j++) { + print OUT ", " if $j; + if (exists $reverse{"$i|$j"}) { + if ($reverse{"$i|$j"} > 0xFFFF) { + die "time to switch compose_array to gunichar" ; + } + printf OUT "0x%04x", $reverse{"$i|$j"}; + } else { + print OUT " 0"; + } + } + print OUT " }"; + } + print OUT "\n"; + + print OUT <<EOT; +}; +EOT + + $bytes_out += $n_first * $n_second * 2; + + printf STDERR "Generated %d bytes in compose tables\n", $bytes_out; +} + +sub output_casefold_table +{ + my $out = shift; + + print $out <<EOT; + +/* Table of casefolding cases that can't be derived by lowercasing + */ +static const struct { + guint16 ch; + gchar data[$casefoldlen]; +} casefold_table[] = { +EOT + + @casefold = sort { $a->[0] <=> $b->[0] } @casefold; + + for $case (@casefold) + { + $code = $case->[0]; + $string = $case->[1]; + + if ($code > 0xFFFF) { + die "time to switch casefold_table to gunichar" ; + } + + print $out sprintf(qq( { 0x%04x, "$string" },\n), $code); + + } + + print $out <<EOT; +}; + +EOT + + my $recordlen = (2+$casefoldlen+1) & ~1; + printf "Generated %d bytes for casefold table\n", $recordlen * @casefold; +} + + + diff --git a/lib/gl/Makefile.am b/lib/gl/Makefile.am new file mode 100644 index 0000000..b54e974 --- /dev/null +++ b/lib/gl/Makefile.am @@ -0,0 +1,355 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp + +AUTOMAKE_OPTIONS = 1.5 gnits + +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST += m4/gnulib-cache.m4 + +AM_CPPFLAGS = +AM_CFLAGS = + +noinst_LTLIBRARIES += libgnu.la + +libgnu_la_SOURCES = +libgnu_la_LIBADD = $(lgl_LTLIBOBJS) +libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) +EXTRA_libgnu_la_SOURCES = +libgnu_la_LDFLAGS = $(AM_LDFLAGS) + +## begin gnulib module c-ctype + +libgnu_la_SOURCES += c-ctype.h c-ctype.c + +## end gnulib module c-ctype + +## begin gnulib module c-strcase + +libgnu_la_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c + +## end gnulib module c-strcase + +## begin gnulib module gettext-h + +libgnu_la_SOURCES += gettext.h + +## end gnulib module gettext-h + +## begin gnulib module gperf + +GPERF = gperf + +## end gnulib module gperf + +## begin gnulib module havelib + + +EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath + +## end gnulib module havelib + +## begin gnulib module iconv_open + +BUILT_SOURCES += $(ICONV_H) + +# We need the following in order to create <iconv.h> when the system +# doesn't have one that works with the given compiler. +iconv.h: iconv.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \ + -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \ + -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \ + -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \ + -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \ + < $(srcdir)/iconv.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += iconv.h iconv.h-t + +iconv_open-aix.h: iconv_open-aix.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t + mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h +iconv_open-hpux.h: iconv_open-hpux.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t + mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h +iconv_open-irix.h: iconv_open-irix.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t + mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h +iconv_open-osf.h: iconv_open-osf.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t + mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h +BUILT_SOURCES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h +MOSTLYCLEANFILES += iconv_open-aix.h-t iconv_open-hpux.h-t iconv_open-irix.h-t iconv_open-osf.h-t +MAINTAINERCLEANFILES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h +EXTRA_DIST += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h + +EXTRA_DIST += iconv.in.h iconv_open-aix.gperf iconv_open-hpux.gperf iconv_open-irix.gperf iconv_open-osf.gperf iconv_open.c + +EXTRA_libgnu_la_SOURCES += iconv_open.c + +## end gnulib module iconv_open + +## begin gnulib module lib-symbol-visibility + +# The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the +# compilation of all sources that make up the library. This line here does it +# only for the gnulib part of it. The developer is responsible for adding +# $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. +AM_CFLAGS += $(CFLAG_VISIBILITY) + +## end gnulib module lib-symbol-visibility + +## begin gnulib module link-warning + +LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h + +EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h + +## end gnulib module link-warning + +## begin gnulib module stdbool + +BUILT_SOURCES += $(STDBOOL_H) + +# We need the following in order to create <stdbool.h> when the system +# doesn't have one that works. +stdbool.h: stdbool.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += stdbool.h stdbool.h-t + +EXTRA_DIST += stdbool.in.h + +## end gnulib module stdbool + +## begin gnulib module stdint + +BUILT_SOURCES += $(STDINT_H) + +# We need the following in order to create <stdint.h> when the system +# doesn't have one that works with the given compiler. +stdint.h: stdint.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ + -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ + -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ + -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ + -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ + -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ + -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ + -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ + -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ + -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ + -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ + -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ + -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ + -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ + -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ + -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ + -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ + < $(srcdir)/stdint.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += stdint.h stdint.h-t + +EXTRA_DIST += stdint.in.h + +## end gnulib module stdint + +## begin gnulib module striconv + +libgnu_la_SOURCES += striconv.h striconv.c +if GL_COND_LIBTOOL +libgnu_la_LDFLAGS += $(LTLIBICONV) +endif + +## end gnulib module striconv + +## begin gnulib module string + +BUILT_SOURCES += string.h + +# We need the following in order to create <string.h> when the system +# doesn't have one that works with the given compiler. +string.h: string.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ + -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \ + -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \ + -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \ + -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \ + -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \ + -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \ + -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \ + -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \ + -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \ + -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \ + -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \ + -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ + -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ + -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ + -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ + -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ + -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ + -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \ + -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \ + -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \ + -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \ + -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \ + -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \ + -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \ + -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \ + -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \ + -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \ + -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \ + -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \ + -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \ + -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \ + -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \ + -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ + -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ + -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ + -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ + -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ + -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ + -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ + -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ + -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ + -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ + -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ + -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ + -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ + -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ + -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ + -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ + -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ + -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ + -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ + -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ + -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ + -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/string.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += string.h string.h-t + +EXTRA_DIST += string.in.h + +## end gnulib module string + +## begin gnulib module strverscmp + + +EXTRA_DIST += strverscmp.c + +EXTRA_libgnu_la_SOURCES += strverscmp.c + +## end gnulib module strverscmp + +## begin gnulib module wchar + +BUILT_SOURCES += $(WCHAR_H) + +# We need the following in order to create <wchar.h> when the system +# version does not work standalone. +wchar.h: wchar.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ + -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ + -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \ + -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \ + -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \ + -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \ + -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \ + -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \ + -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \ + -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \ + -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \ + -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \ + -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \ + -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ + -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ + -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ + -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ + -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ + -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ + -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ + -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ + -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ + -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ + -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ + -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ + -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ + -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ + -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ + -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ + -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ + -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ + -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ + -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ + -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ + -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ + -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ + -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/wchar.in.h; \ + } > $@-t + mv $@-t $@ +MOSTLYCLEANFILES += wchar.h wchar.h-t + +EXTRA_DIST += wchar.in.h + +## end gnulib module wchar + + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : diff --git a/lib/gl/Makefile.in b/lib/gl/Makefile.in new file mode 100644 index 0000000..66923c3 --- /dev/null +++ b/lib/gl/Makefile.in @@ -0,0 +1,1191 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@GL_COND_LIBTOOL_TRUE@am__append_1 = $(LTLIBICONV) +subdir = lib/gl +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +LTLIBRARIES = $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am_libgnu_la_OBJECTS = c-ctype.lo c-strcasecmp.lo c-strncasecmp.lo \ + striconv.lo +libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) +libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) +DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.5 gnits +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = libgnu.la +EXTRA_DIST = m4/gnulib-cache.m4 $(top_srcdir)/build-aux/config.rpath \ + iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h \ + iconv_open-osf.h iconv.in.h iconv_open-aix.gperf \ + iconv_open-hpux.gperf iconv_open-irix.gperf \ + iconv_open-osf.gperf iconv_open.c \ + $(top_srcdir)/build-aux/link-warning.h stdbool.in.h \ + stdint.in.h string.in.h strverscmp.c wchar.in.h +BUILT_SOURCES = $(ICONV_H) iconv_open-aix.h iconv_open-hpux.h \ + iconv_open-irix.h iconv_open-osf.h $(STDBOOL_H) $(STDINT_H) \ + string.h $(WCHAR_H) +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump iconv.h iconv.h-t \ + iconv_open-aix.h-t iconv_open-hpux.h-t iconv_open-irix.h-t \ + iconv_open-osf.h-t stdbool.h stdbool.h-t stdint.h stdint.h-t \ + string.h string.h-t wchar.h wchar.h-t +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = iconv_open-aix.h iconv_open-hpux.h \ + iconv_open-irix.h iconv_open-osf.h +AM_CPPFLAGS = + +# The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the +# compilation of all sources that make up the library. This line here does it +# only for the gnulib part of it. The developer is responsible for adding +# $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. +AM_CFLAGS = $(CFLAG_VISIBILITY) +libgnu_la_SOURCES = c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \ + c-strncasecmp.c gettext.h striconv.h striconv.c +libgnu_la_LIBADD = $(lgl_LTLIBOBJS) +libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) +EXTRA_libgnu_la_SOURCES = iconv_open.c strverscmp.c +libgnu_la_LDFLAGS = $(AM_LDFLAGS) $(am__append_1) +GPERF = gperf +LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/gl/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/gl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) + $(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-ctype.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strcasecmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strncasecmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconv_open.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/striconv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am + + +# We need the following in order to create <iconv.h> when the system +# doesn't have one that works with the given compiler. +iconv.h: iconv.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \ + -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \ + -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \ + -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \ + -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \ + < $(srcdir)/iconv.in.h; \ + } > $@-t + mv $@-t $@ + +iconv_open-aix.h: iconv_open-aix.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t + mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h +iconv_open-hpux.h: iconv_open-hpux.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t + mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h +iconv_open-irix.h: iconv_open-irix.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t + mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h +iconv_open-osf.h: iconv_open-osf.gperf + $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t + mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h + +# We need the following in order to create <stdbool.h> when the system +# doesn't have one that works. +stdbool.h: stdbool.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create <stdint.h> when the system +# doesn't have one that works with the given compiler. +stdint.h: stdint.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ + -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ + -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ + -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ + -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ + -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ + -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ + -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ + -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ + -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ + -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ + -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ + -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ + -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ + -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ + -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ + -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ + -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ + < $(srcdir)/stdint.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create <string.h> when the system +# doesn't have one that works with the given compiler. +string.h: string.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ + -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \ + -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \ + -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \ + -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \ + -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \ + -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \ + -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \ + -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \ + -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \ + -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \ + -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \ + -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \ + -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \ + -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \ + -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \ + -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \ + -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \ + -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \ + -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \ + -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \ + -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \ + -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \ + -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \ + -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \ + -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \ + -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \ + -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \ + -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \ + -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \ + -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \ + -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \ + -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \ + -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ + -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ + -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ + -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ + -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ + -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ + -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ + -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ + -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ + -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ + -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ + -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ + -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ + -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ + -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \ + -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ + -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ + -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ + -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ + -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ + -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ + -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ + -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/string.in.h; \ + } > $@-t + mv $@-t $@ + +# We need the following in order to create <wchar.h> when the system +# version does not work standalone. +wchar.h: wchar.in.h + rm -f $@-t $@ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ + -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ + -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \ + -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \ + -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \ + -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \ + -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \ + -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \ + -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \ + -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \ + -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \ + -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \ + -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \ + -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ + -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ + -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ + -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ + -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ + -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ + -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ + -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ + -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ + -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ + -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ + -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ + -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ + -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ + -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ + -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ + -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ + -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ + -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ + -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ + -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ + -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ + -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ + -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ + < $(srcdir)/wchar.in.h; \ + } > $@-t + mv $@-t $@ + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + 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: diff --git a/lib/gl/c-ctype.c b/lib/gl/c-ctype.c new file mode 100644 index 0000000..1c685c5 --- /dev/null +++ b/lib/gl/c-ctype.c @@ -0,0 +1,396 @@ +/* Character handling in C locale. + + Copyright 2000-2003, 2006 Free Software Foundation, Inc. + +This program 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 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include <config.h> + +/* Specification. */ +#define NO_C_CTYPE_MACROS +#include "c-ctype.h" + +/* The function isascii is not locale dependent. Its use in EBCDIC is + questionable. */ +bool +c_isascii (int c) +{ + return (c >= 0x00 && c <= 0x7f); +} + +bool +c_isalnum (int c) +{ +#if C_CTYPE_CONSECUTIVE_DIGITS \ + && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII + return ((c >= '0' && c <= '9') + || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')); +#else + return ((c >= '0' && c <= '9') + || (c >= 'A' && c <= 'Z') + || (c >= 'a' && c <= 'z')); +#endif +#else + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isalpha (int c) +{ +#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII + return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'); +#else + return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); +#endif +#else + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isblank (int c) +{ + return (c == ' ' || c == '\t'); +} + +bool +c_iscntrl (int c) +{ +#if C_CTYPE_ASCII + return ((c & ~0x1f) == 0 || c == 0x7f); +#else + switch (c) + { + case ' ': case '!': case '"': case '#': case '$': case '%': + case '&': case '\'': case '(': case ')': case '*': case '+': + case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': case '?': + case '@': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case '[': case '\\': case ']': case '^': case '_': case '`': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case '{': case '|': case '}': case '~': + return 0; + default: + return 1; + } +#endif +} + +bool +c_isdigit (int c) +{ +#if C_CTYPE_CONSECUTIVE_DIGITS + return (c >= '0' && c <= '9'); +#else + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + return 1; + default: + return 0; + } +#endif +} + +bool +c_islower (int c) +{ +#if C_CTYPE_CONSECUTIVE_LOWERCASE + return (c >= 'a' && c <= 'z'); +#else + switch (c) + { + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isgraph (int c) +{ +#if C_CTYPE_ASCII + return (c >= '!' && c <= '~'); +#else + switch (c) + { + case '!': case '"': case '#': case '$': case '%': case '&': + case '\'': case '(': case ')': case '*': case '+': case ',': + case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': case '?': + case '@': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case '[': case '\\': case ']': case '^': case '_': case '`': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case '{': case '|': case '}': case '~': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isprint (int c) +{ +#if C_CTYPE_ASCII + return (c >= ' ' && c <= '~'); +#else + switch (c) + { + case ' ': case '!': case '"': case '#': case '$': case '%': + case '&': case '\'': case '(': case ')': case '*': case '+': + case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': case '?': + case '@': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case '[': case '\\': case ']': case '^': case '_': case '`': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case '{': case '|': case '}': case '~': + return 1; + default: + return 0; + } +#endif +} + +bool +c_ispunct (int c) +{ +#if C_CTYPE_ASCII + return ((c >= '!' && c <= '~') + && !((c >= '0' && c <= '9') + || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'))); +#else + switch (c) + { + case '!': case '"': case '#': case '$': case '%': case '&': + case '\'': case '(': case ')': case '*': case '+': case ',': + case '-': case '.': case '/': + case ':': case ';': case '<': case '=': case '>': case '?': + case '@': + case '[': case '\\': case ']': case '^': case '_': case '`': + case '{': case '|': case '}': case '~': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isspace (int c) +{ + return (c == ' ' || c == '\t' + || c == '\n' || c == '\v' || c == '\f' || c == '\r'); +} + +bool +c_isupper (int c) +{ +#if C_CTYPE_CONSECUTIVE_UPPERCASE + return (c >= 'A' && c <= 'Z'); +#else + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + return 1; + default: + return 0; + } +#endif +} + +bool +c_isxdigit (int c) +{ +#if C_CTYPE_CONSECUTIVE_DIGITS \ + && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII + return ((c >= '0' && c <= '9') + || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F')); +#else + return ((c >= '0' && c <= '9') + || (c >= 'A' && c <= 'F') + || (c >= 'a' && c <= 'f')); +#endif +#else + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + return 1; + default: + return 0; + } +#endif +} + +int +c_tolower (int c) +{ +#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE + return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); +#else + switch (c) + { + case 'A': return 'a'; + case 'B': return 'b'; + case 'C': return 'c'; + case 'D': return 'd'; + case 'E': return 'e'; + case 'F': return 'f'; + case 'G': return 'g'; + case 'H': return 'h'; + case 'I': return 'i'; + case 'J': return 'j'; + case 'K': return 'k'; + case 'L': return 'l'; + case 'M': return 'm'; + case 'N': return 'n'; + case 'O': return 'o'; + case 'P': return 'p'; + case 'Q': return 'q'; + case 'R': return 'r'; + case 'S': return 's'; + case 'T': return 't'; + case 'U': return 'u'; + case 'V': return 'v'; + case 'W': return 'w'; + case 'X': return 'x'; + case 'Y': return 'y'; + case 'Z': return 'z'; + default: return c; + } +#endif +} + +int +c_toupper (int c) +{ +#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE + return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); +#else + switch (c) + { + case 'a': return 'A'; + case 'b': return 'B'; + case 'c': return 'C'; + case 'd': return 'D'; + case 'e': return 'E'; + case 'f': return 'F'; + case 'g': return 'G'; + case 'h': return 'H'; + case 'i': return 'I'; + case 'j': return 'J'; + case 'k': return 'K'; + case 'l': return 'L'; + case 'm': return 'M'; + case 'n': return 'N'; + case 'o': return 'O'; + case 'p': return 'P'; + case 'q': return 'Q'; + case 'r': return 'R'; + case 's': return 'S'; + case 't': return 'T'; + case 'u': return 'U'; + case 'v': return 'V'; + case 'w': return 'W'; + case 'x': return 'X'; + case 'y': return 'Y'; + case 'z': return 'Z'; + default: return c; + } +#endif +} diff --git a/lib/gl/c-ctype.h b/lib/gl/c-ctype.h new file mode 100644 index 0000000..2bce9d1 --- /dev/null +++ b/lib/gl/c-ctype.h @@ -0,0 +1,295 @@ +/* Character handling in C locale. + + These functions work like the corresponding functions in <ctype.h>, + except that they have the C (POSIX) locale hardwired, whereas the + <ctype.h> functions' behaviour depends on the current locale set via + setlocale. + + Copyright (C) 2000-2003, 2006, 2008 Free Software Foundation, Inc. + +This program 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 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef C_CTYPE_H +#define C_CTYPE_H + +#include <stdbool.h> + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* The functions defined in this file assume the "C" locale and a character + set without diacritics (ASCII-US or EBCDIC-US or something like that). + Even if the "C" locale on a particular system is an extension of the ASCII + character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it + is ISO-8859-1), the functions in this file recognize only the ASCII + characters. */ + + +/* Check whether the ASCII optimizations apply. */ + +/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that + '0', '1', ..., '9' have consecutive integer values. */ +#define C_CTYPE_CONSECUTIVE_DIGITS 1 + +#if ('A' <= 'Z') \ + && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \ + && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \ + && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \ + && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \ + && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \ + && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \ + && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \ + && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \ + && ('Y' + 1 == 'Z') +#define C_CTYPE_CONSECUTIVE_UPPERCASE 1 +#endif + +#if ('a' <= 'z') \ + && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \ + && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \ + && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \ + && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \ + && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \ + && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \ + && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \ + && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \ + && ('y' + 1 == 'z') +#define C_CTYPE_CONSECUTIVE_LOWERCASE 1 +#endif + +#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 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) && ('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) && ('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) +/* The character set is ASCII or one of its variants or extensions, not EBCDIC. + Testing the value of '\n' and '\r' is not relevant. */ +#define C_CTYPE_ASCII 1 +#endif + + +/* Function declarations. */ + +/* Unlike the functions in <ctype.h>, which require an argument in the range + of the 'unsigned char' type, the functions here operate on values that are + in the 'unsigned char' range or in the 'char' range. In other words, + when you have a 'char' value, you need to cast it before using it as + argument to a <ctype.h> function: + + const char *s = ...; + if (isalpha ((unsigned char) *s)) ... + + but you don't need to cast it for the functions defined in this file: + + const char *s = ...; + if (c_isalpha (*s)) ... + */ + +extern bool c_isascii (int c); /* not locale dependent */ + +extern bool c_isalnum (int c); +extern bool c_isalpha (int c); +extern bool c_isblank (int c); +extern bool c_iscntrl (int c); +extern bool c_isdigit (int c); +extern bool c_islower (int c); +extern bool c_isgraph (int c); +extern bool c_isprint (int c); +extern bool c_ispunct (int c); +extern bool c_isspace (int c); +extern bool c_isupper (int c); +extern bool c_isxdigit (int c); + +extern int c_tolower (int c); +extern int c_toupper (int c); + + +#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS + +/* ASCII optimizations. */ + +#undef c_isascii +#define c_isascii(c) \ + ({ int __c = (c); \ + (__c >= 0x00 && __c <= 0x7f); \ + }) + +#if C_CTYPE_CONSECUTIVE_DIGITS \ + && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII +#undef c_isalnum +#define c_isalnum(c) \ + ({ int __c = (c); \ + ((__c >= '0' && __c <= '9') \ + || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \ + }) +#else +#undef c_isalnum +#define c_isalnum(c) \ + ({ int __c = (c); \ + ((__c >= '0' && __c <= '9') \ + || (__c >= 'A' && __c <= 'Z') \ + || (__c >= 'a' && __c <= 'z')); \ + }) +#endif +#endif + +#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII +#undef c_isalpha +#define c_isalpha(c) \ + ({ int __c = (c); \ + ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \ + }) +#else +#undef c_isalpha +#define c_isalpha(c) \ + ({ int __c = (c); \ + ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \ + }) +#endif +#endif + +#undef c_isblank +#define c_isblank(c) \ + ({ int __c = (c); \ + (__c == ' ' || __c == '\t'); \ + }) + +#if C_CTYPE_ASCII +#undef c_iscntrl +#define c_iscntrl(c) \ + ({ int __c = (c); \ + ((__c & ~0x1f) == 0 || __c == 0x7f); \ + }) +#endif + +#if C_CTYPE_CONSECUTIVE_DIGITS +#undef c_isdigit +#define c_isdigit(c) \ + ({ int __c = (c); \ + (__c >= '0' && __c <= '9'); \ + }) +#endif + +#if C_CTYPE_CONSECUTIVE_LOWERCASE +#undef c_islower +#define c_islower(c) \ + ({ int __c = (c); \ + (__c >= 'a' && __c <= 'z'); \ + }) +#endif + +#if C_CTYPE_ASCII +#undef c_isgraph +#define c_isgraph(c) \ + ({ int __c = (c); \ + (__c >= '!' && __c <= '~'); \ + }) +#endif + +#if C_CTYPE_ASCII +#undef c_isprint +#define c_isprint(c) \ + ({ int __c = (c); \ + (__c >= ' ' && __c <= '~'); \ + }) +#endif + +#if C_CTYPE_ASCII +#undef c_ispunct +#define c_ispunct(c) \ + ({ int _c = (c); \ + (c_isgraph (_c) && ! c_isalnum (_c)); \ + }) +#endif + +#undef c_isspace +#define c_isspace(c) \ + ({ int __c = (c); \ + (__c == ' ' || __c == '\t' \ + || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \ + }) + +#if C_CTYPE_CONSECUTIVE_UPPERCASE +#undef c_isupper +#define c_isupper(c) \ + ({ int __c = (c); \ + (__c >= 'A' && __c <= 'Z'); \ + }) +#endif + +#if C_CTYPE_CONSECUTIVE_DIGITS \ + && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#if C_CTYPE_ASCII +#undef c_isxdigit +#define c_isxdigit(c) \ + ({ int __c = (c); \ + ((__c >= '0' && __c <= '9') \ + || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \ + }) +#else +#undef c_isxdigit +#define c_isxdigit(c) \ + ({ int __c = (c); \ + ((__c >= '0' && __c <= '9') \ + || (__c >= 'A' && __c <= 'F') \ + || (__c >= 'a' && __c <= 'f')); \ + }) +#endif +#endif + +#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE +#undef c_tolower +#define c_tolower(c) \ + ({ int __c = (c); \ + (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \ + }) +#undef c_toupper +#define c_toupper(c) \ + ({ int __c = (c); \ + (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \ + }) +#endif + +#endif /* optimizing for speed */ + + +#ifdef __cplusplus +} +#endif + +#endif /* C_CTYPE_H */ diff --git a/lib/gl/c-strcase.h b/lib/gl/c-strcase.h new file mode 100644 index 0000000..6d92e26 --- /dev/null +++ b/lib/gl/c-strcase.h @@ -0,0 +1,55 @@ +/* Case-insensitive string comparison functions in C locale. + Copyright (C) 1995-1996, 2001, 2003, 2005 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef C_STRCASE_H +#define C_STRCASE_H + +#include <stddef.h> + + +/* The functions defined in this file assume the "C" locale and a character + set without diacritics (ASCII-US or EBCDIC-US or something like that). + Even if the "C" locale on a particular system is an extension of the ASCII + character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it + is ISO-8859-1), the functions in this file recognize only the ASCII + characters. More precisely, one of the string arguments must be an ASCII + string; the other one can also contain non-ASCII characters (but then + the comparison result will be nonzero). */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Compare strings S1 and S2, ignoring case, returning less than, equal to or + greater than zero if S1 is lexicographically less than, equal to or greater + than S2. */ +extern int c_strcasecmp (const char *s1, const char *s2); + +/* Compare no more than N characters of strings S1 and S2, ignoring case, + returning less than, equal to or greater than zero if S1 is + lexicographically less than, equal to or greater than S2. */ +extern int c_strncasecmp (const char *s1, const char *s2, size_t n); + + +#ifdef __cplusplus +} +#endif + + +#endif /* C_STRCASE_H */ diff --git a/lib/gl/c-strcasecmp.c b/lib/gl/c-strcasecmp.c new file mode 100644 index 0000000..8c006ca --- /dev/null +++ b/lib/gl/c-strcasecmp.c @@ -0,0 +1,57 @@ +/* c-strcasecmp.c -- case insensitive string comparator in C locale + Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include <config.h> + +/* Specification. */ +#include "c-strcase.h" + +#include <limits.h> + +#include "c-ctype.h" + +int +c_strcasecmp (const char *s1, const char *s2) +{ + register const unsigned char *p1 = (const unsigned char *) s1; + register const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + c1 = c_tolower (*p1); + c2 = c_tolower (*p2); + + if (c1 == '\0') + break; + + ++p1; + ++p2; + } + while (c1 == c2); + + if (UCHAR_MAX <= INT_MAX) + return c1 - c2; + else + /* On machines where 'char' and 'int' are types of the same size, the + difference of two 'unsigned char' values - including the sign bit - + doesn't fit in an 'int'. */ + return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0); +} diff --git a/lib/gl/c-strncasecmp.c b/lib/gl/c-strncasecmp.c new file mode 100644 index 0000000..03f10f6 --- /dev/null +++ b/lib/gl/c-strncasecmp.c @@ -0,0 +1,57 @@ +/* c-strncasecmp.c -- case insensitive string comparator in C locale + Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include <config.h> + +/* Specification. */ +#include "c-strcase.h" + +#include <limits.h> + +#include "c-ctype.h" + +int +c_strncasecmp (const char *s1, const char *s2, size_t n) +{ + register const unsigned char *p1 = (const unsigned char *) s1; + register const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + + if (p1 == p2 || n == 0) + return 0; + + do + { + c1 = c_tolower (*p1); + c2 = c_tolower (*p2); + + if (--n == 0 || c1 == '\0') + break; + + ++p1; + ++p2; + } + while (c1 == c2); + + if (UCHAR_MAX <= INT_MAX) + return c1 - c2; + else + /* On machines where 'char' and 'int' are types of the same size, the + difference of two 'unsigned char' values - including the sign bit - + doesn't fit in an 'int'. */ + return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0); +} diff --git a/lib/gl/gettext.h b/lib/gl/gettext.h new file mode 100644 index 0000000..56d4a21 --- /dev/null +++ b/lib/gl/gettext.h @@ -0,0 +1,174 @@ +/* Convenience header for conditional use of GNU <libintl.h>. + Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include <libintl.h> + +/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by + the gettext() and ngettext() macros. This is an alternative to calling + textdomain(), and is useful for libraries. */ +# ifdef DEFAULT_TEXT_DOMAIN +# undef gettext +# define gettext(Msgid) \ + dgettext (DEFAULT_TEXT_DOMAIN, Msgid) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) +# endif + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of <locale.h> a NOP. We don't include <libintl.h> + as well because people using "gettext.h" will not include <libintl.h>, + and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> + is OK. */ +#if defined(__sun) +# include <locale.h> +#endif + +/* Many header files from the libstdc++ coming with g++ 3.3 or newer include + <libintl.h>, which chokes if dcgettext is defined as a macro. So include + it now, to make later inclusions of <libintl.h> a NOP. */ +#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) +# include <cstdlib> +# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H +# include <libintl.h> +# endif +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# undef gettext +# define gettext(Msgid) ((const char *) (Msgid)) +# undef dgettext +# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) +# undef dcgettext +# define dcgettext(Domainname, Msgid, Category) \ + ((void) (Category), dgettext (Domainname, Msgid)) +# undef ngettext +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 \ + ? ((void) (Msgid2), (const char *) (Msgid1)) \ + : ((void) (Msgid1), (const char *) (Msgid2))) +# undef dngettext +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) +# undef dcngettext +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N)) +# undef textdomain +# define textdomain(Domainname) ((const char *) (Domainname)) +# undef bindtextdomain +# define bindtextdomain(Domainname, Dirname) \ + ((void) (Domainname), (const char *) (Dirname)) +# undef bind_textdomain_codeset +# define bind_textdomain_codeset(Domainname, Codeset) \ + ((void) (Domainname), (const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +/* The separator between msgctxt and msgid in a .mo file. */ +#define GETTEXT_CONTEXT_GLUE "\004" + +/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a + MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be + short and rarely need to change. + The letter 'p' stands for 'particular' or 'special'. */ +#ifdef DEFAULT_TEXT_DOMAIN +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#else +# define pgettext(Msgctxt, Msgid) \ + pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#endif +#define dpgettext(Domainname, Msgctxt, Msgid) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) +#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ + pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) +#ifdef DEFAULT_TEXT_DOMAIN +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#else +# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#endif +#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) +#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ + npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +pgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + int category) +{ + const char *translation = dcgettext (domain, msg_ctxt_id, category); + if (translation == msg_ctxt_id) + return msgid; + else + return translation; +} + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static const char * +npgettext_aux (const char *domain, + const char *msg_ctxt_id, const char *msgid, + const char *msgid_plural, unsigned long int n, + int category) +{ + const char *translation = + dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); + if (translation == msg_ctxt_id || translation == msgid_plural) + return (n == 1 ? msgid : msgid_plural); + else + return translation; +} + +#endif /* _LIBGETTEXT_H */ diff --git a/lib/gl/iconv.in.h b/lib/gl/iconv.in.h new file mode 100644 index 0000000..db2f139 --- /dev/null +++ b/lib/gl/iconv.in.h @@ -0,0 +1,71 @@ +/* A GNU-like <iconv.h>. + + Copyright (C) 2007-2008 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_ICONV_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_ICONV_H@ + +#ifndef _GL_ICONV_H +#define _GL_ICONV_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#if @REPLACE_ICONV_OPEN@ +/* An iconv_open wrapper that supports the IANA standardized encoding names + ("ISO-8859-1" etc.) as far as possible. */ +# define iconv_open rpl_iconv_open +extern iconv_t iconv_open (const char *tocode, const char *fromcode); +#endif + +#if @REPLACE_ICONV_UTF@ +/* Special constants for supporting UTF-{16,32}{BE,LE} encodings. + Not public. */ +# define _ICONV_UTF8_UTF16BE (iconv_t)(-161) +# define _ICONV_UTF8_UTF16LE (iconv_t)(-162) +# define _ICONV_UTF8_UTF32BE (iconv_t)(-163) +# define _ICONV_UTF8_UTF32LE (iconv_t)(-164) +# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165) +# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166) +# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167) +# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168) +#endif + +#if @REPLACE_ICONV@ +# define iconv rpl_iconv +extern size_t iconv (iconv_t cd, + @ICONV_CONST@ char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft); +# define iconv_close rpl_iconv_close +extern int iconv_close (iconv_t cd); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _GL_ICONV_H */ +#endif /* _GL_ICONV_H */ diff --git a/lib/gl/iconv_open-aix.gperf b/lib/gl/iconv_open-aix.gperf new file mode 100644 index 0000000..6782b99 --- /dev/null +++ b/lib/gl/iconv_open-aix.gperf @@ -0,0 +1,44 @@ +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; +%struct-type +%language=ANSI-C +%define slot-name standard_name +%define hash-function-name mapping_hash +%define lookup-function-name mapping_lookup +%readonly-tables +%global-table +%define word-array-name mappings +%pic +%% +# On AIX 5.1, look in /usr/lib/nls/loc/uconvTable. +ISO-8859-1, "ISO8859-1" +ISO-8859-2, "ISO8859-2" +ISO-8859-3, "ISO8859-3" +ISO-8859-4, "ISO8859-4" +ISO-8859-5, "ISO8859-5" +ISO-8859-6, "ISO8859-6" +ISO-8859-7, "ISO8859-7" +ISO-8859-8, "ISO8859-8" +ISO-8859-9, "ISO8859-9" +ISO-8859-15, "ISO8859-15" +CP437, "IBM-437" +CP850, "IBM-850" +CP852, "IBM-852" +CP856, "IBM-856" +CP857, "IBM-857" +CP861, "IBM-861" +CP865, "IBM-865" +CP869, "IBM-869" +ISO-8859-13, "IBM-921" +CP922, "IBM-922" +CP932, "IBM-932" +CP943, "IBM-943" +CP1046, "IBM-1046" +CP1124, "IBM-1124" +CP1125, "IBM-1125" +CP1129, "IBM-1129" +CP1252, "IBM-1252" +GB2312, "IBM-eucCN" +EUC-JP, "IBM-eucJP" +EUC-KR, "IBM-eucKR" +EUC-TW, "IBM-eucTW" +BIG5, "big5" diff --git a/lib/gl/iconv_open-aix.h b/lib/gl/iconv_open-aix.h new file mode 100644 index 0000000..0ffc3fe --- /dev/null +++ b/lib/gl/iconv_open-aix.h @@ -0,0 +1,256 @@ +/* ANSI-C code produced by gperf version 3.0.3 */ +/* Command-line: gperf -m 10 ./iconv_open-aix.gperf */ +/* Computed positions: -k'4,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 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) && ('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) && ('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)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." +#endif + +#line 1 "./iconv_open-aix.gperf" +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; + +#define TOTAL_KEYWORDS 32 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 11 +#define MIN_HASH_VALUE 6 +#define MAX_HASH_VALUE 44 +/* maximum key range = 39, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +mapping_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 0, 4, 25, + 0, 11, 24, 9, 17, 3, 14, 21, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 3, 45, 1, 45, 45, 45, 45, 0, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45 + }; + return len + asso_values[(unsigned char)str[3]+2] + asso_values[(unsigned char)str[len - 1]]; +} + +struct stringpool_t + { + char stringpool_str6[sizeof("EUC-TW")]; + char stringpool_str7[sizeof("EUC-KR")]; + char stringpool_str8[sizeof("CP852")]; + char stringpool_str9[sizeof("EUC-JP")]; + char stringpool_str10[sizeof("ISO-8859-2")]; + char stringpool_str11[sizeof("CP857")]; + char stringpool_str12[sizeof("CP850")]; + char stringpool_str13[sizeof("ISO-8859-7")]; + char stringpool_str14[sizeof("CP932")]; + char stringpool_str15[sizeof("GB2312")]; + char stringpool_str16[sizeof("BIG5")]; + char stringpool_str17[sizeof("CP437")]; + char stringpool_str19[sizeof("ISO-8859-5")]; + char stringpool_str20[sizeof("ISO-8859-15")]; + char stringpool_str21[sizeof("ISO-8859-3")]; + char stringpool_str22[sizeof("ISO-8859-13")]; + char stringpool_str23[sizeof("CP1046")]; + char stringpool_str24[sizeof("ISO-8859-8")]; + char stringpool_str25[sizeof("CP856")]; + char stringpool_str26[sizeof("CP1125")]; + char stringpool_str27[sizeof("ISO-8859-6")]; + char stringpool_str28[sizeof("CP865")]; + char stringpool_str29[sizeof("CP922")]; + char stringpool_str30[sizeof("CP1252")]; + char stringpool_str31[sizeof("ISO-8859-9")]; + char stringpool_str33[sizeof("CP943")]; + char stringpool_str34[sizeof("ISO-8859-4")]; + char stringpool_str35[sizeof("ISO-8859-1")]; + char stringpool_str38[sizeof("CP1129")]; + char stringpool_str40[sizeof("CP869")]; + char stringpool_str41[sizeof("CP1124")]; + char stringpool_str44[sizeof("CP861")]; + }; +static const struct stringpool_t stringpool_contents = + { + "EUC-TW", + "EUC-KR", + "CP852", + "EUC-JP", + "ISO-8859-2", + "CP857", + "CP850", + "ISO-8859-7", + "CP932", + "GB2312", + "BIG5", + "CP437", + "ISO-8859-5", + "ISO-8859-15", + "ISO-8859-3", + "ISO-8859-13", + "CP1046", + "ISO-8859-8", + "CP856", + "CP1125", + "ISO-8859-6", + "CP865", + "CP922", + "CP1252", + "ISO-8859-9", + "CP943", + "ISO-8859-4", + "ISO-8859-1", + "CP1129", + "CP869", + "CP1124", + "CP861" + }; +#define stringpool ((const char *) &stringpool_contents) + +static const struct mapping mappings[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 43 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "IBM-eucTW"}, +#line 42 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "IBM-eucKR"}, +#line 25 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "IBM-852"}, +#line 41 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "IBM-eucJP"}, +#line 14 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-2"}, +#line 27 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "IBM-857"}, +#line 24 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "IBM-850"}, +#line 19 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-7"}, +#line 33 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "IBM-932"}, +#line 40 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "IBM-eucCN"}, +#line 44 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "big5"}, +#line 23 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "IBM-437"}, + {-1}, +#line 17 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-5"}, +#line 22 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-15"}, +#line 15 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-3"}, +#line 31 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "IBM-921"}, +#line 35 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "IBM-1046"}, +#line 20 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "ISO8859-8"}, +#line 26 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "IBM-856"}, +#line 37 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "IBM-1125"}, +#line 18 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"}, +#line 29 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "IBM-865"}, +#line 32 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "IBM-922"}, +#line 39 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "IBM-1252"}, +#line 21 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "ISO8859-9"}, + {-1}, +#line 34 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "IBM-943"}, +#line 16 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "ISO8859-4"}, +#line 13 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "ISO8859-1"}, + {-1}, {-1}, +#line 38 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "IBM-1129"}, + {-1}, +#line 30 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "IBM-869"}, +#line 36 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "IBM-1124"}, + {-1}, {-1}, +#line 28 "./iconv_open-aix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "IBM-861"} + }; + +#ifdef __GNUC__ +__inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct mapping * +mapping_lookup (register const char *str, register unsigned int len) +{ + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = mapping_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = mappings[key].standard_name; + if (o >= 0) + { + register const char *s = o + stringpool; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &mappings[key]; + } + } + } + return 0; +} diff --git a/lib/gl/iconv_open-hpux.gperf b/lib/gl/iconv_open-hpux.gperf new file mode 100644 index 0000000..5a35c83 --- /dev/null +++ b/lib/gl/iconv_open-hpux.gperf @@ -0,0 +1,56 @@ +struct mapping { int standard_name; const char vendor_name[9 + 1]; }; +%struct-type +%language=ANSI-C +%define slot-name standard_name +%define hash-function-name mapping_hash +%define lookup-function-name mapping_lookup +%readonly-tables +%global-table +%define word-array-name mappings +%pic +%% +# On HP-UX 11.11, look in /usr/lib/nls/iconv. +ISO-8859-1, "iso88591" +ISO-8859-2, "iso88592" +ISO-8859-5, "iso88595" +ISO-8859-6, "iso88596" +ISO-8859-7, "iso88597" +ISO-8859-8, "iso88598" +ISO-8859-9, "iso88599" +ISO-8859-15, "iso885915" +CP437, "cp437" +CP775, "cp775" +CP850, "cp850" +CP852, "cp852" +CP855, "cp855" +CP857, "cp857" +CP861, "cp861" +CP862, "cp862" +CP864, "cp864" +CP865, "cp865" +CP866, "cp866" +CP869, "cp869" +CP874, "cp874" +CP1250, "cp1250" +CP1251, "cp1251" +CP1252, "cp1252" +CP1253, "cp1253" +CP1254, "cp1254" +CP1255, "cp1255" +CP1256, "cp1256" +CP1257, "cp1257" +CP1258, "cp1258" +HP-ROMAN8, "roman8" +HP-ARABIC8, "arabic8" +HP-GREEK8, "greek8" +HP-HEBREW8, "hebrew8" +HP-TURKISH8, "turkish8" +HP-KANA8, "kana8" +TIS-620, "tis620" +GB2312, "hp15CN" +EUC-JP, "eucJP" +EUC-KR, "eucKR" +EUC-TW, "eucTW" +BIG5, "big5" +SHIFT_JIS, "sjis" +UTF-8, "utf8" diff --git a/lib/gl/iconv_open-hpux.h b/lib/gl/iconv_open-hpux.h new file mode 100644 index 0000000..b9a7d9d --- /dev/null +++ b/lib/gl/iconv_open-hpux.h @@ -0,0 +1,296 @@ +/* ANSI-C code produced by gperf version 3.0.2 */ +/* Command-line: gperf -m 10 ./iconv_open-hpux.gperf */ +/* Computed positions: -k'4,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 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) && ('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) && ('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)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." +#endif + +#line 1 "./iconv_open-hpux.gperf" +struct mapping { int standard_name; const char vendor_name[9 + 1]; }; + +#define TOTAL_KEYWORDS 44 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 11 +#define MIN_HASH_VALUE 6 +#define MAX_HASH_VALUE 49 +/* maximum key range = 44, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +mapping_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 1, 2, + 24, 43, 5, 10, 0, 13, 32, 3, 19, 18, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, + 50, 50, 50, 50, 14, 5, 0, 50, 50, 0, + 27, 50, 12, 14, 50, 50, 0, 5, 2, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 + }; + return len + asso_values[(unsigned char)str[3]+4] + asso_values[(unsigned char)str[len - 1]]; +} + +struct stringpool_t + { + char stringpool_str6[sizeof("CP1256")]; + char stringpool_str7[sizeof("CP1250")]; + char stringpool_str8[sizeof("CP1251")]; + char stringpool_str9[sizeof("CP850")]; + char stringpool_str10[sizeof("TIS-620")]; + char stringpool_str11[sizeof("CP1254")]; + char stringpool_str12[sizeof("ISO-8859-6")]; + char stringpool_str13[sizeof("EUC-TW")]; + char stringpool_str14[sizeof("ISO-8859-1")]; + char stringpool_str15[sizeof("ISO-8859-9")]; + char stringpool_str16[sizeof("CP1255")]; + char stringpool_str17[sizeof("BIG5")]; + char stringpool_str18[sizeof("CP855")]; + char stringpool_str19[sizeof("CP1257")]; + char stringpool_str20[sizeof("EUC-KR")]; + char stringpool_str21[sizeof("CP857")]; + char stringpool_str22[sizeof("ISO-8859-5")]; + char stringpool_str23[sizeof("ISO-8859-15")]; + char stringpool_str24[sizeof("CP866")]; + char stringpool_str25[sizeof("ISO-8859-7")]; + char stringpool_str26[sizeof("CP861")]; + char stringpool_str27[sizeof("CP869")]; + char stringpool_str28[sizeof("CP874")]; + char stringpool_str29[sizeof("CP864")]; + char stringpool_str30[sizeof("CP1252")]; + char stringpool_str31[sizeof("CP437")]; + char stringpool_str32[sizeof("CP852")]; + char stringpool_str33[sizeof("CP775")]; + char stringpool_str34[sizeof("CP865")]; + char stringpool_str35[sizeof("EUC-JP")]; + char stringpool_str36[sizeof("ISO-8859-2")]; + char stringpool_str37[sizeof("SHIFT_JIS")]; + char stringpool_str38[sizeof("CP1258")]; + char stringpool_str39[sizeof("UTF-8")]; + char stringpool_str40[sizeof("HP-KANA8")]; + char stringpool_str41[sizeof("HP-ROMAN8")]; + char stringpool_str42[sizeof("HP-HEBREW8")]; + char stringpool_str43[sizeof("GB2312")]; + char stringpool_str44[sizeof("ISO-8859-8")]; + char stringpool_str45[sizeof("HP-TURKISH8")]; + char stringpool_str46[sizeof("HP-GREEK8")]; + char stringpool_str47[sizeof("HP-ARABIC8")]; + char stringpool_str48[sizeof("CP862")]; + char stringpool_str49[sizeof("CP1253")]; + }; +static const struct stringpool_t stringpool_contents = + { + "CP1256", + "CP1250", + "CP1251", + "CP850", + "TIS-620", + "CP1254", + "ISO-8859-6", + "EUC-TW", + "ISO-8859-1", + "ISO-8859-9", + "CP1255", + "BIG5", + "CP855", + "CP1257", + "EUC-KR", + "CP857", + "ISO-8859-5", + "ISO-8859-15", + "CP866", + "ISO-8859-7", + "CP861", + "CP869", + "CP874", + "CP864", + "CP1252", + "CP437", + "CP852", + "CP775", + "CP865", + "EUC-JP", + "ISO-8859-2", + "SHIFT_JIS", + "CP1258", + "UTF-8", + "HP-KANA8", + "HP-ROMAN8", + "HP-HEBREW8", + "GB2312", + "ISO-8859-8", + "HP-TURKISH8", + "HP-GREEK8", + "HP-ARABIC8", + "CP862", + "CP1253" + }; +#define stringpool ((const char *) &stringpool_contents) + +static const struct mapping mappings[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 40 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1256"}, +#line 34 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp1250"}, +#line 35 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1251"}, +#line 23 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "cp850"}, +#line 49 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "tis620"}, +#line 38 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "cp1254"}, +#line 16 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "iso88596"}, +#line 53 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucTW"}, +#line 13 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "iso88591"}, +#line 19 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "iso88599"}, +#line 39 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1255"}, +#line 54 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "big5"}, +#line 25 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp855"}, +#line 41 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "cp1257"}, +#line 52 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "eucKR"}, +#line 26 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp857"}, +#line 15 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "iso88595"}, +#line 20 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "iso885915"}, +#line 31 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "cp866"}, +#line 17 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "iso88597"}, +#line 27 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "cp861"}, +#line 32 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "cp869"}, +#line 33 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "cp874"}, +#line 29 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp864"}, +#line 36 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"}, +#line 21 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp437"}, +#line 24 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "cp852"}, +#line 22 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp775"}, +#line 30 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp865"}, +#line 51 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "eucJP"}, +#line 14 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "iso88592"}, +#line 55 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "sjis"}, +#line 42 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp1258"}, +#line 56 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "utf8"}, +#line 48 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "kana8"}, +#line 43 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "roman8"}, +#line 46 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "hebrew8"}, +#line 50 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "hp15CN"}, +#line 18 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "iso88598"}, +#line 47 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str45, "turkish8"}, +#line 45 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "greek8"}, +#line 44 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "arabic8"}, +#line 28 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str48, "cp862"}, +#line 37 "./iconv_open-hpux.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str49, "cp1253"} + }; + +#ifdef __GNUC__ +__inline +#endif +const struct mapping * +mapping_lookup (register const char *str, register unsigned int len) +{ + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = mapping_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = mappings[key].standard_name; + if (o >= 0) + { + register const char *s = o + stringpool; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &mappings[key]; + } + } + } + return 0; +} diff --git a/lib/gl/iconv_open-irix.gperf b/lib/gl/iconv_open-irix.gperf new file mode 100644 index 0000000..3672a80 --- /dev/null +++ b/lib/gl/iconv_open-irix.gperf @@ -0,0 +1,31 @@ +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; +%struct-type +%language=ANSI-C +%define slot-name standard_name +%define hash-function-name mapping_hash +%define lookup-function-name mapping_lookup +%readonly-tables +%global-table +%define word-array-name mappings +%pic +%% +# On IRIX 6.5, look in /usr/lib/iconv and /usr/lib/international/encodings. +ISO-8859-1, "ISO8859-1" +ISO-8859-2, "ISO8859-2" +ISO-8859-3, "ISO8859-3" +ISO-8859-4, "ISO8859-4" +ISO-8859-5, "ISO8859-5" +ISO-8859-6, "ISO8859-6" +ISO-8859-7, "ISO8859-7" +ISO-8859-8, "ISO8859-8" +ISO-8859-9, "ISO8859-9" +ISO-8859-15, "ISO8859-15" +KOI8-R, "KOI8" +CP855, "DOS855" +CP1251, "WIN1251" +GB2312, "eucCN" +EUC-JP, "eucJP" +EUC-KR, "eucKR" +EUC-TW, "eucTW" +SHIFT_JIS, "sjis" +TIS-620, "TIS620" diff --git a/lib/gl/iconv_open-irix.h b/lib/gl/iconv_open-irix.h new file mode 100644 index 0000000..520582e --- /dev/null +++ b/lib/gl/iconv_open-irix.h @@ -0,0 +1,199 @@ +/* ANSI-C code produced by gperf version 3.0.3 */ +/* Command-line: gperf -m 10 ./iconv_open-irix.gperf */ +/* Computed positions: -k'1,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 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) && ('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) && ('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)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." +#endif + +#line 1 "./iconv_open-irix.gperf" +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; + +#define TOTAL_KEYWORDS 19 +#define MIN_WORD_LENGTH 5 +#define MAX_WORD_LENGTH 11 +#define MIN_HASH_VALUE 5 +#define MAX_HASH_VALUE 23 +/* maximum key range = 19, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +mapping_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 8, 2, + 5, 12, 11, 0, 10, 9, 8, 7, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 0, 24, 0, + 24, 5, 24, 0, 24, 7, 24, 24, 24, 24, + 7, 24, 1, 0, 8, 24, 24, 0, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24 + }; + return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; +} + +struct stringpool_t + { + char stringpool_str5[sizeof("CP855")]; + char stringpool_str6[sizeof("EUC-TW")]; + char stringpool_str7[sizeof("EUC-KR")]; + char stringpool_str8[sizeof("CP1251")]; + char stringpool_str9[sizeof("SHIFT_JIS")]; + char stringpool_str10[sizeof("ISO-8859-5")]; + char stringpool_str11[sizeof("ISO-8859-15")]; + char stringpool_str12[sizeof("ISO-8859-1")]; + char stringpool_str13[sizeof("EUC-JP")]; + char stringpool_str14[sizeof("KOI8-R")]; + char stringpool_str15[sizeof("ISO-8859-2")]; + char stringpool_str16[sizeof("GB2312")]; + char stringpool_str17[sizeof("ISO-8859-9")]; + char stringpool_str18[sizeof("ISO-8859-8")]; + char stringpool_str19[sizeof("ISO-8859-7")]; + char stringpool_str20[sizeof("ISO-8859-6")]; + char stringpool_str21[sizeof("ISO-8859-4")]; + char stringpool_str22[sizeof("ISO-8859-3")]; + char stringpool_str23[sizeof("TIS-620")]; + }; +static const struct stringpool_t stringpool_contents = + { + "CP855", + "EUC-TW", + "EUC-KR", + "CP1251", + "SHIFT_JIS", + "ISO-8859-5", + "ISO-8859-15", + "ISO-8859-1", + "EUC-JP", + "KOI8-R", + "ISO-8859-2", + "GB2312", + "ISO-8859-9", + "ISO-8859-8", + "ISO-8859-7", + "ISO-8859-6", + "ISO-8859-4", + "ISO-8859-3", + "TIS-620" + }; +#define stringpool ((const char *) &stringpool_contents) + +static const struct mapping mappings[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 24 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str5, "DOS855"}, +#line 29 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "eucTW"}, +#line 28 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "eucKR"}, +#line 25 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "WIN1251"}, +#line 30 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "sjis"}, +#line 17 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-5"}, +#line 22 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "ISO8859-15"}, +#line 13 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-1"}, +#line 27 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucJP"}, +#line 23 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "KOI8"}, +#line 14 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "ISO8859-2"}, +#line 26 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "eucCN"}, +#line 21 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "ISO8859-9"}, +#line 20 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "ISO8859-8"}, +#line 19 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-7"}, +#line 18 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-6"}, +#line 16 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-4"}, +#line 15 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-3"}, +#line 31 "./iconv_open-irix.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "TIS620"} + }; + +#ifdef __GNUC__ +__inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct mapping * +mapping_lookup (register const char *str, register unsigned int len) +{ + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = mapping_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = mappings[key].standard_name; + if (o >= 0) + { + register const char *s = o + stringpool; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &mappings[key]; + } + } + } + return 0; +} diff --git a/lib/gl/iconv_open-osf.gperf b/lib/gl/iconv_open-osf.gperf new file mode 100644 index 0000000..f468ff6 --- /dev/null +++ b/lib/gl/iconv_open-osf.gperf @@ -0,0 +1,50 @@ +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; +%struct-type +%language=ANSI-C +%define slot-name standard_name +%define hash-function-name mapping_hash +%define lookup-function-name mapping_lookup +%readonly-tables +%global-table +%define word-array-name mappings +%pic +%% +# On OSF/1 5.1, look in /usr/lib/nls/loc/iconv. +ISO-8859-1, "ISO8859-1" +ISO-8859-2, "ISO8859-2" +ISO-8859-3, "ISO8859-3" +ISO-8859-4, "ISO8859-4" +ISO-8859-5, "ISO8859-5" +ISO-8859-6, "ISO8859-6" +ISO-8859-7, "ISO8859-7" +ISO-8859-8, "ISO8859-8" +ISO-8859-9, "ISO8859-9" +ISO-8859-15, "ISO8859-15" +CP437, "cp437" +CP775, "cp775" +CP850, "cp850" +CP852, "cp852" +CP855, "cp855" +CP857, "cp857" +CP861, "cp861" +CP862, "cp862" +CP865, "cp865" +CP866, "cp866" +CP869, "cp869" +CP874, "cp874" +CP949, "KSC5601" +CP1250, "cp1250" +CP1251, "cp1251" +CP1252, "cp1252" +CP1253, "cp1253" +CP1254, "cp1254" +CP1255, "cp1255" +CP1256, "cp1256" +CP1257, "cp1257" +CP1258, "cp1258" +EUC-JP, "eucJP" +EUC-KR, "eucKR" +EUC-TW, "eucTW" +BIG5, "big5" +SHIFT_JIS, "SJIS" +TIS-620, "TACTIS" diff --git a/lib/gl/iconv_open-osf.h b/lib/gl/iconv_open-osf.h new file mode 100644 index 0000000..85e4c0f --- /dev/null +++ b/lib/gl/iconv_open-osf.h @@ -0,0 +1,278 @@ +/* ANSI-C code produced by gperf version 3.0.3 */ +/* Command-line: gperf -m 10 ./iconv_open-osf.gperf */ +/* Computed positions: -k'4,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 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) && ('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) && ('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)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." +#endif + +#line 1 "./iconv_open-osf.gperf" +struct mapping { int standard_name; const char vendor_name[10 + 1]; }; + +#define TOTAL_KEYWORDS 38 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 11 +#define MIN_HASH_VALUE 6 +#define MAX_HASH_VALUE 47 +/* maximum key range = 42, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +mapping_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 2, 29, + 24, 34, 31, 0, 15, 14, 10, 13, 2, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 7, 48, 48, 48, 48, 48, 48, + 11, 48, 2, 7, 48, 48, 48, 1, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48 + }; + return len + asso_values[(unsigned char)str[3]+3] + asso_values[(unsigned char)str[len - 1]]; +} + +struct stringpool_t + { + char stringpool_str6[sizeof("CP1255")]; + char stringpool_str7[sizeof("CP775")]; + char stringpool_str8[sizeof("CP1250")]; + char stringpool_str9[sizeof("EUC-TW")]; + char stringpool_str10[sizeof("EUC-KR")]; + char stringpool_str11[sizeof("TIS-620")]; + char stringpool_str12[sizeof("ISO-8859-5")]; + char stringpool_str13[sizeof("ISO-8859-15")]; + char stringpool_str14[sizeof("BIG5")]; + char stringpool_str15[sizeof("CP855")]; + char stringpool_str16[sizeof("CP1258")]; + char stringpool_str17[sizeof("CP850")]; + char stringpool_str18[sizeof("CP865")]; + char stringpool_str19[sizeof("EUC-JP")]; + char stringpool_str20[sizeof("CP1257")]; + char stringpool_str21[sizeof("CP1256")]; + char stringpool_str22[sizeof("ISO-8859-8")]; + char stringpool_str23[sizeof("SHIFT_JIS")]; + char stringpool_str25[sizeof("ISO-8859-9")]; + char stringpool_str26[sizeof("ISO-8859-7")]; + char stringpool_str27[sizeof("ISO-8859-6")]; + char stringpool_str29[sizeof("CP857")]; + char stringpool_str30[sizeof("CP1252")]; + char stringpool_str31[sizeof("CP869")]; + char stringpool_str32[sizeof("CP949")]; + char stringpool_str33[sizeof("CP866")]; + char stringpool_str34[sizeof("CP437")]; + char stringpool_str35[sizeof("CP1251")]; + char stringpool_str36[sizeof("ISO-8859-2")]; + char stringpool_str37[sizeof("CP1254")]; + char stringpool_str38[sizeof("CP874")]; + char stringpool_str39[sizeof("CP852")]; + char stringpool_str40[sizeof("CP1253")]; + char stringpool_str41[sizeof("ISO-8859-1")]; + char stringpool_str42[sizeof("CP862")]; + char stringpool_str43[sizeof("ISO-8859-4")]; + char stringpool_str46[sizeof("ISO-8859-3")]; + char stringpool_str47[sizeof("CP861")]; + }; +static const struct stringpool_t stringpool_contents = + { + "CP1255", + "CP775", + "CP1250", + "EUC-TW", + "EUC-KR", + "TIS-620", + "ISO-8859-5", + "ISO-8859-15", + "BIG5", + "CP855", + "CP1258", + "CP850", + "CP865", + "EUC-JP", + "CP1257", + "CP1256", + "ISO-8859-8", + "SHIFT_JIS", + "ISO-8859-9", + "ISO-8859-7", + "ISO-8859-6", + "CP857", + "CP1252", + "CP869", + "CP949", + "CP866", + "CP437", + "CP1251", + "ISO-8859-2", + "CP1254", + "CP874", + "CP852", + "CP1253", + "ISO-8859-1", + "CP862", + "ISO-8859-4", + "ISO-8859-3", + "CP861" + }; +#define stringpool ((const char *) &stringpool_contents) + +static const struct mapping mappings[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 41 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1255"}, +#line 24 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp775"}, +#line 36 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1250"}, +#line 47 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "eucTW"}, +#line 46 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "eucKR"}, +#line 50 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "TACTIS"}, +#line 17 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-5"}, +#line 22 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-15"}, +#line 48 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "big5"}, +#line 27 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "cp855"}, +#line 44 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1258"}, +#line 25 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "cp850"}, +#line 31 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp865"}, +#line 45 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "eucJP"}, +#line 43 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "cp1257"}, +#line 42 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp1256"}, +#line 20 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-8"}, +#line 49 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "SJIS"}, + {-1}, +#line 21 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "ISO8859-9"}, +#line 19 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "ISO8859-7"}, +#line 18 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"}, + {-1}, +#line 28 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp857"}, +#line 38 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"}, +#line 33 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp869"}, +#line 35 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "KSC5601"}, +#line 32 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp866"}, +#line 23 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp437"}, +#line 37 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "cp1251"}, +#line 14 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "ISO8859-2"}, +#line 40 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "cp1254"}, +#line 34 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp874"}, +#line 26 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "cp852"}, +#line 39 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "cp1253"}, +#line 13 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "ISO8859-1"}, +#line 30 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "cp862"}, +#line 16 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "ISO8859-4"}, + {-1}, {-1}, +#line 15 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "ISO8859-3"}, +#line 29 "./iconv_open-osf.gperf" + {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "cp861"} + }; + +#ifdef __GNUC__ +__inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct mapping * +mapping_lookup (register const char *str, register unsigned int len) +{ + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = mapping_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = mappings[key].standard_name; + if (o >= 0) + { + register const char *s = o + stringpool; + + if (*str == *s && !strcmp (str + 1, s + 1)) + return &mappings[key]; + } + } + } + return 0; +} diff --git a/lib/gl/iconv_open.c b/lib/gl/iconv_open.c new file mode 100644 index 0000000..a699dde --- /dev/null +++ b/lib/gl/iconv_open.c @@ -0,0 +1,172 @@ +/* Character set conversion. + Copyright (C) 2007 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include <config.h> + +/* Specification. */ +#include <iconv.h> + +#include <errno.h> +#include <string.h> +#include "c-ctype.h" +#include "c-strcase.h" + +#define SIZEOF(a) (sizeof(a) / sizeof(a[0])) + +/* Namespace cleanliness. */ +#define mapping_lookup rpl_iconv_open_mapping_lookup + +/* The macro ICONV_FLAVOR is defined to one of these or undefined. */ + +#define ICONV_FLAVOR_AIX "iconv_open-aix.h" +#define ICONV_FLAVOR_HPUX "iconv_open-hpux.h" +#define ICONV_FLAVOR_IRIX "iconv_open-irix.h" +#define ICONV_FLAVOR_OSF "iconv_open-osf.h" + +#ifdef ICONV_FLAVOR +# include ICONV_FLAVOR +#endif + +iconv_t +rpl_iconv_open (const char *tocode, const char *fromcode) +#undef iconv_open +{ + char fromcode_upper[32]; + char tocode_upper[32]; + char *fromcode_upper_end; + char *tocode_upper_end; + +#if REPLACE_ICONV_UTF + /* Special handling of conversion between UTF-8 and UTF-{16,32}{BE,LE}. + Do this here, before calling the real iconv_open(), because OSF/1 5.1 + iconv() to these encoding inserts a BOM, which is wrong. + We do not need to handle conversion between arbitrary encodings and + UTF-{16,32}{BE,LE}, because the 'striconveh' module implements two-step + conversion throough UTF-8. + The _ICONV_* constants are chosen to be disjoint from any iconv_t + returned by the system's iconv_open() functions. Recall that iconv_t + is a scalar type. */ + if (c_toupper (fromcode[0]) == 'U' + && c_toupper (fromcode[1]) == 'T' + && c_toupper (fromcode[2]) == 'F' + && fromcode[3] == '-') + { + if (c_toupper (tocode[0]) == 'U' + && c_toupper (tocode[1]) == 'T' + && c_toupper (tocode[2]) == 'F' + && tocode[3] == '-') + { + if (strcmp (fromcode + 4, "8") == 0) + { + if (c_strcasecmp (tocode + 4, "16BE") == 0) + return _ICONV_UTF8_UTF16BE; + if (c_strcasecmp (tocode + 4, "16LE") == 0) + return _ICONV_UTF8_UTF16LE; + if (c_strcasecmp (tocode + 4, "32BE") == 0) + return _ICONV_UTF8_UTF32BE; + if (c_strcasecmp (tocode + 4, "32LE") == 0) + return _ICONV_UTF8_UTF32LE; + } + else if (strcmp (tocode + 4, "8") == 0) + { + if (c_strcasecmp (fromcode + 4, "16BE") == 0) + return _ICONV_UTF16BE_UTF8; + if (c_strcasecmp (fromcode + 4, "16LE") == 0) + return _ICONV_UTF16LE_UTF8; + if (c_strcasecmp (fromcode + 4, "32BE") == 0) + return _ICONV_UTF32BE_UTF8; + if (c_strcasecmp (fromcode + 4, "32LE") == 0) + return _ICONV_UTF32LE_UTF8; + } + } + } +#endif + + /* Do *not* add special support for 8-bit encodings like ASCII or ISO-8859-1 + here. This would lead to programs that work in some locales (such as the + "C" or "en_US" locales) but do not work in East Asian locales. It is + better if programmers make their programs depend on GNU libiconv (except + on glibc systems), e.g. by using the AM_ICONV macro and documenting the + dependency in an INSTALL or DEPENDENCIES file. */ + + /* Try with the original names first. + This covers the case when fromcode or tocode is a lowercase encoding name + that is understood by the system's iconv_open but not listed in our + mappings table. */ + { + iconv_t cd = iconv_open (tocode, fromcode); + if (cd != (iconv_t)(-1)) + return cd; + } + + /* Convert the encodings to upper case, because + 1. in the arguments of iconv_open() on AIX, HP-UX, and OSF/1 the case + matters, + 2. it makes searching in the table faster. */ + { + const char *p = fromcode; + char *q = fromcode_upper; + while ((*q = c_toupper (*p)) != '\0') + { + p++; + q++; + if (q == &fromcode_upper[SIZEOF (fromcode_upper)]) + { + errno = EINVAL; + return (iconv_t)(-1); + } + } + fromcode_upper_end = q; + } + + { + const char *p = tocode; + char *q = tocode_upper; + while ((*q = c_toupper (*p)) != '\0') + { + p++; + q++; + if (q == &tocode_upper[SIZEOF (tocode_upper)]) + { + errno = EINVAL; + return (iconv_t)(-1); + } + } + tocode_upper_end = q; + } + +#ifdef ICONV_FLAVOR + /* Apply the mappings. */ + { + const struct mapping *m = + mapping_lookup (fromcode_upper, fromcode_upper_end - fromcode_upper); + + fromcode = (m != NULL ? m->vendor_name : fromcode_upper); + } + { + const struct mapping *m = + mapping_lookup (tocode_upper, tocode_upper_end - tocode_upper); + + tocode = (m != NULL ? m->vendor_name : tocode_upper); + } +#else + fromcode = fromcode_upper; + tocode = tocode_upper; +#endif + + return iconv_open (tocode, fromcode); +} diff --git a/lib/gl/m4/gnulib-cache.m4 b/lib/gl/m4/gnulib-cache.m4 new file mode 100644 index 0000000..7a91421 --- /dev/null +++ b/lib/gl/m4/gnulib-cache.m4 @@ -0,0 +1,44 @@ +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the specification of how gnulib-tool is used. +# It acts as a cache: It is written and read by gnulib-tool. +# In projects using CVS, this file is meant to be stored in CVS, +# like the configure.ac and various Makefile.am files. + + +# Specification in the form of a command-line invocation: +# gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp + +# Specification in the form of a few gnulib-tool.m4 macro invocations: +gl_LOCAL_DIR([lib/gl/override]) +gl_MODULES([ + gettext-h + lib-msvc-compat + lib-symbol-versions + lib-symbol-visibility + stdint + striconv + strverscmp +]) +gl_AVOID([]) +gl_SOURCE_BASE([lib/gl]) +gl_M4_BASE([lib/gl/m4]) +gl_PO_BASE([]) +gl_DOC_BASE([doc]) +gl_TESTS_BASE([lib/gltests]) +gl_WITH_TESTS +gl_LIB([libgnu]) +gl_LGPL([2]) +gl_MAKEFILE_NAME([]) +gl_LIBTOOL +gl_MACRO_PREFIX([lgl]) +gl_PO_DOMAIN([]) +gl_VC_FILES([false]) diff --git a/lib/gl/m4/gnulib-comp.m4 b/lib/gl/m4/gnulib-comp.m4 new file mode 100644 index 0000000..71e8d00 --- /dev/null +++ b/lib/gl/m4/gnulib-comp.m4 @@ -0,0 +1,257 @@ +# DO NOT EDIT! GENERATED AUTOMATICALLY! +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the compiled summary of the specification in +# gnulib-cache.m4. It lists the computed macro invocations that need +# to be invoked from configure.ac. +# In projects using CVS, this file can be treated like other built files. + + +# This macro should be invoked from ./configure.ac, in the section +# "Checks for programs", right after AC_PROG_CC, and certainly before +# any checks for libraries, header files, types and library functions. +AC_DEFUN([lgl_EARLY], +[ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + AC_REQUIRE([AC_PROG_RANLIB]) + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) +]) + +# This macro should be invoked from ./configure.ac, in the section +# "Check for header files, types and library functions". +AC_DEFUN([lgl_INIT], +[ + AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) + gl_cond_libtool=true + m4_pushdef([AC_LIBOBJ], m4_defn([lgl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgl_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([lgl_LIBSOURCES])) + m4_pushdef([lgl_LIBSOURCES_LIST], []) + m4_pushdef([lgl_LIBSOURCES_DIR], []) + gl_COMMON + gl_source_base='lib/gl' + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AM_ICONV + gl_ICONV_H + gl_FUNC_ICONV_OPEN + gl_LD_OUTPUT_DEF + gl_LD_VERSION_SCRIPT + gl_VISIBILITY + gl_MULTIARCH + AM_STDBOOL_H + gl_STDINT_H + if test $gl_cond_libtool = false; then + gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV" + gl_libdeps="$gl_libdeps $LIBICONV" + fi + gl_HEADER_STRING_H + gl_FUNC_STRVERSCMP + gl_STRING_MODULE_INDICATOR([strverscmp]) + gl_WCHAR_H + m4_ifval(lgl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([lgl_LIBSOURCES_DIR])[ || + for gl_file in ]lgl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([lgl_LIBSOURCES_DIR]) + m4_popdef([lgl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + lgl_libobjs= + lgl_ltlibobjs= + if test -n "$lgl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + lgl_libobjs="$lgl_libobjs $i.$ac_objext" + lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" + done + fi + AC_SUBST([lgl_LIBOBJS], [$lgl_libobjs]) + AC_SUBST([lgl_LTLIBOBJS], [$lgl_ltlibobjs]) + ]) + gltests_libdeps= + gltests_ltlibdeps= + m4_pushdef([AC_LIBOBJ], m4_defn([lgltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgltests_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([lgltests_LIBSOURCES])) + m4_pushdef([lgltests_LIBSOURCES_LIST], []) + m4_pushdef([lgltests_LIBSOURCES_DIR], []) + gl_COMMON + gl_source_base='lib/gltests' + gt_LOCALE_FR + gt_LOCALE_TR_UTF8 + gt_TYPE_WCHAR_T + gt_TYPE_WINT_T + m4_ifval(lgltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([lgltests_LIBSOURCES_DIR])[ || + for gl_file in ]lgltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([lgltests_LIBSOURCES_DIR]) + m4_popdef([lgltests_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + lgltests_libobjs= + lgltests_ltlibobjs= + if test -n "$lgltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do + lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" + lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" + done + fi + AC_SUBST([lgltests_LIBOBJS], [$lgltests_libobjs]) + AC_SUBST([lgltests_LTLIBOBJS], [$lgltests_ltlibobjs]) + ]) + LIBTESTS_LIBDEPS="$gltests_libdeps" + AC_SUBST([LIBTESTS_LIBDEPS]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into lgl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([lgl_LIBOBJ], [ + AS_LITERAL_IF([$1], [lgl_LIBSOURCES([$1.c])])dnl + lgl_LIBOBJS="$lgl_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into lgl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([lgl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [lgl_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([lgl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([lgl_LIBSOURCES_DIR], [lib/gl]) + m4_append([lgl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into lgltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([lgltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [lgltests_LIBSOURCES([$1.c])])dnl + lgltests_LIBOBJS="$lgltests_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into lgltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([lgltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [lgltests_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([lgltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([lgltests_LIBSOURCES_DIR], [lib/gltests]) + m4_append([lgltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# This macro records the list of files which have been installed by +# gnulib-tool and may be removed by future gnulib-tool invocations. +AC_DEFUN([lgl_FILE_LIST], [ + build-aux/config.rpath + build-aux/link-warning.h + lib/c-ctype.c + lib/c-ctype.h + lib/c-strcase.h + lib/c-strcasecmp.c + lib/c-strncasecmp.c + lib/gettext.h + lib/iconv.in.h + lib/iconv_open-aix.gperf + lib/iconv_open-hpux.gperf + lib/iconv_open-irix.gperf + lib/iconv_open-osf.gperf + lib/iconv_open.c + lib/stdbool.in.h + lib/stdint.in.h + lib/striconv.c + lib/striconv.h + lib/string.in.h + lib/strverscmp.c + lib/wchar.in.h + m4/00gnulib.m4 + m4/codeset.m4 + m4/extensions.m4 + m4/gnulib-common.m4 + m4/iconv.m4 + m4/iconv_h.m4 + m4/iconv_open.m4 + m4/include_next.m4 + m4/ld-output-def.m4 + m4/ld-version-script.m4 + m4/lib-ld.m4 + m4/lib-link.m4 + m4/lib-prefix.m4 + m4/locale-fr.m4 + m4/locale-tr.m4 + m4/longlong.m4 + m4/multiarch.m4 + m4/stdbool.m4 + m4/stdint.m4 + m4/string_h.m4 + m4/strverscmp.m4 + m4/visibility.m4 + m4/wchar.m4 + m4/wchar_t.m4 + m4/wint_t.m4 + tests/test-c-ctype.c + tests/test-c-strcase.sh + tests/test-c-strcasecmp.c + tests/test-c-strncasecmp.c + tests/test-iconv.c + tests/test-stdbool.c + tests/test-stdint.c + tests/test-striconv.c + tests/test-string.c + tests/test-strverscmp.c + tests/test-wchar.c + tests=lib/dummy.c + tests=lib/intprops.h + tests=lib/verify.h +]) diff --git a/lib/gl/m4/iconv_h.m4 b/lib/gl/m4/iconv_h.m4 new file mode 100644 index 0000000..bc05b05 --- /dev/null +++ b/lib/gl/m4/iconv_h.m4 @@ -0,0 +1,34 @@ +# iconv_h.m4 serial 4 +dnl Copyright (C) 2007-2008 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. + +AC_DEFUN([gl_ICONV_H], +[ + AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + gl_CHECK_NEXT_HEADERS([iconv.h]) +]) + +dnl Unconditionally enables the replacement of <iconv.h>. +AC_DEFUN([gl_REPLACE_ICONV_H], +[ + AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + ICONV_H='iconv.h' +]) + +AC_DEFUN([gl_ICONV_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1 +]) + +AC_DEFUN([gl_ICONV_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + REPLACE_ICONV=0; AC_SUBST([REPLACE_ICONV]) + REPLACE_ICONV_OPEN=0; AC_SUBST([REPLACE_ICONV_OPEN]) + REPLACE_ICONV_UTF=0; AC_SUBST([REPLACE_ICONV_UTF]) + ICONV_H=''; AC_SUBST([ICONV_H]) +]) diff --git a/lib/gl/m4/iconv_open.m4 b/lib/gl/m4/iconv_open.m4 new file mode 100644 index 0000000..c7b948e --- /dev/null +++ b/lib/gl/m4/iconv_open.m4 @@ -0,0 +1,237 @@ +# iconv_open.m4 serial 5 +dnl Copyright (C) 2007-2009 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. + +AC_DEFUN([gl_FUNC_ICONV_OPEN], +[ + AC_REQUIRE([AM_ICONV]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test "$am_cv_func_iconv" = yes; then + dnl Test whether iconv_open accepts standardized encoding names. + dnl We know that GNU libiconv and GNU libc do. + AC_EGREP_CPP([gnu_iconv], [ + #include <iconv.h> + #if defined _LIBICONV_VERSION || defined __GLIBC__ + gnu_iconv + #endif + ], [gl_func_iconv_gnu=yes], [gl_func_iconv_gnu=no]) + if test $gl_func_iconv_gnu = no; then + iconv_flavor= + case "$host_os" in + aix*) iconv_flavor=ICONV_FLAVOR_AIX ;; + irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;; + hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;; + osf*) iconv_flavor=ICONV_FLAVOR_OSF ;; + esac + if test -n "$iconv_flavor"; then + AC_DEFINE_UNQUOTED([ICONV_FLAVOR], [$iconv_flavor], + [Define to a symbolic name denoting the flavor of iconv_open() + implementation.]) + gl_REPLACE_ICONV_OPEN + fi + fi + fi +]) + +AC_DEFUN([gl_REPLACE_ICONV_OPEN], +[ + gl_REPLACE_ICONV_H + REPLACE_ICONV_OPEN=1 + AC_LIBOBJ([iconv_open]) +]) + +AC_DEFUN([gl_FUNC_ICONV_OPEN_UTF], +[ + AC_REQUIRE([gl_FUNC_ICONV_OPEN]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test "$am_cv_func_iconv" = yes; then + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + else + ICONV_CONST= + fi + AC_SUBST([ICONV_CONST]) + AC_CACHE_CHECK([whether iconv supports conversion between UTF-8 and UTF-{16,32}{BE,LE}], + [gl_cv_func_iconv_supports_utf], + [ + save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_RUN([ +#include <iconv.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define ASSERT(expr) if (!(expr)) return 1; +int main () +{ + /* Test conversion from UTF-8 to UTF-16BE with no errors. */ + { + static const char input[] = + "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]"; + static const char expected[] = + "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]"; + iconv_t cd; + char buf[100]; + const char *inptr; + size_t inbytesleft; + char *outptr; + size_t outbytesleft; + size_t res; + cd = iconv_open ("UTF-16BE", "UTF-8"); + ASSERT (cd != (iconv_t)(-1)); + inptr = input; + inbytesleft = sizeof (input) - 1; + outptr = buf; + outbytesleft = sizeof (buf); + res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + (sizeof (expected) - 1)); + ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0); + ASSERT (iconv_close (cd) == 0); + } + /* Test conversion from UTF-8 to UTF-16LE with no errors. */ + { + static const char input[] = + "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]"; + static const char expected[] = + "J\000a\000p\000a\000n\000e\000s\000e\000 \000(\000\345\145\054\147\236\212)\000 \000[\000\065\330\015\335\065\330\036\335\065\330\055\335]\000"; + iconv_t cd; + char buf[100]; + const char *inptr; + size_t inbytesleft; + char *outptr; + size_t outbytesleft; + size_t res; + cd = iconv_open ("UTF-16LE", "UTF-8"); + ASSERT (cd != (iconv_t)(-1)); + inptr = input; + inbytesleft = sizeof (input) - 1; + outptr = buf; + outbytesleft = sizeof (buf); + res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + (sizeof (expected) - 1)); + ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0); + ASSERT (iconv_close (cd) == 0); + } + /* Test conversion from UTF-8 to UTF-32BE with no errors. */ + { + static const char input[] = + "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]"; + static const char expected[] = + "\000\000\000J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\145\345\000\000\147\054\000\000\212\236\000\000\000)\000\000\000 \000\000\000[\000\001\325\015\000\001\325\036\000\001\325\055\000\000\000]"; + iconv_t cd; + char buf[100]; + const char *inptr; + size_t inbytesleft; + char *outptr; + size_t outbytesleft; + size_t res; + cd = iconv_open ("UTF-32BE", "UTF-8"); + ASSERT (cd != (iconv_t)(-1)); + inptr = input; + inbytesleft = sizeof (input) - 1; + outptr = buf; + outbytesleft = sizeof (buf); + res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + (sizeof (expected) - 1)); + ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0); + ASSERT (iconv_close (cd) == 0); + } + /* Test conversion from UTF-8 to UTF-32LE with no errors. */ + { + static const char input[] = + "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]"; + static const char expected[] = + "J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\000\345\145\000\000\054\147\000\000\236\212\000\000)\000\000\000 \000\000\000[\000\000\000\015\325\001\000\036\325\001\000\055\325\001\000]\000\000\000"; + iconv_t cd; + char buf[100]; + const char *inptr; + size_t inbytesleft; + char *outptr; + size_t outbytesleft; + size_t res; + cd = iconv_open ("UTF-32LE", "UTF-8"); + ASSERT (cd != (iconv_t)(-1)); + inptr = input; + inbytesleft = sizeof (input) - 1; + outptr = buf; + outbytesleft = sizeof (buf); + res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + (sizeof (expected) - 1)); + ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0); + ASSERT (iconv_close (cd) == 0); + } + /* Test conversion from UTF-16BE to UTF-8 with no errors. + This test fails on NetBSD 3.0. */ + { + static const char input[] = + "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]"; + static const char expected[] = + "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]"; + iconv_t cd; + char buf[100]; + const char *inptr; + size_t inbytesleft; + char *outptr; + size_t outbytesleft; + size_t res; + cd = iconv_open ("UTF-8", "UTF-16BE"); + ASSERT (cd != (iconv_t)(-1)); + inptr = input; + inbytesleft = sizeof (input) - 1; + outptr = buf; + outbytesleft = sizeof (buf); + res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + (sizeof (expected) - 1)); + ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0); + ASSERT (iconv_close (cd) == 0); + } + return 0; +}], [gl_cv_func_iconv_supports_utf=yes], [gl_cv_func_iconv_supports_utf=no], + [ + dnl We know that GNU libiconv, GNU libc, and Solaris >= 9 do. + dnl OSF/1 5.1 has these encodings, but inserts a BOM in the "to" + dnl direction. + gl_cv_func_iconv_supports_utf=no + if test $gl_func_iconv_gnu = yes; then + gl_cv_func_iconv_supports_utf=yes + else +changequote(,)dnl + case "$host_os" in + solaris2.9 | solaris2.1[0-9]) gl_cv_func_iconv_supports_utf=yes ;; + esac +changequote([,])dnl + fi + ]) + LIBS="$save_LIBS" + ]) + if test $gl_cv_func_iconv_supports_utf = no; then + REPLACE_ICONV_UTF=1 + AC_DEFINE([REPLACE_ICONV_UTF], [1], + [Define if the iconv() functions are enhanced to handle the UTF-{16,32}{BE,LE} encodings.]) + REPLACE_ICONV=1 + gl_REPLACE_ICONV_OPEN + AC_LIBOBJ([iconv]) + AC_LIBOBJ([iconv_close]) + fi + fi +]) diff --git a/lib/gl/m4/ld-output-def.m4 b/lib/gl/m4/ld-output-def.m4 new file mode 100644 index 0000000..1aa6a6f --- /dev/null +++ b/lib/gl/m4/ld-output-def.m4 @@ -0,0 +1,29 @@ +# ld-output-def.m4 serial 2 +dnl Copyright (C) 2008, 2009 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 From Simon Josefsson + +# gl_LD_OUTPUT_DEF() +# ------------- +# Check if linker supports -Wl,--output-def and define automake +# conditional HAVE_LD_OUTPUT_DEF if it is. +AC_DEFUN([gl_LD_OUTPUT_DEF], +[ + AC_CACHE_CHECK([if gcc/ld supports -Wl,--output-def], + [gl_cv_ld_output_def], + [if test "$enable_shared" = no; then + gl_cv_ld_output_def="not needed, shared libraries are disabled" + else + gl_ldflags_save=$LDFLAGS + LDFLAGS="-Wl,--output-def,conftest.def" + AC_LINK_IFELSE([AC_LANG_PROGRAM([])], + [gl_cv_ld_output_def=yes], + [gl_cv_ld_output_def=no]) + rm -f conftest.def + LDFLAGS="$gl_ldflags_save" + fi]) + AM_CONDITIONAL([HAVE_LD_OUTPUT_DEF], test "x$gl_cv_ld_output_def" = "xyes") +]) diff --git a/lib/gl/m4/ld-version-script.m4 b/lib/gl/m4/ld-version-script.m4 new file mode 100644 index 0000000..a97888f --- /dev/null +++ b/lib/gl/m4/ld-version-script.m4 @@ -0,0 +1,44 @@ +# ld-version-script.m4 serial 1 +dnl Copyright (C) 2008, 2009 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 From Simon Josefsson + +# FIXME: The test below returns a false positive for mingw +# cross-compiles, 'local:' statements does not reduce number of +# exported symbols in a DLL. Use --disable-ld-version-script to work +# around the problem. + +# gl_LD_VERSION_SCRIPT +# -------------------- +# Check if LD supports linker scripts, and define automake conditional +# HAVE_LD_VERSION_SCRIPT if so. +AC_DEFUN([gl_LD_VERSION_SCRIPT], +[ + AC_ARG_ENABLE([ld-version-script], + AS_HELP_STRING([--enable-ld-version-script], + [enable linker version script (default is enabled when possible)]), + [have_ld_version_script=$enableval], []) + if test -z "$have_ld_version_script"; then + AC_MSG_CHECKING([if LD -Wl,--version-script works]) + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + cat > conftest.map <<EOF +VERS_1 { + global: sym; +}; + +VERS_2 { + global: sym; +} VERS_1; +EOF + AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), + [have_ld_version_script=yes], [have_ld_version_script=no]) + rm -f conftest.map + LDFLAGS="$save_LDFLAGS" + AC_MSG_RESULT($have_ld_version_script) + fi + AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes") +]) diff --git a/lib/gl/m4/locale-fr.m4 b/lib/gl/m4/locale-fr.m4 new file mode 100644 index 0000000..653a5bc --- /dev/null +++ b/lib/gl/m4/locale-fr.m4 @@ -0,0 +1,185 @@ +# locale-fr.m4 serial 11 +dnl Copyright (C) 2003, 2005-2009 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 From Bruno Haible. + +dnl Determine the name of a french locale with traditional encoding. +AC_DEFUN([gt_LOCALE_FR], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AM_LANGINFO_CODESET]) + AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [ + AC_LANG_CONFTEST([AC_LANG_SOURCE([ +changequote(,)dnl +#include <locale.h> +#include <time.h> +#if HAVE_LANGINFO_CODESET +# include <langinfo.h> +#endif +#include <stdlib.h> +#include <string.h> +struct tm t; +char buf[16]; +int main () { + /* Check whether the given locale name is recognized by the system. */ + if (setlocale (LC_ALL, "") == NULL) return 1; + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". + On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situation, + some unit tests fail. */ +#if HAVE_LANGINFO_CODESET + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } +#endif +#ifdef __CYGWIN__ + /* On Cygwin, avoid locale names without encoding suffix, because the + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; +#endif + /* Check whether in the abbreviation of the second month, the second + character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only + one byte long. This excludes the UTF-8 encoding. */ + t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; + if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; + /* Check whether the decimal separator is a comma. + On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point + are nl_langinfo(RADIXCHAR) are both ".". */ + if (localeconv () ->decimal_point[0] != ',') return 1; + return 0; +} +changequote([,])dnl + ])]) + if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.ISO-8859-1 + else + # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name. + if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.ISO8859-1 + else + # Test for the HP-UX locale name. + if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr_FR.iso88591 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr=fr + else + # None found. + gt_cv_locale_fr=none + fi + fi + fi + fi + fi + fi + rm -fr conftest* + ]) + LOCALE_FR=$gt_cv_locale_fr + AC_SUBST([LOCALE_FR]) +]) + +dnl Determine the name of a french locale with UTF-8 encoding. +AC_DEFUN([gt_LOCALE_FR_UTF8], +[ + AC_REQUIRE([AM_LANGINFO_CODESET]) + AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [ + AC_LANG_CONFTEST([AC_LANG_SOURCE([ +changequote(,)dnl +#include <locale.h> +#include <time.h> +#if HAVE_LANGINFO_CODESET +# include <langinfo.h> +#endif +#include <stdlib.h> +#include <string.h> +struct tm t; +char buf[16]; +int main () { + /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl + imitates locale dependent behaviour by looking at the environment + variables, and all locales use the UTF-8 encoding. */ +#if !(defined __BEOS__ || defined __HAIKU__) + /* Check whether the given locale name is recognized by the system. */ + if (setlocale (LC_ALL, "") == NULL) return 1; + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". + On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situation, + some unit tests fail. */ +# if HAVE_LANGINFO_CODESET + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } +# endif +# ifdef __CYGWIN__ + /* On Cygwin, avoid locale names without encoding suffix, because the + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; +# endif + /* Check whether in the abbreviation of the second month, the second + character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is + two bytes long, with UTF-8 encoding. */ + t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; + if (strftime (buf, sizeof (buf), "%b", &t) < 4 + || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v') + return 1; +#endif + /* Check whether the decimal separator is a comma. + On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point + are nl_langinfo(RADIXCHAR) are both ".". */ + if (localeconv () ->decimal_point[0] != ',') return 1; + return 0; +} +changequote([,])dnl + ])]) + if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr_FR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr_FR.UTF-8 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr.UTF-8 + else + # None found. + gt_cv_locale_fr_utf8=none + fi + fi + fi + fi + rm -fr conftest* + ]) + LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8 + AC_SUBST([LOCALE_FR_UTF8]) +]) diff --git a/lib/gl/m4/locale-tr.m4 b/lib/gl/m4/locale-tr.m4 new file mode 100644 index 0000000..6162f65 --- /dev/null +++ b/lib/gl/m4/locale-tr.m4 @@ -0,0 +1,97 @@ +# locale-tr.m4 serial 6 +dnl Copyright (C) 2003, 2005-2009 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 From Bruno Haible. + +dnl Determine the name of a turkish locale with UTF-8 encoding. +AC_DEFUN([gt_LOCALE_TR_UTF8], +[ + AC_REQUIRE([AM_LANGINFO_CODESET]) + AC_CACHE_CHECK([for a turkish Unicode locale], [gt_cv_locale_tr_utf8], [ + AC_LANG_CONFTEST([AC_LANG_SOURCE([ +changequote(,)dnl +#include <locale.h> +#include <time.h> +#if HAVE_LANGINFO_CODESET +# include <langinfo.h> +#endif +#include <stdlib.h> +#include <string.h> +struct tm t; +char buf[16]; +int main () { + /* On BeOS, locales are not implemented in libc. Rather, libintl + imitates locale dependent behaviour by looking at the environment + variables, and all locales use the UTF-8 encoding. But BeOS does not + implement the Turkish upper-/lowercase mappings. Therefore, let this + program return 1 on BeOS. */ + /* Check whether the given locale name is recognized by the system. */ + if (setlocale (LC_ALL, "") == NULL) return 1; + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". + On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET) + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situation, + some unit tests fail. */ +#if HAVE_LANGINFO_CODESET + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } +#endif +#ifdef __CYGWIN__ + /* On Cygwin, avoid locale names without encoding suffix, because the + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; +#endif + /* Check whether in the abbreviation of the eighth month, the second + character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is + two bytes long, with UTF-8 encoding. */ + t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19; + if (strftime (buf, sizeof (buf), "%b", &t) < 4 + || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f) + return 1; + /* Check whether the upper-/lowercase mappings are as expected for + Turkish. */ + if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i' + || towupper(0x0131) != 'I' || towlower ('I') != 0x0131) + return 1; + return 0; +} +changequote([,])dnl + ])]) + if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr_TR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr_TR.UTF-8 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_tr_utf8=tr.UTF-8 + else + # None found. + gt_cv_locale_tr_utf8=none + fi + fi + fi + else + gt_cv_locale_tr_utf8=none + fi + rm -fr conftest* + ]) + LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8 + AC_SUBST([LOCALE_TR_UTF8]) +]) diff --git a/lib/gl/m4/multiarch.m4 b/lib/gl/m4/multiarch.m4 new file mode 100644 index 0000000..ec377ba --- /dev/null +++ b/lib/gl/m4/multiarch.m4 @@ -0,0 +1,65 @@ +# multiarch.m4 serial 5 +dnl Copyright (C) 2008, 2009 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. + +# Determine whether the compiler is or may be producing universal binaries. +# +# On MacOS X 10.5 and later systems, the user can create libraries and +# executables that work on multiple system types--known as "fat" or +# "universal" binaries--by specifying multiple '-arch' options to the +# compiler but only a single '-arch' option to the preprocessor. Like +# this: +# +# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ +# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ +# CPP="gcc -E" CXXCPP="g++ -E" +# +# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the +# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly. + +AC_DEFUN_ONCE([gl_MULTIARCH], +[ + dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. + gl_cv_c_multiarch=no + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + ]])], + [ + dnl Check for potential -arch flags. It is not universal unless + dnl there are at least two -arch flags with different values. + arch= + prev= + for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do + if test -n "$prev"; then + case $word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$arch" || test "$arch" = "$word"; then + arch="$word" + else + gl_cv_c_multiarch=yes + fi + ;; + esac + prev= + else + if test "x$word" = "x-arch"; then + prev=arch + fi + fi + done + ]) + if test $gl_cv_c_multiarch = yes; then + AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1], + [Define if the compiler is building for multiple architectures of Apple platforms at once.]) + APPLE_UNIVERSAL_BUILD=1 + else + APPLE_UNIVERSAL_BUILD=0 + fi + AC_SUBST([APPLE_UNIVERSAL_BUILD]) +]) diff --git a/lib/gl/m4/stdbool.m4 b/lib/gl/m4/stdbool.m4 new file mode 100644 index 0000000..57c804a --- /dev/null +++ b/lib/gl/m4/stdbool.m4 @@ -0,0 +1,115 @@ +# Check for stdbool.h that conforms to C99. + +dnl Copyright (C) 2002-2006, 2009 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. + +# Prepare for substituting <stdbool.h> if it is not supported. + +AC_DEFUN([AM_STDBOOL_H], +[ + AC_REQUIRE([AC_HEADER_STDBOOL]) + + # Define two additional variables used in the Makefile substitution. + + if test "$ac_cv_header_stdbool_h" = yes; then + STDBOOL_H='' + else + STDBOOL_H='stdbool.h' + fi + AC_SUBST([STDBOOL_H]) + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + AC_SUBST([HAVE__BOOL]) +]) + +# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future. +AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H]) + +# This macro is only needed in autoconf <= 2.59. Newer versions of autoconf +# have this macro built-in. + +AC_DEFUN([AC_HEADER_STDBOOL], + [AC_CACHE_CHECK([for stdbool.h that conforms to C99], + [ac_cv_header_stdbool_h], + [AC_TRY_COMPILE( + [ + #include <stdbool.h> + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #if false + "error: false is not 0" + #endif + #ifndef true + "error: true is not defined" + #endif + #if true != 1 + "error: true is not 1" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + bool e = &s; + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + #if defined __xlc__ || defined __GNUC__ + /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 + reported by James Lemley on 2005-10-05; see + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + This test is not quite right, since xlc is allowed to + reject this program, as the initializer for xlcbug is + not one of the forms that C requires support for. + However, doing the test right would require a run-time + test, and that would make cross-compilation harder. + Let us hope that IBM fixes the xlc bug, and also adds + support for this kind of constant expression. In the + meantime, this test will reject xlc, which is OK, since + our stdbool.h substitute should suffice. We also test + this with GCC, where it should work, to detect more + quickly whether someone messes up the test in the + future. */ + char digs[] = "0123456789"; + int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); + #endif + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + ], + [ + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + ], + [ac_cv_header_stdbool_h=yes], + [ac_cv_header_stdbool_h=no])]) + AC_CHECK_TYPES([_Bool]) + if test $ac_cv_header_stdbool_h = yes; then + AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.]) + fi]) diff --git a/lib/gl/m4/stdint.m4 b/lib/gl/m4/stdint.m4 new file mode 100644 index 0000000..a2e8bdd --- /dev/null +++ b/lib/gl/m4/stdint.m4 @@ -0,0 +1,472 @@ +# stdint.m4 serial 34 +dnl Copyright (C) 2001-2009 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 From Paul Eggert and Bruno Haible. +dnl Test whether <stdint.h> is supported or must be substituted. + +AC_DEFUN([gl_STDINT_H], +[ + AC_PREREQ([2.59])dnl + + dnl Check for long long int and unsigned long long int. + AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) + if test $ac_cv_type_long_long_int = yes; then + HAVE_LONG_LONG_INT=1 + else + HAVE_LONG_LONG_INT=0 + fi + AC_SUBST([HAVE_LONG_LONG_INT]) + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + HAVE_UNSIGNED_LONG_LONG_INT=1 + else + HAVE_UNSIGNED_LONG_LONG_INT=0 + fi + AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) + + dnl Check for <inttypes.h>. + dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. + if test $ac_cv_header_inttypes_h = yes; then + HAVE_INTTYPES_H=1 + else + HAVE_INTTYPES_H=0 + fi + AC_SUBST([HAVE_INTTYPES_H]) + + dnl Check for <sys/types.h>. + dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. + if test $ac_cv_header_sys_types_h = yes; then + HAVE_SYS_TYPES_H=1 + else + HAVE_SYS_TYPES_H=0 + fi + AC_SUBST([HAVE_SYS_TYPES_H]) + + gl_CHECK_NEXT_HEADERS([stdint.h]) + if test $ac_cv_header_stdint_h = yes; then + HAVE_STDINT_H=1 + else + HAVE_STDINT_H=0 + fi + AC_SUBST([HAVE_STDINT_H]) + + dnl Now see whether we need a substitute <stdint.h>. + if test $ac_cv_header_stdint_h = yes; then + AC_CACHE_CHECK([whether stdint.h conforms to C99], + [gl_cv_header_working_stdint_h], + [gl_cv_header_working_stdint_h=no + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */ +#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */ +#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ +#include <stdint.h> +/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */ +#if !(defined WCHAR_MIN && defined WCHAR_MAX) +#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>" +#endif +] +gl_STDINT_INCLUDES +[ +#ifdef INT8_MAX +int8_t a1 = INT8_MAX; +int8_t a1min = INT8_MIN; +#endif +#ifdef INT16_MAX +int16_t a2 = INT16_MAX; +int16_t a2min = INT16_MIN; +#endif +#ifdef INT32_MAX +int32_t a3 = INT32_MAX; +int32_t a3min = INT32_MIN; +#endif +#ifdef INT64_MAX +int64_t a4 = INT64_MAX; +int64_t a4min = INT64_MIN; +#endif +#ifdef UINT8_MAX +uint8_t b1 = UINT8_MAX; +#else +typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; +#endif +#ifdef UINT16_MAX +uint16_t b2 = UINT16_MAX; +#endif +#ifdef UINT32_MAX +uint32_t b3 = UINT32_MAX; +#endif +#ifdef UINT64_MAX +uint64_t b4 = UINT64_MAX; +#endif +int_least8_t c1 = INT8_C (0x7f); +int_least8_t c1max = INT_LEAST8_MAX; +int_least8_t c1min = INT_LEAST8_MIN; +int_least16_t c2 = INT16_C (0x7fff); +int_least16_t c2max = INT_LEAST16_MAX; +int_least16_t c2min = INT_LEAST16_MIN; +int_least32_t c3 = INT32_C (0x7fffffff); +int_least32_t c3max = INT_LEAST32_MAX; +int_least32_t c3min = INT_LEAST32_MIN; +int_least64_t c4 = INT64_C (0x7fffffffffffffff); +int_least64_t c4max = INT_LEAST64_MAX; +int_least64_t c4min = INT_LEAST64_MIN; +uint_least8_t d1 = UINT8_C (0xff); +uint_least8_t d1max = UINT_LEAST8_MAX; +uint_least16_t d2 = UINT16_C (0xffff); +uint_least16_t d2max = UINT_LEAST16_MAX; +uint_least32_t d3 = UINT32_C (0xffffffff); +uint_least32_t d3max = UINT_LEAST32_MAX; +uint_least64_t d4 = UINT64_C (0xffffffffffffffff); +uint_least64_t d4max = UINT_LEAST64_MAX; +int_fast8_t e1 = INT_FAST8_MAX; +int_fast8_t e1min = INT_FAST8_MIN; +int_fast16_t e2 = INT_FAST16_MAX; +int_fast16_t e2min = INT_FAST16_MIN; +int_fast32_t e3 = INT_FAST32_MAX; +int_fast32_t e3min = INT_FAST32_MIN; +int_fast64_t e4 = INT_FAST64_MAX; +int_fast64_t e4min = INT_FAST64_MIN; +uint_fast8_t f1 = UINT_FAST8_MAX; +uint_fast16_t f2 = UINT_FAST16_MAX; +uint_fast32_t f3 = UINT_FAST32_MAX; +uint_fast64_t f4 = UINT_FAST64_MAX; +#ifdef INTPTR_MAX +intptr_t g = INTPTR_MAX; +intptr_t gmin = INTPTR_MIN; +#endif +#ifdef UINTPTR_MAX +uintptr_t h = UINTPTR_MAX; +#endif +intmax_t i = INTMAX_MAX; +uintmax_t j = UINTMAX_MAX; + +#include <limits.h> /* for CHAR_BIT */ +#define TYPE_MINIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) +#define TYPE_MAXIMUM(t) \ + ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) +struct s { + int check_PTRDIFF: + PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) + && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) + ? 1 : -1; + /* Detect bug in FreeBSD 6.0 / ia64. */ + int check_SIG_ATOMIC: + SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) + && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) + ? 1 : -1; + int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; + int check_WCHAR: + WCHAR_MIN == TYPE_MINIMUM (wchar_t) + && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) + ? 1 : -1; + /* Detect bug in mingw. */ + int check_WINT: + WINT_MIN == TYPE_MINIMUM (wint_t) + && WINT_MAX == TYPE_MAXIMUM (wint_t) + ? 1 : -1; + + /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ + int check_UINT8_C: + (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; + int check_UINT16_C: + (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; + + /* Detect bugs in OpenBSD 3.9 stdint.h. */ +#ifdef UINT8_MAX + int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; +#endif +#ifdef UINT16_MAX + int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; +#endif +#ifdef UINT32_MAX + int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; +#endif +#ifdef UINT64_MAX + int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; +#endif + int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; + int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; + int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; + int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; + int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; + int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; + int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; + int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; + int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; + int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; + int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; +}; + ]])], + [dnl Determine whether the various *_MIN, *_MAX macros are usable + dnl in preprocessor expression. We could do it by compiling a test + dnl program for each of these macros. It is faster to run a program + dnl that inspects the macro expansion. + dnl This detects a bug on HP-UX 11.23/ia64. + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */ +#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */ +#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ +#include <stdint.h> +] +gl_STDINT_INCLUDES +[ +#include <stdio.h> +#include <string.h> +#define MVAL(macro) MVAL1(macro) +#define MVAL1(expression) #expression +static const char *macro_values[] = + { +#ifdef INT8_MAX + MVAL (INT8_MAX), +#endif +#ifdef INT16_MAX + MVAL (INT16_MAX), +#endif +#ifdef INT32_MAX + MVAL (INT32_MAX), +#endif +#ifdef INT64_MAX + MVAL (INT64_MAX), +#endif +#ifdef UINT8_MAX + MVAL (UINT8_MAX), +#endif +#ifdef UINT16_MAX + MVAL (UINT16_MAX), +#endif +#ifdef UINT32_MAX + MVAL (UINT32_MAX), +#endif +#ifdef UINT64_MAX + MVAL (UINT64_MAX), +#endif + NULL + }; +]], [[ + const char **mv; + for (mv = macro_values; *mv != NULL; mv++) + { + const char *value = *mv; + /* Test whether it looks like a cast expression. */ + if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 + || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 + || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 + || strncmp (value, "((int)"/*)*/, 6) == 0 + || strncmp (value, "((signed short)"/*)*/, 15) == 0 + || strncmp (value, "((signed char)"/*)*/, 14) == 0) + return 1; + } + return 0; +]])], + [gl_cv_header_working_stdint_h=yes], + [], + [dnl When cross-compiling, assume it works. + gl_cv_header_working_stdint_h=yes + ]) + ]) + ]) + fi + if test "$gl_cv_header_working_stdint_h" = yes; then + STDINT_H= + else + dnl Check for <sys/inttypes.h>, and for + dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5). + AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) + if test $ac_cv_header_sys_inttypes_h = yes; then + HAVE_SYS_INTTYPES_H=1 + else + HAVE_SYS_INTTYPES_H=0 + fi + AC_SUBST([HAVE_SYS_INTTYPES_H]) + if test $ac_cv_header_sys_bitypes_h = yes; then + HAVE_SYS_BITYPES_H=1 + else + HAVE_SYS_BITYPES_H=0 + fi + AC_SUBST([HAVE_SYS_BITYPES_H]) + + dnl Check for <wchar.h> (missing in Linux uClibc when built without wide + dnl character support). + AC_CHECK_HEADERS_ONCE([wchar.h]) + + gl_STDINT_TYPE_PROPERTIES + STDINT_H=stdint.h + fi + AC_SUBST([STDINT_H]) +]) + +dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) +dnl Determine the size of each of the given types in bits. +AC_DEFUN([gl_STDINT_BITSIZEOF], +[ + dnl Use a shell loop, to avoid bloating configure, and + dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into + dnl config.h.in, + dnl - extra AC_SUBST calls, so that the right substitutions are made. + m4_foreach_w([gltype], [$1], + [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), + [Define to the number of bits in type ']gltype['.])]) + for gltype in $1 ; do + AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], + [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], + [$2 +#include <limits.h>], [result=unknown]) + eval gl_cv_bitsizeof_${gltype}=\$result + ]) + eval result=\$gl_cv_bitsizeof_${gltype} + if test $result = unknown; then + dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, + dnl do a syntax check even on unused #if conditions and give an error + dnl on valid C code like this: + dnl #if 0 + dnl # if > 32 + dnl # endif + dnl #endif + result=0 + fi + GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) + eval BITSIZEOF_${GLTYPE}=\$result + done + m4_foreach_w([gltype], [$1], + [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) +]) + +dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) +dnl Determine the signedness of each of the given types. +dnl Define HAVE_SIGNED_TYPE if type is signed. +AC_DEFUN([gl_CHECK_TYPES_SIGNED], +[ + dnl Use a shell loop, to avoid bloating configure, and + dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into + dnl config.h.in, + dnl - extra AC_SUBST calls, so that the right substitutions are made. + m4_foreach_w([gltype], [$1], + [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), + [Define to 1 if ']gltype[' is a signed integer type.])]) + for gltype in $1 ; do + AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([$2[ + int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], + result=yes, result=no) + eval gl_cv_type_${gltype}_signed=\$result + ]) + eval result=\$gl_cv_type_${gltype}_signed + GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + if test "$result" = yes; then + AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) + eval HAVE_SIGNED_${GLTYPE}=1 + else + eval HAVE_SIGNED_${GLTYPE}=0 + fi + done + m4_foreach_w([gltype], [$1], + [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) +]) + +dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) +dnl Determine the suffix to use for integer constants of the given types. +dnl Define t_SUFFIX for each such type. +AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], +[ + dnl Use a shell loop, to avoid bloating configure, and + dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into + dnl config.h.in, + dnl - extra AC_SUBST calls, so that the right substitutions are made. + m4_foreach_w([gltype], [$1], + [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], + [Define to l, ll, u, ul, ull, etc., as suitable for + constants of type ']gltype['.])]) + for gltype in $1 ; do + AC_CACHE_CHECK([for $gltype integer literal suffix], + [gl_cv_type_${gltype}_suffix], + [eval gl_cv_type_${gltype}_suffix=no + eval result=\$gl_cv_type_${gltype}_signed + if test "$result" = yes; then + glsufu= + else + glsufu=u + fi + for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do + case $glsuf in + '') gltype1='int';; + l) gltype1='long int';; + ll) gltype1='long long int';; + i64) gltype1='__int64';; + u) gltype1='unsigned int';; + ul) gltype1='unsigned long int';; + ull) gltype1='unsigned long long int';; + ui64)gltype1='unsigned __int64';; + esac + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([$2[ + extern $gltype foo; + extern $gltype1 foo;]])], + [eval gl_cv_type_${gltype}_suffix=\$glsuf]) + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" != no && break + done]) + GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` + eval result=\$gl_cv_type_${gltype}_suffix + test "$result" = no && result= + eval ${GLTYPE}_SUFFIX=\$result + AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) + done + m4_foreach_w([gltype], [$1], + [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) +]) + +dnl gl_STDINT_INCLUDES +AC_DEFUN([gl_STDINT_INCLUDES], +[[ + /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ + #include <stddef.h> + #include <signal.h> + #if HAVE_WCHAR_H + # include <stdio.h> + # include <time.h> + # include <wchar.h> + #endif +]]) + +dnl gl_STDINT_TYPE_PROPERTIES +dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t +dnl of interest to stdint.in.h. +AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], +[ + AC_REQUIRE([gl_MULTIARCH]) + if test $APPLE_UNIVERSAL_BUILD = 0; then + gl_STDINT_BITSIZEOF([ptrdiff_t size_t], + [gl_STDINT_INCLUDES]) + fi + gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], + [gl_STDINT_INCLUDES]) + gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], + [gl_STDINT_INCLUDES]) + gl_cv_type_ptrdiff_t_signed=yes + gl_cv_type_size_t_signed=no + if test $APPLE_UNIVERSAL_BUILD = 0; then + gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], + [gl_STDINT_INCLUDES]) + fi + gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], + [gl_STDINT_INCLUDES]) +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) + +# Hey Emacs! +# Local Variables: +# indent-tabs-mode: nil +# End: diff --git a/lib/gl/m4/strverscmp.m4 b/lib/gl/m4/strverscmp.m4 new file mode 100644 index 0000000..becce2b --- /dev/null +++ b/lib/gl/m4/strverscmp.m4 @@ -0,0 +1,23 @@ +# strverscmp.m4 serial 7 +dnl Copyright (C) 2002, 2005-2009 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. + +AC_DEFUN([gl_FUNC_STRVERSCMP], +[ + dnl Persuade glibc <string.h> to declare strverscmp(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + AC_REPLACE_FUNCS([strverscmp]) + if test $ac_cv_func_strverscmp = no; then + gl_PREREQ_STRVERSCMP + HAVE_STRVERSCMP=0 + fi +]) + +# Prerequisites of lib/strverscmp.c. +AC_DEFUN([gl_PREREQ_STRVERSCMP], [ + : +]) diff --git a/lib/gl/m4/wchar.m4 b/lib/gl/m4/wchar.m4 new file mode 100644 index 0000000..2e52a82 --- /dev/null +++ b/lib/gl/m4/wchar.m4 @@ -0,0 +1,100 @@ +dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. + +dnl Copyright (C) 2007-2009 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 Written by Eric Blake. + +# wchar.m4 serial 23 + +AC_DEFUN([gl_WCHAR_H], +[ + AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) + AC_CACHE_CHECK([whether <wchar.h> is standalone], + [gl_cv_header_wchar_h_standalone], + [AC_COMPILE_IFELSE([[#include <wchar.h> +wchar_t w;]], + [gl_cv_header_wchar_h_standalone=yes], + [gl_cv_header_wchar_h_standalone=no])]) + + AC_REQUIRE([gt_TYPE_WINT_T]) + if test $gt_cv_c_wint_t = yes; then + HAVE_WINT_T=1 + else + HAVE_WINT_T=0 + fi + AC_SUBST([HAVE_WINT_T]) + + if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then + WCHAR_H=wchar.h + fi + + dnl Prepare for creating substitute <wchar.h>. + dnl Do it always: WCHAR_H may be empty here but can be set later. + dnl Check for <wchar.h> (missing in Linux uClibc when built without wide + dnl character support). + AC_CHECK_HEADERS_ONCE([wchar.h]) + if test $ac_cv_header_wchar_h = yes; then + HAVE_WCHAR_H=1 + else + HAVE_WCHAR_H=0 + fi + AC_SUBST([HAVE_WCHAR_H]) + gl_CHECK_NEXT_HEADERS([wchar.h]) +]) + +dnl Unconditionally enables the replacement of <wchar.h>. +AC_DEFUN([gl_REPLACE_WCHAR_H], +[ + AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) + WCHAR_H=wchar.h +]) + +AC_DEFUN([gl_WCHAR_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) + GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1 +]) + +AC_DEFUN([gl_WCHAR_H_DEFAULTS], +[ + GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC]) + GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB]) + GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT]) + GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC]) + GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN]) + GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS]) + GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS]) + GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB]) + GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS]) + GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS]) + GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC]) + HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT]) + HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC]) + HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN]) + HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS]) + HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS]) + HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB]) + HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS]) + HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS]) + HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB]) + HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH]) + REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T]) + REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC]) + REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB]) + REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT]) + REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC]) + REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN]) + REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS]) + REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS]) + REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB]) + REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS]) + REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS]) + REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) + WCHAR_H=''; AC_SUBST([WCHAR_H]) +]) diff --git a/lib/gl/stdbool.in.h b/lib/gl/stdbool.in.h new file mode 100644 index 0000000..45375b3 --- /dev/null +++ b/lib/gl/stdbool.in.h @@ -0,0 +1,119 @@ +/* Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc. + Written by Bruno Haible <haible@clisp.cons.org>, 2001. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_STDBOOL_H +#define _GL_STDBOOL_H + +/* ISO C 99 <stdbool.h> for platforms that lack it. */ + +/* Usage suggestions: + + Programs that use <stdbool.h> should be aware of some limitations + and standards compliance issues. + + Standards compliance: + + - <stdbool.h> must be #included before 'bool', 'false', 'true' + can be used. + + - You cannot assume that sizeof (bool) == 1. + + - Programs should not undefine the macros bool, true, and false, + as C99 lists that as an "obsolescent feature". + + Limitations of this substitute, when used in a C89 environment: + + - <stdbool.h> must be #included before the '_Bool' type can be used. + + - You cannot assume that _Bool is a typedef; it might be a macro. + + - Bit-fields of type 'bool' are not supported. Portable code + should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. + + - In C99, casts and automatic conversions to '_Bool' or 'bool' are + performed in such a way that every nonzero value gets converted + to 'true', and zero gets converted to 'false'. This doesn't work + with this substitute. With this substitute, only the values 0 and 1 + give the expected result when converted to _Bool' or 'bool'. + + Also, it is suggested that programs use 'bool' rather than '_Bool'; + this isn't required, but 'bool' is more common. */ + + +/* 7.16. Boolean type and values */ + +/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same + definitions below, but temporarily we have to #undef them. */ +#if defined __BEOS__ && !defined __HAIKU__ +# include <OS.h> /* defines bool but not _Bool */ +# undef false +# undef true +#endif + +/* For the sake of symbolic names in gdb, we define true and false as + enum constants, not only as macros. + It is tempting to write + typedef enum { false = 0, true = 1 } _Bool; + so that gdb prints values of type 'bool' symbolically. But if we do + this, values of type '_Bool' may promote to 'int' or 'unsigned int' + (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' + (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the + enum; this ensures that '_Bool' promotes to 'int'. */ +#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__) + /* A compiler known to have 'bool'. */ + /* If the compiler already has both 'bool' and '_Bool', we can assume they + are the same types. */ +# if !@HAVE__BOOL@ +typedef bool _Bool; +# endif +#else +# if !defined __GNUC__ + /* If @HAVE__BOOL@: + Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when + the built-in _Bool type is used. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + Similar bugs are likely with other compilers as well; this file + wouldn't be used if <stdbool.h> was working. + So we override the _Bool type. + If !@HAVE__BOOL@: + Need to define _Bool ourselves. As 'signed char' or as an enum type? + Use of a typedef, with SunPRO C, leads to a stupid + "warning: _Bool is a keyword in ISO C99". + Use of an enum type, with IRIX cc, leads to a stupid + "warning(1185): enumerated type mixed with another type". + Even the existence of an enum type, without a typedef, + "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. + The only benefit of the enum, debuggability, is not important + with these compilers. So use 'signed char' and no enum. */ +# define _Bool signed char +# else + /* With this compiler, trust the _Bool type if the compiler has it. */ +# if !@HAVE__BOOL@ +typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; +# endif +# endif +#endif +#define bool _Bool + +/* The other macros must be usable in preprocessor directives. */ +#define false 0 +#define true 1 +#define __bool_true_false_are_defined 1 + +#endif /* _GL_STDBOOL_H */ diff --git a/lib/gl/stdint.in.h b/lib/gl/stdint.in.h new file mode 100644 index 0000000..b63d431 --- /dev/null +++ b/lib/gl/stdint.in.h @@ -0,0 +1,568 @@ +/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc. + Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. + This file is part of gnulib. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* + * ISO C 99 <stdint.h> for platforms that lack it. + * <http://www.opengroup.org/susv3xbd/stdint.h.html> + */ + +#ifndef _GL_STDINT_H + +/* When including a system file that in turn includes <inttypes.h>, + use the system <inttypes.h>, not our substitute. This avoids + problems with (for example) VMS, whose <sys/bitypes.h> includes + <inttypes.h>. */ +#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H + +/* Get those types that are already defined in other system include + files, so that we can "#define int8_t signed char" below without + worrying about a later system include file containing a "typedef + signed char int8_t;" that will get messed up by our macro. Our + macros should all be consistent with the system versions, except + for the "fast" types and macros, which we recommend against using + in public interfaces due to compiler differences. */ + +#if @HAVE_STDINT_H@ +# if defined __sgi && ! defined __c99 + /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users + with "This header file is to be used only for c99 mode compilations" + diagnostics. */ +# define __STDINT_H__ +# endif + /* Other systems may have an incomplete or buggy <stdint.h>. + Include it before <inttypes.h>, since any "#include <stdint.h>" + in <inttypes.h> would reinclude us, skipping our contents because + _GL_STDINT_H is defined. + The include_next requires a split double-inclusion guard. */ +# if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +# endif +# @INCLUDE_NEXT@ @NEXT_STDINT_H@ +#endif + +#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H +#define _GL_STDINT_H + +/* <sys/types.h> defines some of the stdint.h types as well, on glibc, + IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>). + AIX 5.2 <sys/types.h> isn't needed and causes troubles. + MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but + relies on the system <stdint.h> definitions, so include + <sys/types.h> after @NEXT_STDINT_H@. */ +#if @HAVE_SYS_TYPES_H@ && ! defined _AIX +# include <sys/types.h> +#endif + +/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */ +#include <limits.h> + +#if @HAVE_INTTYPES_H@ + /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines + int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. + <inttypes.h> also defines intptr_t and uintptr_t. */ +# include <inttypes.h> +#elif @HAVE_SYS_INTTYPES_H@ + /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and + the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ +# include <sys/inttypes.h> +#endif + +#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ + /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines + int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is + included by <sys/types.h>. */ +# include <sys/bitypes.h> +#endif + +#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H + +/* Minimum and maximum values for a integer type under the usual assumption. + Return an unspecified value if BITS == 0, adding a check to pacify + picky compilers. */ + +#define _STDINT_MIN(signed, bits, zero) \ + ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) + +#define _STDINT_MAX(signed, bits, zero) \ + ((signed) \ + ? ~ _STDINT_MIN (signed, bits, zero) \ + : /* The expression for the unsigned case. The subtraction of (signed) \ + is a nop in the unsigned case and avoids "signed integer overflow" \ + warnings in the signed case. */ \ + ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) + +/* 7.18.1.1. Exact-width integer types */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. */ + +#undef int8_t +#undef uint8_t +typedef signed char gl_int8_t; +typedef unsigned char gl_uint8_t; +#define int8_t gl_int8_t +#define uint8_t gl_uint8_t + +#undef int16_t +#undef uint16_t +typedef short int gl_int16_t; +typedef unsigned short int gl_uint16_t; +#define int16_t gl_int16_t +#define uint16_t gl_uint16_t + +#undef int32_t +#undef uint32_t +typedef int gl_int32_t; +typedef unsigned int gl_uint32_t; +#define int32_t gl_int32_t +#define uint32_t gl_uint32_t + +/* Do not undefine int64_t if gnulib is not being used with 64-bit + types, since otherwise it breaks platforms like Tandem/NSK. */ +#if LONG_MAX >> 31 >> 31 == 1 +# undef int64_t +typedef long int gl_int64_t; +# define int64_t gl_int64_t +# define GL_INT64_T +#elif defined _MSC_VER +# undef int64_t +typedef __int64 gl_int64_t; +# define int64_t gl_int64_t +# define GL_INT64_T +#elif @HAVE_LONG_LONG_INT@ +# undef int64_t +typedef long long int gl_int64_t; +# define int64_t gl_int64_t +# define GL_INT64_T +#endif + +#if ULONG_MAX >> 31 >> 31 >> 1 == 1 +# undef uint64_t +typedef unsigned long int gl_uint64_t; +# define uint64_t gl_uint64_t +# define GL_UINT64_T +#elif defined _MSC_VER +# undef uint64_t +typedef unsigned __int64 gl_uint64_t; +# define uint64_t gl_uint64_t +# define GL_UINT64_T +#elif @HAVE_UNSIGNED_LONG_LONG_INT@ +# undef uint64_t +typedef unsigned long long int gl_uint64_t; +# define uint64_t gl_uint64_t +# define GL_UINT64_T +#endif + +/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */ +#define _UINT8_T +#define _UINT32_T +#define _UINT64_T + + +/* 7.18.1.2. Minimum-width integer types */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types + are the same as the corresponding N_t types. */ + +#undef int_least8_t +#undef uint_least8_t +#undef int_least16_t +#undef uint_least16_t +#undef int_least32_t +#undef uint_least32_t +#undef int_least64_t +#undef uint_least64_t +#define int_least8_t int8_t +#define uint_least8_t uint8_t +#define int_least16_t int16_t +#define uint_least16_t uint16_t +#define int_least32_t int32_t +#define uint_least32_t uint32_t +#ifdef GL_INT64_T +# define int_least64_t int64_t +#endif +#ifdef GL_UINT64_T +# define uint_least64_t uint64_t +#endif + +/* 7.18.1.3. Fastest minimum-width integer types */ + +/* Note: Other <stdint.h> substitutes may define these types differently. + It is not recommended to use these types in public header files. */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types + are taken from the same list of types. Assume that 'long int' + is fast enough for all narrower integers. */ + +#undef int_fast8_t +#undef uint_fast8_t +#undef int_fast16_t +#undef uint_fast16_t +#undef int_fast32_t +#undef uint_fast32_t +#undef int_fast64_t +#undef uint_fast64_t +typedef long int gl_int_fast8_t; +typedef unsigned long int gl_uint_fast8_t; +typedef long int gl_int_fast16_t; +typedef unsigned long int gl_uint_fast16_t; +typedef long int gl_int_fast32_t; +typedef unsigned long int gl_uint_fast32_t; +#define int_fast8_t gl_int_fast8_t +#define uint_fast8_t gl_uint_fast8_t +#define int_fast16_t gl_int_fast16_t +#define uint_fast16_t gl_uint_fast16_t +#define int_fast32_t gl_int_fast32_t +#define uint_fast32_t gl_uint_fast32_t +#ifdef GL_INT64_T +# define int_fast64_t int64_t +#endif +#ifdef GL_UINT64_T +# define uint_fast64_t uint64_t +#endif + +/* 7.18.1.4. Integer types capable of holding object pointers */ + +#undef intptr_t +#undef uintptr_t +typedef long int gl_intptr_t; +typedef unsigned long int gl_uintptr_t; +#define intptr_t gl_intptr_t +#define uintptr_t gl_uintptr_t + +/* 7.18.1.5. Greatest-width integer types */ + +/* Note: These types are compiler dependent. It may be unwise to use them in + public header files. */ + +#undef intmax_t +#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 +typedef long long int gl_intmax_t; +# define intmax_t gl_intmax_t +#elif defined GL_INT64_T +# define intmax_t int64_t +#else +typedef long int gl_intmax_t; +# define intmax_t gl_intmax_t +#endif + +#undef uintmax_t +#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 +typedef unsigned long long int gl_uintmax_t; +# define uintmax_t gl_uintmax_t +#elif defined GL_UINT64_T +# define uintmax_t uint64_t +#else +typedef unsigned long int gl_uintmax_t; +# define uintmax_t gl_uintmax_t +#endif + +/* Verify that intmax_t and uintmax_t have the same size. Too much code + breaks if this is not the case. If this check fails, the reason is likely + to be found in the autoconf macros. */ +typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1]; + +/* 7.18.2. Limits of specified-width integer types */ + +#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS + +/* 7.18.2.1. Limits of exact-width integer types */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. */ + +#undef INT8_MIN +#undef INT8_MAX +#undef UINT8_MAX +#define INT8_MIN (~ INT8_MAX) +#define INT8_MAX 127 +#define UINT8_MAX 255 + +#undef INT16_MIN +#undef INT16_MAX +#undef UINT16_MAX +#define INT16_MIN (~ INT16_MAX) +#define INT16_MAX 32767 +#define UINT16_MAX 65535 + +#undef INT32_MIN +#undef INT32_MAX +#undef UINT32_MAX +#define INT32_MIN (~ INT32_MAX) +#define INT32_MAX 2147483647 +#define UINT32_MAX 4294967295U + +#undef INT64_MIN +#undef INT64_MAX +#ifdef GL_INT64_T +/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 + evaluates the latter incorrectly in preprocessor expressions. */ +# define INT64_MIN (- INTMAX_C (1) << 63) +# define INT64_MAX INTMAX_C (9223372036854775807) +#endif + +#undef UINT64_MAX +#ifdef GL_UINT64_T +# define UINT64_MAX UINTMAX_C (18446744073709551615) +#endif + +/* 7.18.2.2. Limits of minimum-width integer types */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types + are the same as the corresponding N_t types. */ + +#undef INT_LEAST8_MIN +#undef INT_LEAST8_MAX +#undef UINT_LEAST8_MAX +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define UINT_LEAST8_MAX UINT8_MAX + +#undef INT_LEAST16_MIN +#undef INT_LEAST16_MAX +#undef UINT_LEAST16_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define UINT_LEAST16_MAX UINT16_MAX + +#undef INT_LEAST32_MIN +#undef INT_LEAST32_MAX +#undef UINT_LEAST32_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define UINT_LEAST32_MAX UINT32_MAX + +#undef INT_LEAST64_MIN +#undef INT_LEAST64_MAX +#ifdef GL_INT64_T +# define INT_LEAST64_MIN INT64_MIN +# define INT_LEAST64_MAX INT64_MAX +#endif + +#undef UINT_LEAST64_MAX +#ifdef GL_UINT64_T +# define UINT_LEAST64_MAX UINT64_MAX +#endif + +/* 7.18.2.3. Limits of fastest minimum-width integer types */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types + are taken from the same list of types. */ + +#undef INT_FAST8_MIN +#undef INT_FAST8_MAX +#undef UINT_FAST8_MAX +#define INT_FAST8_MIN LONG_MIN +#define INT_FAST8_MAX LONG_MAX +#define UINT_FAST8_MAX ULONG_MAX + +#undef INT_FAST16_MIN +#undef INT_FAST16_MAX +#undef UINT_FAST16_MAX +#define INT_FAST16_MIN LONG_MIN +#define INT_FAST16_MAX LONG_MAX +#define UINT_FAST16_MAX ULONG_MAX + +#undef INT_FAST32_MIN +#undef INT_FAST32_MAX +#undef UINT_FAST32_MAX +#define INT_FAST32_MIN LONG_MIN +#define INT_FAST32_MAX LONG_MAX +#define UINT_FAST32_MAX ULONG_MAX + +#undef INT_FAST64_MIN +#undef INT_FAST64_MAX +#ifdef GL_INT64_T +# define INT_FAST64_MIN INT64_MIN +# define INT_FAST64_MAX INT64_MAX +#endif + +#undef UINT_FAST64_MAX +#ifdef GL_UINT64_T +# define UINT_FAST64_MAX UINT64_MAX +#endif + +/* 7.18.2.4. Limits of integer types capable of holding object pointers */ + +#undef INTPTR_MIN +#undef INTPTR_MAX +#undef UINTPTR_MAX +#define INTPTR_MIN LONG_MIN +#define INTPTR_MAX LONG_MAX +#define UINTPTR_MAX ULONG_MAX + +/* 7.18.2.5. Limits of greatest-width integer types */ + +#undef INTMAX_MIN +#undef INTMAX_MAX +#ifdef INT64_MAX +# define INTMAX_MIN INT64_MIN +# define INTMAX_MAX INT64_MAX +#else +# define INTMAX_MIN INT32_MIN +# define INTMAX_MAX INT32_MAX +#endif + +#undef UINTMAX_MAX +#ifdef UINT64_MAX +# define UINTMAX_MAX UINT64_MAX +#else +# define UINTMAX_MAX UINT32_MAX +#endif + +/* 7.18.3. Limits of other integer types */ + +/* ptrdiff_t limits */ +#undef PTRDIFF_MIN +#undef PTRDIFF_MAX +#if @APPLE_UNIVERSAL_BUILD@ +# ifdef _LP64 +# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) +# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) +# else +# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) +# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) +# endif +#else +# define PTRDIFF_MIN \ + _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) +# define PTRDIFF_MAX \ + _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) +#endif + +/* sig_atomic_t limits */ +#undef SIG_ATOMIC_MIN +#undef SIG_ATOMIC_MAX +#define SIG_ATOMIC_MIN \ + _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ + 0@SIG_ATOMIC_T_SUFFIX@) +#define SIG_ATOMIC_MAX \ + _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ + 0@SIG_ATOMIC_T_SUFFIX@) + + +/* size_t limit */ +#undef SIZE_MAX +#if @APPLE_UNIVERSAL_BUILD@ +# ifdef _LP64 +# define SIZE_MAX _STDINT_MAX (0, 64, 0ul) +# else +# define SIZE_MAX _STDINT_MAX (0, 32, 0ul) +# endif +#else +# define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) +#endif + +/* wchar_t limits */ +/* Get WCHAR_MIN, WCHAR_MAX. + This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested + includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes + <stdint.h> and assumes its types are already defined. */ +#if ! (defined WCHAR_MIN && defined WCHAR_MAX) +# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H +/* We don't need WCHAR_* in libidn, so to avoid problems with + missing wchar.h, don't include wchar.h here. */ +# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H +#endif +#undef WCHAR_MIN +#undef WCHAR_MAX +#define WCHAR_MIN \ + _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) +#define WCHAR_MAX \ + _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) + +/* wint_t limits */ +#undef WINT_MIN +#undef WINT_MAX +#define WINT_MIN \ + _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) +#define WINT_MAX \ + _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) + +#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */ + +/* 7.18.4. Macros for integer constants */ + +#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS + +/* 7.18.4.1. Macros for minimum-width integer constants */ +/* According to ISO C 99 Technical Corrigendum 1 */ + +/* Here we assume a standard architecture where the hardware integer + types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ + +#undef INT8_C +#undef UINT8_C +#define INT8_C(x) x +#define UINT8_C(x) x + +#undef INT16_C +#undef UINT16_C +#define INT16_C(x) x +#define UINT16_C(x) x + +#undef INT32_C +#undef UINT32_C +#define INT32_C(x) x +#define UINT32_C(x) x ## U + +#undef INT64_C +#undef UINT64_C +#if LONG_MAX >> 31 >> 31 == 1 +# define INT64_C(x) x##L +#elif defined _MSC_VER +# define INT64_C(x) x##i64 +#elif @HAVE_LONG_LONG_INT@ +# define INT64_C(x) x##LL +#endif +#if ULONG_MAX >> 31 >> 31 >> 1 == 1 +# define UINT64_C(x) x##UL +#elif defined _MSC_VER +# define UINT64_C(x) x##ui64 +#elif @HAVE_UNSIGNED_LONG_LONG_INT@ +# define UINT64_C(x) x##ULL +#endif + +/* 7.18.4.2. Macros for greatest-width integer constants */ + +#undef INTMAX_C +#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 +# define INTMAX_C(x) x##LL +#elif defined GL_INT64_T +# define INTMAX_C(x) INT64_C(x) +#else +# define INTMAX_C(x) x##L +#endif + +#undef UINTMAX_C +#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 +# define UINTMAX_C(x) x##ULL +#elif defined GL_UINT64_T +# define UINTMAX_C(x) UINT64_C(x) +#else +# define UINTMAX_C(x) x##UL +#endif + +#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */ + +#endif /* _GL_STDINT_H */ +#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ diff --git a/lib/gl/striconv.c b/lib/gl/striconv.c new file mode 100644 index 0000000..2c6c51f --- /dev/null +++ b/lib/gl/striconv.c @@ -0,0 +1,458 @@ +/* Charset conversion. + Copyright (C) 2001-2007 Free Software Foundation, Inc. + Written by Bruno Haible and Simon Josefsson. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include <config.h> + +/* Specification. */ +#include "striconv.h" + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#if HAVE_ICONV +# include <iconv.h> +/* Get MB_LEN_MAX, CHAR_BIT. */ +# include <limits.h> +#endif + +#include "c-strcase.h" + +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t) -1) +#endif + + +#if HAVE_ICONV + +int +mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, + char **resultp, size_t *lengthp) +{ +# define tmpbufsize 4096 + size_t length; + char *result; + + /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + /* Set to the initial state. */ + iconv (cd, NULL, NULL, NULL, NULL); +# endif + + /* Determine the length we need. */ + { + size_t count = 0; + /* The alignment is needed when converting e.g. to glibc's WCHAR_T or + libiconv's UCS-4-INTERNAL encoding. */ + union { unsigned int align; char buf[tmpbufsize]; } tmp; +# define tmpbuf tmp.buf + const char *inptr = src; + size_t insize = srclen; + + while (insize > 0) + { + char *outptr = tmpbuf; + size_t outsize = tmpbufsize; + size_t res = iconv (cd, + (ICONV_CONST char **) &inptr, &insize, + &outptr, &outsize); + + if (res == (size_t)(-1)) + { + if (errno == E2BIG) + ; + else if (errno == EINVAL) + break; + else + return -1; + } +# if !defined _LIBICONV_VERSION && !defined __GLIBC__ + /* Irix iconv() inserts a NUL byte if it cannot convert. + NetBSD iconv() inserts a question mark if it cannot convert. + Only GNU libiconv and GNU libc are known to prefer to fail rather + than doing a lossy conversion. */ + else if (res > 0) + { + errno = EILSEQ; + return -1; + } +# endif + count += outptr - tmpbuf; + } + /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + { + char *outptr = tmpbuf; + size_t outsize = tmpbufsize; + size_t res = iconv (cd, NULL, NULL, &outptr, &outsize); + + if (res == (size_t)(-1)) + return -1; + count += outptr - tmpbuf; + } +# endif + length = count; +# undef tmpbuf + } + + if (length == 0) + { + *lengthp = 0; + return 0; + } + if (*resultp != NULL && *lengthp >= length) + result = *resultp; + else + { + result = (char *) malloc (length); + if (result == NULL) + { + errno = ENOMEM; + return -1; + } + } + + /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + /* Return to the initial state. */ + iconv (cd, NULL, NULL, NULL, NULL); +# endif + + /* Do the conversion for real. */ + { + const char *inptr = src; + size_t insize = srclen; + char *outptr = result; + size_t outsize = length; + + while (insize > 0) + { + size_t res = iconv (cd, + (ICONV_CONST char **) &inptr, &insize, + &outptr, &outsize); + + if (res == (size_t)(-1)) + { + if (errno == EINVAL) + break; + else + goto fail; + } +# if !defined _LIBICONV_VERSION && !defined __GLIBC__ + /* Irix iconv() inserts a NUL byte if it cannot convert. + NetBSD iconv() inserts a question mark if it cannot convert. + Only GNU libiconv and GNU libc are known to prefer to fail rather + than doing a lossy conversion. */ + else if (res > 0) + { + errno = EILSEQ; + goto fail; + } +# endif + } + /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + { + size_t res = iconv (cd, NULL, NULL, &outptr, &outsize); + + if (res == (size_t)(-1)) + goto fail; + } +# endif + if (outsize != 0) + abort (); + } + + *resultp = result; + *lengthp = length; + + return 0; + + fail: + { + if (result != *resultp) + { + int saved_errno = errno; + free (result); + errno = saved_errno; + } + return -1; + } +# undef tmpbufsize +} + +char * +str_cd_iconv (const char *src, iconv_t cd) +{ + /* For most encodings, a trailing NUL byte in the input will be converted + to a trailing NUL byte in the output. But not for UTF-7. So that this + function is usable for UTF-7, we have to exclude the NUL byte from the + conversion and add it by hand afterwards. */ +# if !defined _LIBICONV_VERSION && !defined __GLIBC__ + /* Irix iconv() inserts a NUL byte if it cannot convert. + NetBSD iconv() inserts a question mark if it cannot convert. + Only GNU libiconv and GNU libc are known to prefer to fail rather + than doing a lossy conversion. For other iconv() implementations, + we have to look at the number of irreversible conversions returned; + but this information is lost when iconv() returns for an E2BIG reason. + Therefore we cannot use the second, faster algorithm. */ + + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (src, strlen (src), cd, &result, &length); + char *final_result; + + if (retval < 0) + { + if (result != NULL) + abort (); + return NULL; + } + + /* Add the terminating NUL byte. */ + final_result = + (result != NULL ? realloc (result, length + 1) : malloc (length + 1)); + if (final_result == NULL) + { + if (result != NULL) + free (result); + errno = ENOMEM; + return NULL; + } + final_result[length] = '\0'; + + return final_result; + +# else + /* This algorithm is likely faster than the one above. But it may produce + iconv() returns for an E2BIG reason, when the output size guess is too + small. Therefore it can only be used when we don't need the number of + irreversible conversions performed. */ + char *result; + size_t result_size; + size_t length; + const char *inptr = src; + size_t inbytes_remaining = strlen (src); + + /* Make a guess for the worst-case output size, in order to avoid a + realloc. It's OK if the guess is wrong as long as it is not zero and + doesn't lead to an integer overflow. */ + result_size = inbytes_remaining; + { + size_t approx_sqrt_SIZE_MAX = SIZE_MAX >> (sizeof (size_t) * CHAR_BIT / 2); + if (result_size <= approx_sqrt_SIZE_MAX / MB_LEN_MAX) + result_size *= MB_LEN_MAX; + } + result_size += 1; /* for the terminating NUL */ + + result = (char *) malloc (result_size); + if (result == NULL) + { + errno = ENOMEM; + return NULL; + } + + /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + /* Set to the initial state. */ + iconv (cd, NULL, NULL, NULL, NULL); +# endif + + /* Do the conversion. */ + { + char *outptr = result; + size_t outbytes_remaining = result_size - 1; + + for (;;) + { + /* Here inptr + inbytes_remaining = src + strlen (src), + outptr + outbytes_remaining = result + result_size - 1. */ + size_t res = iconv (cd, + (ICONV_CONST char **) &inptr, &inbytes_remaining, + &outptr, &outbytes_remaining); + + if (res == (size_t)(-1)) + { + if (errno == EINVAL) + break; + else if (errno == E2BIG) + { + size_t used = outptr - result; + size_t newsize = result_size * 2; + char *newresult; + + if (!(newsize > result_size)) + { + errno = ENOMEM; + goto failed; + } + newresult = (char *) realloc (result, newsize); + if (newresult == NULL) + { + errno = ENOMEM; + goto failed; + } + result = newresult; + result_size = newsize; + outptr = result + used; + outbytes_remaining = result_size - 1 - used; + } + else + goto failed; + } + else + break; + } + /* Avoid glibc-2.1 bug and Solaris 2.7 bug. */ +# if defined _LIBICONV_VERSION \ + || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + for (;;) + { + /* Here outptr + outbytes_remaining = result + result_size - 1. */ + size_t res = iconv (cd, NULL, NULL, &outptr, &outbytes_remaining); + + if (res == (size_t)(-1)) + { + if (errno == E2BIG) + { + size_t used = outptr - result; + size_t newsize = result_size * 2; + char *newresult; + + if (!(newsize > result_size)) + { + errno = ENOMEM; + goto failed; + } + newresult = (char *) realloc (result, newsize); + if (newresult == NULL) + { + errno = ENOMEM; + goto failed; + } + result = newresult; + result_size = newsize; + outptr = result + used; + outbytes_remaining = result_size - 1 - used; + } + else + goto failed; + } + else + break; + } +# endif + + /* Add the terminating NUL byte. */ + *outptr++ = '\0'; + + length = outptr - result; + } + + /* Give away unused memory. */ + if (length < result_size) + { + char *smaller_result = (char *) realloc (result, length); + + if (smaller_result != NULL) + result = smaller_result; + } + + return result; + + failed: + { + int saved_errno = errno; + free (result); + errno = saved_errno; + return NULL; + } + +# endif +} + +#endif + +char * +str_iconv (const char *src, const char *from_codeset, const char *to_codeset) +{ + if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0) + { + char *result = strdup (src); + + if (result == NULL) + errno = ENOMEM; + return result; + } + else + { +#if HAVE_ICONV + iconv_t cd; + char *result; + + /* Avoid glibc-2.1 bug with EUC-KR. */ +# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION + if (c_strcasecmp (from_codeset, "EUC-KR") == 0 + || c_strcasecmp (to_codeset, "EUC-KR") == 0) + { + errno = EINVAL; + return NULL; + } +# endif + cd = iconv_open (to_codeset, from_codeset); + if (cd == (iconv_t) -1) + return NULL; + + result = str_cd_iconv (src, cd); + + if (result == NULL) + { + /* Close cd, but preserve the errno from str_cd_iconv. */ + int saved_errno = errno; + iconv_close (cd); + errno = saved_errno; + } + else + { + if (iconv_close (cd) < 0) + { + /* Return NULL, but free the allocated memory, and while doing + that, preserve the errno from iconv_close. */ + int saved_errno = errno; + free (result); + errno = saved_errno; + return NULL; + } + } + return result; +#else + /* This is a different error code than if iconv_open existed but didn't + support from_codeset and to_codeset, so that the caller can emit + an error message such as + "iconv() is not supported. Installing GNU libiconv and + then reinstalling this package would fix this." */ + errno = ENOSYS; + return NULL; +#endif + } +} diff --git a/lib/gl/striconv.h b/lib/gl/striconv.h new file mode 100644 index 0000000..3f1b107 --- /dev/null +++ b/lib/gl/striconv.h @@ -0,0 +1,76 @@ +/* Charset conversion. + Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc. + Written by Bruno Haible and Simon Josefsson. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _STRICONV_H +#define _STRICONV_H + +#include <stddef.h> +#if HAVE_ICONV +#include <iconv.h> +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +#if HAVE_ICONV + +/* Convert an entire string from one encoding to another, using iconv. + The original string is at [SRC,...,SRC+SRCLEN-1]. + The conversion descriptor is passed as CD. + *RESULTP and *LENGTH should initially be a scratch buffer and its size, + or *RESULTP can initially be NULL. + May erase the contents of the memory at *RESULTP. + Return value: 0 if successful, otherwise -1 and errno set. + If successful: The resulting string is stored in *RESULTP and its length + in *LENGTHP. *RESULTP is set to a freshly allocated memory block, or is + unchanged if no dynamic memory allocation was necessary. */ +extern int mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, + char **resultp, size_t *lengthp); + +/* Convert an entire string from one encoding to another, using iconv. + The original string is the NUL-terminated string starting at SRC. + The conversion descriptor is passed as CD. Both the "from" and the "to" + encoding must use a single NUL byte at the end of the string (i.e. not + UCS-2, UCS-4, UTF-16, UTF-32). + Allocate a malloced memory block for the result. + Return value: the freshly allocated resulting NUL-terminated string if + successful, otherwise NULL and errno set. */ +extern char * str_cd_iconv (const char *src, iconv_t cd); + +#endif + +/* Convert an entire string from one encoding to another, using iconv. + The original string is the NUL-terminated string starting at SRC. + Both the "from" and the "to" encoding must use a single NUL byte at the + end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32). + Allocate a malloced memory block for the result. + Return value: the freshly allocated resulting NUL-terminated string if + successful, otherwise NULL and errno set. */ +extern char * str_iconv (const char *src, + const char *from_codeset, const char *to_codeset); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _STRICONV_H */ diff --git a/lib/gl/string.in.h b/lib/gl/string.in.h new file mode 100644 index 0000000..0a6fb85 --- /dev/null +++ b/lib/gl/string.in.h @@ -0,0 +1,605 @@ +/* A GNU-like <string.h>. + + Copyright (C) 1995-1996, 2001-2008 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _GL_STRING_H + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +/* The include_next requires a split double-inclusion guard. */ +#@INCLUDE_NEXT@ @NEXT_STRING_H@ + +#ifndef _GL_STRING_H +#define _GL_STRING_H + + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +# define __attribute__(Spec) /* empty */ +# endif +/* The attribute __pure__ was added in gcc 2.96. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) +# define __pure__ /* empty */ +# endif +#endif + + +/* The definition of GL_LINK_WARNING is copied here. */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Return the first occurrence of NEEDLE in HAYSTACK. */ +#if @GNULIB_MEMMEM@ +# if @REPLACE_MEMMEM@ +# define memmem rpl_memmem +# endif +# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@ +extern void *memmem (void const *__haystack, size_t __haystack_len, + void const *__needle, size_t __needle_len) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef memmem +# define memmem(a,al,b,bl) \ + (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \ + "use gnulib module memmem-simple for portability, " \ + "and module memmem for speed" ), \ + memmem (a, al, b, bl)) +#endif + +/* Copy N bytes of SRC to DEST, return pointer to bytes after the + last written byte. */ +#if @GNULIB_MEMPCPY@ +# if ! @HAVE_MEMPCPY@ +extern void *mempcpy (void *restrict __dest, void const *restrict __src, + size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mempcpy +# define mempcpy(a,b,n) \ + (GL_LINK_WARNING ("mempcpy is unportable - " \ + "use gnulib module mempcpy for portability"), \ + mempcpy (a, b, n)) +#endif + +/* Search backwards through a block for a byte (specified as an int). */ +#if @GNULIB_MEMRCHR@ +# if ! @HAVE_DECL_MEMRCHR@ +extern void *memrchr (void const *, int, size_t) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef memrchr +# define memrchr(a,b,c) \ + (GL_LINK_WARNING ("memrchr is unportable - " \ + "use gnulib module memrchr for portability"), \ + memrchr (a, b, c)) +#endif + +/* Find the first occurrence of C in S. More efficient than + memchr(S,C,N), at the expense of undefined behavior if C does not + occur within N bytes. */ +#if @GNULIB_RAWMEMCHR@ +# if ! @HAVE_RAWMEMCHR@ +extern void *rawmemchr (void const *__s, int __c_in) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef rawmemchr +# define rawmemchr(a,b) \ + (GL_LINK_WARNING ("rawmemchr is unportable - " \ + "use gnulib module rawmemchr for portability"), \ + rawmemchr (a, b)) +#endif + +/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ +#if @GNULIB_STPCPY@ +# if ! @HAVE_STPCPY@ +extern char *stpcpy (char *restrict __dst, char const *restrict __src); +# endif +#elif defined GNULIB_POSIXCHECK +# undef stpcpy +# define stpcpy(a,b) \ + (GL_LINK_WARNING ("stpcpy is unportable - " \ + "use gnulib module stpcpy for portability"), \ + stpcpy (a, b)) +#endif + +/* Copy no more than N bytes of SRC to DST, returning a pointer past the + last non-NUL byte written into DST. */ +#if @GNULIB_STPNCPY@ +# if ! @HAVE_STPNCPY@ +# define stpncpy gnu_stpncpy +extern char *stpncpy (char *restrict __dst, char const *restrict __src, + size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef stpncpy +# define stpncpy(a,b,n) \ + (GL_LINK_WARNING ("stpncpy is unportable - " \ + "use gnulib module stpncpy for portability"), \ + stpncpy (a, b, n)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strchr() does not work with multibyte strings if the locale encoding is + GB18030 and the character to be searched is a digit. */ +# undef strchr +# define strchr(s,c) \ + (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \ + "in some multibyte locales - " \ + "use mbschr if you care about internationalization"), \ + strchr (s, c)) +#endif + +/* Find the first occurrence of C in S or the final NUL byte. */ +#if @GNULIB_STRCHRNUL@ +# if ! @HAVE_STRCHRNUL@ +extern char *strchrnul (char const *__s, int __c_in) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strchrnul +# define strchrnul(a,b) \ + (GL_LINK_WARNING ("strchrnul is unportable - " \ + "use gnulib module strchrnul for portability"), \ + strchrnul (a, b)) +#endif + +/* Duplicate S, returning an identical malloc'd string. */ +#if @GNULIB_STRDUP@ +# if @REPLACE_STRDUP@ +# undef strdup +# define strdup rpl_strdup +# endif +# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@ +extern char *strdup (char const *__s); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strdup +# define strdup(a) \ + (GL_LINK_WARNING ("strdup is unportable - " \ + "use gnulib module strdup for portability"), \ + strdup (a)) +#endif + +/* Return a newly allocated copy of at most N bytes of STRING. */ +#if @GNULIB_STRNDUP@ +# if ! @HAVE_STRNDUP@ +# undef strndup +# define strndup rpl_strndup +# endif +# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@ +extern char *strndup (char const *__string, size_t __n); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strndup +# define strndup(a,n) \ + (GL_LINK_WARNING ("strndup is unportable - " \ + "use gnulib module strndup for portability"), \ + strndup (a, n)) +#endif + +/* Find the length (number of bytes) of STRING, but scan at most + MAXLEN bytes. If no '\0' terminator is found in that many bytes, + return MAXLEN. */ +#if @GNULIB_STRNLEN@ +# if ! @HAVE_DECL_STRNLEN@ +extern size_t strnlen (char const *__string, size_t __maxlen) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strnlen +# define strnlen(a,n) \ + (GL_LINK_WARNING ("strnlen is unportable - " \ + "use gnulib module strnlen for portability"), \ + strnlen (a, n)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strcspn() assumes the second argument is a list of single-byte characters. + Even in this simple case, it does not work with multibyte strings if the + locale encoding is GB18030 and one of the characters to be searched is a + digit. */ +# undef strcspn +# define strcspn(s,a) \ + (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbscspn if you care about internationalization"), \ + strcspn (s, a)) +#endif + +/* Find the first occurrence in S of any character in ACCEPT. */ +#if @GNULIB_STRPBRK@ +# if ! @HAVE_STRPBRK@ +extern char *strpbrk (char const *__s, char const *__accept) + __attribute__ ((__pure__)); +# endif +# if defined GNULIB_POSIXCHECK +/* strpbrk() assumes the second argument is a list of single-byte characters. + Even in this simple case, it does not work with multibyte strings if the + locale encoding is GB18030 and one of the characters to be searched is a + digit. */ +# undef strpbrk +# define strpbrk(s,a) \ + (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbspbrk if you care about internationalization"), \ + strpbrk (s, a)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strpbrk +# define strpbrk(s,a) \ + (GL_LINK_WARNING ("strpbrk is unportable - " \ + "use gnulib module strpbrk for portability"), \ + strpbrk (s, a)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strspn() assumes the second argument is a list of single-byte characters. + Even in this simple case, it cannot work with multibyte strings. */ +# undef strspn +# define strspn(s,a) \ + (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbsspn if you care about internationalization"), \ + strspn (s, a)) +#endif + +#if defined GNULIB_POSIXCHECK +/* strrchr() does not work with multibyte strings if the locale encoding is + GB18030 and the character to be searched is a digit. */ +# undef strrchr +# define strrchr(s,c) \ + (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \ + "in some multibyte locales - " \ + "use mbsrchr if you care about internationalization"), \ + strrchr (s, c)) +#endif + +/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. + If one is found, overwrite it with a NUL, and advance *STRINGP + to point to the next char after it. Otherwise, set *STRINGP to NULL. + If *STRINGP was already NULL, nothing happens. + Return the old value of *STRINGP. + + This is a variant of strtok() that is multithread-safe and supports + empty fields. + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + Caveat: It doesn't work with multibyte strings unless all of the delimiter + characters are ASCII characters < 0x30. + + See also strtok_r(). */ +#if @GNULIB_STRSEP@ +# if ! @HAVE_STRSEP@ +extern char *strsep (char **restrict __stringp, char const *restrict __delim); +# endif +# if defined GNULIB_POSIXCHECK +# undef strsep +# define strsep(s,d) \ + (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbssep if you care about internationalization"), \ + strsep (s, d)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strsep +# define strsep(s,d) \ + (GL_LINK_WARNING ("strsep is unportable - " \ + "use gnulib module strsep for portability"), \ + strsep (s, d)) +#endif + +#if @GNULIB_STRSTR@ +# if @REPLACE_STRSTR@ +# define strstr rpl_strstr +char *strstr (const char *haystack, const char *needle) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +/* strstr() does not work with multibyte strings if the locale encoding is + different from UTF-8: + POSIX says that it operates on "strings", and "string" in POSIX is defined + as a sequence of bytes, not of characters. */ +# undef strstr +# define strstr(a,b) \ + (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \ + "work correctly on character strings in most " \ + "multibyte locales - " \ + "use mbsstr if you care about internationalization, " \ + "or use strstr if you care about speed"), \ + strstr (a, b)) +#endif + +/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive + comparison. */ +#if @GNULIB_STRCASESTR@ +# if @REPLACE_STRCASESTR@ +# define strcasestr rpl_strcasestr +# endif +# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@ +extern char *strcasestr (const char *haystack, const char *needle) + __attribute__ ((__pure__)); +# endif +#elif defined GNULIB_POSIXCHECK +/* strcasestr() does not work with multibyte strings: + It is a glibc extension, and glibc implements it only for unibyte + locales. */ +# undef strcasestr +# define strcasestr(a,b) \ + (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \ + "in multibyte locales - " \ + "use mbscasestr if you care about " \ + "internationalization, or use c-strcasestr if you want " \ + "a locale independent function"), \ + strcasestr (a, b)) +#endif + +/* Parse S into tokens separated by characters in DELIM. + If S is NULL, the saved pointer in SAVE_PTR is used as + the next starting point. For example: + char s[] = "-abc-=-def"; + char *sp; + x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" + x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL + x = strtok_r(NULL, "=", &sp); // x = NULL + // s = "abc\0-def\0" + + This is a variant of strtok() that is multithread-safe. + + For the POSIX documentation for this function, see: + http://www.opengroup.org/susv3xsh/strtok.html + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + Caveat: It doesn't work with multibyte strings unless all of the delimiter + characters are ASCII characters < 0x30. + + See also strsep(). */ +#if @GNULIB_STRTOK_R@ +# if ! @HAVE_DECL_STRTOK_R@ +extern char *strtok_r (char *restrict s, char const *restrict delim, + char **restrict save_ptr); +# endif +# if defined GNULIB_POSIXCHECK +# undef strtok_r +# define strtok_r(s,d,p) \ + (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \ + "in multibyte locales - " \ + "use mbstok_r if you care about internationalization"), \ + strtok_r (s, d, p)) +# endif +#elif defined GNULIB_POSIXCHECK +# undef strtok_r +# define strtok_r(s,d,p) \ + (GL_LINK_WARNING ("strtok_r is unportable - " \ + "use gnulib module strtok_r for portability"), \ + strtok_r (s, d, p)) +#endif + + +/* The following functions are not specified by POSIX. They are gnulib + extensions. */ + +#if @GNULIB_MBSLEN@ +/* Return the number of multibyte characters in the character string STRING. + This considers multibyte characters, unlike strlen, which counts bytes. */ +extern size_t mbslen (const char *string); +#endif + +#if @GNULIB_MBSNLEN@ +/* Return the number of multibyte characters in the character string starting + at STRING and ending at STRING + LEN. */ +extern size_t mbsnlen (const char *string, size_t len); +#endif + +#if @GNULIB_MBSCHR@ +/* Locate the first single-byte character C in the character string STRING, + and return a pointer to it. Return NULL if C is not found in STRING. + Unlike strchr(), this function works correctly in multibyte locales with + encodings such as GB18030. */ +# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ +extern char * mbschr (const char *string, int c); +#endif + +#if @GNULIB_MBSRCHR@ +/* Locate the last single-byte character C in the character string STRING, + and return a pointer to it. Return NULL if C is not found in STRING. + Unlike strrchr(), this function works correctly in multibyte locales with + encodings such as GB18030. */ +# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */ +extern char * mbsrchr (const char *string, int c); +#endif + +#if @GNULIB_MBSSTR@ +/* Find the first occurrence of the character string NEEDLE in the character + string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. + Unlike strstr(), this function works correctly in multibyte locales with + encodings different from UTF-8. */ +extern char * mbsstr (const char *haystack, const char *needle); +#endif + +#if @GNULIB_MBSCASECMP@ +/* Compare the character strings S1 and S2, ignoring case, returning less than, + equal to or greater than zero if S1 is lexicographically less than, equal to + or greater than S2. + Note: This function may, in multibyte locales, return 0 for strings of + different lengths! + Unlike strcasecmp(), this function works correctly in multibyte locales. */ +extern int mbscasecmp (const char *s1, const char *s2); +#endif + +#if @GNULIB_MBSNCASECMP@ +/* Compare the initial segment of the character string S1 consisting of at most + N characters with the initial segment of the character string S2 consisting + of at most N characters, ignoring case, returning less than, equal to or + greater than zero if the initial segment of S1 is lexicographically less + than, equal to or greater than the initial segment of S2. + Note: This function may, in multibyte locales, return 0 for initial segments + of different lengths! + Unlike strncasecmp(), this function works correctly in multibyte locales. + But beware that N is not a byte count but a character count! */ +extern int mbsncasecmp (const char *s1, const char *s2, size_t n); +#endif + +#if @GNULIB_MBSPCASECMP@ +/* Compare the initial segment of the character string STRING consisting of + at most mbslen (PREFIX) characters with the character string PREFIX, + ignoring case, returning less than, equal to or greater than zero if this + initial segment is lexicographically less than, equal to or greater than + PREFIX. + Note: This function may, in multibyte locales, return 0 if STRING is of + smaller length than PREFIX! + Unlike strncasecmp(), this function works correctly in multibyte + locales. */ +extern char * mbspcasecmp (const char *string, const char *prefix); +#endif + +#if @GNULIB_MBSCASESTR@ +/* Find the first occurrence of the character string NEEDLE in the character + string HAYSTACK, using case-insensitive comparison. + Note: This function may, in multibyte locales, return success even if + strlen (haystack) < strlen (needle) ! + Unlike strcasestr(), this function works correctly in multibyte locales. */ +extern char * mbscasestr (const char *haystack, const char *needle); +#endif + +#if @GNULIB_MBSCSPN@ +/* Find the first occurrence in the character string STRING of any character + in the character string ACCEPT. Return the number of bytes from the + beginning of the string to this occurrence, or to the end of the string + if none exists. + Unlike strcspn(), this function works correctly in multibyte locales. */ +extern size_t mbscspn (const char *string, const char *accept); +#endif + +#if @GNULIB_MBSPBRK@ +/* Find the first occurrence in the character string STRING of any character + in the character string ACCEPT. Return the pointer to it, or NULL if none + exists. + Unlike strpbrk(), this function works correctly in multibyte locales. */ +# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ +extern char * mbspbrk (const char *string, const char *accept); +#endif + +#if @GNULIB_MBSSPN@ +/* Find the first occurrence in the character string STRING of any character + not in the character string REJECT. Return the number of bytes from the + beginning of the string to this occurrence, or to the end of the string + if none exists. + Unlike strspn(), this function works correctly in multibyte locales. */ +extern size_t mbsspn (const char *string, const char *reject); +#endif + +#if @GNULIB_MBSSEP@ +/* Search the next delimiter (multibyte character listed in the character + string DELIM) starting at the character string *STRINGP. + If one is found, overwrite it with a NUL, and advance *STRINGP to point + to the next multibyte character after it. Otherwise, set *STRINGP to NULL. + If *STRINGP was already NULL, nothing happens. + Return the old value of *STRINGP. + + This is a variant of mbstok_r() that supports empty fields. + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + + See also mbstok_r(). */ +extern char * mbssep (char **stringp, const char *delim); +#endif + +#if @GNULIB_MBSTOK_R@ +/* Parse the character string STRING into tokens separated by characters in + the character string DELIM. + If STRING is NULL, the saved pointer in SAVE_PTR is used as + the next starting point. For example: + char s[] = "-abc-=-def"; + char *sp; + x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" + x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL + x = mbstok_r(NULL, "=", &sp); // x = NULL + // s = "abc\0-def\0" + + Caveat: It modifies the original string. + Caveat: These functions cannot be used on constant strings. + Caveat: The identity of the delimiting character is lost. + + See also mbssep(). */ +extern char * mbstok_r (char *string, const char *delim, char **save_ptr); +#endif + +/* Map any int, typically from errno, into an error message. */ +#if @GNULIB_STRERROR@ +# if @REPLACE_STRERROR@ +# undef strerror +# define strerror rpl_strerror +extern char *strerror (int); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strerror +# define strerror(e) \ + (GL_LINK_WARNING ("strerror is unportable - " \ + "use gnulib module strerror to guarantee non-NULL result"), \ + strerror (e)) +#endif + +#if @GNULIB_STRSIGNAL@ +# if @REPLACE_STRSIGNAL@ +# define strsignal rpl_strsignal +# endif +# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@ +extern char *strsignal (int __sig); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strsignal +# define strsignal(a) \ + (GL_LINK_WARNING ("strsignal is unportable - " \ + "use gnulib module strsignal for portability"), \ + strsignal (a)) +#endif + +#if @GNULIB_STRVERSCMP@ +# if !@HAVE_STRVERSCMP@ +extern int strverscmp (const char *, const char *); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strverscmp +# define strverscmp(a, b) \ + (GL_LINK_WARNING ("strverscmp is unportable - " \ + "use gnulib module strverscmp for portability"), \ + strverscmp (a, b)) +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _GL_STRING_H */ +#endif /* _GL_STRING_H */ diff --git a/lib/gl/strverscmp.c b/lib/gl/strverscmp.c new file mode 100644 index 0000000..84b4ab8 --- /dev/null +++ b/lib/gl/strverscmp.c @@ -0,0 +1,131 @@ +/* Compare strings while treating digits characters numerically. + Copyright (C) 1997, 2000, 2002, 2004, 2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#if !_LIBC +# include <config.h> +#endif + +#include <string.h> +#include <ctype.h> + +/* states: S_N: normal, S_I: comparing integral part, S_F: comparing + fractional parts, S_Z: idem but with leading Zeroes only */ +#define S_N 0x0 +#define S_I 0x4 +#define S_F 0x8 +#define S_Z 0xC + +/* result_type: CMP: return diff; LEN: compare using len_diff/diff */ +#define CMP 2 +#define LEN 3 + + +/* ISDIGIT differs from isdigit, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char + or EOF. + - It's typically faster. + POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to + isdigit unless it's important to use the locale's definition + of `digit' even when the host does not conform to POSIX. */ +#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) + +#undef __strverscmp +#undef strverscmp + +#ifndef weak_alias +# define __strverscmp strverscmp +#endif + +/* Compare S1 and S2 as strings holding indices/version numbers, + returning less than, equal to or greater than zero if S1 is less than, + equal to or greater than S2 (for more info, see the texinfo doc). +*/ + +int +__strverscmp (const char *s1, const char *s2) +{ + const unsigned char *p1 = (const unsigned char *) s1; + const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + int state; + int diff; + + /* Symbol(s) 0 [1-9] others (padding) + Transition (10) 0 (01) d (00) x (11) - */ + static const unsigned int next_state[] = + { + /* state x d 0 - */ + /* S_N */ S_N, S_I, S_Z, S_N, + /* S_I */ S_N, S_I, S_I, S_I, + /* S_F */ S_N, S_F, S_F, S_F, + /* S_Z */ S_N, S_F, S_Z, S_Z + }; + + static const int result_type[] = + { + /* state x/x x/d x/0 x/- d/x d/d d/0 d/- + 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ + + /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_I */ CMP, -1, -1, CMP, 1, LEN, LEN, CMP, + 1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, + /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_Z */ CMP, 1, 1, CMP, -1, CMP, CMP, CMP, + -1, CMP, CMP, CMP + }; + + if (p1 == p2) + return 0; + + c1 = *p1++; + c2 = *p2++; + /* Hint: '0' is a digit too. */ + state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0)); + + while ((diff = c1 - c2) == 0 && c1 != '\0') + { + state = next_state[state]; + c1 = *p1++; + c2 = *p2++; + state |= (c1 == '0') + (ISDIGIT (c1) != 0); + } + + state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))]; + + switch (state) + { + case CMP: + return diff; + + case LEN: + while (ISDIGIT (*p1++)) + if (!ISDIGIT (*p2++)) + return 1; + + return ISDIGIT (*p2) ? -1 : diff; + + default: + return state; + } +} +#ifdef weak_alias +weak_alias (__strverscmp, strverscmp) +#endif diff --git a/lib/gl/wchar.in.h b/lib/gl/wchar.in.h new file mode 100644 index 0000000..9f5b963 --- /dev/null +++ b/lib/gl/wchar.in.h @@ -0,0 +1,310 @@ +/* A substitute for ISO C99 <wchar.h>, for platforms that have issues. + + Copyright (C) 2007-2009 Free Software Foundation, Inc. + + This program 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, 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Eric Blake. */ + +/* + * ISO C 99 <wchar.h> for platforms that have issues. + * <http://www.opengroup.org/susv3xbd/wchar.h.html> + * + * For now, this just ensures proper prerequisite inclusion order and + * the declaration of wcwidth(). + */ + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif + +#if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H +/* Special invocation convention: + - Inside uClibc header files. + - On HP-UX 11.00 we have a sequence of nested includes + <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>, + once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h> + and once directly. In both situations 'wint_t' is not yet defined, + therefore we cannot provide the function overrides; instead include only + the system's <wchar.h>. + - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and + the latter includes <wchar.h>. But here, we have no way to detect whether + <wctype.h> is completely included or is still being included. */ + +#@INCLUDE_NEXT@ @NEXT_WCHAR_H@ + +#else +/* Normal invocation convention. */ + +#ifndef _GL_WCHAR_H + +#define _GL_ALREADY_INCLUDING_WCHAR_H + +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be + included before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> + +/* Include the original <wchar.h> if it exists. + Some builds of uClibc lack it. */ +/* The include_next requires a split double-inclusion guard. */ +#if @HAVE_WCHAR_H@ +# @INCLUDE_NEXT@ @NEXT_WCHAR_H@ +#endif + +#undef _GL_ALREADY_INCLUDING_WCHAR_H + +#ifndef _GL_WCHAR_H +#define _GL_WCHAR_H + +/* The definition of GL_LINK_WARNING is copied here. */ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Define wint_t. (Also done in wctype.in.h.) */ +#if !@HAVE_WINT_T@ && !defined wint_t +# define wint_t int +# ifndef WEOF +# define WEOF -1 +# endif +#endif + + +/* Override mbstate_t if it is too small. + On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for + implementing mbrtowc for encodings like UTF-8. */ +#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@ +typedef int rpl_mbstate_t; +# undef mbstate_t +# define mbstate_t rpl_mbstate_t +# define GNULIB_defined_mbstate_t 1 +#endif + + +/* Convert a single-byte character to a wide character. */ +#if @GNULIB_BTOWC@ +# if @REPLACE_BTOWC@ +# undef btowc +# define btowc rpl_btowc +# endif +# if !@HAVE_BTOWC@ || @REPLACE_BTOWC@ +extern wint_t btowc (int c); +# endif +#elif defined GNULIB_POSIXCHECK +# undef btowc +# define btowc(c) \ + (GL_LINK_WARNING ("btowc is unportable - " \ + "use gnulib module btowc for portability"), \ + btowc (c)) +#endif + + +/* Convert a wide character to a single-byte character. */ +#if @GNULIB_WCTOB@ +# if @REPLACE_WCTOB@ +# undef wctob +# define wctob rpl_wctob +# endif +# if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@ +/* wctob is provided by gnulib, or wctob exists but is not declared. */ +extern int wctob (wint_t wc); +# endif +#elif defined GNULIB_POSIXCHECK +# undef wctob +# define wctob(w) \ + (GL_LINK_WARNING ("wctob is unportable - " \ + "use gnulib module wctob for portability"), \ + wctob (w)) +#endif + + +/* Test whether *PS is in the initial state. */ +#if @GNULIB_MBSINIT@ +# if @REPLACE_MBSINIT@ +# undef mbsinit +# define mbsinit rpl_mbsinit +# endif +# if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@ +extern int mbsinit (const mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mbsinit +# define mbsinit(p) \ + (GL_LINK_WARNING ("mbsinit is unportable - " \ + "use gnulib module mbsinit for portability"), \ + mbsinit (p)) +#endif + + +/* Convert a multibyte character to a wide character. */ +#if @GNULIB_MBRTOWC@ +# if @REPLACE_MBRTOWC@ +# undef mbrtowc +# define mbrtowc rpl_mbrtowc +# endif +# if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@ +extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mbrtowc +# define mbrtowc(w,s,n,p) \ + (GL_LINK_WARNING ("mbrtowc is unportable - " \ + "use gnulib module mbrtowc for portability"), \ + mbrtowc (w, s, n, p)) +#endif + + +/* Recognize a multibyte character. */ +#if @GNULIB_MBRLEN@ +# if @REPLACE_MBRLEN@ +# undef mbrlen +# define mbrlen rpl_mbrlen +# endif +# if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@ +extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mbrlen +# define mbrlen(s,n,p) \ + (GL_LINK_WARNING ("mbrlen is unportable - " \ + "use gnulib module mbrlen for portability"), \ + mbrlen (s, n, p)) +#endif + + +/* Convert a string to a wide string. */ +#if @GNULIB_MBSRTOWCS@ +# if @REPLACE_MBSRTOWCS@ +# undef mbsrtowcs +# define mbsrtowcs rpl_mbsrtowcs +# endif +# if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@ +extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mbsrtowcs +# define mbsrtowcs(d,s,l,p) \ + (GL_LINK_WARNING ("mbsrtowcs is unportable - " \ + "use gnulib module mbsrtowcs for portability"), \ + mbsrtowcs (d, s, l, p)) +#endif + + +/* Convert a string to a wide string. */ +#if @GNULIB_MBSNRTOWCS@ +# if @REPLACE_MBSNRTOWCS@ +# undef mbsnrtowcs +# define mbsnrtowcs rpl_mbsnrtowcs +# endif +# if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@ +extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef mbsnrtowcs +# define mbsnrtowcs(d,s,n,l,p) \ + (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \ + "use gnulib module mbsnrtowcs for portability"), \ + mbsnrtowcs (d, s, n, l, p)) +#endif + + +/* Convert a wide character to a multibyte character. */ +#if @GNULIB_WCRTOMB@ +# if @REPLACE_WCRTOMB@ +# undef wcrtomb +# define wcrtomb rpl_wcrtomb +# endif +# if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@ +extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef wcrtomb +# define wcrtomb(s,w,p) \ + (GL_LINK_WARNING ("wcrtomb is unportable - " \ + "use gnulib module wcrtomb for portability"), \ + wcrtomb (s, w, p)) +#endif + + +/* Convert a wide string to a string. */ +#if @GNULIB_WCSRTOMBS@ +# if @REPLACE_WCSRTOMBS@ +# undef wcsrtombs +# define wcsrtombs rpl_wcsrtombs +# endif +# if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@ +extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef wcsrtombs +# define wcsrtombs(d,s,l,p) \ + (GL_LINK_WARNING ("wcsrtombs is unportable - " \ + "use gnulib module wcsrtombs for portability"), \ + wcsrtombs (d, s, l, p)) +#endif + + +/* Convert a wide string to a string. */ +#if @GNULIB_WCSNRTOMBS@ +# if @REPLACE_WCSNRTOMBS@ +# undef wcsnrtombs +# define wcsnrtombs rpl_wcsnrtombs +# endif +# if !@HAVE_WCSNRTOMBS@ || @REPLACE_WCSNRTOMBS@ +extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps); +# endif +#elif defined GNULIB_POSIXCHECK +# undef wcsnrtombs +# define wcsnrtombs(d,s,n,l,p) \ + (GL_LINK_WARNING ("wcsnrtombs is unportable - " \ + "use gnulib module wcsnrtombs for portability"), \ + wcsnrtombs (d, s, n, l, p)) +#endif + + +/* Return the number of screen columns needed for WC. */ +#if @GNULIB_WCWIDTH@ +# if @REPLACE_WCWIDTH@ +# undef wcwidth +# define wcwidth rpl_wcwidth +extern int wcwidth (wchar_t); +# else +# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@ +/* wcwidth exists but is not declared. */ +extern int wcwidth (int /* actually wchar_t */); +# endif +# endif +#elif defined GNULIB_POSIXCHECK +# undef wcwidth +# define wcwidth(w) \ + (GL_LINK_WARNING ("wcwidth is unportable - " \ + "use gnulib module wcwidth for portability"), \ + wcwidth (w)) +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _GL_WCHAR_H */ +#endif /* _GL_WCHAR_H */ +#endif diff --git a/lib/gltests/Makefile.am b/lib/gltests/Makefile.am new file mode 100644 index 0000000..fa50661 --- /dev/null +++ b/lib/gltests/Makefile.am @@ -0,0 +1,156 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + +AUTOMAKE_OPTIONS = 1.5 foreign + +SUBDIRS = +TESTS = +TESTS_ENVIRONMENT = +noinst_PROGRAMS = +check_PROGRAMS = +noinst_HEADERS = +noinst_LIBRARIES = +check_LIBRARIES = libtests.a +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +AM_CPPFLAGS = \ + -I. -I$(srcdir) \ + -I../.. -I$(srcdir)/../.. \ + -I../../lib/gl -I$(srcdir)/../../lib/gl + +LDADD = libtests.a ../../lib/gl/libgnu.la libtests.a $(LIBTESTS_LIBDEPS) + +libtests_a_SOURCES = +libtests_a_LIBADD = $(lgltests_LIBOBJS) +libtests_a_DEPENDENCIES = $(lgltests_LIBOBJS) +EXTRA_libtests_a_SOURCES = +AM_LIBTOOLFLAGS = --preserve-dup-deps + +## begin gnulib module c-ctype-tests + +TESTS += test-c-ctype +check_PROGRAMS += test-c-ctype + +EXTRA_DIST += test-c-ctype.c + +## end gnulib module c-ctype-tests + +## begin gnulib module c-strcase-tests + +TESTS += test-c-strcase.sh +TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' +check_PROGRAMS += test-c-strcasecmp test-c-strncasecmp +EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c + +## end gnulib module c-strcase-tests + +## begin gnulib module iconv-tests + +TESTS += test-iconv +check_PROGRAMS += test-iconv +test_iconv_LDADD = $(LDADD) @LIBICONV@ + +EXTRA_DIST += test-iconv.c + +## end gnulib module iconv-tests + +## begin gnulib module intprops + + +EXTRA_DIST += intprops.h + +## end gnulib module intprops + +## begin gnulib module stdbool-tests + +TESTS += test-stdbool +check_PROGRAMS += test-stdbool + +EXTRA_DIST += test-stdbool.c + +## end gnulib module stdbool-tests + +## begin gnulib module stdint-tests + +TESTS += test-stdint +check_PROGRAMS += test-stdint + +EXTRA_DIST += test-stdint.c + +## end gnulib module stdint-tests + +## begin gnulib module striconv-tests + +TESTS += test-striconv +check_PROGRAMS += test-striconv +test_striconv_LDADD = $(LDADD) @LIBICONV@ + +EXTRA_DIST += test-striconv.c + +## end gnulib module striconv-tests + +## begin gnulib module string-tests + +TESTS += test-string +check_PROGRAMS += test-string + +EXTRA_DIST += test-string.c + +## end gnulib module string-tests + +## begin gnulib module strverscmp-tests + +TESTS += test-strverscmp +check_PROGRAMS += test-strverscmp +EXTRA_DIST += test-strverscmp.c + +## end gnulib module strverscmp-tests + +## begin gnulib module verify + +libtests_a_SOURCES += verify.h + +## end gnulib module verify + +## begin gnulib module wchar-tests + +TESTS += test-wchar +check_PROGRAMS += test-wchar + +EXTRA_DIST += test-wchar.c + +## end gnulib module wchar-tests + +## begin gnulib module dummy + +libtests_a_SOURCES += dummy.c + +## end gnulib module dummy + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : diff --git a/lib/gltests/Makefile.in b/lib/gltests/Makefile.in new file mode 100644 index 0000000..b480832 --- /dev/null +++ b/lib/gltests/Makefile.in @@ -0,0 +1,1205 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2009 Free Software Foundation, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = test-c-ctype$(EXEEXT) test-c-strcase.sh test-iconv$(EXEEXT) \ + test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \ + test-striconv$(EXEEXT) test-string$(EXEEXT) \ + test-strverscmp$(EXEEXT) test-wchar$(EXEEXT) +noinst_PROGRAMS = +check_PROGRAMS = test-c-ctype$(EXEEXT) test-c-strcasecmp$(EXEEXT) \ + test-c-strncasecmp$(EXEEXT) test-iconv$(EXEEXT) \ + test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \ + test-striconv$(EXEEXT) test-string$(EXEEXT) \ + test-strverscmp$(EXEEXT) test-wchar$(EXEEXT) +subdir = lib/gltests +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libtests_a_AR = $(AR) $(ARFLAGS) +am__DEPENDENCIES_1 = +am_libtests_a_OBJECTS = dummy.$(OBJEXT) +libtests_a_OBJECTS = $(am_libtests_a_OBJECTS) +PROGRAMS = $(noinst_PROGRAMS) +test_c_ctype_SOURCES = test-c-ctype.c +test_c_ctype_OBJECTS = test-c-ctype.$(OBJEXT) +test_c_ctype_LDADD = $(LDADD) +test_c_ctype_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_c_strcasecmp_SOURCES = test-c-strcasecmp.c +test_c_strcasecmp_OBJECTS = test-c-strcasecmp.$(OBJEXT) +test_c_strcasecmp_LDADD = $(LDADD) +test_c_strcasecmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_c_strncasecmp_SOURCES = test-c-strncasecmp.c +test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT) +test_c_strncasecmp_LDADD = $(LDADD) +test_c_strncasecmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_iconv_SOURCES = test-iconv.c +test_iconv_OBJECTS = test-iconv.$(OBJEXT) +am__DEPENDENCIES_2 = libtests.a ../../lib/gl/libgnu.la libtests.a \ + $(am__DEPENDENCIES_1) +test_iconv_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_stdbool_SOURCES = test-stdbool.c +test_stdbool_OBJECTS = test-stdbool.$(OBJEXT) +test_stdbool_LDADD = $(LDADD) +test_stdbool_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_stdint_SOURCES = test-stdint.c +test_stdint_OBJECTS = test-stdint.$(OBJEXT) +test_stdint_LDADD = $(LDADD) +test_stdint_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_striconv_SOURCES = test-striconv.c +test_striconv_OBJECTS = test-striconv.$(OBJEXT) +test_striconv_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_string_SOURCES = test-string.c +test_string_OBJECTS = test-string.$(OBJEXT) +test_string_LDADD = $(LDADD) +test_string_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strverscmp_SOURCES = test-strverscmp.c +test_strverscmp_OBJECTS = test-strverscmp.$(OBJEXT) +test_strverscmp_LDADD = $(LDADD) +test_strverscmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \ + libtests.a $(am__DEPENDENCIES_1) +test_wchar_SOURCES = test-wchar.c +test_wchar_OBJECTS = test-wchar.$(OBJEXT) +test_wchar_LDADD = $(LDADD) +test_wchar_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la libtests.a \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \ + test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \ + test-iconv.c test-stdbool.c test-stdint.c test-striconv.c \ + test-string.c test-strverscmp.c test-wchar.c +DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \ + test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \ + test-iconv.c test-stdbool.c test-stdint.c test-striconv.c \ + test-string.c test-strverscmp.c test-wchar.c +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.5 foreign +SUBDIRS = +TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \ + LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' +noinst_HEADERS = +noinst_LIBRARIES = +check_LIBRARIES = libtests.a +EXTRA_DIST = test-c-ctype.c test-c-strcase.sh test-c-strcasecmp.c \ + test-c-strncasecmp.c test-iconv.c intprops.h test-stdbool.c \ + test-stdint.c test-striconv.c test-string.c test-strverscmp.c \ + test-wchar.c +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +AM_CPPFLAGS = \ + -I. -I$(srcdir) \ + -I../.. -I$(srcdir)/../.. \ + -I../../lib/gl -I$(srcdir)/../../lib/gl + +LDADD = libtests.a ../../lib/gl/libgnu.la libtests.a $(LIBTESTS_LIBDEPS) +libtests_a_SOURCES = verify.h dummy.c +libtests_a_LIBADD = $(lgltests_LIBOBJS) +libtests_a_DEPENDENCIES = $(lgltests_LIBOBJS) +EXTRA_libtests_a_SOURCES = +AM_LIBTOOLFLAGS = --preserve-dup-deps +test_iconv_LDADD = $(LDADD) @LIBICONV@ +test_striconv_LDADD = $(LDADD) @LIBICONV@ +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/gltests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign lib/gltests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLIBRARIES: + -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) + -rm -f libtests.a + $(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD) + $(RANLIB) libtests.a + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +test-c-ctype$(EXEEXT): $(test_c_ctype_OBJECTS) $(test_c_ctype_DEPENDENCIES) + @rm -f test-c-ctype$(EXEEXT) + $(LINK) $(test_c_ctype_OBJECTS) $(test_c_ctype_LDADD) $(LIBS) +test-c-strcasecmp$(EXEEXT): $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_DEPENDENCIES) + @rm -f test-c-strcasecmp$(EXEEXT) + $(LINK) $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_LDADD) $(LIBS) +test-c-strncasecmp$(EXEEXT): $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_DEPENDENCIES) + @rm -f test-c-strncasecmp$(EXEEXT) + $(LINK) $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_LDADD) $(LIBS) +test-iconv$(EXEEXT): $(test_iconv_OBJECTS) $(test_iconv_DEPENDENCIES) + @rm -f test-iconv$(EXEEXT) + $(LINK) $(test_iconv_OBJECTS) $(test_iconv_LDADD) $(LIBS) +test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES) + @rm -f test-stdbool$(EXEEXT) + $(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS) +test-stdint$(EXEEXT): $(test_stdint_OBJECTS) $(test_stdint_DEPENDENCIES) + @rm -f test-stdint$(EXEEXT) + $(LINK) $(test_stdint_OBJECTS) $(test_stdint_LDADD) $(LIBS) +test-striconv$(EXEEXT): $(test_striconv_OBJECTS) $(test_striconv_DEPENDENCIES) + @rm -f test-striconv$(EXEEXT) + $(LINK) $(test_striconv_OBJECTS) $(test_striconv_LDADD) $(LIBS) +test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES) + @rm -f test-string$(EXEEXT) + $(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS) +test-strverscmp$(EXEEXT): $(test_strverscmp_OBJECTS) $(test_strverscmp_DEPENDENCIES) + @rm -f test-strverscmp$(EXEEXT) + $(LINK) $(test_strverscmp_OBJECTS) $(test_strverscmp_LDADD) $(LIBS) +test-wchar$(EXEEXT): $(test_wchar_OBJECTS) $(test_wchar_DEPENDENCIES) + @rm -f test-wchar$(EXEEXT) + $(LINK) $(test_wchar_OBJECTS) $(test_wchar_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strverscmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wchar.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-libtool clean-local clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + check-am ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-TESTS check-am clean \ + clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-libtool clean-local clean-noinstLIBRARIES \ + clean-noinstPROGRAMS ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + 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: diff --git a/lib/gltests/dummy.c b/lib/gltests/dummy.c new file mode 100644 index 0000000..ccb5c26 --- /dev/null +++ b/lib/gltests/dummy.c @@ -0,0 +1,42 @@ +/* A dummy file, to prevent empty libraries from breaking builds. + Copyright (C) 2004, 2007 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create + libraries without any object files. You might get an error like: + + > ar cru .libs/libgl.a + > ar: no archive members specified + + Compiling this file, and adding its object file to the library, will + prevent the library from being empty. */ + +/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries + that don't export any symbol. You might get an error like: + + > cc ... libgnu.a + > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a + + Compiling this file, and adding its object file to the library, will + prevent the library from exporting no symbols. */ + +#ifdef __sun +/* This declaration ensures that the library will export at least 1 symbol. */ +int gl_dummy_symbol; +#else +/* This declaration is solely to ensure that after preprocessing + this file is never empty. */ +typedef int dummy; +#endif diff --git a/lib/gltests/intprops.h b/lib/gltests/intprops.h new file mode 100644 index 0000000..002161e --- /dev/null +++ b/lib/gltests/intprops.h @@ -0,0 +1,77 @@ +/* intprops.h -- properties of integer types + + Copyright (C) 2001, 2002, 2003, 2004, 2005 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Paul Eggert. */ + +#include <limits.h> + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the arithmetic type T is an integer type. bool counts as + an integer. */ +#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) + +/* True if negative values of the signed integer type T use two's + complement, ones' complement, or signed magnitude representation, + respectively. Much GNU code assumes two's complement, but some + people like to be portable to all possible C hosts. */ +#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) +#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) +#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) + +/* True if the arithmetic type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* The maximum and minimum values for the integer type T. These + macros have undefined behavior if T is signed and has padding bits. + If this is a problem for you, please let us know how to fix it for + your host. */ +#define TYPE_MINIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) 0 \ + : TYPE_SIGNED_MAGNITUDE (t) \ + ? ~ (t) 0 \ + : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) + +/* Return zero if T can be determined to be an unsigned type. + Otherwise, return 1. + When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a + tighter bound. Otherwise, it overestimates the true bound by one byte + when applied to unsigned types of size 2, 4, 16, ... bytes. + The symbol signed_type_or_expr__ is private to this header file. */ +#if __GNUC__ >= 2 +# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t)) +#else +# define signed_type_or_expr__(t) 1 +#endif + +/* Bound on length of the string representing an integer type or expression T. + Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485; + add 1 for integer division truncation; add 1 more for a minus sign + if needed. */ +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \ + + signed_type_or_expr__ (t) + 1) + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) diff --git a/lib/gltests/test-c-ctype.c b/lib/gltests/test-c-ctype.c new file mode 100644 index 0000000..6d7fe1b --- /dev/null +++ b/lib/gltests/test-c-ctype.c @@ -0,0 +1,398 @@ +/* Test of character handling in C locale. + Copyright (C) 2005, 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#include "c-ctype.h" + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +static void +test_all (void) +{ + int c; + + for (c = -0x80; c < 0x100; c++) + { + ASSERT (c_isascii (c) == (c >= 0 && c < 0x80)); + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + ASSERT (c_isalnum (c) == 1); + break; + default: + ASSERT (c_isalnum (c) == 0); + break; + } + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + ASSERT (c_isalpha (c) == 1); + break; + default: + ASSERT (c_isalpha (c) == 0); + break; + } + + switch (c) + { + case '\t': case ' ': + ASSERT (c_isblank (c) == 1); + break; + default: + ASSERT (c_isblank (c) == 0); + break; + } + + ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f)); + + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + ASSERT (c_isdigit (c) == 1); + break; + default: + ASSERT (c_isdigit (c) == 0); + break; + } + + switch (c) + { + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + ASSERT (c_islower (c) == 1); + break; + default: + ASSERT (c_islower (c) == 0); + break; + } + + ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' ')); + + ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f)); + + ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c))); + + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + ASSERT (c_isspace (c) == 1); + break; + default: + ASSERT (c_isspace (c) == 0); + break; + } + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + ASSERT (c_isupper (c) == 1); + break; + default: + ASSERT (c_isupper (c) == 0); + break; + } + + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + ASSERT (c_isxdigit (c) == 1); + break; + default: + ASSERT (c_isxdigit (c) == 0); + break; + } + + switch (c) + { + case 'A': + ASSERT (c_tolower (c) == 'a'); + ASSERT (c_toupper (c) == c); + break; + case 'B': + ASSERT (c_tolower (c) == 'b'); + ASSERT (c_toupper (c) == c); + break; + case 'C': + ASSERT (c_tolower (c) == 'c'); + ASSERT (c_toupper (c) == c); + break; + case 'D': + ASSERT (c_tolower (c) == 'd'); + ASSERT (c_toupper (c) == c); + break; + case 'E': + ASSERT (c_tolower (c) == 'e'); + ASSERT (c_toupper (c) == c); + break; + case 'F': + ASSERT (c_tolower (c) == 'f'); + ASSERT (c_toupper (c) == c); + break; + case 'G': + ASSERT (c_tolower (c) == 'g'); + ASSERT (c_toupper (c) == c); + break; + case 'H': + ASSERT (c_tolower (c) == 'h'); + ASSERT (c_toupper (c) == c); + break; + case 'I': + ASSERT (c_tolower (c) == 'i'); + ASSERT (c_toupper (c) == c); + break; + case 'J': + ASSERT (c_tolower (c) == 'j'); + ASSERT (c_toupper (c) == c); + break; + case 'K': + ASSERT (c_tolower (c) == 'k'); + ASSERT (c_toupper (c) == c); + break; + case 'L': + ASSERT (c_tolower (c) == 'l'); + ASSERT (c_toupper (c) == c); + break; + case 'M': + ASSERT (c_tolower (c) == 'm'); + ASSERT (c_toupper (c) == c); + break; + case 'N': + ASSERT (c_tolower (c) == 'n'); + ASSERT (c_toupper (c) == c); + break; + case 'O': + ASSERT (c_tolower (c) == 'o'); + ASSERT (c_toupper (c) == c); + break; + case 'P': + ASSERT (c_tolower (c) == 'p'); + ASSERT (c_toupper (c) == c); + break; + case 'Q': + ASSERT (c_tolower (c) == 'q'); + ASSERT (c_toupper (c) == c); + break; + case 'R': + ASSERT (c_tolower (c) == 'r'); + ASSERT (c_toupper (c) == c); + break; + case 'S': + ASSERT (c_tolower (c) == 's'); + ASSERT (c_toupper (c) == c); + break; + case 'T': + ASSERT (c_tolower (c) == 't'); + ASSERT (c_toupper (c) == c); + break; + case 'U': + ASSERT (c_tolower (c) == 'u'); + ASSERT (c_toupper (c) == c); + break; + case 'V': + ASSERT (c_tolower (c) == 'v'); + ASSERT (c_toupper (c) == c); + break; + case 'W': + ASSERT (c_tolower (c) == 'w'); + ASSERT (c_toupper (c) == c); + break; + case 'X': + ASSERT (c_tolower (c) == 'x'); + ASSERT (c_toupper (c) == c); + break; + case 'Y': + ASSERT (c_tolower (c) == 'y'); + ASSERT (c_toupper (c) == c); + break; + case 'Z': + ASSERT (c_tolower (c) == 'z'); + ASSERT (c_toupper (c) == c); + break; + case 'a': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'A'); + break; + case 'b': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'B'); + break; + case 'c': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'C'); + break; + case 'd': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'D'); + break; + case 'e': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'E'); + break; + case 'f': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'F'); + break; + case 'g': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'G'); + break; + case 'h': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'H'); + break; + case 'i': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'I'); + break; + case 'j': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'J'); + break; + case 'k': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'K'); + break; + case 'l': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'L'); + break; + case 'm': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'M'); + break; + case 'n': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'N'); + break; + case 'o': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'O'); + break; + case 'p': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'P'); + break; + case 'q': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Q'); + break; + case 'r': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'R'); + break; + case 's': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'S'); + break; + case 't': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'T'); + break; + case 'u': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'U'); + break; + case 'v': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'V'); + break; + case 'w': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'W'); + break; + case 'x': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'X'); + break; + case 'y': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Y'); + break; + case 'z': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Z'); + break; + default: + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == c); + break; + } + } +} + +int +main () +{ + test_all (); + + setlocale (LC_ALL, "de_DE"); + test_all (); + + setlocale (LC_ALL, "ja_JP.EUC-JP"); + test_all (); + + return 0; +} diff --git a/lib/gltests/test-c-strcase.sh b/lib/gltests/test-c-strcase.sh new file mode 100755 index 0000000..5fcf906 --- /dev/null +++ b/lib/gltests/test-c-strcase.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Test in the C locale. +./test-c-strcasecmp${EXEEXT} || exit 1 +./test-c-strncasecmp${EXEEXT} || exit 1 + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR != none; then + LC_ALL=$LOCALE_FR ./test-c-strcasecmp${EXEEXT} locale || exit 1 + LC_ALL=$LOCALE_FR ./test-c-strncasecmp${EXEEXT} locale || exit 1 +fi + +# Test in a Turkish UTF-8 locale. +: ${LOCALE_TR_UTF8=tr_TR.UTF-8} +if test $LOCALE_TR_UTF8 != none; then + LC_ALL=$LOCALE_TR_UTF8 ./test-c-strcasecmp${EXEEXT} locale || exit 1 + LC_ALL=$LOCALE_TR_UTF8 ./test-c-strncasecmp${EXEEXT} locale || exit 1 +fi + +exit 0 diff --git a/lib/gltests/test-c-strcasecmp.c b/lib/gltests/test-c-strcasecmp.c new file mode 100644 index 0000000..16244b9 --- /dev/null +++ b/lib/gltests/test-c-strcasecmp.c @@ -0,0 +1,77 @@ +/* Test of case-insensitive string comparison function. + Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strcase.h" + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main (int argc, char *argv[]) +{ + if (argc > 1) + { + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + } + + ASSERT (c_strcasecmp ("paragraph", "Paragraph") == 0); + + ASSERT (c_strcasecmp ("paragrapH", "parAgRaph") == 0); + + ASSERT (c_strcasecmp ("paragraph", "paraLyzed") < 0); + ASSERT (c_strcasecmp ("paraLyzed", "paragraph") > 0); + + ASSERT (c_strcasecmp ("para", "paragraph") < 0); + ASSERT (c_strcasecmp ("paragraph", "para") > 0); + + /* The following tests shows how c_strcasecmp() is different from + strcasecmp(). */ + + ASSERT (c_strcasecmp ("\311mile", "\351mile") < 0); + ASSERT (c_strcasecmp ("\351mile", "\311mile") > 0); + + /* The following tests shows how c_strcasecmp() is different from + mbscasecmp(). */ + + ASSERT (c_strcasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") > 0); /* özgür */ + ASSERT (c_strcasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") < 0); /* özgür */ + + /* This test shows how strings of different size cannot compare equal. */ + ASSERT (c_strcasecmp ("turkish", "TURK\304\260SH") < 0); + ASSERT (c_strcasecmp ("TURK\304\260SH", "turkish") > 0); + + return 0; +} diff --git a/lib/gltests/test-c-strncasecmp.c b/lib/gltests/test-c-strncasecmp.c new file mode 100644 index 0000000..7d6dbf5 --- /dev/null +++ b/lib/gltests/test-c-strncasecmp.c @@ -0,0 +1,91 @@ +/* Test of case-insensitive string comparison function. + Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strcase.h" + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main (int argc, char *argv[]) +{ + if (argc > 1) + { + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + } + + ASSERT (c_strncasecmp ("paragraph", "Paragraph", 1000000) == 0); + ASSERT (c_strncasecmp ("paragraph", "Paragraph", 9) == 0); + + ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 1000000) == 0); + ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 9) == 0); + + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 10) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 9) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 5) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 4) == 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 10) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 9) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 5) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 4) == 0); + + ASSERT (c_strncasecmp ("para", "paragraph", 10) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 9) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 5) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 4) == 0); + ASSERT (c_strncasecmp ("paragraph", "para", 10) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 9) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 5) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 4) == 0); + + /* The following tests shows how c_strncasecmp() is different from + strncasecmp(). */ + + ASSERT (c_strncasecmp ("\311mily", "\351mile", 4) < 0); + ASSERT (c_strncasecmp ("\351mile", "\311mily", 4) > 0); + + /* The following tests shows how c_strncasecmp() is different from + mbsncasecmp(). */ + + ASSERT (c_strncasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R", 99) > 0); /* özgür */ + ASSERT (c_strncasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r", 99) < 0); /* özgür */ + + /* This test shows how strings of different size cannot compare equal. */ + ASSERT (c_strncasecmp ("turkish", "TURK\304\260SH", 7) < 0); + ASSERT (c_strncasecmp ("TURK\304\260SH", "turkish", 7) > 0); + + return 0; +} diff --git a/lib/gltests/test-iconv.c b/lib/gltests/test-iconv.c new file mode 100644 index 0000000..8bac176 --- /dev/null +++ b/lib/gltests/test-iconv.c @@ -0,0 +1,149 @@ +/* Test of character set conversion. + Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#if HAVE_ICONV +# include <iconv.h> +#endif + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main () +{ +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + and UTF-8. */ + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); + + ASSERT (cd_88591_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88591 != (iconv_t)(-1)); + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + strlen (expected)); + ASSERT (memcmp (buf, expected, strlen (expected)) == 0); + } + + /* Test conversion from ISO-8859-1 to UTF-8 with E2BIG. */ + { + static const char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + const char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == (size_t)(-1) && errno == E2BIG); + ASSERT (inbytesleft == 1); + ASSERT (outbytesleft == 1); + ASSERT ((unsigned char) buf[1] == 0xAD); + ASSERT ((unsigned char) buf[0] == 0xDE); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + strlen (expected)); + ASSERT (memcmp (buf, expected, strlen (expected)) == 0); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == (size_t)(-1)) + { + ASSERT (errno == EILSEQ); + ASSERT (inbytesleft == strlen (input) && outptr == buf); + } + else + { + ASSERT (res == 1); + ASSERT (inbytesleft == 0); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == (size_t)(-1) && errno == EINVAL); + ASSERT (inbytesleft == 1 && outptr == buf); + } + + iconv_close (cd_88591_to_utf8); + iconv_close (cd_utf8_to_88591); +#endif + + return 0; +} diff --git a/lib/gltests/test-stdbool.c b/lib/gltests/test-stdbool.c new file mode 100644 index 0000000..30d5321 --- /dev/null +++ b/lib/gltests/test-stdbool.c @@ -0,0 +1,95 @@ +/* Test of <stdbool.h> substitute. + Copyright (C) 2002-2007 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdbool.h> + +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + +#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */ +struct s { _Bool s: 1; _Bool t; } s; +#endif + +char a[true == 1 ? 1 : -1]; +char b[false == 0 ? 1 : -1]; +char c[__bool_true_false_are_defined == 1 ? 1 : -1]; +#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */ +char d[(bool) 0.5 == true ? 1 : -1]; +bool e = &s; +#endif +char f[(_Bool) 0.0 == false ? 1 : -1]; +char g[true]; +char h[sizeof (_Bool)]; +#if 0 /* See above. */ +char i[sizeof s.t]; +#endif +enum { j = false, k = true, l = false * true, m = true * 256 }; +_Bool n[m]; +char o[sizeof n == m * sizeof n[0] ? 1 : -1]; +char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; +#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */ +#if defined __xlc__ || defined __GNUC__ + /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 + reported by James Lemley on 2005-10-05; see + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + This test is not quite right, since xlc is allowed to + reject this program, as the initializer for xlcbug is + not one of the forms that C requires support for. + However, doing the test right would require a run-time + test, and that would make cross-compilation harder. + Let us hope that IBM fixes the xlc bug, and also adds + support for this kind of constant expression. In the + meantime, this test will reject xlc, which is OK, since + our stdbool.h substitute should suffice. We also test + this with GCC, where it should work, to detect more + quickly whether someone messes up the test in the + future. */ + char digs[] = "0123456789"; + int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); +#endif +#endif +/* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ +_Bool q = true; +_Bool *pq = &q; + +int +main () +{ + return 0; +} diff --git a/lib/gltests/test-stdint.c b/lib/gltests/test-stdint.c new file mode 100644 index 0000000..a2bf42a --- /dev/null +++ b/lib/gltests/test-stdint.c @@ -0,0 +1,360 @@ +/* Test of <stdint.h> substitute. + Copyright (C) 2006-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2006. */ + +#include <config.h> + +/* Whether to enable pedantic checks. */ +#define DO_PEDANTIC 0 + +#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */ +#include <stdint.h> + +#include "verify.h" +#include "intprops.h" + +#if __GNUC__ >= 2 && DO_PEDANTIC +# define verify_same_types(expr1,expr2) \ + extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \ + extern void _verify_func(__LINE__) (__typeof__ (expr2) *); +# define _verify_func(line) _verify_func2(line) +# define _verify_func2(line) verify_func_ ## line +#else +# define verify_same_types(expr1,expr2) extern void verify_func (int) +#endif + +/* 7.18.1.1. Exact-width integer types */ +/* 7.18.2.1. Limits of exact-width integer types */ + +int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX }; +verify (TYPE_MINIMUM (int8_t) == INT8_MIN); +verify (TYPE_MAXIMUM (int8_t) == INT8_MAX); +verify_same_types (INT8_MIN, (int8_t) 0 + 0); +verify_same_types (INT8_MAX, (int8_t) 0 + 0); + +int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX }; +verify (TYPE_MINIMUM (int16_t) == INT16_MIN); +verify (TYPE_MAXIMUM (int16_t) == INT16_MAX); +verify_same_types (INT16_MIN, (int16_t) 0 + 0); +verify_same_types (INT16_MAX, (int16_t) 0 + 0); + +int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX }; +verify (TYPE_MINIMUM (int32_t) == INT32_MIN); +verify (TYPE_MAXIMUM (int32_t) == INT32_MAX); +verify_same_types (INT32_MIN, (int32_t) 0 + 0); +verify_same_types (INT32_MAX, (int32_t) 0 + 0); + +#ifdef INT64_MAX +int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX }; +verify (TYPE_MINIMUM (int64_t) == INT64_MIN); +verify (TYPE_MAXIMUM (int64_t) == INT64_MAX); +verify_same_types (INT64_MIN, (int64_t) 0 + 0); +verify_same_types (INT64_MAX, (int64_t) 0 + 0); +#endif + +uint8_t b1[2] = { UINT8_C (17), UINT8_MAX }; +verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX); +verify_same_types (UINT8_MAX, (uint8_t) 0 + 0); + +uint16_t b2[2] = { UINT16_C (17), UINT16_MAX }; +verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX); +verify_same_types (UINT16_MAX, (uint16_t) 0 + 0); + +uint32_t b3[2] = { UINT32_C (17), UINT32_MAX }; +verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX); +verify_same_types (UINT32_MAX, (uint32_t) 0 + 0); + +#ifdef UINT64_MAX +uint64_t b4[2] = { UINT64_C (17), UINT64_MAX }; +verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX); +verify_same_types (UINT64_MAX, (uint64_t) 0 + 0); +#endif + +#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT8_MAX && UINT16_MAX && UINT32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.2. Minimum-width integer types */ +/* 7.18.2.2. Limits of minimum-width integer types */ + +int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX }; +verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN); +verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX); +verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0); +verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0); + +int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX }; +verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN); +verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX); +verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0); +verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0); + +int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX }; +verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN); +verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX); +verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0); +verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0); + +#ifdef INT_LEAST64_MAX +int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX }; +verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN); +verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX); +verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0); +verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0); +#endif + +uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX }; +verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX); +verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0); + +uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX }; +verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX); +verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0); + +uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX }; +verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX); +verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0); + +#ifdef UINT_LEAST64_MAX +uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX }; +verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX); +verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0); +#endif + +#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.3. Fastest minimum-width integer types */ +/* 7.18.2.3. Limits of fastest minimum-width integer types */ + +int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX }; +verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN); +verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX); +verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0); +verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0); + +int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX }; +verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN); +verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX); +verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0); +verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0); + +int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX }; +verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN); +verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX); +verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0); +verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0); + +#ifdef INT_FAST64_MAX +int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX }; +verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN); +verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX); +verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0); +verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0); +#endif + +uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX }; +verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX); +verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0); + +uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX }; +verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX); +verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0); + +uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX }; +verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX); +verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0); + +#ifdef UINT_FAST64_MAX +uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX }; +verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX); +verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0); +#endif + +#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.4. Integer types capable of holding object pointers */ +/* 7.18.2.4. Limits of integer types capable of holding object pointers */ + +intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX }; +verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN); +verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX); +verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0); +verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0); + +uintptr_t h[2] = { 17, UINTPTR_MAX }; +verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX); +verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0); + +#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.5. Greatest-width integer types */ +/* 7.18.2.5. Limits of greatest-width integer types */ + +intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX }; +verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN); +verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX); +verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0); +verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0); + +uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX }; +verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX); +verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0); + +/* As of 2007, Sun C and HP-UX 10.20 cc don't support 'long long' constants in + the preprocessor. */ +#if !(defined __SUNPRO_C || (defined __hpux && !defined __GNUC__)) +#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX +/* ok */ +#else +err or; +#endif +#endif + +/* 7.18.3. Limits of other integer types */ + +#include <stddef.h> + +verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN); +verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX); +verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0); +verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0); + +#if PTRDIFF_MIN && PTRDIFF_MAX +/* ok */ +#else +err or; +#endif + +#include <signal.h> + +verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN); +verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX); +verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0); +verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0); + +#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX +/* ok */ +#else +err or; +#endif + +verify (TYPE_MAXIMUM (size_t) == SIZE_MAX); +verify_same_types (SIZE_MAX, (size_t) 0 + 0); + +#if SIZE_MAX +/* ok */ +#else +err or; +#endif + +#if HAVE_WCHAR_T +verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN); +verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX); +verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0); +verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0); + +# if WCHAR_MIN != 17 && WCHAR_MAX +/* ok */ +# else +err or; +# endif +#endif + +#if HAVE_WINT_T +# include <wchar.h> + +verify (TYPE_MINIMUM (wint_t) == WINT_MIN); +verify (TYPE_MAXIMUM (wint_t) == WINT_MAX); +verify_same_types (WINT_MIN, (wint_t) 0 + 0); +verify_same_types (WINT_MAX, (wint_t) 0 + 0); + +# if WINT_MIN != 17 && WINT_MAX +/* ok */ +# else +err or; +# endif +#endif + +/* 7.18.4. Macros for integer constants */ + +verify (INT8_C (17) == 17); +verify_same_types (INT8_C (17), (int_least8_t)0 + 0); +verify (UINT8_C (17) == 17); +verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0); + +verify (INT16_C (17) == 17); +verify_same_types (INT16_C (17), (int_least16_t)0 + 0); +verify (UINT16_C (17) == 17); +verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0); + +verify (INT32_C (17) == 17); +verify_same_types (INT32_C (17), (int_least32_t)0 + 0); +verify (UINT32_C (17) == 17); +verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0); + +#ifdef INT64_C +verify (INT64_C (17) == 17); +verify_same_types (INT64_C (17), (int_least64_t)0 + 0); +#endif +#ifdef UINT64_C +verify (UINT64_C (17) == 17); +verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0); +#endif + +verify (INTMAX_C (17) == 17); +verify_same_types (INTMAX_C (17), (intmax_t)0 + 0); +verify (UINTMAX_C (17) == 17); +verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0); + + +int +main () +{ + return 0; +} diff --git a/lib/gltests/test-striconv.c b/lib/gltests/test-striconv.c new file mode 100644 index 0000000..f39f142 --- /dev/null +++ b/lib/gltests/test-striconv.c @@ -0,0 +1,191 @@ +/* Test of character set conversion. + Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "striconv.h" + +#if HAVE_ICONV +# include <iconv.h> +#endif + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main () +{ +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + and UTF-8. */ + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); + + ASSERT (cd_88591_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88591 != (iconv_t)(-1)); + + /* ------------------------- Test mem_cd_iconv() ------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_88591_to_utf8, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == 0); + free (result); + } + + /* ------------------------- Test str_cd_iconv() ------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_cd_iconv (input, cd_88591_to_utf8); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result == NULL && errno == EILSEQ); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + iconv_close (cd_88591_to_utf8); + iconv_close (cd_utf8_to_88591); + + /* -------------------------- Test str_iconv() -------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_iconv (input, "ISO-8859-1", "UTF-8"); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result == NULL && errno == EILSEQ); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + +#endif + + return 0; +} diff --git a/lib/gltests/test-string.c b/lib/gltests/test-string.c new file mode 100644 index 0000000..68014f5 --- /dev/null +++ b/lib/gltests/test-string.c @@ -0,0 +1,27 @@ +/* Test of <string.h> substitute. + Copyright (C) 2007 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +int +main () +{ + return 0; +} diff --git a/lib/gltests/test-strverscmp.c b/lib/gltests/test-strverscmp.c new file mode 100644 index 0000000..04da20c --- /dev/null +++ b/lib/gltests/test-strverscmp.c @@ -0,0 +1,56 @@ +/* Test of strverscmp() function. + Copyright (C) 2008 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2008. */ + +#include <config.h> + +#include <string.h> + +#include <stdio.h> +#include <stdlib.h> + +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ + fflush (stderr); \ + abort (); \ + } \ + } \ + while (0) + +int +main (int argc, char **argv) +{ + ASSERT (strverscmp ("", "") == 0); + ASSERT (strverscmp ("a", "a") == 0); + ASSERT (strverscmp ("a", "b") < 0); + ASSERT (strverscmp ("b", "a") > 0); + ASSERT (strverscmp ("000", "00") < 0); + ASSERT (strverscmp ("00", "000") > 0); + ASSERT (strverscmp ("a0", "a") > 0); + ASSERT (strverscmp ("00", "01") < 0); + ASSERT (strverscmp ("01", "010") < 0); + ASSERT (strverscmp ("010", "09") < 0); + ASSERT (strverscmp ("09", "0") < 0); + ASSERT (strverscmp ("9", "10") < 0); + ASSERT (strverscmp ("0a", "0") > 0); + return 0; +} diff --git a/lib/gltests/test-wchar.c b/lib/gltests/test-wchar.c new file mode 100644 index 0000000..19da7d9 --- /dev/null +++ b/lib/gltests/test-wchar.c @@ -0,0 +1,31 @@ +/* Test of <wchar.h> substitute. + Copyright (C) 2007-2008 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <wchar.h> + +/* Check that the types wchar_t and wint_t are defined. */ +wchar_t a = 'c'; +wint_t b = 'x'; + +int +main () +{ + return 0; +} diff --git a/lib/gltests/verify.h b/lib/gltests/verify.h new file mode 100644 index 0000000..fac53f6 --- /dev/null +++ b/lib/gltests/verify.h @@ -0,0 +1,140 @@ +/* Compile-time assert-like macros. + + Copyright (C) 2005, 2006 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 3 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, see <http://www.gnu.org/licenses/>. */ + +/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ + +#ifndef VERIFY_H +# define VERIFY_H 1 + +/* Each of these macros verifies that its argument R is nonzero. To + be portable, R should be an integer constant expression. Unlike + assert (R), there is no run-time overhead. + + There are two macros, since no single macro can be used in all + contexts in C. verify_true (R) is for scalar contexts, including + integer constant expression contexts. verify (R) is for declaration + contexts, e.g., the top level. + + Symbols ending in "__" are private to this header. + + The code below uses several ideas. + + * The first step is ((R) ? 1 : -1). Given an expression R, of + integral or boolean or floating-point type, this yields an + expression of integral type, whose value is later verified to be + constant and nonnegative. + + * Next this expression W is wrapped in a type + struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }. + If W is negative, this yields a compile-time error. No compiler can + deal with a bit-field of negative size. + + One might think that an array size check would have the same + effect, that is, that the type struct { unsigned int dummy[W]; } + would work as well. However, inside a function, some compilers + (such as C++ compilers and GNU C) allow local parameters and + variables inside array size expressions. With these compilers, + an array size check would not properly diagnose this misuse of + the verify macro: + + void function (int n) { verify (n < 0); } + + * For the verify macro, the struct verify_type__ will need to + somehow be embedded into a declaration. To be portable, this + declaration must declare an object, a constant, a function, or a + typedef name. If the declared entity uses the type directly, + such as in + + struct dummy {...}; + typedef struct {...} dummy; + extern struct {...} *dummy; + extern void dummy (struct {...} *); + extern struct {...} *dummy (void); + + two uses of the verify macro would yield colliding declarations + if the entity names are not disambiguated. A workaround is to + attach the current line number to the entity name: + + #define GL_CONCAT0(x, y) x##y + #define GL_CONCAT(x, y) GL_CONCAT0 (x, y) + extern struct {...} * GL_CONCAT(dummy,__LINE__); + + But this has the problem that two invocations of verify from + within the same macro would collide, since the __LINE__ value + would be the same for both invocations. + + A solution is to use the sizeof operator. It yields a number, + getting rid of the identity of the type. Declarations like + + extern int dummy [sizeof (struct {...})]; + extern void dummy (int [sizeof (struct {...})]); + extern int (*dummy (void)) [sizeof (struct {...})]; + + can be repeated. + + * Should the implementation use a named struct or an unnamed struct? + Which of the following alternatives can be used? + + extern int dummy [sizeof (struct {...})]; + extern int dummy [sizeof (struct verify_type__ {...})]; + extern void dummy (int [sizeof (struct {...})]); + extern void dummy (int [sizeof (struct verify_type__ {...})]); + extern int (*dummy (void)) [sizeof (struct {...})]; + extern int (*dummy (void)) [sizeof (struct verify_type__ {...})]; + + In the second and sixth case, the struct type is exported to the + outer scope; two such declarations therefore collide. GCC warns + about the first, third, and fourth cases. So the only remaining + possibility is the fifth case: + + extern int (*dummy (void)) [sizeof (struct {...})]; + + * This implementation exploits the fact that GCC does not warn about + the last declaration mentioned above. If a future version of GCC + introduces a warning for this, the problem could be worked around + by using code specialized to GCC, e.g.,: + + #if 4 <= __GNUC__ + # define verify(R) \ + extern int (* verify_function__ (void)) \ + [__builtin_constant_p (R) && (R) ? 1 : -1] + #endif + + * In C++, any struct definition inside sizeof is invalid. + Use a template type to work around the problem. */ + + +/* Verify requirement R at compile-time, as an integer constant expression. + Return 1. */ + +# ifdef __cplusplus +template <int w> + struct verify_type__ { unsigned int verify_error_if_negative_size__: w; }; +# define verify_true(R) \ + (!!sizeof (verify_type__<(R) ? 1 : -1>)) +# else +# define verify_true(R) \ + (!!sizeof \ + (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; })) +# endif + +/* Verify requirement R at compile-time, as a declaration without a + trailing ';'. */ + +# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)] + +#endif diff --git a/lib/gunibreak.h b/lib/gunibreak.h new file mode 100644 index 0000000..4f401bc --- /dev/null +++ b/lib/gunibreak.h @@ -0,0 +1,9353 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit gen-unicode-tables.pl and re-run. */ + +#ifndef BREAKTABLES_H +#define BREAKTABLES_H + +#define G_UNICODE_DATA_VERSION "3.2" + +#define G_UNICODE_LAST_CHAR 0x10FFFF + +#define G_UNICODE_MAX_TABLE_INDEX 10000 + +/* the last code point that should be looked up in break_property_table_part1 */ +#define G_UNICODE_LAST_CHAR_PART1 0x2FAFF + +static const gint8 break_property_data[][256] = { + { /* page 0, index 0 */ + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_LINE_FEED, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_MANDATORY, G_UNICODE_BREAK_CARRIAGE_RETURN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_SPACE, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_HYPHEN, + G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_SYMBOL, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_INFIX_SEPARATOR, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_BEFORE, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 1, index 1 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 2, index 2 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 3, index 3 */ + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 4, index 4 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 5, index 5 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_INFIX_SEPARATOR, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN + }, + { /* page 6, index 6 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 7, index 7 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 9, index 8 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 10, index 9 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 11, index 10 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 12, index 11 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 13, index 12 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 14, index 13 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 15, index 14 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 16, index 15 */ + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 17, index 16 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 18, index 17 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 19, index 18 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 20, index 19 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 22, index 20 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN + }, + { /* page 23, index 21 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 24, index 22 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 30, index 23 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 31, index 24 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 32, index 25 */ + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_NON_BREAKING_GLUE, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_ZERO_WIDTH_SPACE, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_BEFORE_AND_AFTER, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_INSEPARABLE, + G_UNICODE_BREAK_INSEPARABLE, G_UNICODE_BREAK_INSEPARABLE, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_MANDATORY, + G_UNICODE_BREAK_MANDATORY, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN + }, + { /* page 33, index 26 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 34, index 27 */ + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 35, index 28 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 36, index 29 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 37, index 30 */ + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 38, index 31 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 39, index 32 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, + G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 41, index 33 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 46, index 34 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 47, index 35 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 48, index 36 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC + }, + { /* page 49, index 37 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER + }, + { /* page 50, index 38 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 51, index 39 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 77, index 40 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 159, index 41 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 164, index 42 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 215, index 43 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 250, index 44 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 251, index 45 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 253, index 46 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 254, index 47 */ + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NON_BREAKING_GLUE + }, + { /* page 255, index 48 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_EXCLAMATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_CONTINGENT, G_UNICODE_BREAK_AMBIGUOUS, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 259, index 49 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 260, index 50 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 464, index 51 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 465, index 52 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 468, index 53 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 469, index 54 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 470, index 55 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 471, index 56 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC + }, + { /* page 678, index 57 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 762, index 58 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 3584, index 59 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + } +}; + +/* U+0000 through U+2FAFF */ +static const gint16 break_property_table_part1[763] = { + 0 /* page 0 */, + 1 /* page 1 */, + 2 /* page 2 */, + 3 /* page 3 */, + 4 /* page 4 */, + 5 /* page 5 */, + 6 /* page 6 */, + 7 /* page 7 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 8 /* page 9 */, + 9 /* page 10 */, + 10 /* page 11 */, + 11 /* page 12 */, + 12 /* page 13 */, + 13 /* page 14 */, + 14 /* page 15 */, + 15 /* page 16 */, + 16 /* page 17 */, + 17 /* page 18 */, + 18 /* page 19 */, + 19 /* page 20 */, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + 20 /* page 22 */, + 21 /* page 23 */, + 22 /* page 24 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 23 /* page 30 */, + 24 /* page 31 */, + 25 /* page 32 */, + 26 /* page 33 */, + 27 /* page 34 */, + 28 /* page 35 */, + 29 /* page 36 */, + 30 /* page 37 */, + 31 /* page 38 */, + 32 /* page 39 */, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + 33 /* page 41 */, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 34 /* page 46 */, + 35 /* page 47 */, + 36 /* page 48 */, + 37 /* page 49 */, + 38 /* page 50 */, + 39 /* page 51 */, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 40 /* page 77 */, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 41 /* page 159 */, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 42 /* page 164 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 43 /* page 215 */, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 44 /* page 250 */, + 45 /* page 251 */, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + 46 /* page 253 */, + 47 /* page 254 */, + 48 /* page 255 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 49 /* page 259 */, + 50 /* page 260 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 51 /* page 464 */, + 52 /* page 465 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 53 /* page 468 */, + 54 /* page 469 */, + 55 /* page 470 */, + 56 /* page 471 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 57 /* page 678 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX, + 58 /* page 762 */ +}; + +/* U+E0000 through U+10FFFF */ +static const gint16 break_property_table_part2[768] = { + 59 /* page 3584 */, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX +}; + +#endif /* BREAKTABLES_H */ diff --git a/lib/gunicomp.h b/lib/gunicomp.h new file mode 100644 index 0000000..b5fa880 --- /dev/null +++ b/lib/gunicomp.h @@ -0,0 +1,661 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit gen-unicode-tables.pl and re-run. */ + +#define COMPOSE_FIRST_START 1 +#define COMPOSE_FIRST_SINGLE_START 147 +#define COMPOSE_SECOND_START 357 +#define COMPOSE_SECOND_SINGLE_START 388 + +#define COMPOSE_TABLE_LAST 48 + +static const guint16 compose_data[][256] = { + { /* page 0, index 0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 148, 149, 0, 0, 1, 2, 3, 4, 5, + 150, 6, 7, 8, 151, 9, 10, 11, 12, 13, 14, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, 28, 152, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 153, 154, + 50, 155, 0, 0, 51, 0, 0, 0, 0, 156, 0, 0, 0, 0, 52, 53, 157, 0, 158, 0, + 0, 0, 54, 0, 0, 0, 0, 0, 55, 0, 159, 160, 56, 161, 0, 0, 57, 0, 0, 0, 0, + 162, 0, 0, 0, 0, 58, 59, 163, 0, 164, 0, 0, 0, 60, 0, 0, 0 + }, + { /* page 1, index 1 */ + 0, 0, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 166, 0, + 0, 0, 0, 167, 168, 0, 0, 0, 0, 0, 0, 169, 170, 171, 172, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, 0, 174, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { /* page 2, index 2 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 179, 180, 0, 0, 0, 0, + 181, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 3, index 3 */ + 357, 358, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 0, 0, 369, + 0, 370, 0, 371, 372, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 374, + 375, 376, 377, 378, 379, 0, 0, 0, 0, 380, 381, 0, 382, 383, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, 0, 385, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, + 72, 0, 73, 0, 74, 0, 0, 0, 0, 0, 75, 0, 184, 0, 0, 0, 76, 0, 0, 0, 77, 0, + 0, 185, 0, 186, 0, 0, 78, 0, 0, 0, 79, 0, 80, 0, 81, 0, 0, 0, 0, 0, 82, + 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 86, 87, 0, 0, 187, 0, 0, 0, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 4, index 4 */ + 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 189, 0, 90, + 91, 190, 92, 0, 191, 0, 0, 0, 192, 0, 0, 0, 0, 93, 0, 0, 0, 193, 0, 0, 0, + 194, 0, 195, 0, 0, 94, 0, 0, 196, 0, 95, 96, 197, 97, 0, 198, 0, 0, 0, + 199, 0, 0, 0, 0, 98, 0, 0, 0, 200, 0, 0, 0, 201, 0, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 208, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 6, index 5 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 388, 389, 390, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, + 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 9, index 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, 215, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 11, index 7 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 394, 395, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 396, 0, 0, 0, 0, 0, 0, 0, 102, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 12, index 8 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, + 0, 0, 398, 0, 0, 0, 103, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, + 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 13, index 9 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 104, + 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 404, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 0, 0, 224, 0, 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 16, index 10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 30, index 11 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 226, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 229, 0, 0, + 0, 0, 0, 0, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 107, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 235, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 31, index 12 */ + 108, 109, 236, 237, 238, 239, 240, 241, 110, 111, 242, 243, 244, 245, + 246, 247, 112, 113, 0, 0, 0, 0, 0, 0, 114, 115, 0, 0, 0, 0, 0, 0, 116, + 117, 248, 249, 250, 251, 252, 253, 118, 119, 254, 255, 256, 257, 258, + 259, 120, 121, 0, 0, 0, 0, 0, 0, 122, 123, 0, 0, 0, 0, 0, 0, 124, 125, 0, + 0, 0, 0, 0, 0, 126, 127, 0, 0, 0, 0, 0, 0, 128, 129, 0, 0, 0, 0, 0, 0, 0, + 130, 0, 0, 0, 0, 0, 0, 131, 132, 260, 261, 262, 263, 264, 265, 133, 134, + 266, 267, 268, 269, 270, 271, 272, 0, 0, 0, 273, 0, 0, 0, 0, 0, 0, 0, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, + 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 136, 0 + }, + { /* page 33, index 13 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 279, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 282, 0, + 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 34, index 14 */ + 0, 0, 0, 284, 0, 0, 0, 0, 285, 0, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 288, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 290, + 0, 291, 0, 0, 292, 0, 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 297, 298, 0, 0, 299, 300, 0, 0, 301, 302, 303, 304, 0, 0, 0, 0, + 305, 306, 0, 0, 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 310, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 312, 313, 0, 314, + 0, 0, 0, 0, 0, 0, 315, 316, 317, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 48, index 15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, + 0, 0, 0, 320, 0, 321, 0, 322, 0, 323, 0, 324, 0, 325, 0, 326, 0, 327, 0, + 328, 0, 329, 0, 330, 0, 331, 0, 0, 332, 0, 333, 0, 334, 0, 0, 0, 0, 0, 0, + 137, 0, 0, 138, 0, 0, 139, 0, 0, 140, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 386, 387, + 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 337, 0, 338, 0, 339, + 0, 340, 0, 341, 0, 342, 0, 343, 0, 344, 0, 345, 0, 346, 0, 347, 0, 348, + 0, 0, 349, 0, 350, 0, 351, 0, 0, 0, 0, 0, 0, 142, 0, 0, 143, 0, 0, 144, + 0, 0, 145, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 352, 353, 354, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, 0 + } +}; + +static const gint16 compose_table[COMPOSE_TABLE_LAST + 1] = { + 0 /* page 0 */, + 1 /* page 1 */, + 2 /* page 2 */, + 3 /* page 3 */, + 4 /* page 4 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 5 /* page 6 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 6 /* page 9 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 7 /* page 11 */, + 8 /* page 12 */, + 9 /* page 13 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 10 /* page 16 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 11 /* page 30 */, + 12 /* page 31 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 13 /* page 33 */, + 14 /* page 34 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 15 /* page 48 */ +}; + +static const guint16 compose_first_single[][2] = { + { 0x0338, 0x226e }, + { 0x0338, 0x2260 }, + { 0x0338, 0x226f }, + { 0x0307, 0x1e1e }, + { 0x0302, 0x0134 }, + { 0x0307, 0x1e1f }, + { 0x0304, 0x01de }, + { 0x0301, 0x01fa }, + { 0x0301, 0x1e08 }, + { 0x0301, 0x1e2e }, + { 0x0304, 0x022a }, + { 0x0301, 0x01fe }, + { 0x0304, 0x01df }, + { 0x0301, 0x01fb }, + { 0x0301, 0x1e09 }, + { 0x0301, 0x1e2f }, + { 0x0304, 0x022b }, + { 0x0301, 0x01ff }, + { 0x0307, 0x1e64 }, + { 0x0307, 0x1e65 }, + { 0x0307, 0x1e66 }, + { 0x0307, 0x1e67 }, + { 0x0301, 0x1e78 }, + { 0x0301, 0x1e79 }, + { 0x0308, 0x1e7a }, + { 0x0308, 0x1e7b }, + { 0x0307, 0x1e9b }, + { 0x030c, 0x01ee }, + { 0x0304, 0x01ec }, + { 0x0304, 0x01ed }, + { 0x0304, 0x01e0 }, + { 0x0304, 0x01e1 }, + { 0x0306, 0x1e1c }, + { 0x0306, 0x1e1d }, + { 0x0304, 0x0230 }, + { 0x0304, 0x0231 }, + { 0x030c, 0x01ef }, + { 0x0314, 0x1fec }, + { 0x0345, 0x1fb4 }, + { 0x0345, 0x1fc4 }, + { 0x0345, 0x1ff4 }, + { 0x0308, 0x0407 }, + { 0x0301, 0x0403 }, + { 0x0308, 0x04de }, + { 0x0301, 0x040c }, + { 0x0308, 0x04e6 }, + { 0x0308, 0x04f4 }, + { 0x0308, 0x04f8 }, + { 0x0308, 0x04ec }, + { 0x0301, 0x0453 }, + { 0x0308, 0x04df }, + { 0x0301, 0x045c }, + { 0x0308, 0x04e7 }, + { 0x0308, 0x04f5 }, + { 0x0308, 0x04f9 }, + { 0x0308, 0x04ed }, + { 0x0308, 0x0457 }, + { 0x030f, 0x0476 }, + { 0x030f, 0x0477 }, + { 0x0308, 0x04da }, + { 0x0308, 0x04db }, + { 0x0308, 0x04ea }, + { 0x0308, 0x04eb }, + { 0x0654, 0x0624 }, + { 0x0654, 0x0626 }, + { 0x0654, 0x06c2 }, + { 0x0654, 0x06d3 }, + { 0x0654, 0x06c0 }, + { 0x093c, 0x0929 }, + { 0x093c, 0x0931 }, + { 0x093c, 0x0934 }, + { 0x0bd7, 0x0b94 }, + { 0x0bbe, 0x0bcb }, + { 0x0c56, 0x0c48 }, + { 0x0cd5, 0x0cc0 }, + { 0x0cd5, 0x0ccb }, + { 0x0d3e, 0x0d4b }, + { 0x0dca, 0x0ddd }, + { 0x102e, 0x1026 }, + { 0x0304, 0x1e38 }, + { 0x0304, 0x1e39 }, + { 0x0304, 0x1e5c }, + { 0x0304, 0x1e5d }, + { 0x0307, 0x1e68 }, + { 0x0307, 0x1e69 }, + { 0x0302, 0x1ec6 }, + { 0x0302, 0x1ec7 }, + { 0x0302, 0x1ed8 }, + { 0x0302, 0x1ed9 }, + { 0x0345, 0x1f82 }, + { 0x0345, 0x1f83 }, + { 0x0345, 0x1f84 }, + { 0x0345, 0x1f85 }, + { 0x0345, 0x1f86 }, + { 0x0345, 0x1f87 }, + { 0x0345, 0x1f8a }, + { 0x0345, 0x1f8b }, + { 0x0345, 0x1f8c }, + { 0x0345, 0x1f8d }, + { 0x0345, 0x1f8e }, + { 0x0345, 0x1f8f }, + { 0x0345, 0x1f92 }, + { 0x0345, 0x1f93 }, + { 0x0345, 0x1f94 }, + { 0x0345, 0x1f95 }, + { 0x0345, 0x1f96 }, + { 0x0345, 0x1f97 }, + { 0x0345, 0x1f9a }, + { 0x0345, 0x1f9b }, + { 0x0345, 0x1f9c }, + { 0x0345, 0x1f9d }, + { 0x0345, 0x1f9e }, + { 0x0345, 0x1f9f }, + { 0x0345, 0x1fa2 }, + { 0x0345, 0x1fa3 }, + { 0x0345, 0x1fa4 }, + { 0x0345, 0x1fa5 }, + { 0x0345, 0x1fa6 }, + { 0x0345, 0x1fa7 }, + { 0x0345, 0x1faa }, + { 0x0345, 0x1fab }, + { 0x0345, 0x1fac }, + { 0x0345, 0x1fad }, + { 0x0345, 0x1fae }, + { 0x0345, 0x1faf }, + { 0x0345, 0x1fb2 }, + { 0x0345, 0x1fc2 }, + { 0x0345, 0x1ff2 }, + { 0x0345, 0x1fb7 }, + { 0x0345, 0x1fc7 }, + { 0x0345, 0x1ff7 }, + { 0x0338, 0x219a }, + { 0x0338, 0x219b }, + { 0x0338, 0x21ae }, + { 0x0338, 0x21cd }, + { 0x0338, 0x21cf }, + { 0x0338, 0x21ce }, + { 0x0338, 0x2204 }, + { 0x0338, 0x2209 }, + { 0x0338, 0x220c }, + { 0x0338, 0x2224 }, + { 0x0338, 0x2226 }, + { 0x0338, 0x2241 }, + { 0x0338, 0x2244 }, + { 0x0338, 0x2247 }, + { 0x0338, 0x2249 }, + { 0x0338, 0x226d }, + { 0x0338, 0x2262 }, + { 0x0338, 0x2270 }, + { 0x0338, 0x2271 }, + { 0x0338, 0x2274 }, + { 0x0338, 0x2275 }, + { 0x0338, 0x2278 }, + { 0x0338, 0x2279 }, + { 0x0338, 0x2280 }, + { 0x0338, 0x2281 }, + { 0x0338, 0x22e0 }, + { 0x0338, 0x22e1 }, + { 0x0338, 0x2284 }, + { 0x0338, 0x2285 }, + { 0x0338, 0x2288 }, + { 0x0338, 0x2289 }, + { 0x0338, 0x22e2 }, + { 0x0338, 0x22e3 }, + { 0x0338, 0x22ac }, + { 0x0338, 0x22ad }, + { 0x0338, 0x22ae }, + { 0x0338, 0x22af }, + { 0x0338, 0x22ea }, + { 0x0338, 0x22eb }, + { 0x0338, 0x22ec }, + { 0x0338, 0x22ed }, + { 0x3099, 0x3094 }, + { 0x3099, 0x304c }, + { 0x3099, 0x304e }, + { 0x3099, 0x3050 }, + { 0x3099, 0x3052 }, + { 0x3099, 0x3054 }, + { 0x3099, 0x3056 }, + { 0x3099, 0x3058 }, + { 0x3099, 0x305a }, + { 0x3099, 0x305c }, + { 0x3099, 0x305e }, + { 0x3099, 0x3060 }, + { 0x3099, 0x3062 }, + { 0x3099, 0x3065 }, + { 0x3099, 0x3067 }, + { 0x3099, 0x3069 }, + { 0x3099, 0x309e }, + { 0x3099, 0x30f4 }, + { 0x3099, 0x30ac }, + { 0x3099, 0x30ae }, + { 0x3099, 0x30b0 }, + { 0x3099, 0x30b2 }, + { 0x3099, 0x30b4 }, + { 0x3099, 0x30b6 }, + { 0x3099, 0x30b8 }, + { 0x3099, 0x30ba }, + { 0x3099, 0x30bc }, + { 0x3099, 0x30be }, + { 0x3099, 0x30c0 }, + { 0x3099, 0x30c2 }, + { 0x3099, 0x30c5 }, + { 0x3099, 0x30c7 }, + { 0x3099, 0x30c9 }, + { 0x3099, 0x30f7 }, + { 0x3099, 0x30f8 }, + { 0x3099, 0x30f9 }, + { 0x3099, 0x30fa }, + { 0x3099, 0x30fe } +}; +static const guint16 compose_second_single[][2] = { + { 0x0627, 0x0622 }, + { 0x0627, 0x0623 }, + { 0x0627, 0x0625 }, + { 0x09c7, 0x09cb }, + { 0x09c7, 0x09cc }, + { 0x0b47, 0x0b4b }, + { 0x0b47, 0x0b48 }, + { 0x0b47, 0x0b4c }, + { 0x0bc6, 0x0bca }, + { 0x0bc6, 0x0bcc }, + { 0x0cc6, 0x0cca }, + { 0x0cc6, 0x0cc7 }, + { 0x0cc6, 0x0cc8 }, + { 0x0d46, 0x0d4a }, + { 0x0d46, 0x0d4c }, + { 0x0dd9, 0x0dda }, + { 0x0dd9, 0x0ddc }, + { 0x0dd9, 0x0dde } +}; +static const guint16 compose_array[146][31] = { + { 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x0100, 0x0102, 0x0226, 0x00c4, 0x1ea2, 0x00c5, 0, 0x01cd, 0x0200, 0x0202, 0, 0, 0, 0x1ea0, 0, 0x1e00, 0, 0, 0x0104, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e04, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e06, 0, 0, 0, 0 }, + { 0, 0x0106, 0x0108, 0, 0, 0, 0x010a, 0, 0, 0, 0, 0x010c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x00c7, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e0a, 0, 0, 0, 0, 0x010e, 0, 0, 0, 0, 0, 0x1e0c, 0, 0, 0, 0x1e10, 0, 0x1e12, 0, 0, 0x1e0e, 0, 0, 0, 0 }, + { 0x00c8, 0x00c9, 0x00ca, 0x1ebc, 0x0112, 0x0114, 0x0116, 0x00cb, 0x1eba, 0, 0, 0x011a, 0x0204, 0x0206, 0, 0, 0, 0x1eb8, 0, 0, 0, 0x0228, 0x0118, 0x1e18, 0, 0x1e1a, 0, 0, 0, 0, 0 }, + { 0, 0x01f4, 0x011c, 0, 0x1e20, 0x011e, 0x0120, 0, 0, 0, 0, 0x01e6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0122, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0x0124, 0, 0, 0, 0x1e22, 0x1e26, 0, 0, 0, 0x021e, 0, 0, 0, 0, 0, 0x1e24, 0, 0, 0, 0x1e28, 0, 0, 0x1e2a, 0, 0, 0, 0, 0, 0 }, + { 0x00cc, 0x00cd, 0x00ce, 0x0128, 0x012a, 0x012c, 0x0130, 0x00cf, 0x1ec8, 0, 0, 0x01cf, 0x0208, 0x020a, 0, 0, 0, 0x1eca, 0, 0, 0, 0, 0x012e, 0, 0, 0x1e2c, 0, 0, 0, 0, 0 }, + { 0, 0x1e30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01e8, 0, 0, 0, 0, 0, 0x1e32, 0, 0, 0, 0x0136, 0, 0, 0, 0, 0x1e34, 0, 0, 0, 0 }, + { 0, 0x0139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x013d, 0, 0, 0, 0, 0, 0x1e36, 0, 0, 0, 0x013b, 0, 0x1e3c, 0, 0, 0x1e3a, 0, 0, 0, 0 }, + { 0, 0x1e3e, 0, 0, 0, 0, 0x1e40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x01f8, 0x0143, 0, 0x00d1, 0, 0, 0x1e44, 0, 0, 0, 0, 0x0147, 0, 0, 0, 0, 0, 0x1e46, 0, 0, 0, 0x0145, 0, 0x1e4a, 0, 0, 0x1e48, 0, 0, 0, 0 }, + { 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x014c, 0x014e, 0x022e, 0x00d6, 0x1ece, 0, 0x0150, 0x01d1, 0x020c, 0x020e, 0, 0, 0x01a0, 0x1ecc, 0, 0, 0, 0, 0x01ea, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x1e54, 0, 0, 0, 0, 0x1e56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x0154, 0, 0, 0, 0, 0x1e58, 0, 0, 0, 0, 0x0158, 0x0210, 0x0212, 0, 0, 0, 0x1e5a, 0, 0, 0, 0x0156, 0, 0, 0, 0, 0x1e5e, 0, 0, 0, 0 }, + { 0, 0x015a, 0x015c, 0, 0, 0, 0x1e60, 0, 0, 0, 0, 0x0160, 0, 0, 0, 0, 0, 0x1e62, 0, 0, 0x0218, 0x015e, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e6a, 0, 0, 0, 0, 0x0164, 0, 0, 0, 0, 0, 0x1e6c, 0, 0, 0x021a, 0x0162, 0, 0x1e70, 0, 0, 0x1e6e, 0, 0, 0, 0 }, + { 0x00d9, 0x00da, 0x00db, 0x0168, 0x016a, 0x016c, 0, 0x00dc, 0x1ee6, 0x016e, 0x0170, 0x01d3, 0x0214, 0x0216, 0, 0, 0x01af, 0x1ee4, 0x1e72, 0, 0, 0, 0x0172, 0x1e76, 0, 0x1e74, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0x1e7c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e7e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e80, 0x1e82, 0x0174, 0, 0, 0, 0x1e86, 0x1e84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e8a, 0x1e8c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ef2, 0x00dd, 0x0176, 0x1ef8, 0x0232, 0, 0x1e8e, 0x0178, 0x1ef6, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ef4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x0179, 0x1e90, 0, 0, 0, 0x017b, 0, 0, 0, 0, 0x017d, 0, 0, 0, 0, 0, 0x1e92, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e94, 0, 0, 0, 0 }, + { 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x0101, 0x0103, 0x0227, 0x00e4, 0x1ea3, 0x00e5, 0, 0x01ce, 0x0201, 0x0203, 0, 0, 0, 0x1ea1, 0, 0x1e01, 0, 0, 0x0105, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e05, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e07, 0, 0, 0, 0 }, + { 0, 0x0107, 0x0109, 0, 0, 0, 0x010b, 0, 0, 0, 0, 0x010d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x00e7, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e0b, 0, 0, 0, 0, 0x010f, 0, 0, 0, 0, 0, 0x1e0d, 0, 0, 0, 0x1e11, 0, 0x1e13, 0, 0, 0x1e0f, 0, 0, 0, 0 }, + { 0x00e8, 0x00e9, 0x00ea, 0x1ebd, 0x0113, 0x0115, 0x0117, 0x00eb, 0x1ebb, 0, 0, 0x011b, 0x0205, 0x0207, 0, 0, 0, 0x1eb9, 0, 0, 0, 0x0229, 0x0119, 0x1e19, 0, 0x1e1b, 0, 0, 0, 0, 0 }, + { 0, 0x01f5, 0x011d, 0, 0x1e21, 0x011f, 0x0121, 0, 0, 0, 0, 0x01e7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0123, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0x0125, 0, 0, 0, 0x1e23, 0x1e27, 0, 0, 0, 0x021f, 0, 0, 0, 0, 0, 0x1e25, 0, 0, 0, 0x1e29, 0, 0, 0x1e2b, 0, 0x1e96, 0, 0, 0, 0 }, + { 0x00ec, 0x00ed, 0x00ee, 0x0129, 0x012b, 0x012d, 0, 0x00ef, 0x1ec9, 0, 0, 0x01d0, 0x0209, 0x020b, 0, 0, 0, 0x1ecb, 0, 0, 0, 0, 0x012f, 0, 0, 0x1e2d, 0, 0, 0, 0, 0 }, + { 0, 0, 0x0135, 0, 0, 0, 0, 0, 0, 0, 0, 0x01f0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x1e31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01e9, 0, 0, 0, 0, 0, 0x1e33, 0, 0, 0, 0x0137, 0, 0, 0, 0, 0x1e35, 0, 0, 0, 0 }, + { 0, 0x013a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x013e, 0, 0, 0, 0, 0, 0x1e37, 0, 0, 0, 0x013c, 0, 0x1e3d, 0, 0, 0x1e3b, 0, 0, 0, 0 }, + { 0, 0x1e3f, 0, 0, 0, 0, 0x1e41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x01f9, 0x0144, 0, 0x00f1, 0, 0, 0x1e45, 0, 0, 0, 0, 0x0148, 0, 0, 0, 0, 0, 0x1e47, 0, 0, 0, 0x0146, 0, 0x1e4b, 0, 0, 0x1e49, 0, 0, 0, 0 }, + { 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x014d, 0x014f, 0x022f, 0x00f6, 0x1ecf, 0, 0x0151, 0x01d2, 0x020d, 0x020f, 0, 0, 0x01a1, 0x1ecd, 0, 0, 0, 0, 0x01eb, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x1e55, 0, 0, 0, 0, 0x1e57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x0155, 0, 0, 0, 0, 0x1e59, 0, 0, 0, 0, 0x0159, 0x0211, 0x0213, 0, 0, 0, 0x1e5b, 0, 0, 0, 0x0157, 0, 0, 0, 0, 0x1e5f, 0, 0, 0, 0 }, + { 0, 0x015b, 0x015d, 0, 0, 0, 0x1e61, 0, 0, 0, 0, 0x0161, 0, 0, 0, 0, 0, 0x1e63, 0, 0, 0x0219, 0x015f, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e6b, 0x1e97, 0, 0, 0, 0x0165, 0, 0, 0, 0, 0, 0x1e6d, 0, 0, 0x021b, 0x0163, 0, 0x1e71, 0, 0, 0x1e6f, 0, 0, 0, 0 }, + { 0x00f9, 0x00fa, 0x00fb, 0x0169, 0x016b, 0x016d, 0, 0x00fc, 0x1ee7, 0x016f, 0x0171, 0x01d4, 0x0215, 0x0217, 0, 0, 0x01b0, 0x1ee5, 0x1e73, 0, 0, 0, 0x0173, 0x1e77, 0, 0x1e75, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0x1e7d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e7f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e81, 0x1e83, 0x0175, 0, 0, 0, 0x1e87, 0x1e85, 0, 0x1e98, 0, 0, 0, 0, 0, 0, 0, 0x1e89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0x1e8b, 0x1e8d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ef3, 0x00fd, 0x0177, 0x1ef9, 0x0233, 0, 0x1e8f, 0x00ff, 0x1ef7, 0x1e99, 0, 0, 0, 0, 0, 0, 0, 0x1ef5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x017a, 0x1e91, 0, 0, 0, 0x017c, 0, 0, 0, 0, 0x017e, 0, 0, 0, 0, 0, 0x1e93, 0, 0, 0, 0, 0, 0, 0, 0, 0x1e95, 0, 0, 0, 0 }, + { 0x1fed, 0x0385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fc1, 0, 0, 0 }, + { 0x1ea6, 0x1ea4, 0, 0x1eaa, 0, 0, 0, 0, 0x1ea8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x01fc, 0, 0, 0x01e2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ec0, 0x1ebe, 0, 0x1ec4, 0, 0, 0, 0, 0x1ec2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ed2, 0x1ed0, 0, 0x1ed6, 0, 0, 0, 0, 0x1ed4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x1e4c, 0, 0, 0x022c, 0, 0, 0x1e4e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x01db, 0x01d7, 0, 0, 0x01d5, 0, 0, 0, 0, 0, 0, 0x01d9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ea7, 0x1ea5, 0, 0x1eab, 0, 0, 0, 0, 0x1ea9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x01fd, 0, 0, 0x01e3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ec1, 0x1ebf, 0, 0x1ec5, 0, 0, 0, 0, 0x1ec3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ed3, 0x1ed1, 0, 0x1ed7, 0, 0, 0, 0, 0x1ed5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0x1e4d, 0, 0, 0x022d, 0, 0, 0x1e4f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x01dc, 0x01d8, 0, 0, 0x01d6, 0, 0, 0, 0, 0, 0, 0x01da, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1eb0, 0x1eae, 0, 0x1eb4, 0, 0, 0, 0, 0x1eb2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1eb1, 0x1eaf, 0, 0x1eb5, 0, 0, 0, 0, 0x1eb3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e14, 0x1e16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e15, 0x1e17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e50, 0x1e52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1e51, 0x1e53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1edc, 0x1eda, 0, 0x1ee0, 0, 0, 0, 0, 0x1ede, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ee2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1edd, 0x1edb, 0, 0x1ee1, 0, 0, 0, 0, 0x1edf, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ee3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1eea, 0x1ee8, 0, 0x1eee, 0, 0, 0, 0, 0x1eec, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ef0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1eeb, 0x1ee9, 0, 0x1eef, 0, 0, 0, 0, 0x1eed, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ef1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1fba, 0x0386, 0, 0, 0x1fb9, 0x1fb8, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f08, 0x1f09, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fbc, 0, 0 }, + { 0x1fc8, 0x0388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f18, 0x1f19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1fca, 0x0389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f28, 0x1f29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fcc, 0, 0 }, + { 0x1fda, 0x038a, 0, 0, 0x1fd9, 0x1fd8, 0, 0x03aa, 0, 0, 0, 0, 0, 0, 0x1f38, 0x1f39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ff8, 0x038c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f48, 0x1f49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1fea, 0x038e, 0, 0, 0x1fe9, 0x1fe8, 0, 0x03ab, 0, 0, 0, 0, 0, 0, 0, 0x1f59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1ffa, 0x038f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f68, 0x1f69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ffc, 0, 0 }, + { 0x1f70, 0x03ac, 0, 0, 0x1fb1, 0x1fb0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f00, 0x1f01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fb6, 0x1fb3, 0, 0 }, + { 0x1f72, 0x03ad, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f10, 0x1f11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f74, 0x03ae, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f20, 0x1f21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fc6, 0x1fc3, 0, 0 }, + { 0x1f76, 0x03af, 0, 0, 0x1fd1, 0x1fd0, 0, 0x03ca, 0, 0, 0, 0, 0, 0, 0x1f30, 0x1f31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fd6, 0, 0, 0 }, + { 0x1f78, 0x03cc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f40, 0x1f41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fe4, 0x1fe5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f7a, 0x03cd, 0, 0, 0x1fe1, 0x1fe0, 0, 0x03cb, 0, 0, 0, 0, 0, 0, 0x1f50, 0x1f51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fe6, 0, 0, 0 }, + { 0x1f7c, 0x03ce, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f60, 0x1f61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1ff6, 0x1ff3, 0, 0 }, + { 0x1fd2, 0x0390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fd7, 0, 0, 0 }, + { 0x1fe2, 0x03b0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fe7, 0, 0, 0 }, + { 0, 0x03d3, 0, 0, 0, 0, 0, 0x03d4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0x04d0, 0, 0x04d2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x0400, 0, 0, 0, 0, 0x04d6, 0, 0x0401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0x04c1, 0, 0x04dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x040d, 0, 0, 0, 0x04e2, 0x0419, 0, 0x04e4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0x04ee, 0x040e, 0, 0x04f0, 0, 0, 0x04f2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0x04d1, 0, 0x04d3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x0450, 0, 0, 0, 0, 0x04d7, 0, 0x0451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0x04c2, 0, 0x04dd, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x045d, 0, 0, 0, 0x04e3, 0x0439, 0, 0x04e5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0x04ef, 0x045e, 0, 0x04f1, 0, 0, 0x04f3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0x1eac, 0, 0, 0x1eb6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0x1ead, 0, 0, 0x1eb7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f02, 0x1f04, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f06, 0x1f80, 0, 0 }, + { 0x1f03, 0x1f05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f07, 0x1f81, 0, 0 }, + { 0x1f0a, 0x1f0c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f0e, 0x1f88, 0, 0 }, + { 0x1f0b, 0x1f0d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f0f, 0x1f89, 0, 0 }, + { 0x1f12, 0x1f14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f13, 0x1f15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f1a, 0x1f1c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f1b, 0x1f1d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f22, 0x1f24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f26, 0x1f90, 0, 0 }, + { 0x1f23, 0x1f25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f27, 0x1f91, 0, 0 }, + { 0x1f2a, 0x1f2c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f2e, 0x1f98, 0, 0 }, + { 0x1f2b, 0x1f2d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f2f, 0x1f99, 0, 0 }, + { 0x1f32, 0x1f34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f36, 0, 0, 0 }, + { 0x1f33, 0x1f35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f37, 0, 0, 0 }, + { 0x1f3a, 0x1f3c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f3e, 0, 0, 0 }, + { 0x1f3b, 0x1f3d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f3f, 0, 0, 0 }, + { 0x1f42, 0x1f44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f43, 0x1f45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f4a, 0x1f4c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f4b, 0x1f4d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0x1f52, 0x1f54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f56, 0, 0, 0 }, + { 0x1f53, 0x1f55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f57, 0, 0, 0 }, + { 0x1f5b, 0x1f5d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f5f, 0, 0, 0 }, + { 0x1f62, 0x1f64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f66, 0x1fa0, 0, 0 }, + { 0x1f63, 0x1f65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f67, 0x1fa1, 0, 0 }, + { 0x1f6a, 0x1f6c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f6e, 0x1fa8, 0, 0 }, + { 0x1f6b, 0x1f6d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1f6f, 0x1fa9, 0, 0 }, + { 0x1fcd, 0x1fce, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fcf, 0, 0, 0 }, + { 0x1fdd, 0x1fde, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1fdf, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3070, 0x3071 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3073, 0x3074 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3076, 0x3077 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3079, 0x307a }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x307c, 0x307d }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x30d0, 0x30d1 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x30d3, 0x30d4 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x30d6, 0x30d7 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x30d9, 0x30da }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x30dc, 0x30dd } +}; diff --git a/lib/gunidecomp.h b/lib/gunidecomp.h new file mode 100644 index 0000000..86657b7 --- /dev/null +++ b/lib/gunidecomp.h @@ -0,0 +1,10363 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit gen-unicode-tables.pl and re-run. */ + +#ifndef DECOMP_H +#define DECOMP_H + +#define G_UNICODE_LAST_CHAR 0x10ffff + +#define G_UNICODE_MAX_TABLE_INDEX (0x110000 / 256) + +#define G_UNICODE_LAST_CHAR_PART1 0x2FAFF + +#define G_UNICODE_LAST_PAGE_PART1 762 + +#define G_UNICODE_NOT_PRESENT_OFFSET 65535 + +static const guchar cclass_data[][256] = { + { /* page 3, index 0 */ + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, + 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, + 220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, + 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + { /* page 4, index 1 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 5, index 2 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, + 230, 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, + 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, + 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 6, index 3 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 230, 220, + 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 7, index 4 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, + 220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 9, index 5 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 10, index 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 11, index 7 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 12, index 8 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 13, index 9 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 14, index 10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 15, index 11 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, + 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 130, 0, 230, 230, 9, 0, + 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { /* page 16, index 12 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 23, index 13 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 24, index 14 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 32, index 15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, + 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, + 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 48, index 16 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 251, index 17 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 254, index 18 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 465, index 19 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, + 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, 0, 0, + 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + } +}; + +static const gint16 combining_class_table_part1[763] = { + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 /* page 3 */, + 1 /* page 4 */, + 2 /* page 5 */, + 3 /* page 6 */, + 4 /* page 7 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 5 /* page 9 */, + 6 /* page 10 */, + 7 /* page 11 */, + 8 /* page 12 */, + 9 /* page 13 */, + 10 /* page 14 */, + 11 /* page 15 */, + 12 /* page 16 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 13 /* page 23 */, + 14 /* page 24 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 15 /* page 32 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 16 /* page 48 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 17 /* page 251 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 18 /* page 254 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 19 /* page 465 */, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX +}; + +static const gint16 combining_class_table_part2[768] = { + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX, + 0 + G_UNICODE_MAX_TABLE_INDEX +}; + +typedef struct +{ + gunichar ch; + guint16 canon_offset; + guint16 compat_offset; +} decomposition; + +static const decomposition decomp_table[] = +{ + { 0x00a0, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x00a8, G_UNICODE_NOT_PRESENT_OFFSET, 2 }, + { 0x00aa, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x00af, G_UNICODE_NOT_PRESENT_OFFSET, 8 }, + { 0x00b2, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x00b3, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x00b4, G_UNICODE_NOT_PRESENT_OFFSET, 16 }, + { 0x00b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x00b8, G_UNICODE_NOT_PRESENT_OFFSET, 23 }, + { 0x00b9, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x00ba, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x00bc, G_UNICODE_NOT_PRESENT_OFFSET, 31 }, + { 0x00bd, G_UNICODE_NOT_PRESENT_OFFSET, 37 }, + { 0x00be, G_UNICODE_NOT_PRESENT_OFFSET, 43 }, + { 0x00c0, 49, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c1, 53, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c2, 57, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c3, 61, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c4, 65, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c5, 69, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c7, 73, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c8, 77, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00c9, 81, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ca, 85, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00cb, 89, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00cc, 93, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00cd, 97, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ce, 101, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00cf, 105, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d1, 109, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d2, 113, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d3, 117, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d4, 121, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d5, 125, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d6, 129, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00d9, 133, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00da, 137, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00db, 141, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00dc, 145, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00dd, 149, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e0, 153, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e1, 157, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e2, 161, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e3, 165, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e4, 169, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e5, 173, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e7, 177, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e8, 181, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00e9, 185, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ea, 189, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00eb, 193, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ec, 197, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ed, 201, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ee, 205, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ef, 209, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f1, 213, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f2, 217, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f3, 221, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f4, 225, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f5, 229, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f6, 233, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00f9, 237, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00fa, 241, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00fb, 245, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00fc, 249, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00fd, 253, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x00ff, 257, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0100, 261, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0101, 265, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0102, 269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0103, 273, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0104, 277, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0105, 281, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0106, 285, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0107, 289, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0108, 293, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0109, 297, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010a, 301, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010b, 305, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010c, 309, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010d, 313, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010e, 317, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x010f, 321, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0112, 325, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0113, 329, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0114, 333, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0115, 337, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0116, 341, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0117, 345, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0118, 349, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0119, 353, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011a, 357, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011b, 361, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011c, 365, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011d, 369, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011e, 373, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x011f, 377, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0120, 381, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0121, 385, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0122, 389, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0123, 393, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0124, 397, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0125, 401, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0128, 405, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0129, 409, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012a, 413, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012b, 417, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012c, 421, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012d, 425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012e, 429, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x012f, 433, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0130, 437, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0132, G_UNICODE_NOT_PRESENT_OFFSET, 441 }, + { 0x0133, G_UNICODE_NOT_PRESENT_OFFSET, 444 }, + { 0x0134, 447, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0135, 451, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0136, 455, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0137, 459, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0139, 463, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013a, 467, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013b, 471, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013c, 475, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013d, 479, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013e, 483, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x013f, G_UNICODE_NOT_PRESENT_OFFSET, 487 }, + { 0x0140, G_UNICODE_NOT_PRESENT_OFFSET, 491 }, + { 0x0143, 495, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0144, 499, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0145, 503, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0146, 507, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0147, 511, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0148, 515, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0149, G_UNICODE_NOT_PRESENT_OFFSET, 519 }, + { 0x014c, 523, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x014d, 527, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x014e, 531, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x014f, 535, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0150, 539, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0151, 543, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0154, 547, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0155, 551, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0156, 555, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0157, 559, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0158, 563, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0159, 567, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015a, 571, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015b, 575, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015c, 579, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015d, 583, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015e, 587, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x015f, 591, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0160, 595, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0161, 599, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0162, 603, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0163, 607, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0164, 611, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0165, 615, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0168, 619, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0169, 623, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016a, 627, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016b, 631, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016c, 635, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016d, 639, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016e, 643, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x016f, 647, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0170, 651, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0171, 655, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0172, 659, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0173, 663, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0174, 667, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0175, 671, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0176, 675, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0177, 679, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0178, 683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0179, 687, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017a, 691, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017b, 695, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017c, 699, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017d, 703, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017e, 707, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x017f, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x01a0, 713, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01a1, 717, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01af, 721, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01b0, 725, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01c4, G_UNICODE_NOT_PRESENT_OFFSET, 729 }, + { 0x01c5, G_UNICODE_NOT_PRESENT_OFFSET, 734 }, + { 0x01c6, G_UNICODE_NOT_PRESENT_OFFSET, 739 }, + { 0x01c7, G_UNICODE_NOT_PRESENT_OFFSET, 744 }, + { 0x01c8, G_UNICODE_NOT_PRESENT_OFFSET, 747 }, + { 0x01c9, G_UNICODE_NOT_PRESENT_OFFSET, 750 }, + { 0x01ca, G_UNICODE_NOT_PRESENT_OFFSET, 753 }, + { 0x01cb, G_UNICODE_NOT_PRESENT_OFFSET, 756 }, + { 0x01cc, G_UNICODE_NOT_PRESENT_OFFSET, 759 }, + { 0x01cd, 762, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ce, 766, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01cf, 770, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d0, 774, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d1, 778, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d2, 782, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d3, 786, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d4, 790, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d5, 794, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d6, 800, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d7, 806, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d8, 812, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01d9, 818, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01da, 824, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01db, 830, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01dc, 836, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01de, 842, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01df, 848, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e0, 854, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e1, 860, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e2, 866, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e3, 871, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e6, 876, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e7, 880, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e8, 884, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01e9, 888, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ea, 892, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01eb, 896, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ec, 900, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ed, 906, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ee, 912, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ef, 917, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01f0, 922, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01f1, G_UNICODE_NOT_PRESENT_OFFSET, 926 }, + { 0x01f2, G_UNICODE_NOT_PRESENT_OFFSET, 929 }, + { 0x01f3, G_UNICODE_NOT_PRESENT_OFFSET, 932 }, + { 0x01f4, 935, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01f5, 939, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01f8, 943, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01f9, 947, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01fa, 951, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01fb, 957, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01fc, 963, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01fd, 968, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01fe, 973, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x01ff, 978, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0200, 983, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0201, 987, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0202, 991, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0203, 995, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0204, 999, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0205, 1003, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0206, 1007, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0207, 1011, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0208, 1015, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0209, 1019, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020a, 1023, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020b, 1027, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020c, 1031, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020d, 1035, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020e, 1039, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x020f, 1043, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0210, 1047, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0211, 1051, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0212, 1055, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0213, 1059, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0214, 1063, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0215, 1067, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0216, 1071, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0217, 1075, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0218, 1079, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0219, 1083, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x021a, 1087, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x021b, 1091, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x021e, 1095, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x021f, 1099, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0226, 1103, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0227, 1107, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0228, 1111, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0229, 1115, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022a, 1119, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022b, 1125, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022c, 1131, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022d, 1137, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022e, 1143, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x022f, 1147, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0230, 1151, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0231, 1157, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0232, 1163, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0233, 1167, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x02b0, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x02b1, G_UNICODE_NOT_PRESENT_OFFSET, 1173 }, + { 0x02b2, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x02b3, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x02b4, G_UNICODE_NOT_PRESENT_OFFSET, 1180 }, + { 0x02b5, G_UNICODE_NOT_PRESENT_OFFSET, 1183 }, + { 0x02b6, G_UNICODE_NOT_PRESENT_OFFSET, 1186 }, + { 0x02b7, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x02b8, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x02d8, G_UNICODE_NOT_PRESENT_OFFSET, 1193 }, + { 0x02d9, G_UNICODE_NOT_PRESENT_OFFSET, 1197 }, + { 0x02da, G_UNICODE_NOT_PRESENT_OFFSET, 1201 }, + { 0x02db, G_UNICODE_NOT_PRESENT_OFFSET, 1205 }, + { 0x02dc, G_UNICODE_NOT_PRESENT_OFFSET, 1209 }, + { 0x02dd, G_UNICODE_NOT_PRESENT_OFFSET, 1213 }, + { 0x02e0, G_UNICODE_NOT_PRESENT_OFFSET, 1217 }, + { 0x02e1, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x02e2, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x02e3, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x02e4, G_UNICODE_NOT_PRESENT_OFFSET, 1224 }, + { 0x0340, 1227, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0341, 1230, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0343, 1233, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0344, 1236, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0374, 1241, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x037a, G_UNICODE_NOT_PRESENT_OFFSET, 1244 }, + { 0x037e, 1248, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0384, G_UNICODE_NOT_PRESENT_OFFSET, 16 }, + { 0x0385, 1250, 1255 }, + { 0x0386, 1261, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0387, 1266, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0388, 1269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0389, 1274, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x038a, 1279, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x038c, 1284, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x038e, 1289, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x038f, 1294, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0390, 1299, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03aa, 1306, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ab, 1311, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ac, 1316, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ad, 1321, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ae, 1326, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03af, 1331, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03b0, 1336, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ca, 1343, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03cb, 1348, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03cc, 1353, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03cd, 1358, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03ce, 1363, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x03d0, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x03d1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x03d2, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x03d3, 1377, 1289 }, + { 0x03d4, 1382, 1311 }, + { 0x03d5, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x03d6, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x03f0, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x03f1, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x03f2, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x03f4, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x03f5, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x0400, 1408, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0401, 1413, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0403, 1418, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0407, 1423, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x040c, 1428, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x040d, 1433, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x040e, 1438, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0419, 1443, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0439, 1448, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0450, 1453, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0451, 1458, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0453, 1463, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0457, 1468, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x045c, 1473, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x045d, 1478, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x045e, 1483, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0476, 1488, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0477, 1493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04c1, 1498, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04c2, 1503, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d0, 1508, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d1, 1513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d2, 1518, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d3, 1523, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d6, 1528, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04d7, 1533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04da, 1538, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04db, 1543, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04dc, 1548, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04dd, 1553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04de, 1558, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04df, 1563, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e2, 1568, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e3, 1573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e4, 1578, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e5, 1583, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e6, 1588, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04e7, 1593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04ea, 1598, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04eb, 1603, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04ec, 1608, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04ed, 1613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04ee, 1618, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04ef, 1623, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f0, 1628, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f1, 1633, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f2, 1638, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f3, 1643, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f4, 1648, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f5, 1653, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f8, 1658, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x04f9, 1663, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0587, G_UNICODE_NOT_PRESENT_OFFSET, 1668 }, + { 0x0622, 1673, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0623, 1678, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0624, 1683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0625, 1688, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0626, 1693, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0675, G_UNICODE_NOT_PRESENT_OFFSET, 1698 }, + { 0x0676, G_UNICODE_NOT_PRESENT_OFFSET, 1703 }, + { 0x0677, G_UNICODE_NOT_PRESENT_OFFSET, 1708 }, + { 0x0678, G_UNICODE_NOT_PRESENT_OFFSET, 1713 }, + { 0x06c0, 1718, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x06c2, 1723, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x06d3, 1728, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0929, 1733, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0931, 1740, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0934, 1747, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0958, 1754, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0959, 1761, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095a, 1768, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095b, 1775, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095c, 1782, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095d, 1789, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095e, 1796, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x095f, 1803, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x09cb, 1810, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x09cc, 1817, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x09dc, 1824, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x09dd, 1831, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x09df, 1838, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a33, 1845, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a36, 1852, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a59, 1859, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a5a, 1866, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a5b, 1873, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0a5e, 1880, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b48, 1887, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b4b, 1894, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b4c, 1901, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b5c, 1908, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b5d, 1915, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0b94, 1922, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0bca, 1929, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0bcb, 1936, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0bcc, 1943, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0c48, 1950, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0cc0, 1957, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0cc7, 1964, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0cc8, 1971, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0cca, 1978, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0ccb, 1985, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0d4a, 1995, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0d4b, 2002, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0d4c, 2009, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0dda, 2016, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0ddc, 2023, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0ddd, 2030, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0dde, 2040, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0e33, G_UNICODE_NOT_PRESENT_OFFSET, 2047 }, + { 0x0eb3, G_UNICODE_NOT_PRESENT_OFFSET, 2054 }, + { 0x0edc, G_UNICODE_NOT_PRESENT_OFFSET, 2061 }, + { 0x0edd, G_UNICODE_NOT_PRESENT_OFFSET, 2068 }, + { 0x0f0c, G_UNICODE_NOT_PRESENT_OFFSET, 2075 }, + { 0x0f43, 2079, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f4d, 2086, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f52, 2093, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f57, 2100, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f5c, 2107, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f69, 2114, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f73, 2121, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f75, 2128, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f76, 2135, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f77, G_UNICODE_NOT_PRESENT_OFFSET, 2142 }, + { 0x0f78, 2152, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f79, G_UNICODE_NOT_PRESENT_OFFSET, 2159 }, + { 0x0f81, 2169, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f93, 2176, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0f9d, 2183, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0fa2, 2190, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0fa7, 2197, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0fac, 2204, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x0fb9, 2211, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1026, 2218, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e00, 2225, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e01, 2229, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e02, 2233, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e03, 2237, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e04, 2241, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e05, 2245, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e06, 2249, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e07, 2253, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e08, 2257, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e09, 2263, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0a, 2269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0b, 2273, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0c, 2277, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0d, 2281, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0e, 2285, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e0f, 2289, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e10, 2293, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e11, 2297, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e12, 2301, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e13, 2305, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e14, 2309, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e15, 2315, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e16, 2321, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e17, 2327, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e18, 2333, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e19, 2337, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1a, 2341, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1b, 2345, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1c, 2349, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1d, 2355, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1e, 2361, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e1f, 2365, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e20, 2369, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e21, 2373, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e22, 2377, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e23, 2381, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e24, 2385, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e25, 2389, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e26, 2393, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e27, 2397, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e28, 2401, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e29, 2405, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2a, 2409, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2b, 2413, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2c, 2417, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2d, 2421, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2e, 2425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e2f, 2431, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e30, 2437, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e31, 2441, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e32, 2445, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e33, 2449, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e34, 2453, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e35, 2457, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e36, 2461, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e37, 2465, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e38, 2469, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e39, 2475, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3a, 2481, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3b, 2485, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3c, 2489, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3d, 2493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3e, 2497, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e3f, 2501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e40, 2505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e41, 2509, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e42, 2513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e43, 2517, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e44, 2521, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e45, 2525, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e46, 2529, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e47, 2533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e48, 2537, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e49, 2541, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4a, 2545, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4b, 2549, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4c, 2553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4d, 2559, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4e, 2565, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e4f, 2571, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e50, 2577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e51, 2583, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e52, 2589, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e53, 2595, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e54, 2601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e55, 2605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e56, 2609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e57, 2613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e58, 2617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e59, 2621, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5a, 2625, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5b, 2629, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5c, 2633, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5d, 2639, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5e, 2645, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e5f, 2649, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e60, 2653, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e61, 2657, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e62, 2661, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e63, 2665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e64, 2669, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e65, 2675, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e66, 2681, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e67, 2687, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e68, 2693, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e69, 2699, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6a, 2705, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6b, 2709, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6c, 2713, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6d, 2717, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6e, 2721, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e6f, 2725, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e70, 2729, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e71, 2733, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e72, 2737, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e73, 2741, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e74, 2745, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e75, 2749, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e76, 2753, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e77, 2757, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e78, 2761, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e79, 2767, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7a, 2773, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7b, 2779, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7c, 2785, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7d, 2789, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7e, 2793, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e7f, 2797, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e80, 2801, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e81, 2805, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e82, 2809, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e83, 2813, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e84, 2817, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e85, 2821, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e86, 2825, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e87, 2829, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e88, 2833, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e89, 2837, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8a, 2841, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8b, 2845, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8c, 2849, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8d, 2853, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8e, 2857, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e8f, 2861, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e90, 2865, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e91, 2869, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e92, 2873, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e93, 2877, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e94, 2881, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e95, 2885, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e96, 2889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e97, 2893, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e98, 2897, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e99, 2901, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1e9a, G_UNICODE_NOT_PRESENT_OFFSET, 2905 }, + { 0x1e9b, 2909, 2657 }, + { 0x1ea0, 2914, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea1, 2918, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea2, 2922, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea3, 2926, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea4, 2930, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea5, 2936, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea6, 2942, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea7, 2948, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea8, 2954, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ea9, 2960, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eaa, 2966, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eab, 2972, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eac, 2978, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ead, 2984, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eae, 2990, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eaf, 2996, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb0, 3002, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb1, 3008, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb2, 3014, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb3, 3020, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb4, 3026, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb5, 3032, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb6, 3038, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb7, 3044, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb8, 3050, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eb9, 3054, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eba, 3058, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ebb, 3062, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ebc, 3066, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ebd, 3070, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ebe, 3074, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ebf, 3080, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec0, 3086, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec1, 3092, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec2, 3098, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec3, 3104, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec4, 3110, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec5, 3116, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec6, 3122, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec7, 3128, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec8, 3134, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ec9, 3138, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eca, 3142, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ecb, 3146, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ecc, 3150, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ecd, 3154, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ece, 3158, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ecf, 3162, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed0, 3166, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed1, 3172, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed2, 3178, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed3, 3184, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed4, 3190, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed5, 3196, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed6, 3202, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed7, 3208, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed8, 3214, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ed9, 3220, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eda, 3226, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1edb, 3232, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1edc, 3238, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1edd, 3244, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ede, 3250, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1edf, 3256, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee0, 3262, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee1, 3268, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee2, 3274, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee3, 3280, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee4, 3286, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee5, 3290, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee6, 3294, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee7, 3298, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee8, 3302, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ee9, 3308, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eea, 3314, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eeb, 3320, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eec, 3326, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eed, 3332, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eee, 3338, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1eef, 3344, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef0, 3350, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef1, 3356, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef2, 3362, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef3, 3366, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef4, 3370, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef5, 3374, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef6, 3378, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef7, 3382, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef8, 3386, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ef9, 3390, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f00, 3394, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f01, 3399, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f02, 3404, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f03, 3411, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f04, 3418, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f05, 3425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f06, 3432, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f07, 3439, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f08, 3446, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f09, 3451, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0a, 3456, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0b, 3463, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0c, 3470, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0d, 3477, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0e, 3484, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f0f, 3491, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f10, 3498, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f11, 3503, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f12, 3508, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f13, 3515, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f14, 3522, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f15, 3529, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f18, 3536, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f19, 3541, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f1a, 3546, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f1b, 3553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f1c, 3560, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f1d, 3567, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f20, 3574, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f21, 3579, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f22, 3584, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f23, 3591, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f24, 3598, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f25, 3605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f26, 3612, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f27, 3619, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f28, 3626, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f29, 3631, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2a, 3636, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2b, 3643, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2c, 3650, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2d, 3657, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2e, 3664, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f2f, 3671, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f30, 3678, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f31, 3683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f32, 3688, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f33, 3695, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f34, 3702, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f35, 3709, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f36, 3716, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f37, 3723, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f38, 3730, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f39, 3735, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3a, 3740, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3b, 3747, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3c, 3754, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3d, 3761, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3e, 3768, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f3f, 3775, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f40, 3782, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f41, 3787, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f42, 3792, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f43, 3799, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f44, 3806, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f45, 3813, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f48, 3820, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f49, 3825, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f4a, 3830, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f4b, 3837, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f4c, 3844, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f4d, 3851, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f50, 3858, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f51, 3863, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f52, 3868, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f53, 3875, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f54, 3882, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f55, 3889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f56, 3896, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f57, 3903, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f59, 3910, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f5b, 3915, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f5d, 3922, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f5f, 3929, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f60, 3936, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f61, 3941, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f62, 3946, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f63, 3953, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f64, 3960, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f65, 3967, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f66, 3974, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f67, 3981, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f68, 3988, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f69, 3993, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6a, 3998, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6b, 4005, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6c, 4012, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6d, 4019, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6e, 4026, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f6f, 4033, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f70, 4040, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f71, 1316, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f72, 4045, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f73, 1321, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f74, 4050, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f75, 1326, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f76, 4055, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f77, 1331, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f78, 4060, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f79, 1353, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f7a, 4065, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f7b, 1358, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f7c, 4070, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f7d, 1363, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f80, 4075, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f81, 4082, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f82, 4089, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f83, 4098, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f84, 4107, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f85, 4116, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f86, 4125, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f87, 4134, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f88, 4143, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f89, 4150, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8a, 4157, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8b, 4166, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8c, 4175, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8d, 4184, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8e, 4193, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f8f, 4202, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f90, 4211, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f91, 4218, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f92, 4225, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f93, 4234, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f94, 4243, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f95, 4252, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f96, 4261, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f97, 4270, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f98, 4279, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f99, 4286, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9a, 4293, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9b, 4302, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9c, 4311, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9d, 4320, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9e, 4329, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1f9f, 4338, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa0, 4347, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa1, 4354, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa2, 4361, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa3, 4370, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa4, 4379, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa5, 4388, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa6, 4397, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa7, 4406, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa8, 4415, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fa9, 4422, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1faa, 4429, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fab, 4438, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fac, 4447, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fad, 4456, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fae, 4465, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1faf, 4474, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb0, 4483, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb1, 4488, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb2, 4493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb3, 4500, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb4, 4505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb6, 4512, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb7, 4517, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb8, 4524, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fb9, 4529, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fba, 4534, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fbb, 1261, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fbc, 4539, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fbd, G_UNICODE_NOT_PRESENT_OFFSET, 4544 }, + { 0x1fbe, 4548, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fbf, G_UNICODE_NOT_PRESENT_OFFSET, 4544 }, + { 0x1fc0, G_UNICODE_NOT_PRESENT_OFFSET, 4551 }, + { 0x1fc1, 4555, 4560 }, + { 0x1fc2, 4566, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc3, 4573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc4, 4578, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc6, 4585, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc7, 4590, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc8, 4597, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fc9, 1269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fca, 4602, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fcb, 1274, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fcc, 4607, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fcd, 4612, 4618 }, + { 0x1fce, 4624, 4630 }, + { 0x1fcf, 4636, 4642 }, + { 0x1fd0, 4648, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd1, 4653, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd2, 4658, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd3, 1299, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd6, 4665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd7, 4670, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd8, 4677, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fd9, 4682, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fda, 4687, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fdb, 1279, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fdd, 4692, 4698 }, + { 0x1fde, 4704, 4710 }, + { 0x1fdf, 4716, 4722 }, + { 0x1fe0, 4728, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe1, 4733, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe2, 4738, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe3, 1336, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe4, 4745, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe5, 4750, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe6, 4755, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe7, 4760, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe8, 4767, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fe9, 4772, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fea, 4777, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1feb, 1289, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fec, 4782, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1fed, 4787, 4792 }, + { 0x1fee, 1250, 1255 }, + { 0x1fef, 4798, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff2, 4800, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff3, 4807, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff4, 4812, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff6, 4819, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff7, 4824, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff8, 4831, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ff9, 1284, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ffa, 4836, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ffb, 1294, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ffc, 4841, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1ffd, 4846, 16 }, + { 0x1ffe, G_UNICODE_NOT_PRESENT_OFFSET, 4849 }, + { 0x2000, 4853, 0 }, + { 0x2001, 4857, 0 }, + { 0x2002, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2003, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2004, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2005, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2006, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2007, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2008, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2009, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x200a, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2011, G_UNICODE_NOT_PRESENT_OFFSET, 4861 }, + { 0x2017, G_UNICODE_NOT_PRESENT_OFFSET, 4865 }, + { 0x2024, G_UNICODE_NOT_PRESENT_OFFSET, 4869 }, + { 0x2025, G_UNICODE_NOT_PRESENT_OFFSET, 4871 }, + { 0x2026, G_UNICODE_NOT_PRESENT_OFFSET, 4874 }, + { 0x202f, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2033, G_UNICODE_NOT_PRESENT_OFFSET, 4878 }, + { 0x2034, G_UNICODE_NOT_PRESENT_OFFSET, 4885 }, + { 0x2036, G_UNICODE_NOT_PRESENT_OFFSET, 4895 }, + { 0x2037, G_UNICODE_NOT_PRESENT_OFFSET, 4902 }, + { 0x203c, G_UNICODE_NOT_PRESENT_OFFSET, 4912 }, + { 0x203e, G_UNICODE_NOT_PRESENT_OFFSET, 4915 }, + { 0x2047, G_UNICODE_NOT_PRESENT_OFFSET, 4919 }, + { 0x2048, G_UNICODE_NOT_PRESENT_OFFSET, 4922 }, + { 0x2049, G_UNICODE_NOT_PRESENT_OFFSET, 4925 }, + { 0x2057, G_UNICODE_NOT_PRESENT_OFFSET, 4928 }, + { 0x205f, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x2070, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x2071, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x2074, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x2075, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x2076, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x2077, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x2078, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x2079, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x207a, G_UNICODE_NOT_PRESENT_OFFSET, 4957 }, + { 0x207b, G_UNICODE_NOT_PRESENT_OFFSET, 4959 }, + { 0x207c, G_UNICODE_NOT_PRESENT_OFFSET, 4963 }, + { 0x207d, G_UNICODE_NOT_PRESENT_OFFSET, 4965 }, + { 0x207e, G_UNICODE_NOT_PRESENT_OFFSET, 4967 }, + { 0x207f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x2080, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x2081, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x2082, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x2083, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x2084, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x2085, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x2086, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x2087, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x2088, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x2089, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x208a, G_UNICODE_NOT_PRESENT_OFFSET, 4957 }, + { 0x208b, G_UNICODE_NOT_PRESENT_OFFSET, 4959 }, + { 0x208c, G_UNICODE_NOT_PRESENT_OFFSET, 4963 }, + { 0x208d, G_UNICODE_NOT_PRESENT_OFFSET, 4965 }, + { 0x208e, G_UNICODE_NOT_PRESENT_OFFSET, 4967 }, + { 0x20a8, G_UNICODE_NOT_PRESENT_OFFSET, 4971 }, + { 0x2100, G_UNICODE_NOT_PRESENT_OFFSET, 4974 }, + { 0x2101, G_UNICODE_NOT_PRESENT_OFFSET, 4978 }, + { 0x2102, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x2103, G_UNICODE_NOT_PRESENT_OFFSET, 4984 }, + { 0x2105, G_UNICODE_NOT_PRESENT_OFFSET, 4988 }, + { 0x2106, G_UNICODE_NOT_PRESENT_OFFSET, 4992 }, + { 0x2107, G_UNICODE_NOT_PRESENT_OFFSET, 4996 }, + { 0x2109, G_UNICODE_NOT_PRESENT_OFFSET, 4999 }, + { 0x210a, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x210b, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x210c, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x210d, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x210e, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x210f, G_UNICODE_NOT_PRESENT_OFFSET, 5007 }, + { 0x2110, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x2111, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x2112, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x2113, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x2115, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x2116, G_UNICODE_NOT_PRESENT_OFFSET, 5016 }, + { 0x2119, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x211a, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x211b, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x211c, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x211d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x2120, G_UNICODE_NOT_PRESENT_OFFSET, 5025 }, + { 0x2121, G_UNICODE_NOT_PRESENT_OFFSET, 5028 }, + { 0x2122, G_UNICODE_NOT_PRESENT_OFFSET, 5032 }, + { 0x2124, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x2126, 5037, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2128, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x212a, 5040, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x212b, 69, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x212c, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x212d, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x212f, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x2130, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x2131, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x2133, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x2134, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x2135, G_UNICODE_NOT_PRESENT_OFFSET, 5052 }, + { 0x2136, G_UNICODE_NOT_PRESENT_OFFSET, 5055 }, + { 0x2137, G_UNICODE_NOT_PRESENT_OFFSET, 5058 }, + { 0x2138, G_UNICODE_NOT_PRESENT_OFFSET, 5061 }, + { 0x2139, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x213d, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x213e, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x213f, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x2140, G_UNICODE_NOT_PRESENT_OFFSET, 5073 }, + { 0x2145, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x2146, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x2147, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x2148, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x2149, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x2153, G_UNICODE_NOT_PRESENT_OFFSET, 5081 }, + { 0x2154, G_UNICODE_NOT_PRESENT_OFFSET, 5087 }, + { 0x2155, G_UNICODE_NOT_PRESENT_OFFSET, 5093 }, + { 0x2156, G_UNICODE_NOT_PRESENT_OFFSET, 5099 }, + { 0x2157, G_UNICODE_NOT_PRESENT_OFFSET, 5105 }, + { 0x2158, G_UNICODE_NOT_PRESENT_OFFSET, 5111 }, + { 0x2159, G_UNICODE_NOT_PRESENT_OFFSET, 5117 }, + { 0x215a, G_UNICODE_NOT_PRESENT_OFFSET, 5123 }, + { 0x215b, G_UNICODE_NOT_PRESENT_OFFSET, 5129 }, + { 0x215c, G_UNICODE_NOT_PRESENT_OFFSET, 5135 }, + { 0x215d, G_UNICODE_NOT_PRESENT_OFFSET, 5141 }, + { 0x215e, G_UNICODE_NOT_PRESENT_OFFSET, 5147 }, + { 0x215f, G_UNICODE_NOT_PRESENT_OFFSET, 5153 }, + { 0x2160, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x2161, G_UNICODE_NOT_PRESENT_OFFSET, 5158 }, + { 0x2162, G_UNICODE_NOT_PRESENT_OFFSET, 5161 }, + { 0x2163, G_UNICODE_NOT_PRESENT_OFFSET, 5165 }, + { 0x2164, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x2165, G_UNICODE_NOT_PRESENT_OFFSET, 5170 }, + { 0x2166, G_UNICODE_NOT_PRESENT_OFFSET, 5173 }, + { 0x2167, G_UNICODE_NOT_PRESENT_OFFSET, 5177 }, + { 0x2168, G_UNICODE_NOT_PRESENT_OFFSET, 5182 }, + { 0x2169, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x216a, G_UNICODE_NOT_PRESENT_OFFSET, 5187 }, + { 0x216b, G_UNICODE_NOT_PRESENT_OFFSET, 5190 }, + { 0x216c, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x216d, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x216e, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x216f, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x2170, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x2171, G_UNICODE_NOT_PRESENT_OFFSET, 5194 }, + { 0x2172, G_UNICODE_NOT_PRESENT_OFFSET, 5197 }, + { 0x2173, G_UNICODE_NOT_PRESENT_OFFSET, 5201 }, + { 0x2174, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x2175, G_UNICODE_NOT_PRESENT_OFFSET, 5206 }, + { 0x2176, G_UNICODE_NOT_PRESENT_OFFSET, 5209 }, + { 0x2177, G_UNICODE_NOT_PRESENT_OFFSET, 5213 }, + { 0x2178, G_UNICODE_NOT_PRESENT_OFFSET, 5218 }, + { 0x2179, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x217a, G_UNICODE_NOT_PRESENT_OFFSET, 5221 }, + { 0x217b, G_UNICODE_NOT_PRESENT_OFFSET, 5224 }, + { 0x217c, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x217d, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x217e, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x217f, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x219a, 5232, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x219b, 5238, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x21ae, 5244, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x21cd, 5250, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x21ce, 5256, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x21cf, 5262, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2204, 5268, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2209, 5274, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x220c, 5280, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2224, 5286, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2226, 5292, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x222c, G_UNICODE_NOT_PRESENT_OFFSET, 5298 }, + { 0x222d, G_UNICODE_NOT_PRESENT_OFFSET, 5305 }, + { 0x222f, G_UNICODE_NOT_PRESENT_OFFSET, 5315 }, + { 0x2230, G_UNICODE_NOT_PRESENT_OFFSET, 5322 }, + { 0x2241, 5332, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2244, 5338, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2247, 5344, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2249, 5350, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2260, 5356, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2262, 5360, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x226d, 5366, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x226e, 5372, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x226f, 5376, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2270, 5380, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2271, 5386, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2274, 5392, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2275, 5398, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2278, 5404, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2279, 5410, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2280, 5416, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2281, 5422, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2284, 5428, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2285, 5434, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2288, 5440, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2289, 5446, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ac, 5452, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ad, 5458, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ae, 5464, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22af, 5470, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22e0, 5476, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22e1, 5482, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22e2, 5488, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22e3, 5494, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ea, 5500, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22eb, 5506, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ec, 5512, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x22ed, 5518, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2329, 5524, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x232a, 5528, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2460, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x2461, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x2462, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x2463, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x2464, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x2465, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x2466, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x2467, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x2468, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x2469, G_UNICODE_NOT_PRESENT_OFFSET, 5532 }, + { 0x246a, G_UNICODE_NOT_PRESENT_OFFSET, 5535 }, + { 0x246b, G_UNICODE_NOT_PRESENT_OFFSET, 5538 }, + { 0x246c, G_UNICODE_NOT_PRESENT_OFFSET, 5541 }, + { 0x246d, G_UNICODE_NOT_PRESENT_OFFSET, 5544 }, + { 0x246e, G_UNICODE_NOT_PRESENT_OFFSET, 5547 }, + { 0x246f, G_UNICODE_NOT_PRESENT_OFFSET, 5550 }, + { 0x2470, G_UNICODE_NOT_PRESENT_OFFSET, 5553 }, + { 0x2471, G_UNICODE_NOT_PRESENT_OFFSET, 5556 }, + { 0x2472, G_UNICODE_NOT_PRESENT_OFFSET, 5559 }, + { 0x2473, G_UNICODE_NOT_PRESENT_OFFSET, 5562 }, + { 0x2474, G_UNICODE_NOT_PRESENT_OFFSET, 5565 }, + { 0x2475, G_UNICODE_NOT_PRESENT_OFFSET, 5569 }, + { 0x2476, G_UNICODE_NOT_PRESENT_OFFSET, 5573 }, + { 0x2477, G_UNICODE_NOT_PRESENT_OFFSET, 5577 }, + { 0x2478, G_UNICODE_NOT_PRESENT_OFFSET, 5581 }, + { 0x2479, G_UNICODE_NOT_PRESENT_OFFSET, 5585 }, + { 0x247a, G_UNICODE_NOT_PRESENT_OFFSET, 5589 }, + { 0x247b, G_UNICODE_NOT_PRESENT_OFFSET, 5593 }, + { 0x247c, G_UNICODE_NOT_PRESENT_OFFSET, 5597 }, + { 0x247d, G_UNICODE_NOT_PRESENT_OFFSET, 5601 }, + { 0x247e, G_UNICODE_NOT_PRESENT_OFFSET, 5606 }, + { 0x247f, G_UNICODE_NOT_PRESENT_OFFSET, 5611 }, + { 0x2480, G_UNICODE_NOT_PRESENT_OFFSET, 5616 }, + { 0x2481, G_UNICODE_NOT_PRESENT_OFFSET, 5621 }, + { 0x2482, G_UNICODE_NOT_PRESENT_OFFSET, 5626 }, + { 0x2483, G_UNICODE_NOT_PRESENT_OFFSET, 5631 }, + { 0x2484, G_UNICODE_NOT_PRESENT_OFFSET, 5636 }, + { 0x2485, G_UNICODE_NOT_PRESENT_OFFSET, 5641 }, + { 0x2486, G_UNICODE_NOT_PRESENT_OFFSET, 5646 }, + { 0x2487, G_UNICODE_NOT_PRESENT_OFFSET, 5651 }, + { 0x2488, G_UNICODE_NOT_PRESENT_OFFSET, 5656 }, + { 0x2489, G_UNICODE_NOT_PRESENT_OFFSET, 5659 }, + { 0x248a, G_UNICODE_NOT_PRESENT_OFFSET, 5662 }, + { 0x248b, G_UNICODE_NOT_PRESENT_OFFSET, 5665 }, + { 0x248c, G_UNICODE_NOT_PRESENT_OFFSET, 5668 }, + { 0x248d, G_UNICODE_NOT_PRESENT_OFFSET, 5671 }, + { 0x248e, G_UNICODE_NOT_PRESENT_OFFSET, 5674 }, + { 0x248f, G_UNICODE_NOT_PRESENT_OFFSET, 5677 }, + { 0x2490, G_UNICODE_NOT_PRESENT_OFFSET, 5680 }, + { 0x2491, G_UNICODE_NOT_PRESENT_OFFSET, 5683 }, + { 0x2492, G_UNICODE_NOT_PRESENT_OFFSET, 5687 }, + { 0x2493, G_UNICODE_NOT_PRESENT_OFFSET, 5691 }, + { 0x2494, G_UNICODE_NOT_PRESENT_OFFSET, 5695 }, + { 0x2495, G_UNICODE_NOT_PRESENT_OFFSET, 5699 }, + { 0x2496, G_UNICODE_NOT_PRESENT_OFFSET, 5703 }, + { 0x2497, G_UNICODE_NOT_PRESENT_OFFSET, 5707 }, + { 0x2498, G_UNICODE_NOT_PRESENT_OFFSET, 5711 }, + { 0x2499, G_UNICODE_NOT_PRESENT_OFFSET, 5715 }, + { 0x249a, G_UNICODE_NOT_PRESENT_OFFSET, 5719 }, + { 0x249b, G_UNICODE_NOT_PRESENT_OFFSET, 5723 }, + { 0x249c, G_UNICODE_NOT_PRESENT_OFFSET, 5727 }, + { 0x249d, G_UNICODE_NOT_PRESENT_OFFSET, 5731 }, + { 0x249e, G_UNICODE_NOT_PRESENT_OFFSET, 5735 }, + { 0x249f, G_UNICODE_NOT_PRESENT_OFFSET, 5739 }, + { 0x24a0, G_UNICODE_NOT_PRESENT_OFFSET, 5743 }, + { 0x24a1, G_UNICODE_NOT_PRESENT_OFFSET, 5747 }, + { 0x24a2, G_UNICODE_NOT_PRESENT_OFFSET, 5751 }, + { 0x24a3, G_UNICODE_NOT_PRESENT_OFFSET, 5755 }, + { 0x24a4, G_UNICODE_NOT_PRESENT_OFFSET, 5759 }, + { 0x24a5, G_UNICODE_NOT_PRESENT_OFFSET, 5763 }, + { 0x24a6, G_UNICODE_NOT_PRESENT_OFFSET, 5767 }, + { 0x24a7, G_UNICODE_NOT_PRESENT_OFFSET, 5771 }, + { 0x24a8, G_UNICODE_NOT_PRESENT_OFFSET, 5775 }, + { 0x24a9, G_UNICODE_NOT_PRESENT_OFFSET, 5779 }, + { 0x24aa, G_UNICODE_NOT_PRESENT_OFFSET, 5783 }, + { 0x24ab, G_UNICODE_NOT_PRESENT_OFFSET, 5787 }, + { 0x24ac, G_UNICODE_NOT_PRESENT_OFFSET, 5791 }, + { 0x24ad, G_UNICODE_NOT_PRESENT_OFFSET, 5795 }, + { 0x24ae, G_UNICODE_NOT_PRESENT_OFFSET, 5799 }, + { 0x24af, G_UNICODE_NOT_PRESENT_OFFSET, 5803 }, + { 0x24b0, G_UNICODE_NOT_PRESENT_OFFSET, 5807 }, + { 0x24b1, G_UNICODE_NOT_PRESENT_OFFSET, 5811 }, + { 0x24b2, G_UNICODE_NOT_PRESENT_OFFSET, 5815 }, + { 0x24b3, G_UNICODE_NOT_PRESENT_OFFSET, 5819 }, + { 0x24b4, G_UNICODE_NOT_PRESENT_OFFSET, 5823 }, + { 0x24b5, G_UNICODE_NOT_PRESENT_OFFSET, 5827 }, + { 0x24b6, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x24b7, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x24b8, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x24b9, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x24ba, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x24bb, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x24bc, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x24bd, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x24be, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x24bf, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x24c0, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x24c1, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x24c2, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x24c3, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x24c4, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x24c5, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x24c6, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x24c7, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x24c8, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x24c9, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x24ca, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x24cb, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x24cc, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x24cd, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x24ce, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x24cf, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x24d0, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x24d1, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x24d2, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x24d3, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x24d4, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x24d5, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x24d6, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x24d7, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x24d8, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x24d9, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x24da, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x24db, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x24dc, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x24dd, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x24de, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x24df, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x24e0, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x24e1, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x24e2, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x24e3, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x24e4, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x24e5, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x24e6, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x24e7, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x24e8, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x24e9, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x24ea, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x2a0c, G_UNICODE_NOT_PRESENT_OFFSET, 5865 }, + { 0x2a74, G_UNICODE_NOT_PRESENT_OFFSET, 5878 }, + { 0x2a75, G_UNICODE_NOT_PRESENT_OFFSET, 5882 }, + { 0x2a76, G_UNICODE_NOT_PRESENT_OFFSET, 5885 }, + { 0x2adc, 5889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2e9f, G_UNICODE_NOT_PRESENT_OFFSET, 5895 }, + { 0x2ef3, G_UNICODE_NOT_PRESENT_OFFSET, 5899 }, + { 0x2f00, G_UNICODE_NOT_PRESENT_OFFSET, 5903 }, + { 0x2f01, G_UNICODE_NOT_PRESENT_OFFSET, 5907 }, + { 0x2f02, G_UNICODE_NOT_PRESENT_OFFSET, 5911 }, + { 0x2f03, G_UNICODE_NOT_PRESENT_OFFSET, 5915 }, + { 0x2f04, G_UNICODE_NOT_PRESENT_OFFSET, 5919 }, + { 0x2f05, G_UNICODE_NOT_PRESENT_OFFSET, 5923 }, + { 0x2f06, G_UNICODE_NOT_PRESENT_OFFSET, 5927 }, + { 0x2f07, G_UNICODE_NOT_PRESENT_OFFSET, 5931 }, + { 0x2f08, G_UNICODE_NOT_PRESENT_OFFSET, 5935 }, + { 0x2f09, G_UNICODE_NOT_PRESENT_OFFSET, 5939 }, + { 0x2f0a, G_UNICODE_NOT_PRESENT_OFFSET, 5943 }, + { 0x2f0b, G_UNICODE_NOT_PRESENT_OFFSET, 5947 }, + { 0x2f0c, G_UNICODE_NOT_PRESENT_OFFSET, 5951 }, + { 0x2f0d, G_UNICODE_NOT_PRESENT_OFFSET, 5955 }, + { 0x2f0e, G_UNICODE_NOT_PRESENT_OFFSET, 5959 }, + { 0x2f0f, G_UNICODE_NOT_PRESENT_OFFSET, 5963 }, + { 0x2f10, G_UNICODE_NOT_PRESENT_OFFSET, 5967 }, + { 0x2f11, G_UNICODE_NOT_PRESENT_OFFSET, 5971 }, + { 0x2f12, G_UNICODE_NOT_PRESENT_OFFSET, 5975 }, + { 0x2f13, G_UNICODE_NOT_PRESENT_OFFSET, 5979 }, + { 0x2f14, G_UNICODE_NOT_PRESENT_OFFSET, 5983 }, + { 0x2f15, G_UNICODE_NOT_PRESENT_OFFSET, 5987 }, + { 0x2f16, G_UNICODE_NOT_PRESENT_OFFSET, 5991 }, + { 0x2f17, G_UNICODE_NOT_PRESENT_OFFSET, 5995 }, + { 0x2f18, G_UNICODE_NOT_PRESENT_OFFSET, 5999 }, + { 0x2f19, G_UNICODE_NOT_PRESENT_OFFSET, 6003 }, + { 0x2f1a, G_UNICODE_NOT_PRESENT_OFFSET, 6007 }, + { 0x2f1b, G_UNICODE_NOT_PRESENT_OFFSET, 6011 }, + { 0x2f1c, G_UNICODE_NOT_PRESENT_OFFSET, 6015 }, + { 0x2f1d, G_UNICODE_NOT_PRESENT_OFFSET, 6019 }, + { 0x2f1e, G_UNICODE_NOT_PRESENT_OFFSET, 6023 }, + { 0x2f1f, G_UNICODE_NOT_PRESENT_OFFSET, 6027 }, + { 0x2f20, G_UNICODE_NOT_PRESENT_OFFSET, 6031 }, + { 0x2f21, G_UNICODE_NOT_PRESENT_OFFSET, 6035 }, + { 0x2f22, G_UNICODE_NOT_PRESENT_OFFSET, 6039 }, + { 0x2f23, G_UNICODE_NOT_PRESENT_OFFSET, 6043 }, + { 0x2f24, G_UNICODE_NOT_PRESENT_OFFSET, 6047 }, + { 0x2f25, G_UNICODE_NOT_PRESENT_OFFSET, 6051 }, + { 0x2f26, G_UNICODE_NOT_PRESENT_OFFSET, 6055 }, + { 0x2f27, G_UNICODE_NOT_PRESENT_OFFSET, 6059 }, + { 0x2f28, G_UNICODE_NOT_PRESENT_OFFSET, 6063 }, + { 0x2f29, G_UNICODE_NOT_PRESENT_OFFSET, 6067 }, + { 0x2f2a, G_UNICODE_NOT_PRESENT_OFFSET, 6071 }, + { 0x2f2b, G_UNICODE_NOT_PRESENT_OFFSET, 6075 }, + { 0x2f2c, G_UNICODE_NOT_PRESENT_OFFSET, 6079 }, + { 0x2f2d, G_UNICODE_NOT_PRESENT_OFFSET, 6083 }, + { 0x2f2e, G_UNICODE_NOT_PRESENT_OFFSET, 6087 }, + { 0x2f2f, G_UNICODE_NOT_PRESENT_OFFSET, 6091 }, + { 0x2f30, G_UNICODE_NOT_PRESENT_OFFSET, 6095 }, + { 0x2f31, G_UNICODE_NOT_PRESENT_OFFSET, 6099 }, + { 0x2f32, G_UNICODE_NOT_PRESENT_OFFSET, 6103 }, + { 0x2f33, G_UNICODE_NOT_PRESENT_OFFSET, 6107 }, + { 0x2f34, G_UNICODE_NOT_PRESENT_OFFSET, 6111 }, + { 0x2f35, G_UNICODE_NOT_PRESENT_OFFSET, 6115 }, + { 0x2f36, G_UNICODE_NOT_PRESENT_OFFSET, 6119 }, + { 0x2f37, G_UNICODE_NOT_PRESENT_OFFSET, 6123 }, + { 0x2f38, G_UNICODE_NOT_PRESENT_OFFSET, 6127 }, + { 0x2f39, G_UNICODE_NOT_PRESENT_OFFSET, 6131 }, + { 0x2f3a, G_UNICODE_NOT_PRESENT_OFFSET, 6135 }, + { 0x2f3b, G_UNICODE_NOT_PRESENT_OFFSET, 6139 }, + { 0x2f3c, G_UNICODE_NOT_PRESENT_OFFSET, 6143 }, + { 0x2f3d, G_UNICODE_NOT_PRESENT_OFFSET, 6147 }, + { 0x2f3e, G_UNICODE_NOT_PRESENT_OFFSET, 6151 }, + { 0x2f3f, G_UNICODE_NOT_PRESENT_OFFSET, 6155 }, + { 0x2f40, G_UNICODE_NOT_PRESENT_OFFSET, 6159 }, + { 0x2f41, G_UNICODE_NOT_PRESENT_OFFSET, 6163 }, + { 0x2f42, G_UNICODE_NOT_PRESENT_OFFSET, 6167 }, + { 0x2f43, G_UNICODE_NOT_PRESENT_OFFSET, 6171 }, + { 0x2f44, G_UNICODE_NOT_PRESENT_OFFSET, 6175 }, + { 0x2f45, G_UNICODE_NOT_PRESENT_OFFSET, 6179 }, + { 0x2f46, G_UNICODE_NOT_PRESENT_OFFSET, 6183 }, + { 0x2f47, G_UNICODE_NOT_PRESENT_OFFSET, 6187 }, + { 0x2f48, G_UNICODE_NOT_PRESENT_OFFSET, 6191 }, + { 0x2f49, G_UNICODE_NOT_PRESENT_OFFSET, 6195 }, + { 0x2f4a, G_UNICODE_NOT_PRESENT_OFFSET, 6199 }, + { 0x2f4b, G_UNICODE_NOT_PRESENT_OFFSET, 6203 }, + { 0x2f4c, G_UNICODE_NOT_PRESENT_OFFSET, 6207 }, + { 0x2f4d, G_UNICODE_NOT_PRESENT_OFFSET, 6211 }, + { 0x2f4e, G_UNICODE_NOT_PRESENT_OFFSET, 6215 }, + { 0x2f4f, G_UNICODE_NOT_PRESENT_OFFSET, 6219 }, + { 0x2f50, G_UNICODE_NOT_PRESENT_OFFSET, 6223 }, + { 0x2f51, G_UNICODE_NOT_PRESENT_OFFSET, 6227 }, + { 0x2f52, G_UNICODE_NOT_PRESENT_OFFSET, 6231 }, + { 0x2f53, G_UNICODE_NOT_PRESENT_OFFSET, 6235 }, + { 0x2f54, G_UNICODE_NOT_PRESENT_OFFSET, 6239 }, + { 0x2f55, G_UNICODE_NOT_PRESENT_OFFSET, 6243 }, + { 0x2f56, G_UNICODE_NOT_PRESENT_OFFSET, 6247 }, + { 0x2f57, G_UNICODE_NOT_PRESENT_OFFSET, 6251 }, + { 0x2f58, G_UNICODE_NOT_PRESENT_OFFSET, 6255 }, + { 0x2f59, G_UNICODE_NOT_PRESENT_OFFSET, 6259 }, + { 0x2f5a, G_UNICODE_NOT_PRESENT_OFFSET, 6263 }, + { 0x2f5b, G_UNICODE_NOT_PRESENT_OFFSET, 6267 }, + { 0x2f5c, G_UNICODE_NOT_PRESENT_OFFSET, 6271 }, + { 0x2f5d, G_UNICODE_NOT_PRESENT_OFFSET, 6275 }, + { 0x2f5e, G_UNICODE_NOT_PRESENT_OFFSET, 6279 }, + { 0x2f5f, G_UNICODE_NOT_PRESENT_OFFSET, 6283 }, + { 0x2f60, G_UNICODE_NOT_PRESENT_OFFSET, 6287 }, + { 0x2f61, G_UNICODE_NOT_PRESENT_OFFSET, 6291 }, + { 0x2f62, G_UNICODE_NOT_PRESENT_OFFSET, 6295 }, + { 0x2f63, G_UNICODE_NOT_PRESENT_OFFSET, 6299 }, + { 0x2f64, G_UNICODE_NOT_PRESENT_OFFSET, 6303 }, + { 0x2f65, G_UNICODE_NOT_PRESENT_OFFSET, 6307 }, + { 0x2f66, G_UNICODE_NOT_PRESENT_OFFSET, 6311 }, + { 0x2f67, G_UNICODE_NOT_PRESENT_OFFSET, 6315 }, + { 0x2f68, G_UNICODE_NOT_PRESENT_OFFSET, 6319 }, + { 0x2f69, G_UNICODE_NOT_PRESENT_OFFSET, 6323 }, + { 0x2f6a, G_UNICODE_NOT_PRESENT_OFFSET, 6327 }, + { 0x2f6b, G_UNICODE_NOT_PRESENT_OFFSET, 6331 }, + { 0x2f6c, G_UNICODE_NOT_PRESENT_OFFSET, 6335 }, + { 0x2f6d, G_UNICODE_NOT_PRESENT_OFFSET, 6339 }, + { 0x2f6e, G_UNICODE_NOT_PRESENT_OFFSET, 6343 }, + { 0x2f6f, G_UNICODE_NOT_PRESENT_OFFSET, 6347 }, + { 0x2f70, G_UNICODE_NOT_PRESENT_OFFSET, 6351 }, + { 0x2f71, G_UNICODE_NOT_PRESENT_OFFSET, 6355 }, + { 0x2f72, G_UNICODE_NOT_PRESENT_OFFSET, 6359 }, + { 0x2f73, G_UNICODE_NOT_PRESENT_OFFSET, 6363 }, + { 0x2f74, G_UNICODE_NOT_PRESENT_OFFSET, 6367 }, + { 0x2f75, G_UNICODE_NOT_PRESENT_OFFSET, 6371 }, + { 0x2f76, G_UNICODE_NOT_PRESENT_OFFSET, 6375 }, + { 0x2f77, G_UNICODE_NOT_PRESENT_OFFSET, 6379 }, + { 0x2f78, G_UNICODE_NOT_PRESENT_OFFSET, 6383 }, + { 0x2f79, G_UNICODE_NOT_PRESENT_OFFSET, 6387 }, + { 0x2f7a, G_UNICODE_NOT_PRESENT_OFFSET, 6391 }, + { 0x2f7b, G_UNICODE_NOT_PRESENT_OFFSET, 6395 }, + { 0x2f7c, G_UNICODE_NOT_PRESENT_OFFSET, 6399 }, + { 0x2f7d, G_UNICODE_NOT_PRESENT_OFFSET, 6403 }, + { 0x2f7e, G_UNICODE_NOT_PRESENT_OFFSET, 6407 }, + { 0x2f7f, G_UNICODE_NOT_PRESENT_OFFSET, 6411 }, + { 0x2f80, G_UNICODE_NOT_PRESENT_OFFSET, 6415 }, + { 0x2f81, G_UNICODE_NOT_PRESENT_OFFSET, 6419 }, + { 0x2f82, G_UNICODE_NOT_PRESENT_OFFSET, 6423 }, + { 0x2f83, G_UNICODE_NOT_PRESENT_OFFSET, 6427 }, + { 0x2f84, G_UNICODE_NOT_PRESENT_OFFSET, 6431 }, + { 0x2f85, G_UNICODE_NOT_PRESENT_OFFSET, 6435 }, + { 0x2f86, G_UNICODE_NOT_PRESENT_OFFSET, 6439 }, + { 0x2f87, G_UNICODE_NOT_PRESENT_OFFSET, 6443 }, + { 0x2f88, G_UNICODE_NOT_PRESENT_OFFSET, 6447 }, + { 0x2f89, G_UNICODE_NOT_PRESENT_OFFSET, 6451 }, + { 0x2f8a, G_UNICODE_NOT_PRESENT_OFFSET, 6455 }, + { 0x2f8b, G_UNICODE_NOT_PRESENT_OFFSET, 6459 }, + { 0x2f8c, G_UNICODE_NOT_PRESENT_OFFSET, 6463 }, + { 0x2f8d, G_UNICODE_NOT_PRESENT_OFFSET, 6467 }, + { 0x2f8e, G_UNICODE_NOT_PRESENT_OFFSET, 6471 }, + { 0x2f8f, G_UNICODE_NOT_PRESENT_OFFSET, 6475 }, + { 0x2f90, G_UNICODE_NOT_PRESENT_OFFSET, 6479 }, + { 0x2f91, G_UNICODE_NOT_PRESENT_OFFSET, 6483 }, + { 0x2f92, G_UNICODE_NOT_PRESENT_OFFSET, 6487 }, + { 0x2f93, G_UNICODE_NOT_PRESENT_OFFSET, 6491 }, + { 0x2f94, G_UNICODE_NOT_PRESENT_OFFSET, 6495 }, + { 0x2f95, G_UNICODE_NOT_PRESENT_OFFSET, 6499 }, + { 0x2f96, G_UNICODE_NOT_PRESENT_OFFSET, 6503 }, + { 0x2f97, G_UNICODE_NOT_PRESENT_OFFSET, 6507 }, + { 0x2f98, G_UNICODE_NOT_PRESENT_OFFSET, 6511 }, + { 0x2f99, G_UNICODE_NOT_PRESENT_OFFSET, 6515 }, + { 0x2f9a, G_UNICODE_NOT_PRESENT_OFFSET, 6519 }, + { 0x2f9b, G_UNICODE_NOT_PRESENT_OFFSET, 6523 }, + { 0x2f9c, G_UNICODE_NOT_PRESENT_OFFSET, 6527 }, + { 0x2f9d, G_UNICODE_NOT_PRESENT_OFFSET, 6531 }, + { 0x2f9e, G_UNICODE_NOT_PRESENT_OFFSET, 6535 }, + { 0x2f9f, G_UNICODE_NOT_PRESENT_OFFSET, 6539 }, + { 0x2fa0, G_UNICODE_NOT_PRESENT_OFFSET, 6543 }, + { 0x2fa1, G_UNICODE_NOT_PRESENT_OFFSET, 6547 }, + { 0x2fa2, G_UNICODE_NOT_PRESENT_OFFSET, 6551 }, + { 0x2fa3, G_UNICODE_NOT_PRESENT_OFFSET, 6555 }, + { 0x2fa4, G_UNICODE_NOT_PRESENT_OFFSET, 6559 }, + { 0x2fa5, G_UNICODE_NOT_PRESENT_OFFSET, 6563 }, + { 0x2fa6, G_UNICODE_NOT_PRESENT_OFFSET, 6567 }, + { 0x2fa7, G_UNICODE_NOT_PRESENT_OFFSET, 6571 }, + { 0x2fa8, G_UNICODE_NOT_PRESENT_OFFSET, 6575 }, + { 0x2fa9, G_UNICODE_NOT_PRESENT_OFFSET, 6579 }, + { 0x2faa, G_UNICODE_NOT_PRESENT_OFFSET, 6583 }, + { 0x2fab, G_UNICODE_NOT_PRESENT_OFFSET, 6587 }, + { 0x2fac, G_UNICODE_NOT_PRESENT_OFFSET, 6591 }, + { 0x2fad, G_UNICODE_NOT_PRESENT_OFFSET, 6595 }, + { 0x2fae, G_UNICODE_NOT_PRESENT_OFFSET, 6599 }, + { 0x2faf, G_UNICODE_NOT_PRESENT_OFFSET, 6603 }, + { 0x2fb0, G_UNICODE_NOT_PRESENT_OFFSET, 6607 }, + { 0x2fb1, G_UNICODE_NOT_PRESENT_OFFSET, 6611 }, + { 0x2fb2, G_UNICODE_NOT_PRESENT_OFFSET, 6615 }, + { 0x2fb3, G_UNICODE_NOT_PRESENT_OFFSET, 6619 }, + { 0x2fb4, G_UNICODE_NOT_PRESENT_OFFSET, 6623 }, + { 0x2fb5, G_UNICODE_NOT_PRESENT_OFFSET, 6627 }, + { 0x2fb6, G_UNICODE_NOT_PRESENT_OFFSET, 6631 }, + { 0x2fb7, G_UNICODE_NOT_PRESENT_OFFSET, 6635 }, + { 0x2fb8, G_UNICODE_NOT_PRESENT_OFFSET, 6639 }, + { 0x2fb9, G_UNICODE_NOT_PRESENT_OFFSET, 6643 }, + { 0x2fba, G_UNICODE_NOT_PRESENT_OFFSET, 6647 }, + { 0x2fbb, G_UNICODE_NOT_PRESENT_OFFSET, 6651 }, + { 0x2fbc, G_UNICODE_NOT_PRESENT_OFFSET, 6655 }, + { 0x2fbd, G_UNICODE_NOT_PRESENT_OFFSET, 6659 }, + { 0x2fbe, G_UNICODE_NOT_PRESENT_OFFSET, 6663 }, + { 0x2fbf, G_UNICODE_NOT_PRESENT_OFFSET, 6667 }, + { 0x2fc0, G_UNICODE_NOT_PRESENT_OFFSET, 6671 }, + { 0x2fc1, G_UNICODE_NOT_PRESENT_OFFSET, 6675 }, + { 0x2fc2, G_UNICODE_NOT_PRESENT_OFFSET, 6679 }, + { 0x2fc3, G_UNICODE_NOT_PRESENT_OFFSET, 6683 }, + { 0x2fc4, G_UNICODE_NOT_PRESENT_OFFSET, 6687 }, + { 0x2fc5, G_UNICODE_NOT_PRESENT_OFFSET, 6691 }, + { 0x2fc6, G_UNICODE_NOT_PRESENT_OFFSET, 6695 }, + { 0x2fc7, G_UNICODE_NOT_PRESENT_OFFSET, 6699 }, + { 0x2fc8, G_UNICODE_NOT_PRESENT_OFFSET, 6703 }, + { 0x2fc9, G_UNICODE_NOT_PRESENT_OFFSET, 6707 }, + { 0x2fca, G_UNICODE_NOT_PRESENT_OFFSET, 6711 }, + { 0x2fcb, G_UNICODE_NOT_PRESENT_OFFSET, 6715 }, + { 0x2fcc, G_UNICODE_NOT_PRESENT_OFFSET, 6719 }, + { 0x2fcd, G_UNICODE_NOT_PRESENT_OFFSET, 6723 }, + { 0x2fce, G_UNICODE_NOT_PRESENT_OFFSET, 6727 }, + { 0x2fcf, G_UNICODE_NOT_PRESENT_OFFSET, 6731 }, + { 0x2fd0, G_UNICODE_NOT_PRESENT_OFFSET, 6735 }, + { 0x2fd1, G_UNICODE_NOT_PRESENT_OFFSET, 6739 }, + { 0x2fd2, G_UNICODE_NOT_PRESENT_OFFSET, 6743 }, + { 0x2fd3, G_UNICODE_NOT_PRESENT_OFFSET, 6747 }, + { 0x2fd4, G_UNICODE_NOT_PRESENT_OFFSET, 6751 }, + { 0x2fd5, G_UNICODE_NOT_PRESENT_OFFSET, 6755 }, + { 0x3000, G_UNICODE_NOT_PRESENT_OFFSET, 0 }, + { 0x3036, G_UNICODE_NOT_PRESENT_OFFSET, 6759 }, + { 0x3038, G_UNICODE_NOT_PRESENT_OFFSET, 5995 }, + { 0x3039, G_UNICODE_NOT_PRESENT_OFFSET, 6763 }, + { 0x303a, G_UNICODE_NOT_PRESENT_OFFSET, 6767 }, + { 0x304c, 6771, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x304e, 6778, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3050, 6785, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3052, 6792, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3054, 6799, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3056, 6806, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3058, 6813, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x305a, 6820, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x305c, 6827, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x305e, 6834, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3060, 6841, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3062, 6848, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3065, 6855, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3067, 6862, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3069, 6869, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3070, 6876, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3071, 6883, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3073, 6890, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3074, 6897, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3076, 6904, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3077, 6911, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3079, 6918, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x307a, 6925, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x307c, 6932, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x307d, 6939, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x3094, 6946, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x309b, G_UNICODE_NOT_PRESENT_OFFSET, 6953 }, + { 0x309c, G_UNICODE_NOT_PRESENT_OFFSET, 6958 }, + { 0x309e, 6963, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x309f, G_UNICODE_NOT_PRESENT_OFFSET, 6970 }, + { 0x30ac, 6977, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30ae, 6984, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30b0, 6991, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30b2, 6998, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30b4, 7005, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30b6, 7012, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30b8, 7019, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30ba, 7026, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30bc, 7033, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30be, 7040, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30c0, 7047, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30c2, 7054, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30c5, 7061, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30c7, 7068, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30c9, 7075, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d0, 7082, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d1, 7089, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d3, 7096, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d4, 7103, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d6, 7110, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d7, 7117, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30d9, 7124, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30da, 7131, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30dc, 7138, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30dd, 7145, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30f4, 7152, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30f7, 7159, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30f8, 7166, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30f9, 7173, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30fa, 7180, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30fe, 7187, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x30ff, G_UNICODE_NOT_PRESENT_OFFSET, 7194 }, + { 0x3131, G_UNICODE_NOT_PRESENT_OFFSET, 7201 }, + { 0x3132, G_UNICODE_NOT_PRESENT_OFFSET, 7205 }, + { 0x3133, G_UNICODE_NOT_PRESENT_OFFSET, 7209 }, + { 0x3134, G_UNICODE_NOT_PRESENT_OFFSET, 7213 }, + { 0x3135, G_UNICODE_NOT_PRESENT_OFFSET, 7217 }, + { 0x3136, G_UNICODE_NOT_PRESENT_OFFSET, 7221 }, + { 0x3137, G_UNICODE_NOT_PRESENT_OFFSET, 7225 }, + { 0x3138, G_UNICODE_NOT_PRESENT_OFFSET, 7229 }, + { 0x3139, G_UNICODE_NOT_PRESENT_OFFSET, 7233 }, + { 0x313a, G_UNICODE_NOT_PRESENT_OFFSET, 7237 }, + { 0x313b, G_UNICODE_NOT_PRESENT_OFFSET, 7241 }, + { 0x313c, G_UNICODE_NOT_PRESENT_OFFSET, 7245 }, + { 0x313d, G_UNICODE_NOT_PRESENT_OFFSET, 7249 }, + { 0x313e, G_UNICODE_NOT_PRESENT_OFFSET, 7253 }, + { 0x313f, G_UNICODE_NOT_PRESENT_OFFSET, 7257 }, + { 0x3140, G_UNICODE_NOT_PRESENT_OFFSET, 7261 }, + { 0x3141, G_UNICODE_NOT_PRESENT_OFFSET, 7265 }, + { 0x3142, G_UNICODE_NOT_PRESENT_OFFSET, 7269 }, + { 0x3143, G_UNICODE_NOT_PRESENT_OFFSET, 7273 }, + { 0x3144, G_UNICODE_NOT_PRESENT_OFFSET, 7277 }, + { 0x3145, G_UNICODE_NOT_PRESENT_OFFSET, 7281 }, + { 0x3146, G_UNICODE_NOT_PRESENT_OFFSET, 7285 }, + { 0x3147, G_UNICODE_NOT_PRESENT_OFFSET, 7289 }, + { 0x3148, G_UNICODE_NOT_PRESENT_OFFSET, 7293 }, + { 0x3149, G_UNICODE_NOT_PRESENT_OFFSET, 7297 }, + { 0x314a, G_UNICODE_NOT_PRESENT_OFFSET, 7301 }, + { 0x314b, G_UNICODE_NOT_PRESENT_OFFSET, 7305 }, + { 0x314c, G_UNICODE_NOT_PRESENT_OFFSET, 7309 }, + { 0x314d, G_UNICODE_NOT_PRESENT_OFFSET, 7313 }, + { 0x314e, G_UNICODE_NOT_PRESENT_OFFSET, 7317 }, + { 0x314f, G_UNICODE_NOT_PRESENT_OFFSET, 7321 }, + { 0x3150, G_UNICODE_NOT_PRESENT_OFFSET, 7325 }, + { 0x3151, G_UNICODE_NOT_PRESENT_OFFSET, 7329 }, + { 0x3152, G_UNICODE_NOT_PRESENT_OFFSET, 7333 }, + { 0x3153, G_UNICODE_NOT_PRESENT_OFFSET, 7337 }, + { 0x3154, G_UNICODE_NOT_PRESENT_OFFSET, 7341 }, + { 0x3155, G_UNICODE_NOT_PRESENT_OFFSET, 7345 }, + { 0x3156, G_UNICODE_NOT_PRESENT_OFFSET, 7349 }, + { 0x3157, G_UNICODE_NOT_PRESENT_OFFSET, 7353 }, + { 0x3158, G_UNICODE_NOT_PRESENT_OFFSET, 7357 }, + { 0x3159, G_UNICODE_NOT_PRESENT_OFFSET, 7361 }, + { 0x315a, G_UNICODE_NOT_PRESENT_OFFSET, 7365 }, + { 0x315b, G_UNICODE_NOT_PRESENT_OFFSET, 7369 }, + { 0x315c, G_UNICODE_NOT_PRESENT_OFFSET, 7373 }, + { 0x315d, G_UNICODE_NOT_PRESENT_OFFSET, 7377 }, + { 0x315e, G_UNICODE_NOT_PRESENT_OFFSET, 7381 }, + { 0x315f, G_UNICODE_NOT_PRESENT_OFFSET, 7385 }, + { 0x3160, G_UNICODE_NOT_PRESENT_OFFSET, 7389 }, + { 0x3161, G_UNICODE_NOT_PRESENT_OFFSET, 7393 }, + { 0x3162, G_UNICODE_NOT_PRESENT_OFFSET, 7397 }, + { 0x3163, G_UNICODE_NOT_PRESENT_OFFSET, 7401 }, + { 0x3164, G_UNICODE_NOT_PRESENT_OFFSET, 7405 }, + { 0x3165, G_UNICODE_NOT_PRESENT_OFFSET, 7409 }, + { 0x3166, G_UNICODE_NOT_PRESENT_OFFSET, 7413 }, + { 0x3167, G_UNICODE_NOT_PRESENT_OFFSET, 7417 }, + { 0x3168, G_UNICODE_NOT_PRESENT_OFFSET, 7421 }, + { 0x3169, G_UNICODE_NOT_PRESENT_OFFSET, 7425 }, + { 0x316a, G_UNICODE_NOT_PRESENT_OFFSET, 7429 }, + { 0x316b, G_UNICODE_NOT_PRESENT_OFFSET, 7433 }, + { 0x316c, G_UNICODE_NOT_PRESENT_OFFSET, 7437 }, + { 0x316d, G_UNICODE_NOT_PRESENT_OFFSET, 7441 }, + { 0x316e, G_UNICODE_NOT_PRESENT_OFFSET, 7445 }, + { 0x316f, G_UNICODE_NOT_PRESENT_OFFSET, 7449 }, + { 0x3170, G_UNICODE_NOT_PRESENT_OFFSET, 7453 }, + { 0x3171, G_UNICODE_NOT_PRESENT_OFFSET, 7457 }, + { 0x3172, G_UNICODE_NOT_PRESENT_OFFSET, 7461 }, + { 0x3173, G_UNICODE_NOT_PRESENT_OFFSET, 7465 }, + { 0x3174, G_UNICODE_NOT_PRESENT_OFFSET, 7469 }, + { 0x3175, G_UNICODE_NOT_PRESENT_OFFSET, 7473 }, + { 0x3176, G_UNICODE_NOT_PRESENT_OFFSET, 7477 }, + { 0x3177, G_UNICODE_NOT_PRESENT_OFFSET, 7481 }, + { 0x3178, G_UNICODE_NOT_PRESENT_OFFSET, 7485 }, + { 0x3179, G_UNICODE_NOT_PRESENT_OFFSET, 7489 }, + { 0x317a, G_UNICODE_NOT_PRESENT_OFFSET, 7493 }, + { 0x317b, G_UNICODE_NOT_PRESENT_OFFSET, 7497 }, + { 0x317c, G_UNICODE_NOT_PRESENT_OFFSET, 7501 }, + { 0x317d, G_UNICODE_NOT_PRESENT_OFFSET, 7505 }, + { 0x317e, G_UNICODE_NOT_PRESENT_OFFSET, 7509 }, + { 0x317f, G_UNICODE_NOT_PRESENT_OFFSET, 7513 }, + { 0x3180, G_UNICODE_NOT_PRESENT_OFFSET, 7517 }, + { 0x3181, G_UNICODE_NOT_PRESENT_OFFSET, 7521 }, + { 0x3182, G_UNICODE_NOT_PRESENT_OFFSET, 7525 }, + { 0x3183, G_UNICODE_NOT_PRESENT_OFFSET, 7529 }, + { 0x3184, G_UNICODE_NOT_PRESENT_OFFSET, 7533 }, + { 0x3185, G_UNICODE_NOT_PRESENT_OFFSET, 7537 }, + { 0x3186, G_UNICODE_NOT_PRESENT_OFFSET, 7541 }, + { 0x3187, G_UNICODE_NOT_PRESENT_OFFSET, 7545 }, + { 0x3188, G_UNICODE_NOT_PRESENT_OFFSET, 7549 }, + { 0x3189, G_UNICODE_NOT_PRESENT_OFFSET, 7553 }, + { 0x318a, G_UNICODE_NOT_PRESENT_OFFSET, 7557 }, + { 0x318b, G_UNICODE_NOT_PRESENT_OFFSET, 7561 }, + { 0x318c, G_UNICODE_NOT_PRESENT_OFFSET, 7565 }, + { 0x318d, G_UNICODE_NOT_PRESENT_OFFSET, 7569 }, + { 0x318e, G_UNICODE_NOT_PRESENT_OFFSET, 7573 }, + { 0x3192, G_UNICODE_NOT_PRESENT_OFFSET, 5903 }, + { 0x3193, G_UNICODE_NOT_PRESENT_OFFSET, 5927 }, + { 0x3194, G_UNICODE_NOT_PRESENT_OFFSET, 7577 }, + { 0x3195, G_UNICODE_NOT_PRESENT_OFFSET, 7581 }, + { 0x3196, G_UNICODE_NOT_PRESENT_OFFSET, 7585 }, + { 0x3197, G_UNICODE_NOT_PRESENT_OFFSET, 7589 }, + { 0x3198, G_UNICODE_NOT_PRESENT_OFFSET, 7593 }, + { 0x3199, G_UNICODE_NOT_PRESENT_OFFSET, 7597 }, + { 0x319a, G_UNICODE_NOT_PRESENT_OFFSET, 5919 }, + { 0x319b, G_UNICODE_NOT_PRESENT_OFFSET, 7601 }, + { 0x319c, G_UNICODE_NOT_PRESENT_OFFSET, 7605 }, + { 0x319d, G_UNICODE_NOT_PRESENT_OFFSET, 7609 }, + { 0x319e, G_UNICODE_NOT_PRESENT_OFFSET, 7613 }, + { 0x319f, G_UNICODE_NOT_PRESENT_OFFSET, 5935 }, + { 0x3200, G_UNICODE_NOT_PRESENT_OFFSET, 7617 }, + { 0x3201, G_UNICODE_NOT_PRESENT_OFFSET, 7623 }, + { 0x3202, G_UNICODE_NOT_PRESENT_OFFSET, 7629 }, + { 0x3203, G_UNICODE_NOT_PRESENT_OFFSET, 7635 }, + { 0x3204, G_UNICODE_NOT_PRESENT_OFFSET, 7641 }, + { 0x3205, G_UNICODE_NOT_PRESENT_OFFSET, 7647 }, + { 0x3206, G_UNICODE_NOT_PRESENT_OFFSET, 7653 }, + { 0x3207, G_UNICODE_NOT_PRESENT_OFFSET, 7659 }, + { 0x3208, G_UNICODE_NOT_PRESENT_OFFSET, 7665 }, + { 0x3209, G_UNICODE_NOT_PRESENT_OFFSET, 7671 }, + { 0x320a, G_UNICODE_NOT_PRESENT_OFFSET, 7677 }, + { 0x320b, G_UNICODE_NOT_PRESENT_OFFSET, 7683 }, + { 0x320c, G_UNICODE_NOT_PRESENT_OFFSET, 7689 }, + { 0x320d, G_UNICODE_NOT_PRESENT_OFFSET, 7695 }, + { 0x320e, G_UNICODE_NOT_PRESENT_OFFSET, 7701 }, + { 0x320f, G_UNICODE_NOT_PRESENT_OFFSET, 7710 }, + { 0x3210, G_UNICODE_NOT_PRESENT_OFFSET, 7719 }, + { 0x3211, G_UNICODE_NOT_PRESENT_OFFSET, 7728 }, + { 0x3212, G_UNICODE_NOT_PRESENT_OFFSET, 7737 }, + { 0x3213, G_UNICODE_NOT_PRESENT_OFFSET, 7746 }, + { 0x3214, G_UNICODE_NOT_PRESENT_OFFSET, 7755 }, + { 0x3215, G_UNICODE_NOT_PRESENT_OFFSET, 7764 }, + { 0x3216, G_UNICODE_NOT_PRESENT_OFFSET, 7773 }, + { 0x3217, G_UNICODE_NOT_PRESENT_OFFSET, 7782 }, + { 0x3218, G_UNICODE_NOT_PRESENT_OFFSET, 7791 }, + { 0x3219, G_UNICODE_NOT_PRESENT_OFFSET, 7800 }, + { 0x321a, G_UNICODE_NOT_PRESENT_OFFSET, 7809 }, + { 0x321b, G_UNICODE_NOT_PRESENT_OFFSET, 7818 }, + { 0x321c, G_UNICODE_NOT_PRESENT_OFFSET, 7827 }, + { 0x3220, G_UNICODE_NOT_PRESENT_OFFSET, 7836 }, + { 0x3221, G_UNICODE_NOT_PRESENT_OFFSET, 7842 }, + { 0x3222, G_UNICODE_NOT_PRESENT_OFFSET, 7848 }, + { 0x3223, G_UNICODE_NOT_PRESENT_OFFSET, 7854 }, + { 0x3224, G_UNICODE_NOT_PRESENT_OFFSET, 7860 }, + { 0x3225, G_UNICODE_NOT_PRESENT_OFFSET, 7866 }, + { 0x3226, G_UNICODE_NOT_PRESENT_OFFSET, 7872 }, + { 0x3227, G_UNICODE_NOT_PRESENT_OFFSET, 7878 }, + { 0x3228, G_UNICODE_NOT_PRESENT_OFFSET, 7884 }, + { 0x3229, G_UNICODE_NOT_PRESENT_OFFSET, 7890 }, + { 0x322a, G_UNICODE_NOT_PRESENT_OFFSET, 7896 }, + { 0x322b, G_UNICODE_NOT_PRESENT_OFFSET, 7902 }, + { 0x322c, G_UNICODE_NOT_PRESENT_OFFSET, 7908 }, + { 0x322d, G_UNICODE_NOT_PRESENT_OFFSET, 7914 }, + { 0x322e, G_UNICODE_NOT_PRESENT_OFFSET, 7920 }, + { 0x322f, G_UNICODE_NOT_PRESENT_OFFSET, 7926 }, + { 0x3230, G_UNICODE_NOT_PRESENT_OFFSET, 7932 }, + { 0x3231, G_UNICODE_NOT_PRESENT_OFFSET, 7938 }, + { 0x3232, G_UNICODE_NOT_PRESENT_OFFSET, 7944 }, + { 0x3233, G_UNICODE_NOT_PRESENT_OFFSET, 7950 }, + { 0x3234, G_UNICODE_NOT_PRESENT_OFFSET, 7956 }, + { 0x3235, G_UNICODE_NOT_PRESENT_OFFSET, 7962 }, + { 0x3236, G_UNICODE_NOT_PRESENT_OFFSET, 7968 }, + { 0x3237, G_UNICODE_NOT_PRESENT_OFFSET, 7974 }, + { 0x3238, G_UNICODE_NOT_PRESENT_OFFSET, 7980 }, + { 0x3239, G_UNICODE_NOT_PRESENT_OFFSET, 7986 }, + { 0x323a, G_UNICODE_NOT_PRESENT_OFFSET, 7992 }, + { 0x323b, G_UNICODE_NOT_PRESENT_OFFSET, 7998 }, + { 0x323c, G_UNICODE_NOT_PRESENT_OFFSET, 8004 }, + { 0x323d, G_UNICODE_NOT_PRESENT_OFFSET, 8010 }, + { 0x323e, G_UNICODE_NOT_PRESENT_OFFSET, 8016 }, + { 0x323f, G_UNICODE_NOT_PRESENT_OFFSET, 8022 }, + { 0x3240, G_UNICODE_NOT_PRESENT_OFFSET, 8028 }, + { 0x3241, G_UNICODE_NOT_PRESENT_OFFSET, 8034 }, + { 0x3242, G_UNICODE_NOT_PRESENT_OFFSET, 8040 }, + { 0x3243, G_UNICODE_NOT_PRESENT_OFFSET, 8046 }, + { 0x3251, G_UNICODE_NOT_PRESENT_OFFSET, 8052 }, + { 0x3252, G_UNICODE_NOT_PRESENT_OFFSET, 8055 }, + { 0x3253, G_UNICODE_NOT_PRESENT_OFFSET, 8058 }, + { 0x3254, G_UNICODE_NOT_PRESENT_OFFSET, 8061 }, + { 0x3255, G_UNICODE_NOT_PRESENT_OFFSET, 8064 }, + { 0x3256, G_UNICODE_NOT_PRESENT_OFFSET, 8067 }, + { 0x3257, G_UNICODE_NOT_PRESENT_OFFSET, 8070 }, + { 0x3258, G_UNICODE_NOT_PRESENT_OFFSET, 8073 }, + { 0x3259, G_UNICODE_NOT_PRESENT_OFFSET, 8076 }, + { 0x325a, G_UNICODE_NOT_PRESENT_OFFSET, 8079 }, + { 0x325b, G_UNICODE_NOT_PRESENT_OFFSET, 8082 }, + { 0x325c, G_UNICODE_NOT_PRESENT_OFFSET, 8085 }, + { 0x325d, G_UNICODE_NOT_PRESENT_OFFSET, 8088 }, + { 0x325e, G_UNICODE_NOT_PRESENT_OFFSET, 8091 }, + { 0x325f, G_UNICODE_NOT_PRESENT_OFFSET, 8094 }, + { 0x3260, G_UNICODE_NOT_PRESENT_OFFSET, 7201 }, + { 0x3261, G_UNICODE_NOT_PRESENT_OFFSET, 7213 }, + { 0x3262, G_UNICODE_NOT_PRESENT_OFFSET, 7225 }, + { 0x3263, G_UNICODE_NOT_PRESENT_OFFSET, 7233 }, + { 0x3264, G_UNICODE_NOT_PRESENT_OFFSET, 7265 }, + { 0x3265, G_UNICODE_NOT_PRESENT_OFFSET, 7269 }, + { 0x3266, G_UNICODE_NOT_PRESENT_OFFSET, 7281 }, + { 0x3267, G_UNICODE_NOT_PRESENT_OFFSET, 7289 }, + { 0x3268, G_UNICODE_NOT_PRESENT_OFFSET, 7293 }, + { 0x3269, G_UNICODE_NOT_PRESENT_OFFSET, 7301 }, + { 0x326a, G_UNICODE_NOT_PRESENT_OFFSET, 7305 }, + { 0x326b, G_UNICODE_NOT_PRESENT_OFFSET, 7309 }, + { 0x326c, G_UNICODE_NOT_PRESENT_OFFSET, 7313 }, + { 0x326d, G_UNICODE_NOT_PRESENT_OFFSET, 7317 }, + { 0x326e, G_UNICODE_NOT_PRESENT_OFFSET, 8097 }, + { 0x326f, G_UNICODE_NOT_PRESENT_OFFSET, 8104 }, + { 0x3270, G_UNICODE_NOT_PRESENT_OFFSET, 8111 }, + { 0x3271, G_UNICODE_NOT_PRESENT_OFFSET, 8118 }, + { 0x3272, G_UNICODE_NOT_PRESENT_OFFSET, 8125 }, + { 0x3273, G_UNICODE_NOT_PRESENT_OFFSET, 8132 }, + { 0x3274, G_UNICODE_NOT_PRESENT_OFFSET, 8139 }, + { 0x3275, G_UNICODE_NOT_PRESENT_OFFSET, 8146 }, + { 0x3276, G_UNICODE_NOT_PRESENT_OFFSET, 8153 }, + { 0x3277, G_UNICODE_NOT_PRESENT_OFFSET, 8160 }, + { 0x3278, G_UNICODE_NOT_PRESENT_OFFSET, 8167 }, + { 0x3279, G_UNICODE_NOT_PRESENT_OFFSET, 8174 }, + { 0x327a, G_UNICODE_NOT_PRESENT_OFFSET, 8181 }, + { 0x327b, G_UNICODE_NOT_PRESENT_OFFSET, 8188 }, + { 0x3280, G_UNICODE_NOT_PRESENT_OFFSET, 5903 }, + { 0x3281, G_UNICODE_NOT_PRESENT_OFFSET, 5927 }, + { 0x3282, G_UNICODE_NOT_PRESENT_OFFSET, 7577 }, + { 0x3283, G_UNICODE_NOT_PRESENT_OFFSET, 7581 }, + { 0x3284, G_UNICODE_NOT_PRESENT_OFFSET, 8195 }, + { 0x3285, G_UNICODE_NOT_PRESENT_OFFSET, 8199 }, + { 0x3286, G_UNICODE_NOT_PRESENT_OFFSET, 8203 }, + { 0x3287, G_UNICODE_NOT_PRESENT_OFFSET, 5947 }, + { 0x3288, G_UNICODE_NOT_PRESENT_OFFSET, 8207 }, + { 0x3289, G_UNICODE_NOT_PRESENT_OFFSET, 5995 }, + { 0x328a, G_UNICODE_NOT_PRESENT_OFFSET, 6195 }, + { 0x328b, G_UNICODE_NOT_PRESENT_OFFSET, 6243 }, + { 0x328c, G_UNICODE_NOT_PRESENT_OFFSET, 6239 }, + { 0x328d, G_UNICODE_NOT_PRESENT_OFFSET, 6199 }, + { 0x328e, G_UNICODE_NOT_PRESENT_OFFSET, 6567 }, + { 0x328f, G_UNICODE_NOT_PRESENT_OFFSET, 6027 }, + { 0x3290, G_UNICODE_NOT_PRESENT_OFFSET, 6187 }, + { 0x3291, G_UNICODE_NOT_PRESENT_OFFSET, 8211 }, + { 0x3292, G_UNICODE_NOT_PRESENT_OFFSET, 8215 }, + { 0x3293, G_UNICODE_NOT_PRESENT_OFFSET, 8219 }, + { 0x3294, G_UNICODE_NOT_PRESENT_OFFSET, 8223 }, + { 0x3295, G_UNICODE_NOT_PRESENT_OFFSET, 8227 }, + { 0x3296, G_UNICODE_NOT_PRESENT_OFFSET, 8231 }, + { 0x3297, G_UNICODE_NOT_PRESENT_OFFSET, 8235 }, + { 0x3298, G_UNICODE_NOT_PRESENT_OFFSET, 8239 }, + { 0x3299, G_UNICODE_NOT_PRESENT_OFFSET, 8243 }, + { 0x329a, G_UNICODE_NOT_PRESENT_OFFSET, 8247 }, + { 0x329b, G_UNICODE_NOT_PRESENT_OFFSET, 6051 }, + { 0x329c, G_UNICODE_NOT_PRESENT_OFFSET, 8251 }, + { 0x329d, G_UNICODE_NOT_PRESENT_OFFSET, 8255 }, + { 0x329e, G_UNICODE_NOT_PRESENT_OFFSET, 8259 }, + { 0x329f, G_UNICODE_NOT_PRESENT_OFFSET, 8263 }, + { 0x32a0, G_UNICODE_NOT_PRESENT_OFFSET, 8267 }, + { 0x32a1, G_UNICODE_NOT_PRESENT_OFFSET, 8271 }, + { 0x32a2, G_UNICODE_NOT_PRESENT_OFFSET, 8275 }, + { 0x32a3, G_UNICODE_NOT_PRESENT_OFFSET, 8279 }, + { 0x32a4, G_UNICODE_NOT_PRESENT_OFFSET, 7585 }, + { 0x32a5, G_UNICODE_NOT_PRESENT_OFFSET, 7589 }, + { 0x32a6, G_UNICODE_NOT_PRESENT_OFFSET, 7593 }, + { 0x32a7, G_UNICODE_NOT_PRESENT_OFFSET, 8283 }, + { 0x32a8, G_UNICODE_NOT_PRESENT_OFFSET, 8287 }, + { 0x32a9, G_UNICODE_NOT_PRESENT_OFFSET, 8291 }, + { 0x32aa, G_UNICODE_NOT_PRESENT_OFFSET, 8295 }, + { 0x32ab, G_UNICODE_NOT_PRESENT_OFFSET, 8299 }, + { 0x32ac, G_UNICODE_NOT_PRESENT_OFFSET, 8303 }, + { 0x32ad, G_UNICODE_NOT_PRESENT_OFFSET, 8307 }, + { 0x32ae, G_UNICODE_NOT_PRESENT_OFFSET, 8311 }, + { 0x32af, G_UNICODE_NOT_PRESENT_OFFSET, 8315 }, + { 0x32b0, G_UNICODE_NOT_PRESENT_OFFSET, 8319 }, + { 0x32b1, G_UNICODE_NOT_PRESENT_OFFSET, 8323 }, + { 0x32b2, G_UNICODE_NOT_PRESENT_OFFSET, 8326 }, + { 0x32b3, G_UNICODE_NOT_PRESENT_OFFSET, 8329 }, + { 0x32b4, G_UNICODE_NOT_PRESENT_OFFSET, 8332 }, + { 0x32b5, G_UNICODE_NOT_PRESENT_OFFSET, 8335 }, + { 0x32b6, G_UNICODE_NOT_PRESENT_OFFSET, 8338 }, + { 0x32b7, G_UNICODE_NOT_PRESENT_OFFSET, 8341 }, + { 0x32b8, G_UNICODE_NOT_PRESENT_OFFSET, 8344 }, + { 0x32b9, G_UNICODE_NOT_PRESENT_OFFSET, 8347 }, + { 0x32ba, G_UNICODE_NOT_PRESENT_OFFSET, 8350 }, + { 0x32bb, G_UNICODE_NOT_PRESENT_OFFSET, 8353 }, + { 0x32bc, G_UNICODE_NOT_PRESENT_OFFSET, 8356 }, + { 0x32bd, G_UNICODE_NOT_PRESENT_OFFSET, 8359 }, + { 0x32be, G_UNICODE_NOT_PRESENT_OFFSET, 8362 }, + { 0x32bf, G_UNICODE_NOT_PRESENT_OFFSET, 8365 }, + { 0x32c0, G_UNICODE_NOT_PRESENT_OFFSET, 8368 }, + { 0x32c1, G_UNICODE_NOT_PRESENT_OFFSET, 8373 }, + { 0x32c2, G_UNICODE_NOT_PRESENT_OFFSET, 8378 }, + { 0x32c3, G_UNICODE_NOT_PRESENT_OFFSET, 8383 }, + { 0x32c4, G_UNICODE_NOT_PRESENT_OFFSET, 8388 }, + { 0x32c5, G_UNICODE_NOT_PRESENT_OFFSET, 8393 }, + { 0x32c6, G_UNICODE_NOT_PRESENT_OFFSET, 8398 }, + { 0x32c7, G_UNICODE_NOT_PRESENT_OFFSET, 8403 }, + { 0x32c8, G_UNICODE_NOT_PRESENT_OFFSET, 8408 }, + { 0x32c9, G_UNICODE_NOT_PRESENT_OFFSET, 8413 }, + { 0x32ca, G_UNICODE_NOT_PRESENT_OFFSET, 8419 }, + { 0x32cb, G_UNICODE_NOT_PRESENT_OFFSET, 8425 }, + { 0x32d0, G_UNICODE_NOT_PRESENT_OFFSET, 8431 }, + { 0x32d1, G_UNICODE_NOT_PRESENT_OFFSET, 8435 }, + { 0x32d2, G_UNICODE_NOT_PRESENT_OFFSET, 8439 }, + { 0x32d3, G_UNICODE_NOT_PRESENT_OFFSET, 8443 }, + { 0x32d4, G_UNICODE_NOT_PRESENT_OFFSET, 8447 }, + { 0x32d5, G_UNICODE_NOT_PRESENT_OFFSET, 8451 }, + { 0x32d6, G_UNICODE_NOT_PRESENT_OFFSET, 8455 }, + { 0x32d7, G_UNICODE_NOT_PRESENT_OFFSET, 8459 }, + { 0x32d8, G_UNICODE_NOT_PRESENT_OFFSET, 8463 }, + { 0x32d9, G_UNICODE_NOT_PRESENT_OFFSET, 8467 }, + { 0x32da, G_UNICODE_NOT_PRESENT_OFFSET, 8471 }, + { 0x32db, G_UNICODE_NOT_PRESENT_OFFSET, 8475 }, + { 0x32dc, G_UNICODE_NOT_PRESENT_OFFSET, 8479 }, + { 0x32dd, G_UNICODE_NOT_PRESENT_OFFSET, 8483 }, + { 0x32de, G_UNICODE_NOT_PRESENT_OFFSET, 8487 }, + { 0x32df, G_UNICODE_NOT_PRESENT_OFFSET, 8491 }, + { 0x32e0, G_UNICODE_NOT_PRESENT_OFFSET, 8495 }, + { 0x32e1, G_UNICODE_NOT_PRESENT_OFFSET, 8499 }, + { 0x32e2, G_UNICODE_NOT_PRESENT_OFFSET, 8503 }, + { 0x32e3, G_UNICODE_NOT_PRESENT_OFFSET, 8507 }, + { 0x32e4, G_UNICODE_NOT_PRESENT_OFFSET, 8511 }, + { 0x32e5, G_UNICODE_NOT_PRESENT_OFFSET, 8515 }, + { 0x32e6, G_UNICODE_NOT_PRESENT_OFFSET, 8519 }, + { 0x32e7, G_UNICODE_NOT_PRESENT_OFFSET, 8523 }, + { 0x32e8, G_UNICODE_NOT_PRESENT_OFFSET, 8527 }, + { 0x32e9, G_UNICODE_NOT_PRESENT_OFFSET, 8531 }, + { 0x32ea, G_UNICODE_NOT_PRESENT_OFFSET, 8535 }, + { 0x32eb, G_UNICODE_NOT_PRESENT_OFFSET, 8539 }, + { 0x32ec, G_UNICODE_NOT_PRESENT_OFFSET, 8543 }, + { 0x32ed, G_UNICODE_NOT_PRESENT_OFFSET, 8547 }, + { 0x32ee, G_UNICODE_NOT_PRESENT_OFFSET, 8551 }, + { 0x32ef, G_UNICODE_NOT_PRESENT_OFFSET, 8555 }, + { 0x32f0, G_UNICODE_NOT_PRESENT_OFFSET, 8559 }, + { 0x32f1, G_UNICODE_NOT_PRESENT_OFFSET, 8563 }, + { 0x32f2, G_UNICODE_NOT_PRESENT_OFFSET, 8567 }, + { 0x32f3, G_UNICODE_NOT_PRESENT_OFFSET, 8571 }, + { 0x32f4, G_UNICODE_NOT_PRESENT_OFFSET, 8575 }, + { 0x32f5, G_UNICODE_NOT_PRESENT_OFFSET, 8579 }, + { 0x32f6, G_UNICODE_NOT_PRESENT_OFFSET, 8583 }, + { 0x32f7, G_UNICODE_NOT_PRESENT_OFFSET, 8587 }, + { 0x32f8, G_UNICODE_NOT_PRESENT_OFFSET, 8591 }, + { 0x32f9, G_UNICODE_NOT_PRESENT_OFFSET, 8595 }, + { 0x32fa, G_UNICODE_NOT_PRESENT_OFFSET, 8599 }, + { 0x32fb, G_UNICODE_NOT_PRESENT_OFFSET, 8603 }, + { 0x32fc, G_UNICODE_NOT_PRESENT_OFFSET, 8607 }, + { 0x32fd, G_UNICODE_NOT_PRESENT_OFFSET, 8611 }, + { 0x32fe, G_UNICODE_NOT_PRESENT_OFFSET, 8615 }, + { 0x3300, G_UNICODE_NOT_PRESENT_OFFSET, 8619 }, + { 0x3301, G_UNICODE_NOT_PRESENT_OFFSET, 8635 }, + { 0x3302, G_UNICODE_NOT_PRESENT_OFFSET, 8648 }, + { 0x3303, G_UNICODE_NOT_PRESENT_OFFSET, 8664 }, + { 0x3304, G_UNICODE_NOT_PRESENT_OFFSET, 8674 }, + { 0x3305, G_UNICODE_NOT_PRESENT_OFFSET, 8690 }, + { 0x3306, G_UNICODE_NOT_PRESENT_OFFSET, 8700 }, + { 0x3307, G_UNICODE_NOT_PRESENT_OFFSET, 8710 }, + { 0x3308, G_UNICODE_NOT_PRESENT_OFFSET, 8729 }, + { 0x3309, G_UNICODE_NOT_PRESENT_OFFSET, 8742 }, + { 0x330a, G_UNICODE_NOT_PRESENT_OFFSET, 8752 }, + { 0x330b, G_UNICODE_NOT_PRESENT_OFFSET, 8762 }, + { 0x330c, G_UNICODE_NOT_PRESENT_OFFSET, 8772 }, + { 0x330d, G_UNICODE_NOT_PRESENT_OFFSET, 8785 }, + { 0x330e, G_UNICODE_NOT_PRESENT_OFFSET, 8798 }, + { 0x330f, G_UNICODE_NOT_PRESENT_OFFSET, 8811 }, + { 0x3310, G_UNICODE_NOT_PRESENT_OFFSET, 8824 }, + { 0x3311, G_UNICODE_NOT_PRESENT_OFFSET, 8837 }, + { 0x3312, G_UNICODE_NOT_PRESENT_OFFSET, 8850 }, + { 0x3313, G_UNICODE_NOT_PRESENT_OFFSET, 8863 }, + { 0x3314, G_UNICODE_NOT_PRESENT_OFFSET, 8882 }, + { 0x3315, G_UNICODE_NOT_PRESENT_OFFSET, 8889 }, + { 0x3316, G_UNICODE_NOT_PRESENT_OFFSET, 8908 }, + { 0x3317, G_UNICODE_NOT_PRESENT_OFFSET, 8927 }, + { 0x3318, G_UNICODE_NOT_PRESENT_OFFSET, 8943 }, + { 0x3319, G_UNICODE_NOT_PRESENT_OFFSET, 8956 }, + { 0x331a, G_UNICODE_NOT_PRESENT_OFFSET, 8975 }, + { 0x331b, G_UNICODE_NOT_PRESENT_OFFSET, 8994 }, + { 0x331c, G_UNICODE_NOT_PRESENT_OFFSET, 9007 }, + { 0x331d, G_UNICODE_NOT_PRESENT_OFFSET, 9017 }, + { 0x331e, G_UNICODE_NOT_PRESENT_OFFSET, 9027 }, + { 0x331f, G_UNICODE_NOT_PRESENT_OFFSET, 9040 }, + { 0x3320, G_UNICODE_NOT_PRESENT_OFFSET, 9053 }, + { 0x3321, G_UNICODE_NOT_PRESENT_OFFSET, 9069 }, + { 0x3322, G_UNICODE_NOT_PRESENT_OFFSET, 9085 }, + { 0x3323, G_UNICODE_NOT_PRESENT_OFFSET, 9095 }, + { 0x3324, G_UNICODE_NOT_PRESENT_OFFSET, 9105 }, + { 0x3325, G_UNICODE_NOT_PRESENT_OFFSET, 9118 }, + { 0x3326, G_UNICODE_NOT_PRESENT_OFFSET, 9128 }, + { 0x3327, G_UNICODE_NOT_PRESENT_OFFSET, 9138 }, + { 0x3328, G_UNICODE_NOT_PRESENT_OFFSET, 9145 }, + { 0x3329, G_UNICODE_NOT_PRESENT_OFFSET, 9152 }, + { 0x332a, G_UNICODE_NOT_PRESENT_OFFSET, 9162 }, + { 0x332b, G_UNICODE_NOT_PRESENT_OFFSET, 9172 }, + { 0x332c, G_UNICODE_NOT_PRESENT_OFFSET, 9191 }, + { 0x332d, G_UNICODE_NOT_PRESENT_OFFSET, 9204 }, + { 0x332e, G_UNICODE_NOT_PRESENT_OFFSET, 9220 }, + { 0x332f, G_UNICODE_NOT_PRESENT_OFFSET, 9239 }, + { 0x3330, G_UNICODE_NOT_PRESENT_OFFSET, 9252 }, + { 0x3331, G_UNICODE_NOT_PRESENT_OFFSET, 9262 }, + { 0x3332, G_UNICODE_NOT_PRESENT_OFFSET, 9272 }, + { 0x3333, G_UNICODE_NOT_PRESENT_OFFSET, 9291 }, + { 0x3334, G_UNICODE_NOT_PRESENT_OFFSET, 9304 }, + { 0x3335, G_UNICODE_NOT_PRESENT_OFFSET, 9323 }, + { 0x3336, G_UNICODE_NOT_PRESENT_OFFSET, 9333 }, + { 0x3337, G_UNICODE_NOT_PRESENT_OFFSET, 9349 }, + { 0x3338, G_UNICODE_NOT_PRESENT_OFFSET, 9359 }, + { 0x3339, G_UNICODE_NOT_PRESENT_OFFSET, 9372 }, + { 0x333a, G_UNICODE_NOT_PRESENT_OFFSET, 9382 }, + { 0x333b, G_UNICODE_NOT_PRESENT_OFFSET, 9395 }, + { 0x333c, G_UNICODE_NOT_PRESENT_OFFSET, 9411 }, + { 0x333d, G_UNICODE_NOT_PRESENT_OFFSET, 9424 }, + { 0x333e, G_UNICODE_NOT_PRESENT_OFFSET, 9440 }, + { 0x333f, G_UNICODE_NOT_PRESENT_OFFSET, 9453 }, + { 0x3340, G_UNICODE_NOT_PRESENT_OFFSET, 9460 }, + { 0x3341, G_UNICODE_NOT_PRESENT_OFFSET, 9476 }, + { 0x3342, G_UNICODE_NOT_PRESENT_OFFSET, 9486 }, + { 0x3343, G_UNICODE_NOT_PRESENT_OFFSET, 9496 }, + { 0x3344, G_UNICODE_NOT_PRESENT_OFFSET, 9509 }, + { 0x3345, G_UNICODE_NOT_PRESENT_OFFSET, 9519 }, + { 0x3346, G_UNICODE_NOT_PRESENT_OFFSET, 9529 }, + { 0x3347, G_UNICODE_NOT_PRESENT_OFFSET, 9539 }, + { 0x3348, G_UNICODE_NOT_PRESENT_OFFSET, 9555 }, + { 0x3349, G_UNICODE_NOT_PRESENT_OFFSET, 9568 }, + { 0x334a, G_UNICODE_NOT_PRESENT_OFFSET, 9575 }, + { 0x334b, G_UNICODE_NOT_PRESENT_OFFSET, 9594 }, + { 0x334c, G_UNICODE_NOT_PRESENT_OFFSET, 9604 }, + { 0x334d, G_UNICODE_NOT_PRESENT_OFFSET, 9620 }, + { 0x334e, G_UNICODE_NOT_PRESENT_OFFSET, 9633 }, + { 0x334f, G_UNICODE_NOT_PRESENT_OFFSET, 9646 }, + { 0x3350, G_UNICODE_NOT_PRESENT_OFFSET, 9656 }, + { 0x3351, G_UNICODE_NOT_PRESENT_OFFSET, 9666 }, + { 0x3352, G_UNICODE_NOT_PRESENT_OFFSET, 9679 }, + { 0x3353, G_UNICODE_NOT_PRESENT_OFFSET, 9686 }, + { 0x3354, G_UNICODE_NOT_PRESENT_OFFSET, 9699 }, + { 0x3355, G_UNICODE_NOT_PRESENT_OFFSET, 9715 }, + { 0x3356, G_UNICODE_NOT_PRESENT_OFFSET, 9722 }, + { 0x3357, G_UNICODE_NOT_PRESENT_OFFSET, 9741 }, + { 0x3358, G_UNICODE_NOT_PRESENT_OFFSET, 9751 }, + { 0x3359, G_UNICODE_NOT_PRESENT_OFFSET, 9756 }, + { 0x335a, G_UNICODE_NOT_PRESENT_OFFSET, 9761 }, + { 0x335b, G_UNICODE_NOT_PRESENT_OFFSET, 9766 }, + { 0x335c, G_UNICODE_NOT_PRESENT_OFFSET, 9771 }, + { 0x335d, G_UNICODE_NOT_PRESENT_OFFSET, 9776 }, + { 0x335e, G_UNICODE_NOT_PRESENT_OFFSET, 9781 }, + { 0x335f, G_UNICODE_NOT_PRESENT_OFFSET, 9786 }, + { 0x3360, G_UNICODE_NOT_PRESENT_OFFSET, 9791 }, + { 0x3361, G_UNICODE_NOT_PRESENT_OFFSET, 9796 }, + { 0x3362, G_UNICODE_NOT_PRESENT_OFFSET, 9801 }, + { 0x3363, G_UNICODE_NOT_PRESENT_OFFSET, 9807 }, + { 0x3364, G_UNICODE_NOT_PRESENT_OFFSET, 9813 }, + { 0x3365, G_UNICODE_NOT_PRESENT_OFFSET, 9819 }, + { 0x3366, G_UNICODE_NOT_PRESENT_OFFSET, 9825 }, + { 0x3367, G_UNICODE_NOT_PRESENT_OFFSET, 9831 }, + { 0x3368, G_UNICODE_NOT_PRESENT_OFFSET, 9837 }, + { 0x3369, G_UNICODE_NOT_PRESENT_OFFSET, 9843 }, + { 0x336a, G_UNICODE_NOT_PRESENT_OFFSET, 9849 }, + { 0x336b, G_UNICODE_NOT_PRESENT_OFFSET, 9855 }, + { 0x336c, G_UNICODE_NOT_PRESENT_OFFSET, 9861 }, + { 0x336d, G_UNICODE_NOT_PRESENT_OFFSET, 9867 }, + { 0x336e, G_UNICODE_NOT_PRESENT_OFFSET, 9873 }, + { 0x336f, G_UNICODE_NOT_PRESENT_OFFSET, 9879 }, + { 0x3370, G_UNICODE_NOT_PRESENT_OFFSET, 9885 }, + { 0x3371, G_UNICODE_NOT_PRESENT_OFFSET, 9891 }, + { 0x3372, G_UNICODE_NOT_PRESENT_OFFSET, 9895 }, + { 0x3373, G_UNICODE_NOT_PRESENT_OFFSET, 9898 }, + { 0x3374, G_UNICODE_NOT_PRESENT_OFFSET, 9901 }, + { 0x3375, G_UNICODE_NOT_PRESENT_OFFSET, 9905 }, + { 0x3376, G_UNICODE_NOT_PRESENT_OFFSET, 9908 }, + { 0x337b, G_UNICODE_NOT_PRESENT_OFFSET, 9911 }, + { 0x337c, G_UNICODE_NOT_PRESENT_OFFSET, 9918 }, + { 0x337d, G_UNICODE_NOT_PRESENT_OFFSET, 9925 }, + { 0x337e, G_UNICODE_NOT_PRESENT_OFFSET, 9932 }, + { 0x337f, G_UNICODE_NOT_PRESENT_OFFSET, 9939 }, + { 0x3380, G_UNICODE_NOT_PRESENT_OFFSET, 9952 }, + { 0x3381, G_UNICODE_NOT_PRESENT_OFFSET, 9955 }, + { 0x3382, G_UNICODE_NOT_PRESENT_OFFSET, 9958 }, + { 0x3383, G_UNICODE_NOT_PRESENT_OFFSET, 9962 }, + { 0x3384, G_UNICODE_NOT_PRESENT_OFFSET, 9965 }, + { 0x3385, G_UNICODE_NOT_PRESENT_OFFSET, 9968 }, + { 0x3386, G_UNICODE_NOT_PRESENT_OFFSET, 9971 }, + { 0x3387, G_UNICODE_NOT_PRESENT_OFFSET, 9974 }, + { 0x3388, G_UNICODE_NOT_PRESENT_OFFSET, 9977 }, + { 0x3389, G_UNICODE_NOT_PRESENT_OFFSET, 9981 }, + { 0x338a, G_UNICODE_NOT_PRESENT_OFFSET, 9986 }, + { 0x338b, G_UNICODE_NOT_PRESENT_OFFSET, 9989 }, + { 0x338c, G_UNICODE_NOT_PRESENT_OFFSET, 9992 }, + { 0x338d, G_UNICODE_NOT_PRESENT_OFFSET, 9996 }, + { 0x338e, G_UNICODE_NOT_PRESENT_OFFSET, 10000 }, + { 0x338f, G_UNICODE_NOT_PRESENT_OFFSET, 10003 }, + { 0x3390, G_UNICODE_NOT_PRESENT_OFFSET, 10006 }, + { 0x3391, G_UNICODE_NOT_PRESENT_OFFSET, 10009 }, + { 0x3392, G_UNICODE_NOT_PRESENT_OFFSET, 10013 }, + { 0x3393, G_UNICODE_NOT_PRESENT_OFFSET, 10017 }, + { 0x3394, G_UNICODE_NOT_PRESENT_OFFSET, 10021 }, + { 0x3395, G_UNICODE_NOT_PRESENT_OFFSET, 10025 }, + { 0x3396, G_UNICODE_NOT_PRESENT_OFFSET, 10029 }, + { 0x3397, G_UNICODE_NOT_PRESENT_OFFSET, 10032 }, + { 0x3398, G_UNICODE_NOT_PRESENT_OFFSET, 10035 }, + { 0x3399, G_UNICODE_NOT_PRESENT_OFFSET, 10038 }, + { 0x339a, G_UNICODE_NOT_PRESENT_OFFSET, 10041 }, + { 0x339b, G_UNICODE_NOT_PRESENT_OFFSET, 10044 }, + { 0x339c, G_UNICODE_NOT_PRESENT_OFFSET, 10048 }, + { 0x339d, G_UNICODE_NOT_PRESENT_OFFSET, 10051 }, + { 0x339e, G_UNICODE_NOT_PRESENT_OFFSET, 10054 }, + { 0x339f, G_UNICODE_NOT_PRESENT_OFFSET, 10057 }, + { 0x33a0, G_UNICODE_NOT_PRESENT_OFFSET, 10061 }, + { 0x33a1, G_UNICODE_NOT_PRESENT_OFFSET, 10065 }, + { 0x33a2, G_UNICODE_NOT_PRESENT_OFFSET, 10068 }, + { 0x33a3, G_UNICODE_NOT_PRESENT_OFFSET, 10072 }, + { 0x33a4, G_UNICODE_NOT_PRESENT_OFFSET, 10076 }, + { 0x33a5, G_UNICODE_NOT_PRESENT_OFFSET, 10080 }, + { 0x33a6, G_UNICODE_NOT_PRESENT_OFFSET, 10083 }, + { 0x33a7, G_UNICODE_NOT_PRESENT_OFFSET, 10087 }, + { 0x33a8, G_UNICODE_NOT_PRESENT_OFFSET, 10093 }, + { 0x33a9, G_UNICODE_NOT_PRESENT_OFFSET, 10100 }, + { 0x33aa, G_UNICODE_NOT_PRESENT_OFFSET, 10103 }, + { 0x33ab, G_UNICODE_NOT_PRESENT_OFFSET, 10107 }, + { 0x33ac, G_UNICODE_NOT_PRESENT_OFFSET, 10111 }, + { 0x33ad, G_UNICODE_NOT_PRESENT_OFFSET, 10115 }, + { 0x33ae, G_UNICODE_NOT_PRESENT_OFFSET, 10119 }, + { 0x33af, G_UNICODE_NOT_PRESENT_OFFSET, 10127 }, + { 0x33b0, G_UNICODE_NOT_PRESENT_OFFSET, 10136 }, + { 0x33b1, G_UNICODE_NOT_PRESENT_OFFSET, 10139 }, + { 0x33b2, G_UNICODE_NOT_PRESENT_OFFSET, 10142 }, + { 0x33b3, G_UNICODE_NOT_PRESENT_OFFSET, 10146 }, + { 0x33b4, G_UNICODE_NOT_PRESENT_OFFSET, 10149 }, + { 0x33b5, G_UNICODE_NOT_PRESENT_OFFSET, 10152 }, + { 0x33b6, G_UNICODE_NOT_PRESENT_OFFSET, 10155 }, + { 0x33b7, G_UNICODE_NOT_PRESENT_OFFSET, 10159 }, + { 0x33b8, G_UNICODE_NOT_PRESENT_OFFSET, 10162 }, + { 0x33b9, G_UNICODE_NOT_PRESENT_OFFSET, 10165 }, + { 0x33ba, G_UNICODE_NOT_PRESENT_OFFSET, 10168 }, + { 0x33bb, G_UNICODE_NOT_PRESENT_OFFSET, 10171 }, + { 0x33bc, G_UNICODE_NOT_PRESENT_OFFSET, 10174 }, + { 0x33bd, G_UNICODE_NOT_PRESENT_OFFSET, 10178 }, + { 0x33be, G_UNICODE_NOT_PRESENT_OFFSET, 10181 }, + { 0x33bf, G_UNICODE_NOT_PRESENT_OFFSET, 10184 }, + { 0x33c0, G_UNICODE_NOT_PRESENT_OFFSET, 10187 }, + { 0x33c1, G_UNICODE_NOT_PRESENT_OFFSET, 10191 }, + { 0x33c2, G_UNICODE_NOT_PRESENT_OFFSET, 10195 }, + { 0x33c3, G_UNICODE_NOT_PRESENT_OFFSET, 10200 }, + { 0x33c4, G_UNICODE_NOT_PRESENT_OFFSET, 10203 }, + { 0x33c5, G_UNICODE_NOT_PRESENT_OFFSET, 10206 }, + { 0x33c6, G_UNICODE_NOT_PRESENT_OFFSET, 10209 }, + { 0x33c7, G_UNICODE_NOT_PRESENT_OFFSET, 10216 }, + { 0x33c8, G_UNICODE_NOT_PRESENT_OFFSET, 10220 }, + { 0x33c9, G_UNICODE_NOT_PRESENT_OFFSET, 10223 }, + { 0x33ca, G_UNICODE_NOT_PRESENT_OFFSET, 10226 }, + { 0x33cb, G_UNICODE_NOT_PRESENT_OFFSET, 10229 }, + { 0x33cc, G_UNICODE_NOT_PRESENT_OFFSET, 10232 }, + { 0x33cd, G_UNICODE_NOT_PRESENT_OFFSET, 10235 }, + { 0x33ce, G_UNICODE_NOT_PRESENT_OFFSET, 10238 }, + { 0x33cf, G_UNICODE_NOT_PRESENT_OFFSET, 10241 }, + { 0x33d0, G_UNICODE_NOT_PRESENT_OFFSET, 10244 }, + { 0x33d1, G_UNICODE_NOT_PRESENT_OFFSET, 10247 }, + { 0x33d2, G_UNICODE_NOT_PRESENT_OFFSET, 10250 }, + { 0x33d3, G_UNICODE_NOT_PRESENT_OFFSET, 10254 }, + { 0x33d4, G_UNICODE_NOT_PRESENT_OFFSET, 10257 }, + { 0x33d5, G_UNICODE_NOT_PRESENT_OFFSET, 10260 }, + { 0x33d6, G_UNICODE_NOT_PRESENT_OFFSET, 10264 }, + { 0x33d7, G_UNICODE_NOT_PRESENT_OFFSET, 10268 }, + { 0x33d8, G_UNICODE_NOT_PRESENT_OFFSET, 10271 }, + { 0x33d9, G_UNICODE_NOT_PRESENT_OFFSET, 10276 }, + { 0x33da, G_UNICODE_NOT_PRESENT_OFFSET, 10280 }, + { 0x33db, G_UNICODE_NOT_PRESENT_OFFSET, 10283 }, + { 0x33dc, G_UNICODE_NOT_PRESENT_OFFSET, 10286 }, + { 0x33dd, G_UNICODE_NOT_PRESENT_OFFSET, 10289 }, + { 0x33e0, G_UNICODE_NOT_PRESENT_OFFSET, 10292 }, + { 0x33e1, G_UNICODE_NOT_PRESENT_OFFSET, 10297 }, + { 0x33e2, G_UNICODE_NOT_PRESENT_OFFSET, 10302 }, + { 0x33e3, G_UNICODE_NOT_PRESENT_OFFSET, 10307 }, + { 0x33e4, G_UNICODE_NOT_PRESENT_OFFSET, 10312 }, + { 0x33e5, G_UNICODE_NOT_PRESENT_OFFSET, 10317 }, + { 0x33e6, G_UNICODE_NOT_PRESENT_OFFSET, 10322 }, + { 0x33e7, G_UNICODE_NOT_PRESENT_OFFSET, 10327 }, + { 0x33e8, G_UNICODE_NOT_PRESENT_OFFSET, 10332 }, + { 0x33e9, G_UNICODE_NOT_PRESENT_OFFSET, 10337 }, + { 0x33ea, G_UNICODE_NOT_PRESENT_OFFSET, 10343 }, + { 0x33eb, G_UNICODE_NOT_PRESENT_OFFSET, 10349 }, + { 0x33ec, G_UNICODE_NOT_PRESENT_OFFSET, 10355 }, + { 0x33ed, G_UNICODE_NOT_PRESENT_OFFSET, 10361 }, + { 0x33ee, G_UNICODE_NOT_PRESENT_OFFSET, 10367 }, + { 0x33ef, G_UNICODE_NOT_PRESENT_OFFSET, 10373 }, + { 0x33f0, G_UNICODE_NOT_PRESENT_OFFSET, 10379 }, + { 0x33f1, G_UNICODE_NOT_PRESENT_OFFSET, 10385 }, + { 0x33f2, G_UNICODE_NOT_PRESENT_OFFSET, 10391 }, + { 0x33f3, G_UNICODE_NOT_PRESENT_OFFSET, 10397 }, + { 0x33f4, G_UNICODE_NOT_PRESENT_OFFSET, 10403 }, + { 0x33f5, G_UNICODE_NOT_PRESENT_OFFSET, 10409 }, + { 0x33f6, G_UNICODE_NOT_PRESENT_OFFSET, 10415 }, + { 0x33f7, G_UNICODE_NOT_PRESENT_OFFSET, 10421 }, + { 0x33f8, G_UNICODE_NOT_PRESENT_OFFSET, 10427 }, + { 0x33f9, G_UNICODE_NOT_PRESENT_OFFSET, 10433 }, + { 0x33fa, G_UNICODE_NOT_PRESENT_OFFSET, 10439 }, + { 0x33fb, G_UNICODE_NOT_PRESENT_OFFSET, 10445 }, + { 0x33fc, G_UNICODE_NOT_PRESENT_OFFSET, 10451 }, + { 0x33fd, G_UNICODE_NOT_PRESENT_OFFSET, 10457 }, + { 0x33fe, G_UNICODE_NOT_PRESENT_OFFSET, 10463 }, + { 0xf900, 10469, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf901, 10473, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf902, 6535, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf903, 10477, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf904, 10481, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf905, 10485, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf906, 10489, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf907, 6751, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf908, 6751, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf909, 10493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90a, 6567, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90b, 10497, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90c, 10501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90d, 10505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90e, 10509, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf90f, 10513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf910, 10517, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf911, 10521, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf912, 10525, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf913, 10529, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf914, 10533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf915, 10537, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf916, 10541, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf917, 10545, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf918, 10549, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf919, 10553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91a, 10557, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91b, 10561, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91c, 10565, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91d, 10569, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91e, 10573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf91f, 10577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf920, 10581, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf921, 10585, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf922, 10589, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf923, 10593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf924, 10597, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf925, 10601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf926, 10605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf927, 10609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf928, 10613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf929, 10617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92a, 10621, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92b, 10625, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92c, 10629, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92d, 10633, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92e, 10637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf92f, 10641, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf930, 10645, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf931, 10649, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf932, 10653, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf933, 10657, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf934, 6399, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf935, 10661, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf936, 10665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf937, 10669, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf938, 10673, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf939, 10677, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93a, 10681, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93b, 10685, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93c, 10689, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93d, 10693, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93e, 10697, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf93f, 10701, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf940, 6691, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf941, 10705, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf942, 10709, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf943, 10713, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf944, 10717, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf945, 10721, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf946, 10725, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf947, 10729, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf948, 10733, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf949, 10737, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94a, 10741, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94b, 10745, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94c, 10749, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94d, 10753, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94e, 10757, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf94f, 10761, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf950, 10765, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf951, 10769, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf952, 10773, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf953, 10777, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf954, 10781, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf955, 10785, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf956, 10789, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf957, 10793, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf958, 10797, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf959, 10801, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95a, 10805, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95b, 10809, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95c, 10533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95d, 10813, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95e, 10817, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf95f, 10821, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf960, 10825, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf961, 10829, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf962, 10833, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf963, 10837, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf964, 10841, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf965, 10845, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf966, 10849, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf967, 10853, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf968, 10857, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf969, 10861, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96a, 10865, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96b, 10869, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96c, 10873, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96d, 10877, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96e, 10881, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf96f, 10885, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf970, 10889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf971, 6543, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf972, 10893, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf973, 10897, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf974, 10901, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf975, 10905, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf976, 10909, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf977, 10913, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf978, 10917, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf979, 10921, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97a, 10925, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97b, 10929, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97c, 10933, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97d, 10937, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97e, 10941, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf97f, 10945, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf980, 10949, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf981, 6051, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf982, 10953, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf983, 10957, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf984, 10961, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf985, 10965, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf986, 10969, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf987, 10973, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf988, 10977, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf989, 10981, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98a, 5975, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98b, 10985, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98c, 10989, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98d, 10993, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98e, 10997, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf98f, 11001, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf990, 11005, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf991, 11009, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf992, 11013, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf993, 11017, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf994, 11021, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf995, 11025, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf996, 11029, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf997, 11033, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf998, 11037, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf999, 11041, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99a, 11045, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99b, 11049, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99c, 11053, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99d, 11057, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99e, 11061, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf99f, 11065, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a0, 11069, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a1, 10885, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a2, 11073, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a3, 11077, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a4, 11081, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a5, 11085, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a6, 11089, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a7, 11093, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a8, 11097, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9a9, 11101, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9aa, 10821, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ab, 11105, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ac, 11109, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ad, 11113, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ae, 11117, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9af, 11121, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b0, 11125, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b1, 11129, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b2, 11133, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b3, 11137, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b4, 11141, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b5, 11145, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b6, 11149, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b7, 11153, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b8, 11157, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9b9, 11161, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ba, 11165, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9bb, 11169, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9bc, 11173, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9bd, 11177, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9be, 11181, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9bf, 10533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c0, 11185, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c1, 11189, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c2, 11193, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c3, 11197, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c4, 6747, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c5, 11201, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c6, 11205, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c7, 11209, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c8, 11213, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9c9, 11217, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ca, 11221, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9cb, 11225, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9cc, 11229, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9cd, 11233, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ce, 11237, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9cf, 11241, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d0, 11245, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d1, 8199, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d2, 11249, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d3, 11253, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d4, 11257, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d5, 11261, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d6, 11265, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d7, 11269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d8, 11273, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9d9, 11277, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9da, 11281, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9db, 10829, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9dc, 11285, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9dd, 11289, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9de, 11293, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9df, 11297, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e0, 11301, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e1, 11305, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e2, 11309, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e3, 11313, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e4, 11317, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e5, 11321, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e6, 11325, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e7, 11329, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e8, 11333, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9e9, 6563, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ea, 11337, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9eb, 11341, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ec, 11345, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ed, 11349, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ee, 11353, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ef, 11357, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f0, 11361, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f1, 11365, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f2, 11369, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f3, 11373, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f4, 11377, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f5, 11381, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f6, 11385, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f7, 6367, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f8, 11389, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9f9, 11393, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9fa, 11397, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9fb, 11401, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9fc, 11405, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9fd, 11409, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9fe, 11413, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xf9ff, 11417, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa00, 11421, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa01, 11425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa02, 11429, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa03, 11433, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa04, 11437, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa05, 11441, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa06, 11445, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa07, 11449, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa08, 6475, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa09, 11453, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa0a, 6487, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa0b, 11457, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa0c, 11461, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa0d, 11465, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa10, 11469, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa12, 11473, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa15, 11477, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa16, 11481, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa17, 11485, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa18, 11489, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa19, 11493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa1a, 11497, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa1b, 11501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa1c, 11505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa1d, 11509, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa1e, 6395, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa20, 11513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa22, 11517, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa25, 11521, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa26, 11525, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa2a, 11529, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa2b, 11533, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa2c, 11537, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa2d, 11541, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa30, 11545, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa31, 11549, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa32, 11553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa33, 11557, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa34, 11561, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa35, 11565, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa36, 11569, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa37, 11573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa38, 11577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa39, 11581, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3a, 11585, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3b, 11589, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3c, 6079, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3d, 11593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3e, 11597, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa3f, 11601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa40, 11605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa41, 11609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa42, 11613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa43, 11617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa44, 11621, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa45, 11625, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa46, 11629, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa47, 11633, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa48, 11637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa49, 11641, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4a, 11645, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4b, 11649, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4c, 8219, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4d, 11653, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4e, 11657, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa4f, 11661, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa50, 11665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa51, 8235, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa52, 11669, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa53, 11673, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa54, 11677, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa55, 11681, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa56, 11685, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa57, 11029, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa58, 11689, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa59, 11693, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5a, 11697, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5b, 11701, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5c, 11705, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5d, 11709, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5e, 11709, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa5f, 11713, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa60, 11717, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa61, 11721, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa62, 11725, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa63, 11729, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa64, 11733, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa65, 11737, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa66, 11741, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa67, 11521, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa68, 11745, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa69, 11749, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfa6a, 11753, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb00, G_UNICODE_NOT_PRESENT_OFFSET, 11757 }, + { 0xfb01, G_UNICODE_NOT_PRESENT_OFFSET, 11760 }, + { 0xfb02, G_UNICODE_NOT_PRESENT_OFFSET, 11763 }, + { 0xfb03, G_UNICODE_NOT_PRESENT_OFFSET, 11766 }, + { 0xfb04, G_UNICODE_NOT_PRESENT_OFFSET, 11770 }, + { 0xfb05, G_UNICODE_NOT_PRESENT_OFFSET, 11774 }, + { 0xfb06, G_UNICODE_NOT_PRESENT_OFFSET, 11774 }, + { 0xfb13, G_UNICODE_NOT_PRESENT_OFFSET, 11777 }, + { 0xfb14, G_UNICODE_NOT_PRESENT_OFFSET, 11782 }, + { 0xfb15, G_UNICODE_NOT_PRESENT_OFFSET, 11787 }, + { 0xfb16, G_UNICODE_NOT_PRESENT_OFFSET, 11792 }, + { 0xfb17, G_UNICODE_NOT_PRESENT_OFFSET, 11797 }, + { 0xfb1d, 11802, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb1f, 11807, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb20, G_UNICODE_NOT_PRESENT_OFFSET, 11812 }, + { 0xfb21, G_UNICODE_NOT_PRESENT_OFFSET, 5052 }, + { 0xfb22, G_UNICODE_NOT_PRESENT_OFFSET, 5061 }, + { 0xfb23, G_UNICODE_NOT_PRESENT_OFFSET, 11815 }, + { 0xfb24, G_UNICODE_NOT_PRESENT_OFFSET, 11818 }, + { 0xfb25, G_UNICODE_NOT_PRESENT_OFFSET, 11821 }, + { 0xfb26, G_UNICODE_NOT_PRESENT_OFFSET, 11824 }, + { 0xfb27, G_UNICODE_NOT_PRESENT_OFFSET, 11827 }, + { 0xfb28, G_UNICODE_NOT_PRESENT_OFFSET, 11830 }, + { 0xfb29, G_UNICODE_NOT_PRESENT_OFFSET, 4957 }, + { 0xfb2a, 11833, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb2b, 11838, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb2c, 11843, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb2d, 11850, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb2e, 11857, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb2f, 11862, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb30, 11867, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb31, 11872, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb32, 11877, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb33, 11882, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb34, 11887, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb35, 11892, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb36, 11897, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb38, 11902, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb39, 11907, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb3a, 11912, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb3b, 11917, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb3c, 11922, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb3e, 11927, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb40, 11932, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb41, 11937, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb43, 11942, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb44, 11947, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb46, 11952, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb47, 11957, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb48, 11962, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb49, 11967, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4a, 11972, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4b, 11977, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4c, 11982, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4d, 11987, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4e, 11992, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0xfb4f, G_UNICODE_NOT_PRESENT_OFFSET, 11997 }, + { 0xfb50, G_UNICODE_NOT_PRESENT_OFFSET, 12002 }, + { 0xfb51, G_UNICODE_NOT_PRESENT_OFFSET, 12002 }, + { 0xfb52, G_UNICODE_NOT_PRESENT_OFFSET, 12005 }, + { 0xfb53, G_UNICODE_NOT_PRESENT_OFFSET, 12005 }, + { 0xfb54, G_UNICODE_NOT_PRESENT_OFFSET, 12005 }, + { 0xfb55, G_UNICODE_NOT_PRESENT_OFFSET, 12005 }, + { 0xfb56, G_UNICODE_NOT_PRESENT_OFFSET, 12008 }, + { 0xfb57, G_UNICODE_NOT_PRESENT_OFFSET, 12008 }, + { 0xfb58, G_UNICODE_NOT_PRESENT_OFFSET, 12008 }, + { 0xfb59, G_UNICODE_NOT_PRESENT_OFFSET, 12008 }, + { 0xfb5a, G_UNICODE_NOT_PRESENT_OFFSET, 12011 }, + { 0xfb5b, G_UNICODE_NOT_PRESENT_OFFSET, 12011 }, + { 0xfb5c, G_UNICODE_NOT_PRESENT_OFFSET, 12011 }, + { 0xfb5d, G_UNICODE_NOT_PRESENT_OFFSET, 12011 }, + { 0xfb5e, G_UNICODE_NOT_PRESENT_OFFSET, 12014 }, + { 0xfb5f, G_UNICODE_NOT_PRESENT_OFFSET, 12014 }, + { 0xfb60, G_UNICODE_NOT_PRESENT_OFFSET, 12014 }, + { 0xfb61, G_UNICODE_NOT_PRESENT_OFFSET, 12014 }, + { 0xfb62, G_UNICODE_NOT_PRESENT_OFFSET, 12017 }, + { 0xfb63, G_UNICODE_NOT_PRESENT_OFFSET, 12017 }, + { 0xfb64, G_UNICODE_NOT_PRESENT_OFFSET, 12017 }, + { 0xfb65, G_UNICODE_NOT_PRESENT_OFFSET, 12017 }, + { 0xfb66, G_UNICODE_NOT_PRESENT_OFFSET, 12020 }, + { 0xfb67, G_UNICODE_NOT_PRESENT_OFFSET, 12020 }, + { 0xfb68, G_UNICODE_NOT_PRESENT_OFFSET, 12020 }, + { 0xfb69, G_UNICODE_NOT_PRESENT_OFFSET, 12020 }, + { 0xfb6a, G_UNICODE_NOT_PRESENT_OFFSET, 12023 }, + { 0xfb6b, G_UNICODE_NOT_PRESENT_OFFSET, 12023 }, + { 0xfb6c, G_UNICODE_NOT_PRESENT_OFFSET, 12023 }, + { 0xfb6d, G_UNICODE_NOT_PRESENT_OFFSET, 12023 }, + { 0xfb6e, G_UNICODE_NOT_PRESENT_OFFSET, 12026 }, + { 0xfb6f, G_UNICODE_NOT_PRESENT_OFFSET, 12026 }, + { 0xfb70, G_UNICODE_NOT_PRESENT_OFFSET, 12026 }, + { 0xfb71, G_UNICODE_NOT_PRESENT_OFFSET, 12026 }, + { 0xfb72, G_UNICODE_NOT_PRESENT_OFFSET, 12029 }, + { 0xfb73, G_UNICODE_NOT_PRESENT_OFFSET, 12029 }, + { 0xfb74, G_UNICODE_NOT_PRESENT_OFFSET, 12029 }, + { 0xfb75, G_UNICODE_NOT_PRESENT_OFFSET, 12029 }, + { 0xfb76, G_UNICODE_NOT_PRESENT_OFFSET, 12032 }, + { 0xfb77, G_UNICODE_NOT_PRESENT_OFFSET, 12032 }, + { 0xfb78, G_UNICODE_NOT_PRESENT_OFFSET, 12032 }, + { 0xfb79, G_UNICODE_NOT_PRESENT_OFFSET, 12032 }, + { 0xfb7a, G_UNICODE_NOT_PRESENT_OFFSET, 12035 }, + { 0xfb7b, G_UNICODE_NOT_PRESENT_OFFSET, 12035 }, + { 0xfb7c, G_UNICODE_NOT_PRESENT_OFFSET, 12035 }, + { 0xfb7d, G_UNICODE_NOT_PRESENT_OFFSET, 12035 }, + { 0xfb7e, G_UNICODE_NOT_PRESENT_OFFSET, 12038 }, + { 0xfb7f, G_UNICODE_NOT_PRESENT_OFFSET, 12038 }, + { 0xfb80, G_UNICODE_NOT_PRESENT_OFFSET, 12038 }, + { 0xfb81, G_UNICODE_NOT_PRESENT_OFFSET, 12038 }, + { 0xfb82, G_UNICODE_NOT_PRESENT_OFFSET, 12041 }, + { 0xfb83, G_UNICODE_NOT_PRESENT_OFFSET, 12041 }, + { 0xfb84, G_UNICODE_NOT_PRESENT_OFFSET, 12044 }, + { 0xfb85, G_UNICODE_NOT_PRESENT_OFFSET, 12044 }, + { 0xfb86, G_UNICODE_NOT_PRESENT_OFFSET, 12047 }, + { 0xfb87, G_UNICODE_NOT_PRESENT_OFFSET, 12047 }, + { 0xfb88, G_UNICODE_NOT_PRESENT_OFFSET, 12050 }, + { 0xfb89, G_UNICODE_NOT_PRESENT_OFFSET, 12050 }, + { 0xfb8a, G_UNICODE_NOT_PRESENT_OFFSET, 12053 }, + { 0xfb8b, G_UNICODE_NOT_PRESENT_OFFSET, 12053 }, + { 0xfb8c, G_UNICODE_NOT_PRESENT_OFFSET, 12056 }, + { 0xfb8d, G_UNICODE_NOT_PRESENT_OFFSET, 12056 }, + { 0xfb8e, G_UNICODE_NOT_PRESENT_OFFSET, 12059 }, + { 0xfb8f, G_UNICODE_NOT_PRESENT_OFFSET, 12059 }, + { 0xfb90, G_UNICODE_NOT_PRESENT_OFFSET, 12059 }, + { 0xfb91, G_UNICODE_NOT_PRESENT_OFFSET, 12059 }, + { 0xfb92, G_UNICODE_NOT_PRESENT_OFFSET, 12062 }, + { 0xfb93, G_UNICODE_NOT_PRESENT_OFFSET, 12062 }, + { 0xfb94, G_UNICODE_NOT_PRESENT_OFFSET, 12062 }, + { 0xfb95, G_UNICODE_NOT_PRESENT_OFFSET, 12062 }, + { 0xfb96, G_UNICODE_NOT_PRESENT_OFFSET, 12065 }, + { 0xfb97, G_UNICODE_NOT_PRESENT_OFFSET, 12065 }, + { 0xfb98, G_UNICODE_NOT_PRESENT_OFFSET, 12065 }, + { 0xfb99, G_UNICODE_NOT_PRESENT_OFFSET, 12065 }, + { 0xfb9a, G_UNICODE_NOT_PRESENT_OFFSET, 12068 }, + { 0xfb9b, G_UNICODE_NOT_PRESENT_OFFSET, 12068 }, + { 0xfb9c, G_UNICODE_NOT_PRESENT_OFFSET, 12068 }, + { 0xfb9d, G_UNICODE_NOT_PRESENT_OFFSET, 12068 }, + { 0xfb9e, G_UNICODE_NOT_PRESENT_OFFSET, 12071 }, + { 0xfb9f, G_UNICODE_NOT_PRESENT_OFFSET, 12071 }, + { 0xfba0, G_UNICODE_NOT_PRESENT_OFFSET, 12074 }, + { 0xfba1, G_UNICODE_NOT_PRESENT_OFFSET, 12074 }, + { 0xfba2, G_UNICODE_NOT_PRESENT_OFFSET, 12074 }, + { 0xfba3, G_UNICODE_NOT_PRESENT_OFFSET, 12074 }, + { 0xfba4, G_UNICODE_NOT_PRESENT_OFFSET, 1718 }, + { 0xfba5, G_UNICODE_NOT_PRESENT_OFFSET, 1718 }, + { 0xfba6, G_UNICODE_NOT_PRESENT_OFFSET, 12077 }, + { 0xfba7, G_UNICODE_NOT_PRESENT_OFFSET, 12077 }, + { 0xfba8, G_UNICODE_NOT_PRESENT_OFFSET, 12077 }, + { 0xfba9, G_UNICODE_NOT_PRESENT_OFFSET, 12077 }, + { 0xfbaa, G_UNICODE_NOT_PRESENT_OFFSET, 12080 }, + { 0xfbab, G_UNICODE_NOT_PRESENT_OFFSET, 12080 }, + { 0xfbac, G_UNICODE_NOT_PRESENT_OFFSET, 12080 }, + { 0xfbad, G_UNICODE_NOT_PRESENT_OFFSET, 12080 }, + { 0xfbae, G_UNICODE_NOT_PRESENT_OFFSET, 12083 }, + { 0xfbaf, G_UNICODE_NOT_PRESENT_OFFSET, 12083 }, + { 0xfbb0, G_UNICODE_NOT_PRESENT_OFFSET, 1728 }, + { 0xfbb1, G_UNICODE_NOT_PRESENT_OFFSET, 1728 }, + { 0xfbd3, G_UNICODE_NOT_PRESENT_OFFSET, 12086 }, + { 0xfbd4, G_UNICODE_NOT_PRESENT_OFFSET, 12086 }, + { 0xfbd5, G_UNICODE_NOT_PRESENT_OFFSET, 12086 }, + { 0xfbd6, G_UNICODE_NOT_PRESENT_OFFSET, 12086 }, + { 0xfbd7, G_UNICODE_NOT_PRESENT_OFFSET, 12089 }, + { 0xfbd8, G_UNICODE_NOT_PRESENT_OFFSET, 12089 }, + { 0xfbd9, G_UNICODE_NOT_PRESENT_OFFSET, 12092 }, + { 0xfbda, G_UNICODE_NOT_PRESENT_OFFSET, 12092 }, + { 0xfbdb, G_UNICODE_NOT_PRESENT_OFFSET, 12095 }, + { 0xfbdc, G_UNICODE_NOT_PRESENT_OFFSET, 12095 }, + { 0xfbdd, G_UNICODE_NOT_PRESENT_OFFSET, 1708 }, + { 0xfbde, G_UNICODE_NOT_PRESENT_OFFSET, 12098 }, + { 0xfbdf, G_UNICODE_NOT_PRESENT_OFFSET, 12098 }, + { 0xfbe0, G_UNICODE_NOT_PRESENT_OFFSET, 12101 }, + { 0xfbe1, G_UNICODE_NOT_PRESENT_OFFSET, 12101 }, + { 0xfbe2, G_UNICODE_NOT_PRESENT_OFFSET, 12104 }, + { 0xfbe3, G_UNICODE_NOT_PRESENT_OFFSET, 12104 }, + { 0xfbe4, G_UNICODE_NOT_PRESENT_OFFSET, 12107 }, + { 0xfbe5, G_UNICODE_NOT_PRESENT_OFFSET, 12107 }, + { 0xfbe6, G_UNICODE_NOT_PRESENT_OFFSET, 12107 }, + { 0xfbe7, G_UNICODE_NOT_PRESENT_OFFSET, 12107 }, + { 0xfbe8, G_UNICODE_NOT_PRESENT_OFFSET, 12110 }, + { 0xfbe9, G_UNICODE_NOT_PRESENT_OFFSET, 12110 }, + { 0xfbea, G_UNICODE_NOT_PRESENT_OFFSET, 12113 }, + { 0xfbeb, G_UNICODE_NOT_PRESENT_OFFSET, 12113 }, + { 0xfbec, G_UNICODE_NOT_PRESENT_OFFSET, 12120 }, + { 0xfbed, G_UNICODE_NOT_PRESENT_OFFSET, 12120 }, + { 0xfbee, G_UNICODE_NOT_PRESENT_OFFSET, 12127 }, + { 0xfbef, G_UNICODE_NOT_PRESENT_OFFSET, 12127 }, + { 0xfbf0, G_UNICODE_NOT_PRESENT_OFFSET, 12134 }, + { 0xfbf1, G_UNICODE_NOT_PRESENT_OFFSET, 12134 }, + { 0xfbf2, G_UNICODE_NOT_PRESENT_OFFSET, 12141 }, + { 0xfbf3, G_UNICODE_NOT_PRESENT_OFFSET, 12141 }, + { 0xfbf4, G_UNICODE_NOT_PRESENT_OFFSET, 12148 }, + { 0xfbf5, G_UNICODE_NOT_PRESENT_OFFSET, 12148 }, + { 0xfbf6, G_UNICODE_NOT_PRESENT_OFFSET, 12155 }, + { 0xfbf7, G_UNICODE_NOT_PRESENT_OFFSET, 12155 }, + { 0xfbf8, G_UNICODE_NOT_PRESENT_OFFSET, 12155 }, + { 0xfbf9, G_UNICODE_NOT_PRESENT_OFFSET, 12162 }, + { 0xfbfa, G_UNICODE_NOT_PRESENT_OFFSET, 12162 }, + { 0xfbfb, G_UNICODE_NOT_PRESENT_OFFSET, 12162 }, + { 0xfbfc, G_UNICODE_NOT_PRESENT_OFFSET, 12169 }, + { 0xfbfd, G_UNICODE_NOT_PRESENT_OFFSET, 12169 }, + { 0xfbfe, G_UNICODE_NOT_PRESENT_OFFSET, 12169 }, + { 0xfbff, G_UNICODE_NOT_PRESENT_OFFSET, 12169 }, + { 0xfc00, G_UNICODE_NOT_PRESENT_OFFSET, 12172 }, + { 0xfc01, G_UNICODE_NOT_PRESENT_OFFSET, 12179 }, + { 0xfc02, G_UNICODE_NOT_PRESENT_OFFSET, 12186 }, + { 0xfc03, G_UNICODE_NOT_PRESENT_OFFSET, 12162 }, + { 0xfc04, G_UNICODE_NOT_PRESENT_OFFSET, 12193 }, + { 0xfc05, G_UNICODE_NOT_PRESENT_OFFSET, 12200 }, + { 0xfc06, G_UNICODE_NOT_PRESENT_OFFSET, 12205 }, + { 0xfc07, G_UNICODE_NOT_PRESENT_OFFSET, 12210 }, + { 0xfc08, G_UNICODE_NOT_PRESENT_OFFSET, 12215 }, + { 0xfc09, G_UNICODE_NOT_PRESENT_OFFSET, 12220 }, + { 0xfc0a, G_UNICODE_NOT_PRESENT_OFFSET, 12225 }, + { 0xfc0b, G_UNICODE_NOT_PRESENT_OFFSET, 12230 }, + { 0xfc0c, G_UNICODE_NOT_PRESENT_OFFSET, 12235 }, + { 0xfc0d, G_UNICODE_NOT_PRESENT_OFFSET, 12240 }, + { 0xfc0e, G_UNICODE_NOT_PRESENT_OFFSET, 12245 }, + { 0xfc0f, G_UNICODE_NOT_PRESENT_OFFSET, 12250 }, + { 0xfc10, G_UNICODE_NOT_PRESENT_OFFSET, 12255 }, + { 0xfc11, G_UNICODE_NOT_PRESENT_OFFSET, 12260 }, + { 0xfc12, G_UNICODE_NOT_PRESENT_OFFSET, 12265 }, + { 0xfc13, G_UNICODE_NOT_PRESENT_OFFSET, 12270 }, + { 0xfc14, G_UNICODE_NOT_PRESENT_OFFSET, 12275 }, + { 0xfc15, G_UNICODE_NOT_PRESENT_OFFSET, 12280 }, + { 0xfc16, G_UNICODE_NOT_PRESENT_OFFSET, 12285 }, + { 0xfc17, G_UNICODE_NOT_PRESENT_OFFSET, 12290 }, + { 0xfc18, G_UNICODE_NOT_PRESENT_OFFSET, 12295 }, + { 0xfc19, G_UNICODE_NOT_PRESENT_OFFSET, 12300 }, + { 0xfc1a, G_UNICODE_NOT_PRESENT_OFFSET, 12305 }, + { 0xfc1b, G_UNICODE_NOT_PRESENT_OFFSET, 12310 }, + { 0xfc1c, G_UNICODE_NOT_PRESENT_OFFSET, 12315 }, + { 0xfc1d, G_UNICODE_NOT_PRESENT_OFFSET, 12320 }, + { 0xfc1e, G_UNICODE_NOT_PRESENT_OFFSET, 12325 }, + { 0xfc1f, G_UNICODE_NOT_PRESENT_OFFSET, 12330 }, + { 0xfc20, G_UNICODE_NOT_PRESENT_OFFSET, 12335 }, + { 0xfc21, G_UNICODE_NOT_PRESENT_OFFSET, 12340 }, + { 0xfc22, G_UNICODE_NOT_PRESENT_OFFSET, 12345 }, + { 0xfc23, G_UNICODE_NOT_PRESENT_OFFSET, 12350 }, + { 0xfc24, G_UNICODE_NOT_PRESENT_OFFSET, 12355 }, + { 0xfc25, G_UNICODE_NOT_PRESENT_OFFSET, 12360 }, + { 0xfc26, G_UNICODE_NOT_PRESENT_OFFSET, 12365 }, + { 0xfc27, G_UNICODE_NOT_PRESENT_OFFSET, 12370 }, + { 0xfc28, G_UNICODE_NOT_PRESENT_OFFSET, 12375 }, + { 0xfc29, G_UNICODE_NOT_PRESENT_OFFSET, 12380 }, + { 0xfc2a, G_UNICODE_NOT_PRESENT_OFFSET, 12385 }, + { 0xfc2b, G_UNICODE_NOT_PRESENT_OFFSET, 12390 }, + { 0xfc2c, G_UNICODE_NOT_PRESENT_OFFSET, 12395 }, + { 0xfc2d, G_UNICODE_NOT_PRESENT_OFFSET, 12400 }, + { 0xfc2e, G_UNICODE_NOT_PRESENT_OFFSET, 12405 }, + { 0xfc2f, G_UNICODE_NOT_PRESENT_OFFSET, 12410 }, + { 0xfc30, G_UNICODE_NOT_PRESENT_OFFSET, 12415 }, + { 0xfc31, G_UNICODE_NOT_PRESENT_OFFSET, 12420 }, + { 0xfc32, G_UNICODE_NOT_PRESENT_OFFSET, 12425 }, + { 0xfc33, G_UNICODE_NOT_PRESENT_OFFSET, 12430 }, + { 0xfc34, G_UNICODE_NOT_PRESENT_OFFSET, 12435 }, + { 0xfc35, G_UNICODE_NOT_PRESENT_OFFSET, 12440 }, + { 0xfc36, G_UNICODE_NOT_PRESENT_OFFSET, 12445 }, + { 0xfc37, G_UNICODE_NOT_PRESENT_OFFSET, 12450 }, + { 0xfc38, G_UNICODE_NOT_PRESENT_OFFSET, 12455 }, + { 0xfc39, G_UNICODE_NOT_PRESENT_OFFSET, 12460 }, + { 0xfc3a, G_UNICODE_NOT_PRESENT_OFFSET, 12465 }, + { 0xfc3b, G_UNICODE_NOT_PRESENT_OFFSET, 12470 }, + { 0xfc3c, G_UNICODE_NOT_PRESENT_OFFSET, 12475 }, + { 0xfc3d, G_UNICODE_NOT_PRESENT_OFFSET, 12480 }, + { 0xfc3e, G_UNICODE_NOT_PRESENT_OFFSET, 12485 }, + { 0xfc3f, G_UNICODE_NOT_PRESENT_OFFSET, 12490 }, + { 0xfc40, G_UNICODE_NOT_PRESENT_OFFSET, 12495 }, + { 0xfc41, G_UNICODE_NOT_PRESENT_OFFSET, 12500 }, + { 0xfc42, G_UNICODE_NOT_PRESENT_OFFSET, 12505 }, + { 0xfc43, G_UNICODE_NOT_PRESENT_OFFSET, 12510 }, + { 0xfc44, G_UNICODE_NOT_PRESENT_OFFSET, 12515 }, + { 0xfc45, G_UNICODE_NOT_PRESENT_OFFSET, 12520 }, + { 0xfc46, G_UNICODE_NOT_PRESENT_OFFSET, 12525 }, + { 0xfc47, G_UNICODE_NOT_PRESENT_OFFSET, 12530 }, + { 0xfc48, G_UNICODE_NOT_PRESENT_OFFSET, 12535 }, + { 0xfc49, G_UNICODE_NOT_PRESENT_OFFSET, 12540 }, + { 0xfc4a, G_UNICODE_NOT_PRESENT_OFFSET, 12545 }, + { 0xfc4b, G_UNICODE_NOT_PRESENT_OFFSET, 12550 }, + { 0xfc4c, G_UNICODE_NOT_PRESENT_OFFSET, 12555 }, + { 0xfc4d, G_UNICODE_NOT_PRESENT_OFFSET, 12560 }, + { 0xfc4e, G_UNICODE_NOT_PRESENT_OFFSET, 12565 }, + { 0xfc4f, G_UNICODE_NOT_PRESENT_OFFSET, 12570 }, + { 0xfc50, G_UNICODE_NOT_PRESENT_OFFSET, 12575 }, + { 0xfc51, G_UNICODE_NOT_PRESENT_OFFSET, 12580 }, + { 0xfc52, G_UNICODE_NOT_PRESENT_OFFSET, 12585 }, + { 0xfc53, G_UNICODE_NOT_PRESENT_OFFSET, 12590 }, + { 0xfc54, G_UNICODE_NOT_PRESENT_OFFSET, 12595 }, + { 0xfc55, G_UNICODE_NOT_PRESENT_OFFSET, 12600 }, + { 0xfc56, G_UNICODE_NOT_PRESENT_OFFSET, 12605 }, + { 0xfc57, G_UNICODE_NOT_PRESENT_OFFSET, 12610 }, + { 0xfc58, G_UNICODE_NOT_PRESENT_OFFSET, 12615 }, + { 0xfc59, G_UNICODE_NOT_PRESENT_OFFSET, 12620 }, + { 0xfc5a, G_UNICODE_NOT_PRESENT_OFFSET, 12625 }, + { 0xfc5b, G_UNICODE_NOT_PRESENT_OFFSET, 12630 }, + { 0xfc5c, G_UNICODE_NOT_PRESENT_OFFSET, 12635 }, + { 0xfc5d, G_UNICODE_NOT_PRESENT_OFFSET, 12640 }, + { 0xfc5e, G_UNICODE_NOT_PRESENT_OFFSET, 12645 }, + { 0xfc5f, G_UNICODE_NOT_PRESENT_OFFSET, 12651 }, + { 0xfc60, G_UNICODE_NOT_PRESENT_OFFSET, 12657 }, + { 0xfc61, G_UNICODE_NOT_PRESENT_OFFSET, 12663 }, + { 0xfc62, G_UNICODE_NOT_PRESENT_OFFSET, 12669 }, + { 0xfc63, G_UNICODE_NOT_PRESENT_OFFSET, 12675 }, + { 0xfc64, G_UNICODE_NOT_PRESENT_OFFSET, 12681 }, + { 0xfc65, G_UNICODE_NOT_PRESENT_OFFSET, 12688 }, + { 0xfc66, G_UNICODE_NOT_PRESENT_OFFSET, 12186 }, + { 0xfc67, G_UNICODE_NOT_PRESENT_OFFSET, 12695 }, + { 0xfc68, G_UNICODE_NOT_PRESENT_OFFSET, 12162 }, + { 0xfc69, G_UNICODE_NOT_PRESENT_OFFSET, 12193 }, + { 0xfc6a, G_UNICODE_NOT_PRESENT_OFFSET, 12702 }, + { 0xfc6b, G_UNICODE_NOT_PRESENT_OFFSET, 12707 }, + { 0xfc6c, G_UNICODE_NOT_PRESENT_OFFSET, 12215 }, + { 0xfc6d, G_UNICODE_NOT_PRESENT_OFFSET, 12712 }, + { 0xfc6e, G_UNICODE_NOT_PRESENT_OFFSET, 12220 }, + { 0xfc6f, G_UNICODE_NOT_PRESENT_OFFSET, 12225 }, + { 0xfc70, G_UNICODE_NOT_PRESENT_OFFSET, 12717 }, + { 0xfc71, G_UNICODE_NOT_PRESENT_OFFSET, 12722 }, + { 0xfc72, G_UNICODE_NOT_PRESENT_OFFSET, 12245 }, + { 0xfc73, G_UNICODE_NOT_PRESENT_OFFSET, 12727 }, + { 0xfc74, G_UNICODE_NOT_PRESENT_OFFSET, 12250 }, + { 0xfc75, G_UNICODE_NOT_PRESENT_OFFSET, 12255 }, + { 0xfc76, G_UNICODE_NOT_PRESENT_OFFSET, 12732 }, + { 0xfc77, G_UNICODE_NOT_PRESENT_OFFSET, 12737 }, + { 0xfc78, G_UNICODE_NOT_PRESENT_OFFSET, 12265 }, + { 0xfc79, G_UNICODE_NOT_PRESENT_OFFSET, 12742 }, + { 0xfc7a, G_UNICODE_NOT_PRESENT_OFFSET, 12270 }, + { 0xfc7b, G_UNICODE_NOT_PRESENT_OFFSET, 12275 }, + { 0xfc7c, G_UNICODE_NOT_PRESENT_OFFSET, 12420 }, + { 0xfc7d, G_UNICODE_NOT_PRESENT_OFFSET, 12425 }, + { 0xfc7e, G_UNICODE_NOT_PRESENT_OFFSET, 12440 }, + { 0xfc7f, G_UNICODE_NOT_PRESENT_OFFSET, 12445 }, + { 0xfc80, G_UNICODE_NOT_PRESENT_OFFSET, 12450 }, + { 0xfc81, G_UNICODE_NOT_PRESENT_OFFSET, 12470 }, + { 0xfc82, G_UNICODE_NOT_PRESENT_OFFSET, 12475 }, + { 0xfc83, G_UNICODE_NOT_PRESENT_OFFSET, 12480 }, + { 0xfc84, G_UNICODE_NOT_PRESENT_OFFSET, 12485 }, + { 0xfc85, G_UNICODE_NOT_PRESENT_OFFSET, 12505 }, + { 0xfc86, G_UNICODE_NOT_PRESENT_OFFSET, 12510 }, + { 0xfc87, G_UNICODE_NOT_PRESENT_OFFSET, 12515 }, + { 0xfc88, G_UNICODE_NOT_PRESENT_OFFSET, 12747 }, + { 0xfc89, G_UNICODE_NOT_PRESENT_OFFSET, 12535 }, + { 0xfc8a, G_UNICODE_NOT_PRESENT_OFFSET, 12752 }, + { 0xfc8b, G_UNICODE_NOT_PRESENT_OFFSET, 12757 }, + { 0xfc8c, G_UNICODE_NOT_PRESENT_OFFSET, 12565 }, + { 0xfc8d, G_UNICODE_NOT_PRESENT_OFFSET, 12762 }, + { 0xfc8e, G_UNICODE_NOT_PRESENT_OFFSET, 12570 }, + { 0xfc8f, G_UNICODE_NOT_PRESENT_OFFSET, 12575 }, + { 0xfc90, G_UNICODE_NOT_PRESENT_OFFSET, 12640 }, + { 0xfc91, G_UNICODE_NOT_PRESENT_OFFSET, 12767 }, + { 0xfc92, G_UNICODE_NOT_PRESENT_OFFSET, 12772 }, + { 0xfc93, G_UNICODE_NOT_PRESENT_OFFSET, 12615 }, + { 0xfc94, G_UNICODE_NOT_PRESENT_OFFSET, 12777 }, + { 0xfc95, G_UNICODE_NOT_PRESENT_OFFSET, 12620 }, + { 0xfc96, G_UNICODE_NOT_PRESENT_OFFSET, 12625 }, + { 0xfc97, G_UNICODE_NOT_PRESENT_OFFSET, 12172 }, + { 0xfc98, G_UNICODE_NOT_PRESENT_OFFSET, 12179 }, + { 0xfc99, G_UNICODE_NOT_PRESENT_OFFSET, 12782 }, + { 0xfc9a, G_UNICODE_NOT_PRESENT_OFFSET, 12186 }, + { 0xfc9b, G_UNICODE_NOT_PRESENT_OFFSET, 12789 }, + { 0xfc9c, G_UNICODE_NOT_PRESENT_OFFSET, 12200 }, + { 0xfc9d, G_UNICODE_NOT_PRESENT_OFFSET, 12205 }, + { 0xfc9e, G_UNICODE_NOT_PRESENT_OFFSET, 12210 }, + { 0xfc9f, G_UNICODE_NOT_PRESENT_OFFSET, 12215 }, + { 0xfca0, G_UNICODE_NOT_PRESENT_OFFSET, 12796 }, + { 0xfca1, G_UNICODE_NOT_PRESENT_OFFSET, 12230 }, + { 0xfca2, G_UNICODE_NOT_PRESENT_OFFSET, 12235 }, + { 0xfca3, G_UNICODE_NOT_PRESENT_OFFSET, 12240 }, + { 0xfca4, G_UNICODE_NOT_PRESENT_OFFSET, 12245 }, + { 0xfca5, G_UNICODE_NOT_PRESENT_OFFSET, 12801 }, + { 0xfca6, G_UNICODE_NOT_PRESENT_OFFSET, 12265 }, + { 0xfca7, G_UNICODE_NOT_PRESENT_OFFSET, 12280 }, + { 0xfca8, G_UNICODE_NOT_PRESENT_OFFSET, 12285 }, + { 0xfca9, G_UNICODE_NOT_PRESENT_OFFSET, 12290 }, + { 0xfcaa, G_UNICODE_NOT_PRESENT_OFFSET, 12295 }, + { 0xfcab, G_UNICODE_NOT_PRESENT_OFFSET, 12300 }, + { 0xfcac, G_UNICODE_NOT_PRESENT_OFFSET, 12310 }, + { 0xfcad, G_UNICODE_NOT_PRESENT_OFFSET, 12315 }, + { 0xfcae, G_UNICODE_NOT_PRESENT_OFFSET, 12320 }, + { 0xfcaf, G_UNICODE_NOT_PRESENT_OFFSET, 12325 }, + { 0xfcb0, G_UNICODE_NOT_PRESENT_OFFSET, 12330 }, + { 0xfcb1, G_UNICODE_NOT_PRESENT_OFFSET, 12335 }, + { 0xfcb2, G_UNICODE_NOT_PRESENT_OFFSET, 12806 }, + { 0xfcb3, G_UNICODE_NOT_PRESENT_OFFSET, 12340 }, + { 0xfcb4, G_UNICODE_NOT_PRESENT_OFFSET, 12345 }, + { 0xfcb5, G_UNICODE_NOT_PRESENT_OFFSET, 12350 }, + { 0xfcb6, G_UNICODE_NOT_PRESENT_OFFSET, 12355 }, + { 0xfcb7, G_UNICODE_NOT_PRESENT_OFFSET, 12360 }, + { 0xfcb8, G_UNICODE_NOT_PRESENT_OFFSET, 12365 }, + { 0xfcb9, G_UNICODE_NOT_PRESENT_OFFSET, 12375 }, + { 0xfcba, G_UNICODE_NOT_PRESENT_OFFSET, 12380 }, + { 0xfcbb, G_UNICODE_NOT_PRESENT_OFFSET, 12385 }, + { 0xfcbc, G_UNICODE_NOT_PRESENT_OFFSET, 12390 }, + { 0xfcbd, G_UNICODE_NOT_PRESENT_OFFSET, 12395 }, + { 0xfcbe, G_UNICODE_NOT_PRESENT_OFFSET, 12400 }, + { 0xfcbf, G_UNICODE_NOT_PRESENT_OFFSET, 12405 }, + { 0xfcc0, G_UNICODE_NOT_PRESENT_OFFSET, 12410 }, + { 0xfcc1, G_UNICODE_NOT_PRESENT_OFFSET, 12415 }, + { 0xfcc2, G_UNICODE_NOT_PRESENT_OFFSET, 12430 }, + { 0xfcc3, G_UNICODE_NOT_PRESENT_OFFSET, 12435 }, + { 0xfcc4, G_UNICODE_NOT_PRESENT_OFFSET, 12455 }, + { 0xfcc5, G_UNICODE_NOT_PRESENT_OFFSET, 12460 }, + { 0xfcc6, G_UNICODE_NOT_PRESENT_OFFSET, 12465 }, + { 0xfcc7, G_UNICODE_NOT_PRESENT_OFFSET, 12470 }, + { 0xfcc8, G_UNICODE_NOT_PRESENT_OFFSET, 12475 }, + { 0xfcc9, G_UNICODE_NOT_PRESENT_OFFSET, 12490 }, + { 0xfcca, G_UNICODE_NOT_PRESENT_OFFSET, 12495 }, + { 0xfccb, G_UNICODE_NOT_PRESENT_OFFSET, 12500 }, + { 0xfccc, G_UNICODE_NOT_PRESENT_OFFSET, 12505 }, + { 0xfccd, G_UNICODE_NOT_PRESENT_OFFSET, 12811 }, + { 0xfcce, G_UNICODE_NOT_PRESENT_OFFSET, 12520 }, + { 0xfccf, G_UNICODE_NOT_PRESENT_OFFSET, 12525 }, + { 0xfcd0, G_UNICODE_NOT_PRESENT_OFFSET, 12530 }, + { 0xfcd1, G_UNICODE_NOT_PRESENT_OFFSET, 12535 }, + { 0xfcd2, G_UNICODE_NOT_PRESENT_OFFSET, 12550 }, + { 0xfcd3, G_UNICODE_NOT_PRESENT_OFFSET, 12555 }, + { 0xfcd4, G_UNICODE_NOT_PRESENT_OFFSET, 12560 }, + { 0xfcd5, G_UNICODE_NOT_PRESENT_OFFSET, 12565 }, + { 0xfcd6, G_UNICODE_NOT_PRESENT_OFFSET, 12816 }, + { 0xfcd7, G_UNICODE_NOT_PRESENT_OFFSET, 12580 }, + { 0xfcd8, G_UNICODE_NOT_PRESENT_OFFSET, 12585 }, + { 0xfcd9, G_UNICODE_NOT_PRESENT_OFFSET, 12821 }, + { 0xfcda, G_UNICODE_NOT_PRESENT_OFFSET, 12600 }, + { 0xfcdb, G_UNICODE_NOT_PRESENT_OFFSET, 12605 }, + { 0xfcdc, G_UNICODE_NOT_PRESENT_OFFSET, 12610 }, + { 0xfcdd, G_UNICODE_NOT_PRESENT_OFFSET, 12615 }, + { 0xfcde, G_UNICODE_NOT_PRESENT_OFFSET, 12826 }, + { 0xfcdf, G_UNICODE_NOT_PRESENT_OFFSET, 12186 }, + { 0xfce0, G_UNICODE_NOT_PRESENT_OFFSET, 12789 }, + { 0xfce1, G_UNICODE_NOT_PRESENT_OFFSET, 12215 }, + { 0xfce2, G_UNICODE_NOT_PRESENT_OFFSET, 12796 }, + { 0xfce3, G_UNICODE_NOT_PRESENT_OFFSET, 12245 }, + { 0xfce4, G_UNICODE_NOT_PRESENT_OFFSET, 12801 }, + { 0xfce5, G_UNICODE_NOT_PRESENT_OFFSET, 12265 }, + { 0xfce6, G_UNICODE_NOT_PRESENT_OFFSET, 12831 }, + { 0xfce7, G_UNICODE_NOT_PRESENT_OFFSET, 12330 }, + { 0xfce8, G_UNICODE_NOT_PRESENT_OFFSET, 12836 }, + { 0xfce9, G_UNICODE_NOT_PRESENT_OFFSET, 12841 }, + { 0xfcea, G_UNICODE_NOT_PRESENT_OFFSET, 12846 }, + { 0xfceb, G_UNICODE_NOT_PRESENT_OFFSET, 12470 }, + { 0xfcec, G_UNICODE_NOT_PRESENT_OFFSET, 12475 }, + { 0xfced, G_UNICODE_NOT_PRESENT_OFFSET, 12505 }, + { 0xfcee, G_UNICODE_NOT_PRESENT_OFFSET, 12565 }, + { 0xfcef, G_UNICODE_NOT_PRESENT_OFFSET, 12816 }, + { 0xfcf0, G_UNICODE_NOT_PRESENT_OFFSET, 12615 }, + { 0xfcf1, G_UNICODE_NOT_PRESENT_OFFSET, 12826 }, + { 0xfcf2, G_UNICODE_NOT_PRESENT_OFFSET, 12851 }, + { 0xfcf3, G_UNICODE_NOT_PRESENT_OFFSET, 12858 }, + { 0xfcf4, G_UNICODE_NOT_PRESENT_OFFSET, 12865 }, + { 0xfcf5, G_UNICODE_NOT_PRESENT_OFFSET, 12872 }, + { 0xfcf6, G_UNICODE_NOT_PRESENT_OFFSET, 12877 }, + { 0xfcf7, G_UNICODE_NOT_PRESENT_OFFSET, 12882 }, + { 0xfcf8, G_UNICODE_NOT_PRESENT_OFFSET, 12887 }, + { 0xfcf9, G_UNICODE_NOT_PRESENT_OFFSET, 12892 }, + { 0xfcfa, G_UNICODE_NOT_PRESENT_OFFSET, 12897 }, + { 0xfcfb, G_UNICODE_NOT_PRESENT_OFFSET, 12902 }, + { 0xfcfc, G_UNICODE_NOT_PRESENT_OFFSET, 12907 }, + { 0xfcfd, G_UNICODE_NOT_PRESENT_OFFSET, 12912 }, + { 0xfcfe, G_UNICODE_NOT_PRESENT_OFFSET, 12917 }, + { 0xfcff, G_UNICODE_NOT_PRESENT_OFFSET, 12922 }, + { 0xfd00, G_UNICODE_NOT_PRESENT_OFFSET, 12927 }, + { 0xfd01, G_UNICODE_NOT_PRESENT_OFFSET, 12932 }, + { 0xfd02, G_UNICODE_NOT_PRESENT_OFFSET, 12937 }, + { 0xfd03, G_UNICODE_NOT_PRESENT_OFFSET, 12942 }, + { 0xfd04, G_UNICODE_NOT_PRESENT_OFFSET, 12947 }, + { 0xfd05, G_UNICODE_NOT_PRESENT_OFFSET, 12952 }, + { 0xfd06, G_UNICODE_NOT_PRESENT_OFFSET, 12957 }, + { 0xfd07, G_UNICODE_NOT_PRESENT_OFFSET, 12962 }, + { 0xfd08, G_UNICODE_NOT_PRESENT_OFFSET, 12967 }, + { 0xfd09, G_UNICODE_NOT_PRESENT_OFFSET, 12972 }, + { 0xfd0a, G_UNICODE_NOT_PRESENT_OFFSET, 12977 }, + { 0xfd0b, G_UNICODE_NOT_PRESENT_OFFSET, 12982 }, + { 0xfd0c, G_UNICODE_NOT_PRESENT_OFFSET, 12841 }, + { 0xfd0d, G_UNICODE_NOT_PRESENT_OFFSET, 12987 }, + { 0xfd0e, G_UNICODE_NOT_PRESENT_OFFSET, 12992 }, + { 0xfd0f, G_UNICODE_NOT_PRESENT_OFFSET, 12997 }, + { 0xfd10, G_UNICODE_NOT_PRESENT_OFFSET, 13002 }, + { 0xfd11, G_UNICODE_NOT_PRESENT_OFFSET, 12872 }, + { 0xfd12, G_UNICODE_NOT_PRESENT_OFFSET, 12877 }, + { 0xfd13, G_UNICODE_NOT_PRESENT_OFFSET, 12882 }, + { 0xfd14, G_UNICODE_NOT_PRESENT_OFFSET, 12887 }, + { 0xfd15, G_UNICODE_NOT_PRESENT_OFFSET, 12892 }, + { 0xfd16, G_UNICODE_NOT_PRESENT_OFFSET, 12897 }, + { 0xfd17, G_UNICODE_NOT_PRESENT_OFFSET, 12902 }, + { 0xfd18, G_UNICODE_NOT_PRESENT_OFFSET, 12907 }, + { 0xfd19, G_UNICODE_NOT_PRESENT_OFFSET, 12912 }, + { 0xfd1a, G_UNICODE_NOT_PRESENT_OFFSET, 12917 }, + { 0xfd1b, G_UNICODE_NOT_PRESENT_OFFSET, 12922 }, + { 0xfd1c, G_UNICODE_NOT_PRESENT_OFFSET, 12927 }, + { 0xfd1d, G_UNICODE_NOT_PRESENT_OFFSET, 12932 }, + { 0xfd1e, G_UNICODE_NOT_PRESENT_OFFSET, 12937 }, + { 0xfd1f, G_UNICODE_NOT_PRESENT_OFFSET, 12942 }, + { 0xfd20, G_UNICODE_NOT_PRESENT_OFFSET, 12947 }, + { 0xfd21, G_UNICODE_NOT_PRESENT_OFFSET, 12952 }, + { 0xfd22, G_UNICODE_NOT_PRESENT_OFFSET, 12957 }, + { 0xfd23, G_UNICODE_NOT_PRESENT_OFFSET, 12962 }, + { 0xfd24, G_UNICODE_NOT_PRESENT_OFFSET, 12967 }, + { 0xfd25, G_UNICODE_NOT_PRESENT_OFFSET, 12972 }, + { 0xfd26, G_UNICODE_NOT_PRESENT_OFFSET, 12977 }, + { 0xfd27, G_UNICODE_NOT_PRESENT_OFFSET, 12982 }, + { 0xfd28, G_UNICODE_NOT_PRESENT_OFFSET, 12841 }, + { 0xfd29, G_UNICODE_NOT_PRESENT_OFFSET, 12987 }, + { 0xfd2a, G_UNICODE_NOT_PRESENT_OFFSET, 12992 }, + { 0xfd2b, G_UNICODE_NOT_PRESENT_OFFSET, 12997 }, + { 0xfd2c, G_UNICODE_NOT_PRESENT_OFFSET, 13002 }, + { 0xfd2d, G_UNICODE_NOT_PRESENT_OFFSET, 12972 }, + { 0xfd2e, G_UNICODE_NOT_PRESENT_OFFSET, 12977 }, + { 0xfd2f, G_UNICODE_NOT_PRESENT_OFFSET, 12982 }, + { 0xfd30, G_UNICODE_NOT_PRESENT_OFFSET, 12841 }, + { 0xfd31, G_UNICODE_NOT_PRESENT_OFFSET, 12836 }, + { 0xfd32, G_UNICODE_NOT_PRESENT_OFFSET, 12846 }, + { 0xfd33, G_UNICODE_NOT_PRESENT_OFFSET, 12370 }, + { 0xfd34, G_UNICODE_NOT_PRESENT_OFFSET, 12315 }, + { 0xfd35, G_UNICODE_NOT_PRESENT_OFFSET, 12320 }, + { 0xfd36, G_UNICODE_NOT_PRESENT_OFFSET, 12325 }, + { 0xfd37, G_UNICODE_NOT_PRESENT_OFFSET, 12972 }, + { 0xfd38, G_UNICODE_NOT_PRESENT_OFFSET, 12977 }, + { 0xfd39, G_UNICODE_NOT_PRESENT_OFFSET, 12982 }, + { 0xfd3a, G_UNICODE_NOT_PRESENT_OFFSET, 12370 }, + { 0xfd3b, G_UNICODE_NOT_PRESENT_OFFSET, 12375 }, + { 0xfd3c, G_UNICODE_NOT_PRESENT_OFFSET, 13007 }, + { 0xfd3d, G_UNICODE_NOT_PRESENT_OFFSET, 13007 }, + { 0xfd50, G_UNICODE_NOT_PRESENT_OFFSET, 13012 }, + { 0xfd51, G_UNICODE_NOT_PRESENT_OFFSET, 13019 }, + { 0xfd52, G_UNICODE_NOT_PRESENT_OFFSET, 13019 }, + { 0xfd53, G_UNICODE_NOT_PRESENT_OFFSET, 13026 }, + { 0xfd54, G_UNICODE_NOT_PRESENT_OFFSET, 13033 }, + { 0xfd55, G_UNICODE_NOT_PRESENT_OFFSET, 13040 }, + { 0xfd56, G_UNICODE_NOT_PRESENT_OFFSET, 13047 }, + { 0xfd57, G_UNICODE_NOT_PRESENT_OFFSET, 13054 }, + { 0xfd58, G_UNICODE_NOT_PRESENT_OFFSET, 13061 }, + { 0xfd59, G_UNICODE_NOT_PRESENT_OFFSET, 13061 }, + { 0xfd5a, G_UNICODE_NOT_PRESENT_OFFSET, 13068 }, + { 0xfd5b, G_UNICODE_NOT_PRESENT_OFFSET, 13075 }, + { 0xfd5c, G_UNICODE_NOT_PRESENT_OFFSET, 13082 }, + { 0xfd5d, G_UNICODE_NOT_PRESENT_OFFSET, 13089 }, + { 0xfd5e, G_UNICODE_NOT_PRESENT_OFFSET, 13096 }, + { 0xfd5f, G_UNICODE_NOT_PRESENT_OFFSET, 13103 }, + { 0xfd60, G_UNICODE_NOT_PRESENT_OFFSET, 13103 }, + { 0xfd61, G_UNICODE_NOT_PRESENT_OFFSET, 13110 }, + { 0xfd62, G_UNICODE_NOT_PRESENT_OFFSET, 13117 }, + { 0xfd63, G_UNICODE_NOT_PRESENT_OFFSET, 13117 }, + { 0xfd64, G_UNICODE_NOT_PRESENT_OFFSET, 13124 }, + { 0xfd65, G_UNICODE_NOT_PRESENT_OFFSET, 13124 }, + { 0xfd66, G_UNICODE_NOT_PRESENT_OFFSET, 13131 }, + { 0xfd67, G_UNICODE_NOT_PRESENT_OFFSET, 13138 }, + { 0xfd68, G_UNICODE_NOT_PRESENT_OFFSET, 13138 }, + { 0xfd69, G_UNICODE_NOT_PRESENT_OFFSET, 13145 }, + { 0xfd6a, G_UNICODE_NOT_PRESENT_OFFSET, 13152 }, + { 0xfd6b, G_UNICODE_NOT_PRESENT_OFFSET, 13152 }, + { 0xfd6c, G_UNICODE_NOT_PRESENT_OFFSET, 13159 }, + { 0xfd6d, G_UNICODE_NOT_PRESENT_OFFSET, 13159 }, + { 0xfd6e, G_UNICODE_NOT_PRESENT_OFFSET, 13166 }, + { 0xfd6f, G_UNICODE_NOT_PRESENT_OFFSET, 13173 }, + { 0xfd70, G_UNICODE_NOT_PRESENT_OFFSET, 13173 }, + { 0xfd71, G_UNICODE_NOT_PRESENT_OFFSET, 13180 }, + { 0xfd72, G_UNICODE_NOT_PRESENT_OFFSET, 13180 }, + { 0xfd73, G_UNICODE_NOT_PRESENT_OFFSET, 13187 }, + { 0xfd74, G_UNICODE_NOT_PRESENT_OFFSET, 13194 }, + { 0xfd75, G_UNICODE_NOT_PRESENT_OFFSET, 13201 }, + { 0xfd76, G_UNICODE_NOT_PRESENT_OFFSET, 13208 }, + { 0xfd77, G_UNICODE_NOT_PRESENT_OFFSET, 13208 }, + { 0xfd78, G_UNICODE_NOT_PRESENT_OFFSET, 13215 }, + { 0xfd79, G_UNICODE_NOT_PRESENT_OFFSET, 13222 }, + { 0xfd7a, G_UNICODE_NOT_PRESENT_OFFSET, 13229 }, + { 0xfd7b, G_UNICODE_NOT_PRESENT_OFFSET, 13236 }, + { 0xfd7c, G_UNICODE_NOT_PRESENT_OFFSET, 13243 }, + { 0xfd7d, G_UNICODE_NOT_PRESENT_OFFSET, 13243 }, + { 0xfd7e, G_UNICODE_NOT_PRESENT_OFFSET, 13250 }, + { 0xfd7f, G_UNICODE_NOT_PRESENT_OFFSET, 13257 }, + { 0xfd80, G_UNICODE_NOT_PRESENT_OFFSET, 13264 }, + { 0xfd81, G_UNICODE_NOT_PRESENT_OFFSET, 13271 }, + { 0xfd82, G_UNICODE_NOT_PRESENT_OFFSET, 13278 }, + { 0xfd83, G_UNICODE_NOT_PRESENT_OFFSET, 13285 }, + { 0xfd84, G_UNICODE_NOT_PRESENT_OFFSET, 13285 }, + { 0xfd85, G_UNICODE_NOT_PRESENT_OFFSET, 13292 }, + { 0xfd86, G_UNICODE_NOT_PRESENT_OFFSET, 13292 }, + { 0xfd87, G_UNICODE_NOT_PRESENT_OFFSET, 13299 }, + { 0xfd88, G_UNICODE_NOT_PRESENT_OFFSET, 13299 }, + { 0xfd89, G_UNICODE_NOT_PRESENT_OFFSET, 13306 }, + { 0xfd8a, G_UNICODE_NOT_PRESENT_OFFSET, 13313 }, + { 0xfd8b, G_UNICODE_NOT_PRESENT_OFFSET, 13320 }, + { 0xfd8c, G_UNICODE_NOT_PRESENT_OFFSET, 13327 }, + { 0xfd8d, G_UNICODE_NOT_PRESENT_OFFSET, 13334 }, + { 0xfd8e, G_UNICODE_NOT_PRESENT_OFFSET, 13341 }, + { 0xfd8f, G_UNICODE_NOT_PRESENT_OFFSET, 13348 }, + { 0xfd92, G_UNICODE_NOT_PRESENT_OFFSET, 13355 }, + { 0xfd93, G_UNICODE_NOT_PRESENT_OFFSET, 13362 }, + { 0xfd94, G_UNICODE_NOT_PRESENT_OFFSET, 13369 }, + { 0xfd95, G_UNICODE_NOT_PRESENT_OFFSET, 13376 }, + { 0xfd96, G_UNICODE_NOT_PRESENT_OFFSET, 13383 }, + { 0xfd97, G_UNICODE_NOT_PRESENT_OFFSET, 13390 }, + { 0xfd98, G_UNICODE_NOT_PRESENT_OFFSET, 13390 }, + { 0xfd99, G_UNICODE_NOT_PRESENT_OFFSET, 13397 }, + { 0xfd9a, G_UNICODE_NOT_PRESENT_OFFSET, 13404 }, + { 0xfd9b, G_UNICODE_NOT_PRESENT_OFFSET, 13411 }, + { 0xfd9c, G_UNICODE_NOT_PRESENT_OFFSET, 13418 }, + { 0xfd9d, G_UNICODE_NOT_PRESENT_OFFSET, 13418 }, + { 0xfd9e, G_UNICODE_NOT_PRESENT_OFFSET, 13425 }, + { 0xfd9f, G_UNICODE_NOT_PRESENT_OFFSET, 13432 }, + { 0xfda0, G_UNICODE_NOT_PRESENT_OFFSET, 13439 }, + { 0xfda1, G_UNICODE_NOT_PRESENT_OFFSET, 13446 }, + { 0xfda2, G_UNICODE_NOT_PRESENT_OFFSET, 13453 }, + { 0xfda3, G_UNICODE_NOT_PRESENT_OFFSET, 13460 }, + { 0xfda4, G_UNICODE_NOT_PRESENT_OFFSET, 13467 }, + { 0xfda5, G_UNICODE_NOT_PRESENT_OFFSET, 13474 }, + { 0xfda6, G_UNICODE_NOT_PRESENT_OFFSET, 13481 }, + { 0xfda7, G_UNICODE_NOT_PRESENT_OFFSET, 13488 }, + { 0xfda8, G_UNICODE_NOT_PRESENT_OFFSET, 13495 }, + { 0xfda9, G_UNICODE_NOT_PRESENT_OFFSET, 13502 }, + { 0xfdaa, G_UNICODE_NOT_PRESENT_OFFSET, 13509 }, + { 0xfdab, G_UNICODE_NOT_PRESENT_OFFSET, 13516 }, + { 0xfdac, G_UNICODE_NOT_PRESENT_OFFSET, 13523 }, + { 0xfdad, G_UNICODE_NOT_PRESENT_OFFSET, 13530 }, + { 0xfdae, G_UNICODE_NOT_PRESENT_OFFSET, 13537 }, + { 0xfdaf, G_UNICODE_NOT_PRESENT_OFFSET, 13544 }, + { 0xfdb0, G_UNICODE_NOT_PRESENT_OFFSET, 13551 }, + { 0xfdb1, G_UNICODE_NOT_PRESENT_OFFSET, 13558 }, + { 0xfdb2, G_UNICODE_NOT_PRESENT_OFFSET, 13565 }, + { 0xfdb3, G_UNICODE_NOT_PRESENT_OFFSET, 13572 }, + { 0xfdb4, G_UNICODE_NOT_PRESENT_OFFSET, 13250 }, + { 0xfdb5, G_UNICODE_NOT_PRESENT_OFFSET, 13264 }, + { 0xfdb6, G_UNICODE_NOT_PRESENT_OFFSET, 13579 }, + { 0xfdb7, G_UNICODE_NOT_PRESENT_OFFSET, 13586 }, + { 0xfdb8, G_UNICODE_NOT_PRESENT_OFFSET, 13593 }, + { 0xfdb9, G_UNICODE_NOT_PRESENT_OFFSET, 13600 }, + { 0xfdba, G_UNICODE_NOT_PRESENT_OFFSET, 13607 }, + { 0xfdbb, G_UNICODE_NOT_PRESENT_OFFSET, 13614 }, + { 0xfdbc, G_UNICODE_NOT_PRESENT_OFFSET, 13607 }, + { 0xfdbd, G_UNICODE_NOT_PRESENT_OFFSET, 13593 }, + { 0xfdbe, G_UNICODE_NOT_PRESENT_OFFSET, 13621 }, + { 0xfdbf, G_UNICODE_NOT_PRESENT_OFFSET, 13628 }, + { 0xfdc0, G_UNICODE_NOT_PRESENT_OFFSET, 13635 }, + { 0xfdc1, G_UNICODE_NOT_PRESENT_OFFSET, 13642 }, + { 0xfdc2, G_UNICODE_NOT_PRESENT_OFFSET, 13649 }, + { 0xfdc3, G_UNICODE_NOT_PRESENT_OFFSET, 13614 }, + { 0xfdc4, G_UNICODE_NOT_PRESENT_OFFSET, 13201 }, + { 0xfdc5, G_UNICODE_NOT_PRESENT_OFFSET, 13131 }, + { 0xfdc6, G_UNICODE_NOT_PRESENT_OFFSET, 13656 }, + { 0xfdc7, G_UNICODE_NOT_PRESENT_OFFSET, 13663 }, + { 0xfdf0, G_UNICODE_NOT_PRESENT_OFFSET, 13670 }, + { 0xfdf1, G_UNICODE_NOT_PRESENT_OFFSET, 13677 }, + { 0xfdf2, G_UNICODE_NOT_PRESENT_OFFSET, 13684 }, + { 0xfdf3, G_UNICODE_NOT_PRESENT_OFFSET, 13693 }, + { 0xfdf4, G_UNICODE_NOT_PRESENT_OFFSET, 13702 }, + { 0xfdf5, G_UNICODE_NOT_PRESENT_OFFSET, 13711 }, + { 0xfdf6, G_UNICODE_NOT_PRESENT_OFFSET, 13720 }, + { 0xfdf7, G_UNICODE_NOT_PRESENT_OFFSET, 13729 }, + { 0xfdf8, G_UNICODE_NOT_PRESENT_OFFSET, 13738 }, + { 0xfdf9, G_UNICODE_NOT_PRESENT_OFFSET, 13747 }, + { 0xfdfa, G_UNICODE_NOT_PRESENT_OFFSET, 13754 }, + { 0xfdfb, G_UNICODE_NOT_PRESENT_OFFSET, 13788 }, + { 0xfdfc, G_UNICODE_NOT_PRESENT_OFFSET, 13804 }, + { 0xfe30, G_UNICODE_NOT_PRESENT_OFFSET, 4871 }, + { 0xfe31, G_UNICODE_NOT_PRESENT_OFFSET, 13813 }, + { 0xfe32, G_UNICODE_NOT_PRESENT_OFFSET, 13817 }, + { 0xfe33, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xfe34, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xfe35, G_UNICODE_NOT_PRESENT_OFFSET, 4965 }, + { 0xfe36, G_UNICODE_NOT_PRESENT_OFFSET, 4967 }, + { 0xfe37, G_UNICODE_NOT_PRESENT_OFFSET, 13823 }, + { 0xfe38, G_UNICODE_NOT_PRESENT_OFFSET, 13825 }, + { 0xfe39, G_UNICODE_NOT_PRESENT_OFFSET, 13827 }, + { 0xfe3a, G_UNICODE_NOT_PRESENT_OFFSET, 13831 }, + { 0xfe3b, G_UNICODE_NOT_PRESENT_OFFSET, 13835 }, + { 0xfe3c, G_UNICODE_NOT_PRESENT_OFFSET, 13839 }, + { 0xfe3d, G_UNICODE_NOT_PRESENT_OFFSET, 13843 }, + { 0xfe3e, G_UNICODE_NOT_PRESENT_OFFSET, 13847 }, + { 0xfe3f, G_UNICODE_NOT_PRESENT_OFFSET, 5524 }, + { 0xfe40, G_UNICODE_NOT_PRESENT_OFFSET, 5528 }, + { 0xfe41, G_UNICODE_NOT_PRESENT_OFFSET, 13851 }, + { 0xfe42, G_UNICODE_NOT_PRESENT_OFFSET, 13855 }, + { 0xfe43, G_UNICODE_NOT_PRESENT_OFFSET, 13859 }, + { 0xfe44, G_UNICODE_NOT_PRESENT_OFFSET, 13863 }, + { 0xfe49, G_UNICODE_NOT_PRESENT_OFFSET, 4915 }, + { 0xfe4a, G_UNICODE_NOT_PRESENT_OFFSET, 4915 }, + { 0xfe4b, G_UNICODE_NOT_PRESENT_OFFSET, 4915 }, + { 0xfe4c, G_UNICODE_NOT_PRESENT_OFFSET, 4915 }, + { 0xfe4d, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xfe4e, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xfe4f, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xfe50, G_UNICODE_NOT_PRESENT_OFFSET, 13867 }, + { 0xfe51, G_UNICODE_NOT_PRESENT_OFFSET, 13869 }, + { 0xfe52, G_UNICODE_NOT_PRESENT_OFFSET, 4869 }, + { 0xfe54, G_UNICODE_NOT_PRESENT_OFFSET, 1248 }, + { 0xfe55, G_UNICODE_NOT_PRESENT_OFFSET, 13873 }, + { 0xfe56, G_UNICODE_NOT_PRESENT_OFFSET, 13875 }, + { 0xfe57, G_UNICODE_NOT_PRESENT_OFFSET, 13877 }, + { 0xfe58, G_UNICODE_NOT_PRESENT_OFFSET, 13813 }, + { 0xfe59, G_UNICODE_NOT_PRESENT_OFFSET, 4965 }, + { 0xfe5a, G_UNICODE_NOT_PRESENT_OFFSET, 4967 }, + { 0xfe5b, G_UNICODE_NOT_PRESENT_OFFSET, 13823 }, + { 0xfe5c, G_UNICODE_NOT_PRESENT_OFFSET, 13825 }, + { 0xfe5d, G_UNICODE_NOT_PRESENT_OFFSET, 13827 }, + { 0xfe5e, G_UNICODE_NOT_PRESENT_OFFSET, 13831 }, + { 0xfe5f, G_UNICODE_NOT_PRESENT_OFFSET, 13879 }, + { 0xfe60, G_UNICODE_NOT_PRESENT_OFFSET, 13881 }, + { 0xfe61, G_UNICODE_NOT_PRESENT_OFFSET, 13883 }, + { 0xfe62, G_UNICODE_NOT_PRESENT_OFFSET, 4957 }, + { 0xfe63, G_UNICODE_NOT_PRESENT_OFFSET, 13885 }, + { 0xfe64, G_UNICODE_NOT_PRESENT_OFFSET, 13887 }, + { 0xfe65, G_UNICODE_NOT_PRESENT_OFFSET, 13889 }, + { 0xfe66, G_UNICODE_NOT_PRESENT_OFFSET, 4963 }, + { 0xfe68, G_UNICODE_NOT_PRESENT_OFFSET, 13891 }, + { 0xfe69, G_UNICODE_NOT_PRESENT_OFFSET, 13893 }, + { 0xfe6a, G_UNICODE_NOT_PRESENT_OFFSET, 13895 }, + { 0xfe6b, G_UNICODE_NOT_PRESENT_OFFSET, 13897 }, + { 0xfe70, G_UNICODE_NOT_PRESENT_OFFSET, 13899 }, + { 0xfe71, G_UNICODE_NOT_PRESENT_OFFSET, 13903 }, + { 0xfe72, G_UNICODE_NOT_PRESENT_OFFSET, 13908 }, + { 0xfe74, G_UNICODE_NOT_PRESENT_OFFSET, 13912 }, + { 0xfe76, G_UNICODE_NOT_PRESENT_OFFSET, 13916 }, + { 0xfe77, G_UNICODE_NOT_PRESENT_OFFSET, 13920 }, + { 0xfe78, G_UNICODE_NOT_PRESENT_OFFSET, 13925 }, + { 0xfe79, G_UNICODE_NOT_PRESENT_OFFSET, 13929 }, + { 0xfe7a, G_UNICODE_NOT_PRESENT_OFFSET, 13934 }, + { 0xfe7b, G_UNICODE_NOT_PRESENT_OFFSET, 13938 }, + { 0xfe7c, G_UNICODE_NOT_PRESENT_OFFSET, 13943 }, + { 0xfe7d, G_UNICODE_NOT_PRESENT_OFFSET, 13947 }, + { 0xfe7e, G_UNICODE_NOT_PRESENT_OFFSET, 13952 }, + { 0xfe7f, G_UNICODE_NOT_PRESENT_OFFSET, 13956 }, + { 0xfe80, G_UNICODE_NOT_PRESENT_OFFSET, 13961 }, + { 0xfe81, G_UNICODE_NOT_PRESENT_OFFSET, 1673 }, + { 0xfe82, G_UNICODE_NOT_PRESENT_OFFSET, 1673 }, + { 0xfe83, G_UNICODE_NOT_PRESENT_OFFSET, 1678 }, + { 0xfe84, G_UNICODE_NOT_PRESENT_OFFSET, 1678 }, + { 0xfe85, G_UNICODE_NOT_PRESENT_OFFSET, 1683 }, + { 0xfe86, G_UNICODE_NOT_PRESENT_OFFSET, 1683 }, + { 0xfe87, G_UNICODE_NOT_PRESENT_OFFSET, 1688 }, + { 0xfe88, G_UNICODE_NOT_PRESENT_OFFSET, 1688 }, + { 0xfe89, G_UNICODE_NOT_PRESENT_OFFSET, 1693 }, + { 0xfe8a, G_UNICODE_NOT_PRESENT_OFFSET, 1693 }, + { 0xfe8b, G_UNICODE_NOT_PRESENT_OFFSET, 1693 }, + { 0xfe8c, G_UNICODE_NOT_PRESENT_OFFSET, 1693 }, + { 0xfe8d, G_UNICODE_NOT_PRESENT_OFFSET, 13964 }, + { 0xfe8e, G_UNICODE_NOT_PRESENT_OFFSET, 13964 }, + { 0xfe8f, G_UNICODE_NOT_PRESENT_OFFSET, 13967 }, + { 0xfe90, G_UNICODE_NOT_PRESENT_OFFSET, 13967 }, + { 0xfe91, G_UNICODE_NOT_PRESENT_OFFSET, 13967 }, + { 0xfe92, G_UNICODE_NOT_PRESENT_OFFSET, 13967 }, + { 0xfe93, G_UNICODE_NOT_PRESENT_OFFSET, 13970 }, + { 0xfe94, G_UNICODE_NOT_PRESENT_OFFSET, 13970 }, + { 0xfe95, G_UNICODE_NOT_PRESENT_OFFSET, 13973 }, + { 0xfe96, G_UNICODE_NOT_PRESENT_OFFSET, 13973 }, + { 0xfe97, G_UNICODE_NOT_PRESENT_OFFSET, 13973 }, + { 0xfe98, G_UNICODE_NOT_PRESENT_OFFSET, 13973 }, + { 0xfe99, G_UNICODE_NOT_PRESENT_OFFSET, 13976 }, + { 0xfe9a, G_UNICODE_NOT_PRESENT_OFFSET, 13976 }, + { 0xfe9b, G_UNICODE_NOT_PRESENT_OFFSET, 13976 }, + { 0xfe9c, G_UNICODE_NOT_PRESENT_OFFSET, 13976 }, + { 0xfe9d, G_UNICODE_NOT_PRESENT_OFFSET, 13979 }, + { 0xfe9e, G_UNICODE_NOT_PRESENT_OFFSET, 13979 }, + { 0xfe9f, G_UNICODE_NOT_PRESENT_OFFSET, 13979 }, + { 0xfea0, G_UNICODE_NOT_PRESENT_OFFSET, 13979 }, + { 0xfea1, G_UNICODE_NOT_PRESENT_OFFSET, 13982 }, + { 0xfea2, G_UNICODE_NOT_PRESENT_OFFSET, 13982 }, + { 0xfea3, G_UNICODE_NOT_PRESENT_OFFSET, 13982 }, + { 0xfea4, G_UNICODE_NOT_PRESENT_OFFSET, 13982 }, + { 0xfea5, G_UNICODE_NOT_PRESENT_OFFSET, 13985 }, + { 0xfea6, G_UNICODE_NOT_PRESENT_OFFSET, 13985 }, + { 0xfea7, G_UNICODE_NOT_PRESENT_OFFSET, 13985 }, + { 0xfea8, G_UNICODE_NOT_PRESENT_OFFSET, 13985 }, + { 0xfea9, G_UNICODE_NOT_PRESENT_OFFSET, 13988 }, + { 0xfeaa, G_UNICODE_NOT_PRESENT_OFFSET, 13988 }, + { 0xfeab, G_UNICODE_NOT_PRESENT_OFFSET, 13991 }, + { 0xfeac, G_UNICODE_NOT_PRESENT_OFFSET, 13991 }, + { 0xfead, G_UNICODE_NOT_PRESENT_OFFSET, 13994 }, + { 0xfeae, G_UNICODE_NOT_PRESENT_OFFSET, 13994 }, + { 0xfeaf, G_UNICODE_NOT_PRESENT_OFFSET, 13997 }, + { 0xfeb0, G_UNICODE_NOT_PRESENT_OFFSET, 13997 }, + { 0xfeb1, G_UNICODE_NOT_PRESENT_OFFSET, 14000 }, + { 0xfeb2, G_UNICODE_NOT_PRESENT_OFFSET, 14000 }, + { 0xfeb3, G_UNICODE_NOT_PRESENT_OFFSET, 14000 }, + { 0xfeb4, G_UNICODE_NOT_PRESENT_OFFSET, 14000 }, + { 0xfeb5, G_UNICODE_NOT_PRESENT_OFFSET, 14003 }, + { 0xfeb6, G_UNICODE_NOT_PRESENT_OFFSET, 14003 }, + { 0xfeb7, G_UNICODE_NOT_PRESENT_OFFSET, 14003 }, + { 0xfeb8, G_UNICODE_NOT_PRESENT_OFFSET, 14003 }, + { 0xfeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14006 }, + { 0xfeba, G_UNICODE_NOT_PRESENT_OFFSET, 14006 }, + { 0xfebb, G_UNICODE_NOT_PRESENT_OFFSET, 14006 }, + { 0xfebc, G_UNICODE_NOT_PRESENT_OFFSET, 14006 }, + { 0xfebd, G_UNICODE_NOT_PRESENT_OFFSET, 14009 }, + { 0xfebe, G_UNICODE_NOT_PRESENT_OFFSET, 14009 }, + { 0xfebf, G_UNICODE_NOT_PRESENT_OFFSET, 14009 }, + { 0xfec0, G_UNICODE_NOT_PRESENT_OFFSET, 14009 }, + { 0xfec1, G_UNICODE_NOT_PRESENT_OFFSET, 14012 }, + { 0xfec2, G_UNICODE_NOT_PRESENT_OFFSET, 14012 }, + { 0xfec3, G_UNICODE_NOT_PRESENT_OFFSET, 14012 }, + { 0xfec4, G_UNICODE_NOT_PRESENT_OFFSET, 14012 }, + { 0xfec5, G_UNICODE_NOT_PRESENT_OFFSET, 14015 }, + { 0xfec6, G_UNICODE_NOT_PRESENT_OFFSET, 14015 }, + { 0xfec7, G_UNICODE_NOT_PRESENT_OFFSET, 14015 }, + { 0xfec8, G_UNICODE_NOT_PRESENT_OFFSET, 14015 }, + { 0xfec9, G_UNICODE_NOT_PRESENT_OFFSET, 14018 }, + { 0xfeca, G_UNICODE_NOT_PRESENT_OFFSET, 14018 }, + { 0xfecb, G_UNICODE_NOT_PRESENT_OFFSET, 14018 }, + { 0xfecc, G_UNICODE_NOT_PRESENT_OFFSET, 14018 }, + { 0xfecd, G_UNICODE_NOT_PRESENT_OFFSET, 14021 }, + { 0xfece, G_UNICODE_NOT_PRESENT_OFFSET, 14021 }, + { 0xfecf, G_UNICODE_NOT_PRESENT_OFFSET, 14021 }, + { 0xfed0, G_UNICODE_NOT_PRESENT_OFFSET, 14021 }, + { 0xfed1, G_UNICODE_NOT_PRESENT_OFFSET, 14024 }, + { 0xfed2, G_UNICODE_NOT_PRESENT_OFFSET, 14024 }, + { 0xfed3, G_UNICODE_NOT_PRESENT_OFFSET, 14024 }, + { 0xfed4, G_UNICODE_NOT_PRESENT_OFFSET, 14024 }, + { 0xfed5, G_UNICODE_NOT_PRESENT_OFFSET, 14027 }, + { 0xfed6, G_UNICODE_NOT_PRESENT_OFFSET, 14027 }, + { 0xfed7, G_UNICODE_NOT_PRESENT_OFFSET, 14027 }, + { 0xfed8, G_UNICODE_NOT_PRESENT_OFFSET, 14027 }, + { 0xfed9, G_UNICODE_NOT_PRESENT_OFFSET, 14030 }, + { 0xfeda, G_UNICODE_NOT_PRESENT_OFFSET, 14030 }, + { 0xfedb, G_UNICODE_NOT_PRESENT_OFFSET, 14030 }, + { 0xfedc, G_UNICODE_NOT_PRESENT_OFFSET, 14030 }, + { 0xfedd, G_UNICODE_NOT_PRESENT_OFFSET, 14033 }, + { 0xfede, G_UNICODE_NOT_PRESENT_OFFSET, 14033 }, + { 0xfedf, G_UNICODE_NOT_PRESENT_OFFSET, 14033 }, + { 0xfee0, G_UNICODE_NOT_PRESENT_OFFSET, 14033 }, + { 0xfee1, G_UNICODE_NOT_PRESENT_OFFSET, 14036 }, + { 0xfee2, G_UNICODE_NOT_PRESENT_OFFSET, 14036 }, + { 0xfee3, G_UNICODE_NOT_PRESENT_OFFSET, 14036 }, + { 0xfee4, G_UNICODE_NOT_PRESENT_OFFSET, 14036 }, + { 0xfee5, G_UNICODE_NOT_PRESENT_OFFSET, 14039 }, + { 0xfee6, G_UNICODE_NOT_PRESENT_OFFSET, 14039 }, + { 0xfee7, G_UNICODE_NOT_PRESENT_OFFSET, 14039 }, + { 0xfee8, G_UNICODE_NOT_PRESENT_OFFSET, 14039 }, + { 0xfee9, G_UNICODE_NOT_PRESENT_OFFSET, 14042 }, + { 0xfeea, G_UNICODE_NOT_PRESENT_OFFSET, 14042 }, + { 0xfeeb, G_UNICODE_NOT_PRESENT_OFFSET, 14042 }, + { 0xfeec, G_UNICODE_NOT_PRESENT_OFFSET, 14042 }, + { 0xfeed, G_UNICODE_NOT_PRESENT_OFFSET, 14045 }, + { 0xfeee, G_UNICODE_NOT_PRESENT_OFFSET, 14045 }, + { 0xfeef, G_UNICODE_NOT_PRESENT_OFFSET, 12110 }, + { 0xfef0, G_UNICODE_NOT_PRESENT_OFFSET, 12110 }, + { 0xfef1, G_UNICODE_NOT_PRESENT_OFFSET, 14048 }, + { 0xfef2, G_UNICODE_NOT_PRESENT_OFFSET, 14048 }, + { 0xfef3, G_UNICODE_NOT_PRESENT_OFFSET, 14048 }, + { 0xfef4, G_UNICODE_NOT_PRESENT_OFFSET, 14048 }, + { 0xfef5, G_UNICODE_NOT_PRESENT_OFFSET, 14051 }, + { 0xfef6, G_UNICODE_NOT_PRESENT_OFFSET, 14051 }, + { 0xfef7, G_UNICODE_NOT_PRESENT_OFFSET, 14058 }, + { 0xfef8, G_UNICODE_NOT_PRESENT_OFFSET, 14058 }, + { 0xfef9, G_UNICODE_NOT_PRESENT_OFFSET, 14065 }, + { 0xfefa, G_UNICODE_NOT_PRESENT_OFFSET, 14065 }, + { 0xfefb, G_UNICODE_NOT_PRESENT_OFFSET, 14072 }, + { 0xfefc, G_UNICODE_NOT_PRESENT_OFFSET, 14072 }, + { 0xff01, G_UNICODE_NOT_PRESENT_OFFSET, 13877 }, + { 0xff02, G_UNICODE_NOT_PRESENT_OFFSET, 14077 }, + { 0xff03, G_UNICODE_NOT_PRESENT_OFFSET, 13879 }, + { 0xff04, G_UNICODE_NOT_PRESENT_OFFSET, 13893 }, + { 0xff05, G_UNICODE_NOT_PRESENT_OFFSET, 13895 }, + { 0xff06, G_UNICODE_NOT_PRESENT_OFFSET, 13881 }, + { 0xff07, G_UNICODE_NOT_PRESENT_OFFSET, 14079 }, + { 0xff08, G_UNICODE_NOT_PRESENT_OFFSET, 4965 }, + { 0xff09, G_UNICODE_NOT_PRESENT_OFFSET, 4967 }, + { 0xff0a, G_UNICODE_NOT_PRESENT_OFFSET, 13883 }, + { 0xff0b, G_UNICODE_NOT_PRESENT_OFFSET, 4957 }, + { 0xff0c, G_UNICODE_NOT_PRESENT_OFFSET, 13867 }, + { 0xff0d, G_UNICODE_NOT_PRESENT_OFFSET, 13885 }, + { 0xff0e, G_UNICODE_NOT_PRESENT_OFFSET, 4869 }, + { 0xff0f, G_UNICODE_NOT_PRESENT_OFFSET, 14081 }, + { 0xff10, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0xff11, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0xff12, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0xff13, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0xff14, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0xff15, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0xff16, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0xff17, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0xff18, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0xff19, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0xff1a, G_UNICODE_NOT_PRESENT_OFFSET, 13873 }, + { 0xff1b, G_UNICODE_NOT_PRESENT_OFFSET, 1248 }, + { 0xff1c, G_UNICODE_NOT_PRESENT_OFFSET, 13887 }, + { 0xff1d, G_UNICODE_NOT_PRESENT_OFFSET, 4963 }, + { 0xff1e, G_UNICODE_NOT_PRESENT_OFFSET, 13889 }, + { 0xff1f, G_UNICODE_NOT_PRESENT_OFFSET, 13875 }, + { 0xff20, G_UNICODE_NOT_PRESENT_OFFSET, 13897 }, + { 0xff21, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0xff22, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0xff23, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0xff24, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0xff25, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0xff26, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0xff27, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0xff28, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0xff29, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0xff2a, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0xff2b, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0xff2c, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0xff2d, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0xff2e, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0xff2f, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0xff30, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0xff31, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0xff32, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0xff33, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0xff34, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0xff35, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0xff36, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0xff37, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0xff38, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0xff39, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0xff3a, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0xff3b, G_UNICODE_NOT_PRESENT_OFFSET, 14083 }, + { 0xff3c, G_UNICODE_NOT_PRESENT_OFFSET, 13891 }, + { 0xff3d, G_UNICODE_NOT_PRESENT_OFFSET, 14085 }, + { 0xff3e, G_UNICODE_NOT_PRESENT_OFFSET, 14087 }, + { 0xff3f, G_UNICODE_NOT_PRESENT_OFFSET, 13821 }, + { 0xff40, G_UNICODE_NOT_PRESENT_OFFSET, 4798 }, + { 0xff41, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0xff42, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0xff43, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0xff44, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0xff45, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0xff46, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0xff47, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0xff48, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0xff49, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0xff4a, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0xff4b, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0xff4c, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0xff4d, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0xff4e, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0xff4f, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0xff50, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0xff51, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0xff52, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0xff53, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0xff54, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0xff55, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0xff56, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0xff57, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0xff58, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0xff59, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0xff5a, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0xff5b, G_UNICODE_NOT_PRESENT_OFFSET, 13823 }, + { 0xff5c, G_UNICODE_NOT_PRESENT_OFFSET, 14089 }, + { 0xff5d, G_UNICODE_NOT_PRESENT_OFFSET, 13825 }, + { 0xff5e, G_UNICODE_NOT_PRESENT_OFFSET, 14091 }, + { 0xff5f, G_UNICODE_NOT_PRESENT_OFFSET, 14093 }, + { 0xff60, G_UNICODE_NOT_PRESENT_OFFSET, 14097 }, + { 0xff61, G_UNICODE_NOT_PRESENT_OFFSET, 14101 }, + { 0xff62, G_UNICODE_NOT_PRESENT_OFFSET, 13851 }, + { 0xff63, G_UNICODE_NOT_PRESENT_OFFSET, 13855 }, + { 0xff64, G_UNICODE_NOT_PRESENT_OFFSET, 13869 }, + { 0xff65, G_UNICODE_NOT_PRESENT_OFFSET, 14105 }, + { 0xff66, G_UNICODE_NOT_PRESENT_OFFSET, 8615 }, + { 0xff67, G_UNICODE_NOT_PRESENT_OFFSET, 14109 }, + { 0xff68, G_UNICODE_NOT_PRESENT_OFFSET, 14113 }, + { 0xff69, G_UNICODE_NOT_PRESENT_OFFSET, 14117 }, + { 0xff6a, G_UNICODE_NOT_PRESENT_OFFSET, 14121 }, + { 0xff6b, G_UNICODE_NOT_PRESENT_OFFSET, 14125 }, + { 0xff6c, G_UNICODE_NOT_PRESENT_OFFSET, 14129 }, + { 0xff6d, G_UNICODE_NOT_PRESENT_OFFSET, 14133 }, + { 0xff6e, G_UNICODE_NOT_PRESENT_OFFSET, 14137 }, + { 0xff6f, G_UNICODE_NOT_PRESENT_OFFSET, 14141 }, + { 0xff70, G_UNICODE_NOT_PRESENT_OFFSET, 14145 }, + { 0xff71, G_UNICODE_NOT_PRESENT_OFFSET, 8431 }, + { 0xff72, G_UNICODE_NOT_PRESENT_OFFSET, 8435 }, + { 0xff73, G_UNICODE_NOT_PRESENT_OFFSET, 8439 }, + { 0xff74, G_UNICODE_NOT_PRESENT_OFFSET, 8443 }, + { 0xff75, G_UNICODE_NOT_PRESENT_OFFSET, 8447 }, + { 0xff76, G_UNICODE_NOT_PRESENT_OFFSET, 8451 }, + { 0xff77, G_UNICODE_NOT_PRESENT_OFFSET, 8455 }, + { 0xff78, G_UNICODE_NOT_PRESENT_OFFSET, 8459 }, + { 0xff79, G_UNICODE_NOT_PRESENT_OFFSET, 8463 }, + { 0xff7a, G_UNICODE_NOT_PRESENT_OFFSET, 8467 }, + { 0xff7b, G_UNICODE_NOT_PRESENT_OFFSET, 8471 }, + { 0xff7c, G_UNICODE_NOT_PRESENT_OFFSET, 8475 }, + { 0xff7d, G_UNICODE_NOT_PRESENT_OFFSET, 8479 }, + { 0xff7e, G_UNICODE_NOT_PRESENT_OFFSET, 8483 }, + { 0xff7f, G_UNICODE_NOT_PRESENT_OFFSET, 8487 }, + { 0xff80, G_UNICODE_NOT_PRESENT_OFFSET, 8491 }, + { 0xff81, G_UNICODE_NOT_PRESENT_OFFSET, 8495 }, + { 0xff82, G_UNICODE_NOT_PRESENT_OFFSET, 8499 }, + { 0xff83, G_UNICODE_NOT_PRESENT_OFFSET, 8503 }, + { 0xff84, G_UNICODE_NOT_PRESENT_OFFSET, 8507 }, + { 0xff85, G_UNICODE_NOT_PRESENT_OFFSET, 8511 }, + { 0xff86, G_UNICODE_NOT_PRESENT_OFFSET, 8515 }, + { 0xff87, G_UNICODE_NOT_PRESENT_OFFSET, 8519 }, + { 0xff88, G_UNICODE_NOT_PRESENT_OFFSET, 8523 }, + { 0xff89, G_UNICODE_NOT_PRESENT_OFFSET, 8527 }, + { 0xff8a, G_UNICODE_NOT_PRESENT_OFFSET, 8531 }, + { 0xff8b, G_UNICODE_NOT_PRESENT_OFFSET, 8535 }, + { 0xff8c, G_UNICODE_NOT_PRESENT_OFFSET, 8539 }, + { 0xff8d, G_UNICODE_NOT_PRESENT_OFFSET, 8543 }, + { 0xff8e, G_UNICODE_NOT_PRESENT_OFFSET, 8547 }, + { 0xff8f, G_UNICODE_NOT_PRESENT_OFFSET, 8551 }, + { 0xff90, G_UNICODE_NOT_PRESENT_OFFSET, 8555 }, + { 0xff91, G_UNICODE_NOT_PRESENT_OFFSET, 8559 }, + { 0xff92, G_UNICODE_NOT_PRESENT_OFFSET, 8563 }, + { 0xff93, G_UNICODE_NOT_PRESENT_OFFSET, 8567 }, + { 0xff94, G_UNICODE_NOT_PRESENT_OFFSET, 8571 }, + { 0xff95, G_UNICODE_NOT_PRESENT_OFFSET, 8575 }, + { 0xff96, G_UNICODE_NOT_PRESENT_OFFSET, 8579 }, + { 0xff97, G_UNICODE_NOT_PRESENT_OFFSET, 8583 }, + { 0xff98, G_UNICODE_NOT_PRESENT_OFFSET, 8587 }, + { 0xff99, G_UNICODE_NOT_PRESENT_OFFSET, 8591 }, + { 0xff9a, G_UNICODE_NOT_PRESENT_OFFSET, 8595 }, + { 0xff9b, G_UNICODE_NOT_PRESENT_OFFSET, 8599 }, + { 0xff9c, G_UNICODE_NOT_PRESENT_OFFSET, 8603 }, + { 0xff9d, G_UNICODE_NOT_PRESENT_OFFSET, 14149 }, + { 0xff9e, G_UNICODE_NOT_PRESENT_OFFSET, 14153 }, + { 0xff9f, G_UNICODE_NOT_PRESENT_OFFSET, 14157 }, + { 0xffa0, G_UNICODE_NOT_PRESENT_OFFSET, 7405 }, + { 0xffa1, G_UNICODE_NOT_PRESENT_OFFSET, 7201 }, + { 0xffa2, G_UNICODE_NOT_PRESENT_OFFSET, 7205 }, + { 0xffa3, G_UNICODE_NOT_PRESENT_OFFSET, 7209 }, + { 0xffa4, G_UNICODE_NOT_PRESENT_OFFSET, 7213 }, + { 0xffa5, G_UNICODE_NOT_PRESENT_OFFSET, 7217 }, + { 0xffa6, G_UNICODE_NOT_PRESENT_OFFSET, 7221 }, + { 0xffa7, G_UNICODE_NOT_PRESENT_OFFSET, 7225 }, + { 0xffa8, G_UNICODE_NOT_PRESENT_OFFSET, 7229 }, + { 0xffa9, G_UNICODE_NOT_PRESENT_OFFSET, 7233 }, + { 0xffaa, G_UNICODE_NOT_PRESENT_OFFSET, 7237 }, + { 0xffab, G_UNICODE_NOT_PRESENT_OFFSET, 7241 }, + { 0xffac, G_UNICODE_NOT_PRESENT_OFFSET, 7245 }, + { 0xffad, G_UNICODE_NOT_PRESENT_OFFSET, 7249 }, + { 0xffae, G_UNICODE_NOT_PRESENT_OFFSET, 7253 }, + { 0xffaf, G_UNICODE_NOT_PRESENT_OFFSET, 7257 }, + { 0xffb0, G_UNICODE_NOT_PRESENT_OFFSET, 7261 }, + { 0xffb1, G_UNICODE_NOT_PRESENT_OFFSET, 7265 }, + { 0xffb2, G_UNICODE_NOT_PRESENT_OFFSET, 7269 }, + { 0xffb3, G_UNICODE_NOT_PRESENT_OFFSET, 7273 }, + { 0xffb4, G_UNICODE_NOT_PRESENT_OFFSET, 7277 }, + { 0xffb5, G_UNICODE_NOT_PRESENT_OFFSET, 7281 }, + { 0xffb6, G_UNICODE_NOT_PRESENT_OFFSET, 7285 }, + { 0xffb7, G_UNICODE_NOT_PRESENT_OFFSET, 7289 }, + { 0xffb8, G_UNICODE_NOT_PRESENT_OFFSET, 7293 }, + { 0xffb9, G_UNICODE_NOT_PRESENT_OFFSET, 7297 }, + { 0xffba, G_UNICODE_NOT_PRESENT_OFFSET, 7301 }, + { 0xffbb, G_UNICODE_NOT_PRESENT_OFFSET, 7305 }, + { 0xffbc, G_UNICODE_NOT_PRESENT_OFFSET, 7309 }, + { 0xffbd, G_UNICODE_NOT_PRESENT_OFFSET, 7313 }, + { 0xffbe, G_UNICODE_NOT_PRESENT_OFFSET, 7317 }, + { 0xffc2, G_UNICODE_NOT_PRESENT_OFFSET, 7321 }, + { 0xffc3, G_UNICODE_NOT_PRESENT_OFFSET, 7325 }, + { 0xffc4, G_UNICODE_NOT_PRESENT_OFFSET, 7329 }, + { 0xffc5, G_UNICODE_NOT_PRESENT_OFFSET, 7333 }, + { 0xffc6, G_UNICODE_NOT_PRESENT_OFFSET, 7337 }, + { 0xffc7, G_UNICODE_NOT_PRESENT_OFFSET, 7341 }, + { 0xffca, G_UNICODE_NOT_PRESENT_OFFSET, 7345 }, + { 0xffcb, G_UNICODE_NOT_PRESENT_OFFSET, 7349 }, + { 0xffcc, G_UNICODE_NOT_PRESENT_OFFSET, 7353 }, + { 0xffcd, G_UNICODE_NOT_PRESENT_OFFSET, 7357 }, + { 0xffce, G_UNICODE_NOT_PRESENT_OFFSET, 7361 }, + { 0xffcf, G_UNICODE_NOT_PRESENT_OFFSET, 7365 }, + { 0xffd2, G_UNICODE_NOT_PRESENT_OFFSET, 7369 }, + { 0xffd3, G_UNICODE_NOT_PRESENT_OFFSET, 7373 }, + { 0xffd4, G_UNICODE_NOT_PRESENT_OFFSET, 7377 }, + { 0xffd5, G_UNICODE_NOT_PRESENT_OFFSET, 7381 }, + { 0xffd6, G_UNICODE_NOT_PRESENT_OFFSET, 7385 }, + { 0xffd7, G_UNICODE_NOT_PRESENT_OFFSET, 7389 }, + { 0xffda, G_UNICODE_NOT_PRESENT_OFFSET, 7393 }, + { 0xffdb, G_UNICODE_NOT_PRESENT_OFFSET, 7397 }, + { 0xffdc, G_UNICODE_NOT_PRESENT_OFFSET, 7401 }, + { 0xffe0, G_UNICODE_NOT_PRESENT_OFFSET, 14161 }, + { 0xffe1, G_UNICODE_NOT_PRESENT_OFFSET, 14164 }, + { 0xffe2, G_UNICODE_NOT_PRESENT_OFFSET, 14167 }, + { 0xffe3, G_UNICODE_NOT_PRESENT_OFFSET, 8 }, + { 0xffe4, G_UNICODE_NOT_PRESENT_OFFSET, 14170 }, + { 0xffe5, G_UNICODE_NOT_PRESENT_OFFSET, 14173 }, + { 0xffe6, G_UNICODE_NOT_PRESENT_OFFSET, 14176 }, + { 0xffe8, G_UNICODE_NOT_PRESENT_OFFSET, 14180 }, + { 0xffe9, G_UNICODE_NOT_PRESENT_OFFSET, 14184 }, + { 0xffea, G_UNICODE_NOT_PRESENT_OFFSET, 14188 }, + { 0xffeb, G_UNICODE_NOT_PRESENT_OFFSET, 14192 }, + { 0xffec, G_UNICODE_NOT_PRESENT_OFFSET, 14196 }, + { 0xffed, G_UNICODE_NOT_PRESENT_OFFSET, 14200 }, + { 0xffee, G_UNICODE_NOT_PRESENT_OFFSET, 14204 }, + { 0x1d15e, 14208, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d15f, 14217, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d160, 14226, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d161, 14239, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d162, 14252, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d163, 14265, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d164, 14278, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1bb, 14291, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1bc, 14300, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1bd, 14309, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1be, 14322, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1bf, 14335, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d1c0, 14348, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x1d400, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d401, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d402, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d403, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d404, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d405, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d406, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d407, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d408, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d409, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d40a, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d40b, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d40c, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d40d, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d40e, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d40f, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d410, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d411, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d412, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d413, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d414, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d415, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d416, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d417, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d418, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d419, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d41a, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d41b, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d41c, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d41d, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d41e, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d41f, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d420, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d421, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d422, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d423, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d424, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d425, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d426, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d427, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d428, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d429, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d42a, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d42b, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d42c, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d42d, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d42e, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d42f, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d430, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d431, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d432, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d433, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d434, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d435, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d436, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d437, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d438, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d439, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d43a, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d43b, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d43c, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d43d, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d43e, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d43f, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d440, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d441, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d442, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d443, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d444, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d445, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d446, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d447, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d448, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d449, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d44a, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d44b, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d44c, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d44d, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d44e, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d44f, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d450, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d451, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d452, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d453, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d454, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d456, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d457, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d458, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d459, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d45a, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d45b, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d45c, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d45d, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d45e, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d45f, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d460, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d461, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d462, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d463, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d464, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d465, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d466, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d467, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d468, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d469, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d46a, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d46b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d46c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d46d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d46e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d46f, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d470, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d471, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d472, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d473, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d474, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d475, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d476, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d477, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d478, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d479, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d47a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d47b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d47c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d47d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d47e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d47f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d480, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d481, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d482, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d483, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d484, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d485, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d486, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d487, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d488, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d489, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d48a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d48b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d48c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d48d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d48e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d48f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d490, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d491, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d492, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d493, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d494, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d495, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d496, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d497, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d498, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d499, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d49a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d49b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d49c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d49e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d49f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d4a2, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d4a5, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d4a6, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d4a9, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d4aa, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d4ab, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d4ac, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d4ae, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d4af, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d4b0, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d4b1, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d4b2, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d4b3, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d4b4, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d4b5, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d4b6, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d4b7, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d4b8, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d4b9, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d4bb, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d4bd, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d4be, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d4bf, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d4c0, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d4c2, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d4c3, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d4c5, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d4c6, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d4c7, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d4c8, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d4c9, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d4ca, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d4cb, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d4cc, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d4cd, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d4ce, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d4cf, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d4d0, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d4d1, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d4d2, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d4d3, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d4d4, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d4d5, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d4d6, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d4d7, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d4d8, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d4d9, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d4da, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d4db, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d4dc, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d4dd, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d4de, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d4df, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d4e0, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d4e1, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d4e2, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d4e3, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d4e4, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d4e5, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d4e6, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d4e7, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d4e8, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d4e9, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d4ea, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d4eb, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d4ec, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d4ed, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d4ee, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d4ef, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d4f0, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d4f1, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d4f2, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d4f3, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d4f4, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d4f5, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d4f6, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d4f7, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d4f8, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d4f9, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d4fa, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d4fb, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d4fc, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d4fd, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d4fe, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d4ff, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d500, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d501, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d502, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d503, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d504, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d505, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d507, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d508, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d509, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d50a, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d50d, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d50e, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d50f, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d510, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d511, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d512, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d513, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d514, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d516, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d517, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d518, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d519, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d51a, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d51b, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d51c, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d51e, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d51f, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d520, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d521, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d522, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d523, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d524, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d525, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d526, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d527, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d528, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d529, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d52a, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d52b, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d52c, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d52d, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d52e, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d52f, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d530, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d531, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d532, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d533, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d534, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d535, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d536, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d537, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d538, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d539, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d53b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d53c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d53d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d53e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d540, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d541, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d542, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d543, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d544, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d546, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d54a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d54b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d54c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d54d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d54e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d54f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d550, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d552, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d553, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d554, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d555, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d556, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d557, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d558, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d559, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d55a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d55b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d55c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d55d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d55e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d55f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d560, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d561, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d562, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d563, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d564, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d565, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d566, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d567, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d568, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d569, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d56a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d56b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d56c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d56d, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d56e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d56f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d570, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d571, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d572, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d573, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d574, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d575, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d576, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d577, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d578, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d579, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d57a, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d57b, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d57c, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d57d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d57e, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d57f, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d580, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d581, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d582, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d583, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d584, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d585, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d586, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d587, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d588, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d589, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d58a, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d58b, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d58c, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d58d, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d58e, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d58f, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d590, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d591, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d592, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d593, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d594, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d595, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d596, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d597, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d598, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d599, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d59a, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d59b, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d59c, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d59d, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d59e, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d59f, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d5a0, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d5a1, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d5a2, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d5a3, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d5a4, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d5a5, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d5a6, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d5a7, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d5a8, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d5a9, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d5aa, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d5ab, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d5ac, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d5ad, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d5ae, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d5af, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d5b0, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d5b1, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d5b2, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d5b3, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d5b4, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d5b5, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d5b6, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d5b7, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d5b8, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d5b9, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d5ba, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d5bb, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d5bc, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d5bd, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d5be, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d5bf, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d5c0, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d5c1, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d5c2, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d5c3, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d5c4, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d5c5, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d5c6, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d5c7, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d5c8, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d5c9, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d5ca, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d5cb, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d5cc, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d5cd, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d5ce, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d5cf, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d5d0, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d5d1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d5d2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d5d3, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d5d4, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d5d5, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d5d6, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d5d7, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d5d8, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d5d9, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d5da, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d5db, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d5dc, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d5dd, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d5de, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d5df, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d5e0, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d5e1, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d5e2, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d5e3, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d5e4, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d5e5, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d5e6, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d5e7, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d5e8, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d5e9, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d5ea, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d5eb, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d5ec, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d5ed, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d5ee, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d5ef, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d5f0, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d5f1, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d5f2, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d5f3, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d5f4, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d5f5, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d5f6, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d5f7, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d5f8, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d5f9, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d5fa, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d5fb, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d5fc, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d5fd, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d5fe, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d5ff, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d600, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d601, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d602, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d603, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d604, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d605, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d606, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d607, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d608, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d609, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d60a, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d60b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d60c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d60d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d60e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d60f, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d610, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d611, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d612, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d613, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d614, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d615, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d616, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d617, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d618, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d619, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d61a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d61b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d61c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d61d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d61e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d61f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d620, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d621, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d622, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d623, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d624, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d625, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d626, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d627, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d628, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d629, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d62a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d62b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d62c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d62d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d62e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d62f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d630, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d631, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d632, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d633, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d634, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d635, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d636, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d637, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d638, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d639, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d63a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d63b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d63c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d63d, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d63e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d63f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d640, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d641, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d642, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d643, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d644, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d645, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d646, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d647, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d648, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d649, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d64a, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d64b, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d64c, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d64d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d64e, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d64f, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d650, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d651, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d652, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d653, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d654, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d655, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d656, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d657, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d658, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d659, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d65a, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d65b, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d65c, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d65d, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d65e, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d65f, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d660, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d661, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d662, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d663, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d664, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d665, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d666, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d667, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d668, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d669, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d66a, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d66b, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d66c, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d66d, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d66e, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d66f, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d670, G_UNICODE_NOT_PRESENT_OFFSET, 5831 }, + { 0x1d671, G_UNICODE_NOT_PRESENT_OFFSET, 5042 }, + { 0x1d672, G_UNICODE_NOT_PRESENT_OFFSET, 4982 }, + { 0x1d673, G_UNICODE_NOT_PRESENT_OFFSET, 5077 }, + { 0x1d674, G_UNICODE_NOT_PRESENT_OFFSET, 5046 }, + { 0x1d675, G_UNICODE_NOT_PRESENT_OFFSET, 5048 }, + { 0x1d676, G_UNICODE_NOT_PRESENT_OFFSET, 5833 }, + { 0x1d677, G_UNICODE_NOT_PRESENT_OFFSET, 5005 }, + { 0x1d678, G_UNICODE_NOT_PRESENT_OFFSET, 5010 }, + { 0x1d679, G_UNICODE_NOT_PRESENT_OFFSET, 5835 }, + { 0x1d67a, G_UNICODE_NOT_PRESENT_OFFSET, 5040 }, + { 0x1d67b, G_UNICODE_NOT_PRESENT_OFFSET, 5012 }, + { 0x1d67c, G_UNICODE_NOT_PRESENT_OFFSET, 5050 }, + { 0x1d67d, G_UNICODE_NOT_PRESENT_OFFSET, 5014 }, + { 0x1d67e, G_UNICODE_NOT_PRESENT_OFFSET, 5837 }, + { 0x1d67f, G_UNICODE_NOT_PRESENT_OFFSET, 5019 }, + { 0x1d680, G_UNICODE_NOT_PRESENT_OFFSET, 5021 }, + { 0x1d681, G_UNICODE_NOT_PRESENT_OFFSET, 5023 }, + { 0x1d682, G_UNICODE_NOT_PRESENT_OFFSET, 5839 }, + { 0x1d683, G_UNICODE_NOT_PRESENT_OFFSET, 5841 }, + { 0x1d684, G_UNICODE_NOT_PRESENT_OFFSET, 5843 }, + { 0x1d685, G_UNICODE_NOT_PRESENT_OFFSET, 5168 }, + { 0x1d686, G_UNICODE_NOT_PRESENT_OFFSET, 5845 }, + { 0x1d687, G_UNICODE_NOT_PRESENT_OFFSET, 5185 }, + { 0x1d688, G_UNICODE_NOT_PRESENT_OFFSET, 5847 }, + { 0x1d689, G_UNICODE_NOT_PRESENT_OFFSET, 5035 }, + { 0x1d68a, G_UNICODE_NOT_PRESENT_OFFSET, 6 }, + { 0x1d68b, G_UNICODE_NOT_PRESENT_OFFSET, 5849 }, + { 0x1d68c, G_UNICODE_NOT_PRESENT_OFFSET, 5228 }, + { 0x1d68d, G_UNICODE_NOT_PRESENT_OFFSET, 5079 }, + { 0x1d68e, G_UNICODE_NOT_PRESENT_OFFSET, 5044 }, + { 0x1d68f, G_UNICODE_NOT_PRESENT_OFFSET, 5851 }, + { 0x1d690, G_UNICODE_NOT_PRESENT_OFFSET, 5003 }, + { 0x1d691, G_UNICODE_NOT_PRESENT_OFFSET, 1171 }, + { 0x1d692, G_UNICODE_NOT_PRESENT_OFFSET, 4943 }, + { 0x1d693, G_UNICODE_NOT_PRESENT_OFFSET, 1176 }, + { 0x1d694, G_UNICODE_NOT_PRESENT_OFFSET, 5853 }, + { 0x1d695, G_UNICODE_NOT_PRESENT_OFFSET, 1220 }, + { 0x1d696, G_UNICODE_NOT_PRESENT_OFFSET, 5230 }, + { 0x1d697, G_UNICODE_NOT_PRESENT_OFFSET, 4969 }, + { 0x1d698, G_UNICODE_NOT_PRESENT_OFFSET, 29 }, + { 0x1d699, G_UNICODE_NOT_PRESENT_OFFSET, 5855 }, + { 0x1d69a, G_UNICODE_NOT_PRESENT_OFFSET, 5857 }, + { 0x1d69b, G_UNICODE_NOT_PRESENT_OFFSET, 1178 }, + { 0x1d69c, G_UNICODE_NOT_PRESENT_OFFSET, 711 }, + { 0x1d69d, G_UNICODE_NOT_PRESENT_OFFSET, 5859 }, + { 0x1d69e, G_UNICODE_NOT_PRESENT_OFFSET, 5861 }, + { 0x1d69f, G_UNICODE_NOT_PRESENT_OFFSET, 5204 }, + { 0x1d6a0, G_UNICODE_NOT_PRESENT_OFFSET, 1189 }, + { 0x1d6a1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 }, + { 0x1d6a2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 }, + { 0x1d6a3, G_UNICODE_NOT_PRESENT_OFFSET, 5863 }, + { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 14361 }, + { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 14364 }, + { 0x1d6aa, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 14367 }, + { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 14370 }, + { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 14373 }, + { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 14376 }, + { 0x1d6af, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 14379 }, + { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 14382 }, + { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 14385 }, + { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 14388 }, + { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 14391 }, + { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 14394 }, + { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 14397 }, + { 0x1d6b7, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 14400 }, + { 0x1d6b9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d6ba, G_UNICODE_NOT_PRESENT_OFFSET, 14403 }, + { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 14406 }, + { 0x1d6bc, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 14409 }, + { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 14412 }, + { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 14415 }, + { 0x1d6c0, G_UNICODE_NOT_PRESENT_OFFSET, 5037 }, + { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 14418 }, + { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 14422 }, + { 0x1d6c3, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x1d6c4, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x1d6c5, G_UNICODE_NOT_PRESENT_OFFSET, 14425 }, + { 0x1d6c6, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 14428 }, + { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 14431 }, + { 0x1d6c9, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d6ca, G_UNICODE_NOT_PRESENT_OFFSET, 4548 }, + { 0x1d6cb, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 14434 }, + { 0x1d6cd, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 14437 }, + { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 14440 }, + { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 14443 }, + { 0x1d6d1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d6d2, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d6d3, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 14446 }, + { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 14449 }, + { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 14452 }, + { 0x1d6d7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d6d8, G_UNICODE_NOT_PRESENT_OFFSET, 14455 }, + { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 14458 }, + { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 14461 }, + { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 14464 }, + { 0x1d6dc, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d6dd, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d6de, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d6df, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d6e0, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d6e1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 14361 }, + { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 14364 }, + { 0x1d6e4, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 14367 }, + { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 14370 }, + { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 14373 }, + { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 14376 }, + { 0x1d6e9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 14379 }, + { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 14382 }, + { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 14385 }, + { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 14388 }, + { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 14391 }, + { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 14394 }, + { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 14397 }, + { 0x1d6f1, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 14400 }, + { 0x1d6f3, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d6f4, G_UNICODE_NOT_PRESENT_OFFSET, 14403 }, + { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 14406 }, + { 0x1d6f6, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 14409 }, + { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 14412 }, + { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 14415 }, + { 0x1d6fa, G_UNICODE_NOT_PRESENT_OFFSET, 5037 }, + { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 14418 }, + { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 14422 }, + { 0x1d6fd, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x1d6fe, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x1d6ff, G_UNICODE_NOT_PRESENT_OFFSET, 14425 }, + { 0x1d700, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 14428 }, + { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 14431 }, + { 0x1d703, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d704, G_UNICODE_NOT_PRESENT_OFFSET, 4548 }, + { 0x1d705, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 14434 }, + { 0x1d707, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 14437 }, + { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 14440 }, + { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 14443 }, + { 0x1d70b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d70c, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d70d, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 14446 }, + { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 14449 }, + { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 14452 }, + { 0x1d711, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d712, G_UNICODE_NOT_PRESENT_OFFSET, 14455 }, + { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 14458 }, + { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 14461 }, + { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 14464 }, + { 0x1d716, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d717, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d718, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d719, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d71a, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d71b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 14361 }, + { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 14364 }, + { 0x1d71e, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 14367 }, + { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 14370 }, + { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 14373 }, + { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 14376 }, + { 0x1d723, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 14379 }, + { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 14382 }, + { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 14385 }, + { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 14388 }, + { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 14391 }, + { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 14394 }, + { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 14397 }, + { 0x1d72b, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 14400 }, + { 0x1d72d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d72e, G_UNICODE_NOT_PRESENT_OFFSET, 14403 }, + { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 14406 }, + { 0x1d730, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 14409 }, + { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 14412 }, + { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 14415 }, + { 0x1d734, G_UNICODE_NOT_PRESENT_OFFSET, 5037 }, + { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 14418 }, + { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 14422 }, + { 0x1d737, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x1d738, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x1d739, G_UNICODE_NOT_PRESENT_OFFSET, 14425 }, + { 0x1d73a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 14428 }, + { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 14431 }, + { 0x1d73d, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d73e, G_UNICODE_NOT_PRESENT_OFFSET, 4548 }, + { 0x1d73f, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 14434 }, + { 0x1d741, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 14437 }, + { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 14440 }, + { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 14443 }, + { 0x1d745, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d746, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d747, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 14446 }, + { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 14449 }, + { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 14452 }, + { 0x1d74b, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d74c, G_UNICODE_NOT_PRESENT_OFFSET, 14455 }, + { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 14458 }, + { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 14461 }, + { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 14464 }, + { 0x1d750, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d751, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d752, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d753, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d754, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d755, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 14361 }, + { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 14364 }, + { 0x1d758, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 14367 }, + { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 14370 }, + { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 14373 }, + { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 14376 }, + { 0x1d75d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 14379 }, + { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 14382 }, + { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 14385 }, + { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 14388 }, + { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 14391 }, + { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 14394 }, + { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 14397 }, + { 0x1d765, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 14400 }, + { 0x1d767, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d768, G_UNICODE_NOT_PRESENT_OFFSET, 14403 }, + { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 14406 }, + { 0x1d76a, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 14409 }, + { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 14412 }, + { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 14415 }, + { 0x1d76e, G_UNICODE_NOT_PRESENT_OFFSET, 5037 }, + { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 14418 }, + { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 14422 }, + { 0x1d771, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x1d772, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x1d773, G_UNICODE_NOT_PRESENT_OFFSET, 14425 }, + { 0x1d774, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 14428 }, + { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 14431 }, + { 0x1d777, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d778, G_UNICODE_NOT_PRESENT_OFFSET, 4548 }, + { 0x1d779, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 14434 }, + { 0x1d77b, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 14437 }, + { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 14440 }, + { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 14443 }, + { 0x1d77f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d780, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d781, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 14446 }, + { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 14449 }, + { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 14452 }, + { 0x1d785, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d786, G_UNICODE_NOT_PRESENT_OFFSET, 14455 }, + { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 14458 }, + { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 14461 }, + { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 14464 }, + { 0x1d78a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d78b, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d78c, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d78d, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d78e, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d78f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 14361 }, + { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 14364 }, + { 0x1d792, G_UNICODE_NOT_PRESENT_OFFSET, 5067 }, + { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 14367 }, + { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 14370 }, + { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 14373 }, + { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 14376 }, + { 0x1d797, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 14379 }, + { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 14382 }, + { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 14385 }, + { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 14388 }, + { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 14391 }, + { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 14394 }, + { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 14397 }, + { 0x1d79f, G_UNICODE_NOT_PRESENT_OFFSET, 5070 }, + { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 14400 }, + { 0x1d7a1, G_UNICODE_NOT_PRESENT_OFFSET, 1402 }, + { 0x1d7a2, G_UNICODE_NOT_PRESENT_OFFSET, 14403 }, + { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 14406 }, + { 0x1d7a4, G_UNICODE_NOT_PRESENT_OFFSET, 1374 }, + { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 14409 }, + { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 14412 }, + { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 14415 }, + { 0x1d7a8, G_UNICODE_NOT_PRESENT_OFFSET, 5037 }, + { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 14418 }, + { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 14422 }, + { 0x1d7ab, G_UNICODE_NOT_PRESENT_OFFSET, 1368 }, + { 0x1d7ac, G_UNICODE_NOT_PRESENT_OFFSET, 5064 }, + { 0x1d7ad, G_UNICODE_NOT_PRESENT_OFFSET, 14425 }, + { 0x1d7ae, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 14428 }, + { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 14431 }, + { 0x1d7b1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d7b2, G_UNICODE_NOT_PRESENT_OFFSET, 4548 }, + { 0x1d7b3, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 14434 }, + { 0x1d7b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 }, + { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 14437 }, + { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 14440 }, + { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 14443 }, + { 0x1d7b9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d7ba, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d7bb, G_UNICODE_NOT_PRESENT_OFFSET, 1399 }, + { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 14446 }, + { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 14449 }, + { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 14452 }, + { 0x1d7bf, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d7c0, G_UNICODE_NOT_PRESENT_OFFSET, 14455 }, + { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 14458 }, + { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 14461 }, + { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 14464 }, + { 0x1d7c4, G_UNICODE_NOT_PRESENT_OFFSET, 1405 }, + { 0x1d7c5, G_UNICODE_NOT_PRESENT_OFFSET, 1371 }, + { 0x1d7c6, G_UNICODE_NOT_PRESENT_OFFSET, 1393 }, + { 0x1d7c7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 }, + { 0x1d7c8, G_UNICODE_NOT_PRESENT_OFFSET, 1396 }, + { 0x1d7c9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 }, + { 0x1d7ce, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x1d7cf, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x1d7d0, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x1d7d1, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x1d7d2, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x1d7d3, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x1d7d4, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x1d7d5, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x1d7d6, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x1d7d7, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x1d7d8, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x1d7d9, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x1d7da, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x1d7db, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x1d7dc, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x1d7dd, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x1d7de, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x1d7df, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x1d7e0, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x1d7e1, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x1d7e2, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x1d7e3, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x1d7e4, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x1d7e5, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x1d7e6, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x1d7e7, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x1d7e8, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x1d7e9, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x1d7ea, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x1d7eb, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x1d7ec, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x1d7ed, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x1d7ee, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x1d7ef, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x1d7f0, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x1d7f1, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x1d7f2, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x1d7f3, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x1d7f4, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x1d7f5, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x1d7f6, G_UNICODE_NOT_PRESENT_OFFSET, 4941 }, + { 0x1d7f7, G_UNICODE_NOT_PRESENT_OFFSET, 27 }, + { 0x1d7f8, G_UNICODE_NOT_PRESENT_OFFSET, 12 }, + { 0x1d7f9, G_UNICODE_NOT_PRESENT_OFFSET, 14 }, + { 0x1d7fa, G_UNICODE_NOT_PRESENT_OFFSET, 4945 }, + { 0x1d7fb, G_UNICODE_NOT_PRESENT_OFFSET, 4947 }, + { 0x1d7fc, G_UNICODE_NOT_PRESENT_OFFSET, 4949 }, + { 0x1d7fd, G_UNICODE_NOT_PRESENT_OFFSET, 4951 }, + { 0x1d7fe, G_UNICODE_NOT_PRESENT_OFFSET, 4953 }, + { 0x1d7ff, G_UNICODE_NOT_PRESENT_OFFSET, 4955 }, + { 0x2f800, 14468, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f801, 14472, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f802, 14476, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f803, 14480, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f804, 14485, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f805, 11545, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f806, 14489, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f807, 14493, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f808, 14497, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f809, 14501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80a, 11549, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80b, 14505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80c, 14509, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80d, 14513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80e, 11553, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f80f, 14518, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f810, 14522, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f811, 14526, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f812, 14530, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f813, 14535, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f814, 14539, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f815, 14543, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f816, 14547, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f817, 14552, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f818, 14556, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f819, 14560, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81a, 14564, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81b, 14568, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81c, 14572, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81d, 5967, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81e, 14577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f81f, 14581, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f820, 14585, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f821, 14589, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f822, 14593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f823, 14597, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f824, 14601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f825, 14605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f826, 11557, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f827, 11561, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f828, 14609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f829, 14613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82a, 14617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82b, 10837, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82c, 14621, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82d, 11565, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82e, 14625, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f82f, 14629, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f830, 14633, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f831, 14637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f832, 14637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f833, 14637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f834, 14641, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f835, 14646, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f836, 14650, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f837, 14654, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f838, 14658, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f839, 14663, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83a, 14667, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83b, 14671, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83c, 14675, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83d, 14679, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83e, 14683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f83f, 14687, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f840, 14691, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f841, 14695, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f842, 14699, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f843, 14703, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f844, 14707, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f845, 14711, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f846, 14711, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f847, 14715, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f848, 14719, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f849, 14723, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84a, 14727, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84b, 14731, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84c, 11573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84d, 14735, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84e, 14739, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f84f, 14743, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f850, 11421, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f851, 14747, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f852, 14751, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f853, 14755, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f854, 14759, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f855, 14763, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f856, 14767, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f857, 14771, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f858, 14775, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f859, 14779, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85a, 14784, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85b, 14788, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85c, 14792, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85d, 14796, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85e, 14800, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f85f, 14804, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f860, 14808, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f861, 14813, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f862, 14818, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f863, 14822, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f864, 14826, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f865, 14830, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f866, 14834, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f867, 14838, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f868, 14842, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f869, 14847, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86a, 14851, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86b, 14851, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86c, 14855, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86d, 14860, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86e, 14864, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f86f, 10821, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f870, 14868, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f871, 14872, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f872, 14877, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f873, 14881, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f874, 14885, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f875, 6071, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f876, 14889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f877, 14893, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f878, 6079, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f879, 14897, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87a, 14901, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87b, 14905, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87c, 14910, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87d, 14914, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87e, 14919, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f87f, 14923, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f880, 14927, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f881, 14931, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f882, 14935, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f883, 14939, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f884, 14943, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f885, 14947, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f886, 14951, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f887, 14955, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f888, 14959, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f889, 14963, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88a, 14968, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88b, 14972, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88c, 14976, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88d, 14980, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88e, 10613, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f88f, 14984, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f890, 6119, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f891, 14989, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f892, 14989, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f893, 14994, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f894, 14998, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f895, 14998, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f896, 15002, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f897, 15006, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f898, 15011, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f899, 15016, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89a, 15020, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89b, 15024, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89c, 15028, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89d, 15032, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89e, 15036, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f89f, 15040, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a0, 15044, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a1, 15048, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a2, 15052, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a3, 11593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a4, 15056, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a5, 15061, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a6, 15065, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a7, 15069, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a8, 15073, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8a9, 15069, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8aa, 15077, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ab, 11601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ac, 15081, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ad, 15085, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ae, 15089, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8af, 15093, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b0, 11605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b1, 10505, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b2, 15097, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b3, 15101, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b4, 15105, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b5, 15109, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b6, 15113, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b7, 15117, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b8, 15121, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8b9, 15126, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ba, 15130, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8bb, 15134, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8bc, 15138, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8bd, 15142, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8be, 15146, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8bf, 15151, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c0, 15155, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c1, 15159, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c2, 15163, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c3, 15167, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c4, 15171, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c5, 15175, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c6, 15179, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c7, 15183, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c8, 11609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8c9, 15187, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ca, 15191, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8cb, 15196, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8cc, 15200, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8cd, 15204, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ce, 15208, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8cf, 11617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d0, 15212, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d1, 15216, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d2, 15220, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d3, 15224, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d4, 15228, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d5, 15232, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d6, 15236, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d7, 15240, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d8, 10617, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8d9, 15244, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8da, 15248, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8db, 15252, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8dc, 15256, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8dd, 15260, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8de, 15265, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8df, 15269, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e0, 15273, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e1, 15277, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e2, 11621, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e3, 15281, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e4, 15286, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e5, 15290, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e6, 15294, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e7, 15298, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e8, 15302, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8e9, 15306, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ea, 15310, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8eb, 15314, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ec, 15318, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ed, 15323, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ee, 15327, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ef, 15331, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f0, 15335, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f1, 15340, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f2, 15344, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f3, 15348, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f4, 15352, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f5, 10889, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f6, 15356, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f7, 15360, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f8, 15365, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8f9, 15370, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8fa, 15375, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8fb, 15379, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8fc, 15384, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8fd, 15388, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8fe, 15392, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f8ff, 15396, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f900, 15400, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f901, 11625, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f902, 11221, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f903, 15404, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f904, 15408, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f905, 15412, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f906, 15416, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f907, 15421, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f908, 15425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f909, 15429, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90a, 15433, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90b, 15437, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90c, 15441, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90d, 15445, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90e, 15450, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f90f, 15454, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f910, 15458, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f911, 15463, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f912, 15468, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f913, 15472, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f914, 15476, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f915, 15480, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f916, 15484, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f917, 15488, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f918, 15492, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f919, 15496, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91a, 15500, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91b, 15504, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91c, 15509, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91d, 15513, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91e, 15518, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f91f, 15522, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f920, 15526, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f921, 15530, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f922, 15534, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f923, 15538, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f924, 15543, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f925, 15547, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f926, 15551, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f927, 15556, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f928, 15561, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f929, 15565, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92a, 15569, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92b, 15573, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92c, 15577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92d, 15577, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92e, 15581, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f92f, 15585, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f930, 15589, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f931, 15593, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f932, 15597, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f933, 15601, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f934, 15605, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f935, 15609, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f936, 15614, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f937, 15618, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f938, 10833, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f939, 15623, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93a, 15628, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93b, 15632, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93c, 15637, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93d, 15642, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93e, 15647, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f93f, 15651, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f940, 15655, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f941, 15659, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f942, 15664, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f943, 15669, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f944, 15674, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f945, 15679, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f946, 15683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f947, 15683, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f948, 15687, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f949, 15691, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94a, 15695, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94b, 15699, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94c, 15703, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94d, 15707, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94e, 15712, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f94f, 10685, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f950, 15716, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f951, 15720, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f952, 15724, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f953, 11665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f954, 15729, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f955, 15734, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f956, 11501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f957, 15739, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f958, 15743, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f959, 11677, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95a, 15747, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95b, 15751, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95c, 15755, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95d, 15760, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95e, 15760, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f95f, 15765, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f960, 15769, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f961, 15773, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f962, 15778, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f963, 15782, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f964, 15786, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f965, 15790, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f966, 15795, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f967, 15799, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f968, 15803, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f969, 15807, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96a, 15811, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96b, 15815, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96c, 15820, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96d, 15824, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96e, 15828, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f96f, 15832, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f970, 15836, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f971, 15840, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f972, 15844, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f973, 15849, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f974, 15854, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f975, 15858, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f976, 15863, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f977, 15867, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f978, 15872, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f979, 15876, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97a, 11701, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97b, 15880, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97c, 15885, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97d, 15890, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97e, 15894, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f97f, 15899, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f980, 15903, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f981, 15908, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f982, 15912, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f983, 15916, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f984, 15920, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f985, 15924, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f986, 15928, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f987, 15932, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f988, 15937, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f989, 15942, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98a, 15947, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98b, 14994, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98c, 15952, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98d, 15956, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98e, 15960, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f98f, 15964, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f990, 15968, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f991, 15972, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f992, 15976, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f993, 15980, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f994, 15984, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f995, 15988, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f996, 15992, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f997, 15996, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f998, 10901, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f999, 16001, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99a, 16005, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99b, 16009, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99c, 16013, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99d, 16017, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99e, 16021, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f99f, 11713, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a0, 16025, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a1, 16029, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a2, 16033, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a3, 16037, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a4, 16041, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a5, 16046, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a6, 16051, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a7, 16056, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a8, 16060, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9a9, 16064, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9aa, 16068, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ab, 16072, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ac, 16077, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ad, 16081, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ae, 16086, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9af, 16090, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b0, 16094, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b1, 16099, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b2, 16104, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b3, 16108, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b4, 10665, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b5, 16112, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b6, 16116, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b7, 16120, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b8, 16124, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9b9, 16128, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ba, 16132, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9bb, 16136, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9bc, 16140, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9bd, 16144, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9be, 16148, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9bf, 16152, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c0, 16156, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c1, 16160, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c2, 16164, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c3, 16168, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c4, 6479, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c5, 16172, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c6, 16177, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c7, 16181, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c8, 16185, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9c9, 16189, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ca, 16193, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9cb, 16197, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9cc, 16202, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9cd, 16207, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ce, 16211, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9cf, 16215, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d0, 16219, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d1, 16223, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d2, 6507, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d3, 16227, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d4, 16232, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d5, 16236, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d6, 16240, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d7, 16244, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d8, 16248, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9d9, 16253, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9da, 16258, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9db, 16262, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9dc, 16266, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9dd, 16270, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9de, 16275, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9df, 16279, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e0, 16283, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e1, 16288, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e2, 16293, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e3, 16297, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e4, 16301, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e5, 16305, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e6, 16310, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e7, 16314, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e8, 16318, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9e9, 16322, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ea, 16326, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9eb, 16330, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ec, 16334, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ed, 16338, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ee, 16343, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ef, 16347, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f0, 16351, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f1, 16355, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f2, 16360, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f3, 16364, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f4, 16368, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f5, 16372, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f6, 16376, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f7, 16381, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f8, 16386, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9f9, 16390, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9fa, 16394, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9fb, 16398, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9fc, 16403, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9fd, 16407, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9fe, 16412, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2f9ff, 16412, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa00, 16416, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa01, 16420, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa02, 16425, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa03, 16429, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa04, 16433, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa05, 16437, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa06, 16441, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa07, 16445, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa08, 16449, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa09, 16453, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0a, 16458, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0b, 16462, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0c, 16466, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0d, 16470, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0e, 16474, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa0f, 16478, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa10, 16482, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa11, 16487, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa12, 16491, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa13, 16496, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa14, 16501, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa15, 6699, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa16, 16506, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa17, 6715, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa18, 16510, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa19, 16514, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa1a, 16518, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa1b, 16522, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa1c, 6735, G_UNICODE_NOT_PRESENT_OFFSET }, + { 0x2fa1d, 16526, G_UNICODE_NOT_PRESENT_OFFSET } +}; + +static const gchar decomp_expansion_string[] = + "\x20\0" /* offset 0 */ + "\x20\x08\0" /* offset 2 */ + "\x61\0" /* offset 6 */ + "\x20\x04\0" /* offset 8 */ + "\x32\0" /* offset 12 */ + "\x33\0" /* offset 14 */ + "\x20\x01\0" /* offset 16 */ + "\xbc\0" /* offset 20 */ + "\x20\x27\0" /* offset 23 */ + "\x31\0" /* offset 27 */ + "\x6f\0" /* offset 29 */ + "\x31\x44\x34\0" /* offset 31 */ + "\x31\x44\x32\0" /* offset 37 */ + "\x33\x44\x34\0" /* offset 43 */ + "\x41\x00\0" /* offset 49 */ + "\x41\x01\0" /* offset 53 */ + "\x41\x02\0" /* offset 57 */ + "\x41\x03\0" /* offset 61 */ + "\x41\x08\0" /* offset 65 */ + "\x41\x0a\0" /* offset 69 */ + "\x43\x27\0" /* offset 73 */ + "\x45\x00\0" /* offset 77 */ + "\x45\x01\0" /* offset 81 */ + "\x45\x02\0" /* offset 85 */ + "\x45\x08\0" /* offset 89 */ + "\x49\x00\0" /* offset 93 */ + "\x49\x01\0" /* offset 97 */ + "\x49\x02\0" /* offset 101 */ + "\x49\x08\0" /* offset 105 */ + "\x4e\x03\0" /* offset 109 */ + "\x4f\x00\0" /* offset 113 */ + "\x4f\x01\0" /* offset 117 */ + "\x4f\x02\0" /* offset 121 */ + "\x4f\x03\0" /* offset 125 */ + "\x4f\x08\0" /* offset 129 */ + "\x55\x00\0" /* offset 133 */ + "\x55\x01\0" /* offset 137 */ + "\x55\x02\0" /* offset 141 */ + "\x55\x08\0" /* offset 145 */ + "\x59\x01\0" /* offset 149 */ + "\x61\x00\0" /* offset 153 */ + "\x61\x01\0" /* offset 157 */ + "\x61\x02\0" /* offset 161 */ + "\x61\x03\0" /* offset 165 */ + "\x61\x08\0" /* offset 169 */ + "\x61\x0a\0" /* offset 173 */ + "\x63\x27\0" /* offset 177 */ + "\x65\x00\0" /* offset 181 */ + "\x65\x01\0" /* offset 185 */ + "\x65\x02\0" /* offset 189 */ + "\x65\x08\0" /* offset 193 */ + "\x69\x00\0" /* offset 197 */ + "\x69\x01\0" /* offset 201 */ + "\x69\x02\0" /* offset 205 */ + "\x69\x08\0" /* offset 209 */ + "\x6e\x03\0" /* offset 213 */ + "\x6f\x00\0" /* offset 217 */ + "\x6f\x01\0" /* offset 221 */ + "\x6f\x02\0" /* offset 225 */ + "\x6f\x03\0" /* offset 229 */ + "\x6f\x08\0" /* offset 233 */ + "\x75\x00\0" /* offset 237 */ + "\x75\x01\0" /* offset 241 */ + "\x75\x02\0" /* offset 245 */ + "\x75\x08\0" /* offset 249 */ + "\x79\x01\0" /* offset 253 */ + "\x79\x08\0" /* offset 257 */ + "\x41\x04\0" /* offset 261 */ + "\x61\x04\0" /* offset 265 */ + "\x41\x06\0" /* offset 269 */ + "\x61\x06\0" /* offset 273 */ + "\x41\x28\0" /* offset 277 */ + "\x61\x28\0" /* offset 281 */ + "\x43\x01\0" /* offset 285 */ + "\x63\x01\0" /* offset 289 */ + "\x43\x02\0" /* offset 293 */ + "\x63\x02\0" /* offset 297 */ + "\x43\x07\0" /* offset 301 */ + "\x63\x07\0" /* offset 305 */ + "\x43\x0c\0" /* offset 309 */ + "\x63\x0c\0" /* offset 313 */ + "\x44\x0c\0" /* offset 317 */ + "\x64\x0c\0" /* offset 321 */ + "\x45\x04\0" /* offset 325 */ + "\x65\x04\0" /* offset 329 */ + "\x45\x06\0" /* offset 333 */ + "\x65\x06\0" /* offset 337 */ + "\x45\x07\0" /* offset 341 */ + "\x65\x07\0" /* offset 345 */ + "\x45\x28\0" /* offset 349 */ + "\x65\x28\0" /* offset 353 */ + "\x45\x0c\0" /* offset 357 */ + "\x65\x0c\0" /* offset 361 */ + "\x47\x02\0" /* offset 365 */ + "\x67\x02\0" /* offset 369 */ + "\x47\x06\0" /* offset 373 */ + "\x67\x06\0" /* offset 377 */ + "\x47\x07\0" /* offset 381 */ + "\x67\x07\0" /* offset 385 */ + "\x47\x27\0" /* offset 389 */ + "\x67\x27\0" /* offset 393 */ + "\x48\x02\0" /* offset 397 */ + "\x68\x02\0" /* offset 401 */ + "\x49\x03\0" /* offset 405 */ + "\x69\x03\0" /* offset 409 */ + "\x49\x04\0" /* offset 413 */ + "\x69\x04\0" /* offset 417 */ + "\x49\x06\0" /* offset 421 */ + "\x69\x06\0" /* offset 425 */ + "\x49\x28\0" /* offset 429 */ + "\x69\x28\0" /* offset 433 */ + "\x49\x07\0" /* offset 437 */ + "\x49\x4a\0" /* offset 441 */ + "\x69\x6a\0" /* offset 444 */ + "\x4a\x02\0" /* offset 447 */ + "\x6a\x02\0" /* offset 451 */ + "\x4b\x27\0" /* offset 455 */ + "\x6b\x27\0" /* offset 459 */ + "\x4c\x01\0" /* offset 463 */ + "\x6c\x01\0" /* offset 467 */ + "\x4c\x27\0" /* offset 471 */ + "\x6c\x27\0" /* offset 475 */ + "\x4c\x0c\0" /* offset 479 */ + "\x6c\x0c\0" /* offset 483 */ + "\x4c\xb7\0" /* offset 487 */ + "\x6c\xb7\0" /* offset 491 */ + "\x4e\x01\0" /* offset 495 */ + "\x6e\x01\0" /* offset 499 */ + "\x4e\x27\0" /* offset 503 */ + "\x6e\x27\0" /* offset 507 */ + "\x4e\x0c\0" /* offset 511 */ + "\x6e\x0c\0" /* offset 515 */ + "\xbc\x6e\0" /* offset 519 */ + "\x4f\x04\0" /* offset 523 */ + "\x6f\x04\0" /* offset 527 */ + "\x4f\x06\0" /* offset 531 */ + "\x6f\x06\0" /* offset 535 */ + "\x4f\x0b\0" /* offset 539 */ + "\x6f\x0b\0" /* offset 543 */ + "\x52\x01\0" /* offset 547 */ + "\x72\x01\0" /* offset 551 */ + "\x52\x27\0" /* offset 555 */ + "\x72\x27\0" /* offset 559 */ + "\x52\x0c\0" /* offset 563 */ + "\x72\x0c\0" /* offset 567 */ + "\x53\x01\0" /* offset 571 */ + "\x73\x01\0" /* offset 575 */ + "\x53\x02\0" /* offset 579 */ + "\x73\x02\0" /* offset 583 */ + "\x53\x27\0" /* offset 587 */ + "\x73\x27\0" /* offset 591 */ + "\x53\x0c\0" /* offset 595 */ + "\x73\x0c\0" /* offset 599 */ + "\x54\x27\0" /* offset 603 */ + "\x74\x27\0" /* offset 607 */ + "\x54\x0c\0" /* offset 611 */ + "\x74\x0c\0" /* offset 615 */ + "\x55\x03\0" /* offset 619 */ + "\x75\x03\0" /* offset 623 */ + "\x55\x04\0" /* offset 627 */ + "\x75\x04\0" /* offset 631 */ + "\x55\x06\0" /* offset 635 */ + "\x75\x06\0" /* offset 639 */ + "\x55\x0a\0" /* offset 643 */ + "\x75\x0a\0" /* offset 647 */ + "\x55\x0b\0" /* offset 651 */ + "\x75\x0b\0" /* offset 655 */ + "\x55\x28\0" /* offset 659 */ + "\x75\x28\0" /* offset 663 */ + "\x57\x02\0" /* offset 667 */ + "\x77\x02\0" /* offset 671 */ + "\x59\x02\0" /* offset 675 */ + "\x79\x02\0" /* offset 679 */ + "\x59\x08\0" /* offset 683 */ + "\x5a\x01\0" /* offset 687 */ + "\x7a\x01\0" /* offset 691 */ + "\x5a\x07\0" /* offset 695 */ + "\x7a\x07\0" /* offset 699 */ + "\x5a\x0c\0" /* offset 703 */ + "\x7a\x0c\0" /* offset 707 */ + "\x73\0" /* offset 711 */ + "\x4f\x1b\0" /* offset 713 */ + "\x6f\x1b\0" /* offset 717 */ + "\x55\x1b\0" /* offset 721 */ + "\x75\x1b\0" /* offset 725 */ + "\x44\x5a\x0c\0" /* offset 729 */ + "\x44\x7a\x0c\0" /* offset 734 */ + "\x64\x7a\x0c\0" /* offset 739 */ + "\x4c\x4a\0" /* offset 744 */ + "\x4c\x6a\0" /* offset 747 */ + "\x6c\x6a\0" /* offset 750 */ + "\x4e\x4a\0" /* offset 753 */ + "\x4e\x6a\0" /* offset 756 */ + "\x6e\x6a\0" /* offset 759 */ + "\x41\x0c\0" /* offset 762 */ + "\x61\x0c\0" /* offset 766 */ + "\x49\x0c\0" /* offset 770 */ + "\x69\x0c\0" /* offset 774 */ + "\x4f\x0c\0" /* offset 778 */ + "\x6f\x0c\0" /* offset 782 */ + "\x55\x0c\0" /* offset 786 */ + "\x75\x0c\0" /* offset 790 */ + "\x55\x08\x04\0" /* offset 794 */ + "\x75\x08\x04\0" /* offset 800 */ + "\x55\x08\x01\0" /* offset 806 */ + "\x75\x08\x01\0" /* offset 812 */ + "\x55\x08\x0c\0" /* offset 818 */ + "\x75\x08\x0c\0" /* offset 824 */ + "\x55\x08\x00\0" /* offset 830 */ + "\x75\x08\x00\0" /* offset 836 */ + "\x41\x08\x04\0" /* offset 842 */ + "\x61\x08\x04\0" /* offset 848 */ + "\x41\x07\x04\0" /* offset 854 */ + "\x61\x07\x04\0" /* offset 860 */ + "\xc6\x04\0" /* offset 866 */ + "\xe6\x04\0" /* offset 871 */ + "\x47\x0c\0" /* offset 876 */ + "\x67\x0c\0" /* offset 880 */ + "\x4b\x0c\0" /* offset 884 */ + "\x6b\x0c\0" /* offset 888 */ + "\x4f\x28\0" /* offset 892 */ + "\x6f\x28\0" /* offset 896 */ + "\x4f\x28\x04\0" /* offset 900 */ + "\x6f\x28\x04\0" /* offset 906 */ + "\xb7\x0c\0" /* offset 912 */ + "\x92\x0c\0" /* offset 917 */ + "\x6a\x0c\0" /* offset 922 */ + "\x44\x5a\0" /* offset 926 */ + "\x44\x7a\0" /* offset 929 */ + "\x64\x7a\0" /* offset 932 */ + "\x47\x01\0" /* offset 935 */ + "\x67\x01\0" /* offset 939 */ + "\x4e\x00\0" /* offset 943 */ + "\x6e\x00\0" /* offset 947 */ + "\x41\x0a\x01\0" /* offset 951 */ + "\x61\x0a\x01\0" /* offset 957 */ + "\xc6\x01\0" /* offset 963 */ + "\xe6\x01\0" /* offset 968 */ + "\xd8\x01\0" /* offset 973 */ + "\xf8\x01\0" /* offset 978 */ + "\x41\x0f\0" /* offset 983 */ + "\x61\x0f\0" /* offset 987 */ + "\x41\x11\0" /* offset 991 */ + "\x61\x11\0" /* offset 995 */ + "\x45\x0f\0" /* offset 999 */ + "\x65\x0f\0" /* offset 1003 */ + "\x45\x11\0" /* offset 1007 */ + "\x65\x11\0" /* offset 1011 */ + "\x49\x0f\0" /* offset 1015 */ + "\x69\x0f\0" /* offset 1019 */ + "\x49\x11\0" /* offset 1023 */ + "\x69\x11\0" /* offset 1027 */ + "\x4f\x0f\0" /* offset 1031 */ + "\x6f\x0f\0" /* offset 1035 */ + "\x4f\x11\0" /* offset 1039 */ + "\x6f\x11\0" /* offset 1043 */ + "\x52\x0f\0" /* offset 1047 */ + "\x72\x0f\0" /* offset 1051 */ + "\x52\x11\0" /* offset 1055 */ + "\x72\x11\0" /* offset 1059 */ + "\x55\x0f\0" /* offset 1063 */ + "\x75\x0f\0" /* offset 1067 */ + "\x55\x11\0" /* offset 1071 */ + "\x75\x11\0" /* offset 1075 */ + "\x53\x26\0" /* offset 1079 */ + "\x73\x26\0" /* offset 1083 */ + "\x54\x26\0" /* offset 1087 */ + "\x74\x26\0" /* offset 1091 */ + "\x48\x0c\0" /* offset 1095 */ + "\x68\x0c\0" /* offset 1099 */ + "\x41\x07\0" /* offset 1103 */ + "\x61\x07\0" /* offset 1107 */ + "\x45\x27\0" /* offset 1111 */ + "\x65\x27\0" /* offset 1115 */ + "\x4f\x08\x04\0" /* offset 1119 */ + "\x6f\x08\x04\0" /* offset 1125 */ + "\x4f\x03\x04\0" /* offset 1131 */ + "\x6f\x03\x04\0" /* offset 1137 */ + "\x4f\x07\0" /* offset 1143 */ + "\x6f\x07\0" /* offset 1147 */ + "\x4f\x07\x04\0" /* offset 1151 */ + "\x6f\x07\x04\0" /* offset 1157 */ + "\x59\x04\0" /* offset 1163 */ + "\x79\x04\0" /* offset 1167 */ + "\x68\0" /* offset 1171 */ + "\x66\0" /* offset 1173 */ + "\x6a\0" /* offset 1176 */ + "\x72\0" /* offset 1178 */ + "\x79\0" /* offset 1180 */ + "\x7b\0" /* offset 1183 */ + "\x81\0" /* offset 1186 */ + "\x77\0" /* offset 1189 */ + "\x79\0" /* offset 1191 */ + "\x20\x06\0" /* offset 1193 */ + "\x20\x07\0" /* offset 1197 */ + "\x20\x0a\0" /* offset 1201 */ + "\x20\x28\0" /* offset 1205 */ + "\x20\x03\0" /* offset 1209 */ + "\x20\x0b\0" /* offset 1213 */ + "\x63\0" /* offset 1217 */ + "\x6c\0" /* offset 1220 */ + "\x78\0" /* offset 1222 */ + "\x95\0" /* offset 1224 */ + "\x00\0" /* offset 1227 */ + "\x01\0" /* offset 1230 */ + "\x13\0" /* offset 1233 */ + "\x08\x01\0" /* offset 1236 */ + "\xb9\0" /* offset 1241 */ + "\x20\x45\0" /* offset 1244 */ + "\x3b\0" /* offset 1248 */ + "\xa8\x01\0" /* offset 1250 */ + "\x20\x08\x01\0" /* offset 1255 */ + "\x91\x01\0" /* offset 1261 */ + "\xb7\0" /* offset 1266 */ + "\x95\x01\0" /* offset 1269 */ + "\x97\x01\0" /* offset 1274 */ + "\x99\x01\0" /* offset 1279 */ + "\x9f\x01\0" /* offset 1284 */ + "\xa5\x01\0" /* offset 1289 */ + "\xa9\x01\0" /* offset 1294 */ + "\xb9\x08\x01\0" /* offset 1299 */ + "\x99\x08\0" /* offset 1306 */ + "\xa5\x08\0" /* offset 1311 */ + "\xb1\x01\0" /* offset 1316 */ + "\xb5\x01\0" /* offset 1321 */ + "\xb7\x01\0" /* offset 1326 */ + "\xb9\x01\0" /* offset 1331 */ + "\xc5\x08\x01\0" /* offset 1336 */ + "\xb9\x08\0" /* offset 1343 */ + "\xc5\x08\0" /* offset 1348 */ + "\xbf\x01\0" /* offset 1353 */ + "\xc5\x01\0" /* offset 1358 */ + "\xc9\x01\0" /* offset 1363 */ + "\xb2\0" /* offset 1368 */ + "\xb8\0" /* offset 1371 */ + "\xa5\0" /* offset 1374 */ + "\xd2\x01\0" /* offset 1377 */ + "\xd2\x08\0" /* offset 1382 */ + "\xc6\0" /* offset 1387 */ + "\xc0\0" /* offset 1390 */ + "\xba\0" /* offset 1393 */ + "\xc1\0" /* offset 1396 */ + "\xc2\0" /* offset 1399 */ + "\x98\0" /* offset 1402 */ + "\xb5\0" /* offset 1405 */ + "\x15\x00\0" /* offset 1408 */ + "\x15\x08\0" /* offset 1413 */ + "\x13\x01\0" /* offset 1418 */ + "\x06\x08\0" /* offset 1423 */ + "\x1a\x01\0" /* offset 1428 */ + "\x18\x00\0" /* offset 1433 */ + "\x23\x06\0" /* offset 1438 */ + "\x18\x06\0" /* offset 1443 */ + "\x38\x06\0" /* offset 1448 */ + "\x35\x00\0" /* offset 1453 */ + "\x35\x08\0" /* offset 1458 */ + "\x33\x01\0" /* offset 1463 */ + "\x56\x08\0" /* offset 1468 */ + "\x3a\x01\0" /* offset 1473 */ + "\x38\x00\0" /* offset 1478 */ + "\x43\x06\0" /* offset 1483 */ + "\x74\x0f\0" /* offset 1488 */ + "\x75\x0f\0" /* offset 1493 */ + "\x16\x06\0" /* offset 1498 */ + "\x36\x06\0" /* offset 1503 */ + "\x10\x06\0" /* offset 1508 */ + "\x30\x06\0" /* offset 1513 */ + "\x10\x08\0" /* offset 1518 */ + "\x30\x08\0" /* offset 1523 */ + "\x15\x06\0" /* offset 1528 */ + "\x35\x06\0" /* offset 1533 */ + "\xd8\x08\0" /* offset 1538 */ + "\xd9\x08\0" /* offset 1543 */ + "\x16\x08\0" /* offset 1548 */ + "\x36\x08\0" /* offset 1553 */ + "\x17\x08\0" /* offset 1558 */ + "\x37\x08\0" /* offset 1563 */ + "\x18\x04\0" /* offset 1568 */ + "\x38\x04\0" /* offset 1573 */ + "\x18\x08\0" /* offset 1578 */ + "\x38\x08\0" /* offset 1583 */ + "\x1e\x08\0" /* offset 1588 */ + "\x3e\x08\0" /* offset 1593 */ + "\xe8\x08\0" /* offset 1598 */ + "\xe9\x08\0" /* offset 1603 */ + "\x2d\x08\0" /* offset 1608 */ + "\x4d\x08\0" /* offset 1613 */ + "\x23\x04\0" /* offset 1618 */ + "\x43\x04\0" /* offset 1623 */ + "\x23\x08\0" /* offset 1628 */ + "\x43\x08\0" /* offset 1633 */ + "\x23\x0b\0" /* offset 1638 */ + "\x43\x0b\0" /* offset 1643 */ + "\x27\x08\0" /* offset 1648 */ + "\x47\x08\0" /* offset 1653 */ + "\x2b\x08\0" /* offset 1658 */ + "\x4b\x08\0" /* offset 1663 */ + "\x65\x82\0" /* offset 1668 */ + "\x27\x53\0" /* offset 1673 */ + "\x27\x54\0" /* offset 1678 */ + "\x48\x54\0" /* offset 1683 */ + "\x27\x55\0" /* offset 1688 */ + "\x4a\x54\0" /* offset 1693 */ + "\x27\x74\0" /* offset 1698 */ + "\x48\x74\0" /* offset 1703 */ + "\xc7\x74\0" /* offset 1708 */ + "\x4a\x74\0" /* offset 1713 */ + "\xd5\x54\0" /* offset 1718 */ + "\xc1\x54\0" /* offset 1723 */ + "\xd2\x54\0" /* offset 1728 */ + "\x28\x3c\0" /* offset 1733 */ + "\x30\x3c\0" /* offset 1740 */ + "\x33\x3c\0" /* offset 1747 */ + "\x15\x3c\0" /* offset 1754 */ + "\x16\x3c\0" /* offset 1761 */ + "\x17\x3c\0" /* offset 1768 */ + "\x1c\x3c\0" /* offset 1775 */ + "\x21\x3c\0" /* offset 1782 */ + "\x22\x3c\0" /* offset 1789 */ + "\x2b\x3c\0" /* offset 1796 */ + "\x2f\x3c\0" /* offset 1803 */ + "\xc7\xbe\0" /* offset 1810 */ + "\xc7\xd7\0" /* offset 1817 */ + "\xa1\xbc\0" /* offset 1824 */ + "\xa2\xbc\0" /* offset 1831 */ + "\xaf\xbc\0" /* offset 1838 */ + "\x32\x3c\0" /* offset 1845 */ + "\x38\x3c\0" /* offset 1852 */ + "\x16\x3c\0" /* offset 1859 */ + "\x17\x3c\0" /* offset 1866 */ + "\x1c\x3c\0" /* offset 1873 */ + "\x2b\x3c\0" /* offset 1880 */ + "\x47\x56\0" /* offset 1887 */ + "\x47\x3e\0" /* offset 1894 */ + "\x47\x57\0" /* offset 1901 */ + "\x21\x3c\0" /* offset 1908 */ + "\x22\x3c\0" /* offset 1915 */ + "\x92\xd7\0" /* offset 1922 */ + "\xc6\xbe\0" /* offset 1929 */ + "\xc7\xbe\0" /* offset 1936 */ + "\xc6\xd7\0" /* offset 1943 */ + "\x46\x56\0" /* offset 1950 */ + "\xbf\xd5\0" /* offset 1957 */ + "\xc6\xd5\0" /* offset 1964 */ + "\xc6\xd6\0" /* offset 1971 */ + "\xc6\xc2\0" /* offset 1978 */ + "\xc6\xc2\xd5\0" /* offset 1985 */ + "\x46\x3e\0" /* offset 1995 */ + "\x47\x3e\0" /* offset 2002 */ + "\x46\x57\0" /* offset 2009 */ + "\xd9\xca\0" /* offset 2016 */ + "\xd9\xcf\0" /* offset 2023 */ + "\xd9\xcf\xca\0" /* offset 2030 */ + "\xd9\xdf\0" /* offset 2040 */ + "\x4d\x32\0" /* offset 2047 */ + "\xcd\xb2\0" /* offset 2054 */ + "\xab\x99\0" /* offset 2061 */ + "\xab\xa1\0" /* offset 2068 */ + "\x0b\0" /* offset 2075 */ + "\x42\xb7\0" /* offset 2079 */ + "\x4c\xb7\0" /* offset 2086 */ + "\x51\xb7\0" /* offset 2093 */ + "\x56\xb7\0" /* offset 2100 */ + "\x5b\xb7\0" /* offset 2107 */ + "\x40\xb5\0" /* offset 2114 */ + "\x71\x72\0" /* offset 2121 */ + "\x71\x74\0" /* offset 2128 */ + "\xb2\x80\0" /* offset 2135 */ + "\xb2\x71\x80\0" /* offset 2142 */ + "\xb3\x80\0" /* offset 2152 */ + "\xb3\x71\x80\0" /* offset 2159 */ + "\x71\x80\0" /* offset 2169 */ + "\x92\xb7\0" /* offset 2176 */ + "\x9c\xb7\0" /* offset 2183 */ + "\xa1\xb7\0" /* offset 2190 */ + "\xa6\xb7\0" /* offset 2197 */ + "\xab\xb7\0" /* offset 2204 */ + "\x90\xb5\0" /* offset 2211 */ + "\x25\x2e\0" /* offset 2218 */ + "\x41\x25\0" /* offset 2225 */ + "\x61\x25\0" /* offset 2229 */ + "\x42\x07\0" /* offset 2233 */ + "\x62\x07\0" /* offset 2237 */ + "\x42\x23\0" /* offset 2241 */ + "\x62\x23\0" /* offset 2245 */ + "\x42\x31\0" /* offset 2249 */ + "\x62\x31\0" /* offset 2253 */ + "\x43\x27\x01\0" /* offset 2257 */ + "\x63\x27\x01\0" /* offset 2263 */ + "\x44\x07\0" /* offset 2269 */ + "\x64\x07\0" /* offset 2273 */ + "\x44\x23\0" /* offset 2277 */ + "\x64\x23\0" /* offset 2281 */ + "\x44\x31\0" /* offset 2285 */ + "\x64\x31\0" /* offset 2289 */ + "\x44\x27\0" /* offset 2293 */ + "\x64\x27\0" /* offset 2297 */ + "\x44\x2d\0" /* offset 2301 */ + "\x64\x2d\0" /* offset 2305 */ + "\x45\x04\x00\0" /* offset 2309 */ + "\x65\x04\x00\0" /* offset 2315 */ + "\x45\x04\x01\0" /* offset 2321 */ + "\x65\x04\x01\0" /* offset 2327 */ + "\x45\x2d\0" /* offset 2333 */ + "\x65\x2d\0" /* offset 2337 */ + "\x45\x30\0" /* offset 2341 */ + "\x65\x30\0" /* offset 2345 */ + "\x45\x27\x06\0" /* offset 2349 */ + "\x65\x27\x06\0" /* offset 2355 */ + "\x46\x07\0" /* offset 2361 */ + "\x66\x07\0" /* offset 2365 */ + "\x47\x04\0" /* offset 2369 */ + "\x67\x04\0" /* offset 2373 */ + "\x48\x07\0" /* offset 2377 */ + "\x68\x07\0" /* offset 2381 */ + "\x48\x23\0" /* offset 2385 */ + "\x68\x23\0" /* offset 2389 */ + "\x48\x08\0" /* offset 2393 */ + "\x68\x08\0" /* offset 2397 */ + "\x48\x27\0" /* offset 2401 */ + "\x68\x27\0" /* offset 2405 */ + "\x48\x2e\0" /* offset 2409 */ + "\x68\x2e\0" /* offset 2413 */ + "\x49\x30\0" /* offset 2417 */ + "\x69\x30\0" /* offset 2421 */ + "\x49\x08\x01\0" /* offset 2425 */ + "\x69\x08\x01\0" /* offset 2431 */ + "\x4b\x01\0" /* offset 2437 */ + "\x6b\x01\0" /* offset 2441 */ + "\x4b\x23\0" /* offset 2445 */ + "\x6b\x23\0" /* offset 2449 */ + "\x4b\x31\0" /* offset 2453 */ + "\x6b\x31\0" /* offset 2457 */ + "\x4c\x23\0" /* offset 2461 */ + "\x6c\x23\0" /* offset 2465 */ + "\x4c\x23\x04\0" /* offset 2469 */ + "\x6c\x23\x04\0" /* offset 2475 */ + "\x4c\x31\0" /* offset 2481 */ + "\x6c\x31\0" /* offset 2485 */ + "\x4c\x2d\0" /* offset 2489 */ + "\x6c\x2d\0" /* offset 2493 */ + "\x4d\x01\0" /* offset 2497 */ + "\x6d\x01\0" /* offset 2501 */ + "\x4d\x07\0" /* offset 2505 */ + "\x6d\x07\0" /* offset 2509 */ + "\x4d\x23\0" /* offset 2513 */ + "\x6d\x23\0" /* offset 2517 */ + "\x4e\x07\0" /* offset 2521 */ + "\x6e\x07\0" /* offset 2525 */ + "\x4e\x23\0" /* offset 2529 */ + "\x6e\x23\0" /* offset 2533 */ + "\x4e\x31\0" /* offset 2537 */ + "\x6e\x31\0" /* offset 2541 */ + "\x4e\x2d\0" /* offset 2545 */ + "\x6e\x2d\0" /* offset 2549 */ + "\x4f\x03\x01\0" /* offset 2553 */ + "\x6f\x03\x01\0" /* offset 2559 */ + "\x4f\x03\x08\0" /* offset 2565 */ + "\x6f\x03\x08\0" /* offset 2571 */ + "\x4f\x04\x00\0" /* offset 2577 */ + "\x6f\x04\x00\0" /* offset 2583 */ + "\x4f\x04\x01\0" /* offset 2589 */ + "\x6f\x04\x01\0" /* offset 2595 */ + "\x50\x01\0" /* offset 2601 */ + "\x70\x01\0" /* offset 2605 */ + "\x50\x07\0" /* offset 2609 */ + "\x70\x07\0" /* offset 2613 */ + "\x52\x07\0" /* offset 2617 */ + "\x72\x07\0" /* offset 2621 */ + "\x52\x23\0" /* offset 2625 */ + "\x72\x23\0" /* offset 2629 */ + "\x52\x23\x04\0" /* offset 2633 */ + "\x72\x23\x04\0" /* offset 2639 */ + "\x52\x31\0" /* offset 2645 */ + "\x72\x31\0" /* offset 2649 */ + "\x53\x07\0" /* offset 2653 */ + "\x73\x07\0" /* offset 2657 */ + "\x53\x23\0" /* offset 2661 */ + "\x73\x23\0" /* offset 2665 */ + "\x53\x01\x07\0" /* offset 2669 */ + "\x73\x01\x07\0" /* offset 2675 */ + "\x53\x0c\x07\0" /* offset 2681 */ + "\x73\x0c\x07\0" /* offset 2687 */ + "\x53\x23\x07\0" /* offset 2693 */ + "\x73\x23\x07\0" /* offset 2699 */ + "\x54\x07\0" /* offset 2705 */ + "\x74\x07\0" /* offset 2709 */ + "\x54\x23\0" /* offset 2713 */ + "\x74\x23\0" /* offset 2717 */ + "\x54\x31\0" /* offset 2721 */ + "\x74\x31\0" /* offset 2725 */ + "\x54\x2d\0" /* offset 2729 */ + "\x74\x2d\0" /* offset 2733 */ + "\x55\x24\0" /* offset 2737 */ + "\x75\x24\0" /* offset 2741 */ + "\x55\x30\0" /* offset 2745 */ + "\x75\x30\0" /* offset 2749 */ + "\x55\x2d\0" /* offset 2753 */ + "\x75\x2d\0" /* offset 2757 */ + "\x55\x03\x01\0" /* offset 2761 */ + "\x75\x03\x01\0" /* offset 2767 */ + "\x55\x04\x08\0" /* offset 2773 */ + "\x75\x04\x08\0" /* offset 2779 */ + "\x56\x03\0" /* offset 2785 */ + "\x76\x03\0" /* offset 2789 */ + "\x56\x23\0" /* offset 2793 */ + "\x76\x23\0" /* offset 2797 */ + "\x57\x00\0" /* offset 2801 */ + "\x77\x00\0" /* offset 2805 */ + "\x57\x01\0" /* offset 2809 */ + "\x77\x01\0" /* offset 2813 */ + "\x57\x08\0" /* offset 2817 */ + "\x77\x08\0" /* offset 2821 */ + "\x57\x07\0" /* offset 2825 */ + "\x77\x07\0" /* offset 2829 */ + "\x57\x23\0" /* offset 2833 */ + "\x77\x23\0" /* offset 2837 */ + "\x58\x07\0" /* offset 2841 */ + "\x78\x07\0" /* offset 2845 */ + "\x58\x08\0" /* offset 2849 */ + "\x78\x08\0" /* offset 2853 */ + "\x59\x07\0" /* offset 2857 */ + "\x79\x07\0" /* offset 2861 */ + "\x5a\x02\0" /* offset 2865 */ + "\x7a\x02\0" /* offset 2869 */ + "\x5a\x23\0" /* offset 2873 */ + "\x7a\x23\0" /* offset 2877 */ + "\x5a\x31\0" /* offset 2881 */ + "\x7a\x31\0" /* offset 2885 */ + "\x68\x31\0" /* offset 2889 */ + "\x74\x08\0" /* offset 2893 */ + "\x77\x0a\0" /* offset 2897 */ + "\x79\x0a\0" /* offset 2901 */ + "\x61\xbe\0" /* offset 2905 */ + "\x7f\x07\0" /* offset 2909 */ + "\x41\x23\0" /* offset 2914 */ + "\x61\x23\0" /* offset 2918 */ + "\x41\x09\0" /* offset 2922 */ + "\x61\x09\0" /* offset 2926 */ + "\x41\x02\x01\0" /* offset 2930 */ + "\x61\x02\x01\0" /* offset 2936 */ + "\x41\x02\x00\0" /* offset 2942 */ + "\x61\x02\x00\0" /* offset 2948 */ + "\x41\x02\x09\0" /* offset 2954 */ + "\x61\x02\x09\0" /* offset 2960 */ + "\x41\x02\x03\0" /* offset 2966 */ + "\x61\x02\x03\0" /* offset 2972 */ + "\x41\x23\x02\0" /* offset 2978 */ + "\x61\x23\x02\0" /* offset 2984 */ + "\x41\x06\x01\0" /* offset 2990 */ + "\x61\x06\x01\0" /* offset 2996 */ + "\x41\x06\x00\0" /* offset 3002 */ + "\x61\x06\x00\0" /* offset 3008 */ + "\x41\x06\x09\0" /* offset 3014 */ + "\x61\x06\x09\0" /* offset 3020 */ + "\x41\x06\x03\0" /* offset 3026 */ + "\x61\x06\x03\0" /* offset 3032 */ + "\x41\x23\x06\0" /* offset 3038 */ + "\x61\x23\x06\0" /* offset 3044 */ + "\x45\x23\0" /* offset 3050 */ + "\x65\x23\0" /* offset 3054 */ + "\x45\x09\0" /* offset 3058 */ + "\x65\x09\0" /* offset 3062 */ + "\x45\x03\0" /* offset 3066 */ + "\x65\x03\0" /* offset 3070 */ + "\x45\x02\x01\0" /* offset 3074 */ + "\x65\x02\x01\0" /* offset 3080 */ + "\x45\x02\x00\0" /* offset 3086 */ + "\x65\x02\x00\0" /* offset 3092 */ + "\x45\x02\x09\0" /* offset 3098 */ + "\x65\x02\x09\0" /* offset 3104 */ + "\x45\x02\x03\0" /* offset 3110 */ + "\x65\x02\x03\0" /* offset 3116 */ + "\x45\x23\x02\0" /* offset 3122 */ + "\x65\x23\x02\0" /* offset 3128 */ + "\x49\x09\0" /* offset 3134 */ + "\x69\x09\0" /* offset 3138 */ + "\x49\x23\0" /* offset 3142 */ + "\x69\x23\0" /* offset 3146 */ + "\x4f\x23\0" /* offset 3150 */ + "\x6f\x23\0" /* offset 3154 */ + "\x4f\x09\0" /* offset 3158 */ + "\x6f\x09\0" /* offset 3162 */ + "\x4f\x02\x01\0" /* offset 3166 */ + "\x6f\x02\x01\0" /* offset 3172 */ + "\x4f\x02\x00\0" /* offset 3178 */ + "\x6f\x02\x00\0" /* offset 3184 */ + "\x4f\x02\x09\0" /* offset 3190 */ + "\x6f\x02\x09\0" /* offset 3196 */ + "\x4f\x02\x03\0" /* offset 3202 */ + "\x6f\x02\x03\0" /* offset 3208 */ + "\x4f\x23\x02\0" /* offset 3214 */ + "\x6f\x23\x02\0" /* offset 3220 */ + "\x4f\x1b\x01\0" /* offset 3226 */ + "\x6f\x1b\x01\0" /* offset 3232 */ + "\x4f\x1b\x00\0" /* offset 3238 */ + "\x6f\x1b\x00\0" /* offset 3244 */ + "\x4f\x1b\x09\0" /* offset 3250 */ + "\x6f\x1b\x09\0" /* offset 3256 */ + "\x4f\x1b\x03\0" /* offset 3262 */ + "\x6f\x1b\x03\0" /* offset 3268 */ + "\x4f\x1b\x23\0" /* offset 3274 */ + "\x6f\x1b\x23\0" /* offset 3280 */ + "\x55\x23\0" /* offset 3286 */ + "\x75\x23\0" /* offset 3290 */ + "\x55\x09\0" /* offset 3294 */ + "\x75\x09\0" /* offset 3298 */ + "\x55\x1b\x01\0" /* offset 3302 */ + "\x75\x1b\x01\0" /* offset 3308 */ + "\x55\x1b\x00\0" /* offset 3314 */ + "\x75\x1b\x00\0" /* offset 3320 */ + "\x55\x1b\x09\0" /* offset 3326 */ + "\x75\x1b\x09\0" /* offset 3332 */ + "\x55\x1b\x03\0" /* offset 3338 */ + "\x75\x1b\x03\0" /* offset 3344 */ + "\x55\x1b\x23\0" /* offset 3350 */ + "\x75\x1b\x23\0" /* offset 3356 */ + "\x59\x00\0" /* offset 3362 */ + "\x79\x00\0" /* offset 3366 */ + "\x59\x23\0" /* offset 3370 */ + "\x79\x23\0" /* offset 3374 */ + "\x59\x09\0" /* offset 3378 */ + "\x79\x09\0" /* offset 3382 */ + "\x59\x03\0" /* offset 3386 */ + "\x79\x03\0" /* offset 3390 */ + "\xb1\x13\0" /* offset 3394 */ + "\xb1\x14\0" /* offset 3399 */ + "\xb1\x13\x00\0" /* offset 3404 */ + "\xb1\x14\x00\0" /* offset 3411 */ + "\xb1\x13\x01\0" /* offset 3418 */ + "\xb1\x14\x01\0" /* offset 3425 */ + "\xb1\x13\x42\0" /* offset 3432 */ + "\xb1\x14\x42\0" /* offset 3439 */ + "\x91\x13\0" /* offset 3446 */ + "\x91\x14\0" /* offset 3451 */ + "\x91\x13\x00\0" /* offset 3456 */ + "\x91\x14\x00\0" /* offset 3463 */ + "\x91\x13\x01\0" /* offset 3470 */ + "\x91\x14\x01\0" /* offset 3477 */ + "\x91\x13\x42\0" /* offset 3484 */ + "\x91\x14\x42\0" /* offset 3491 */ + "\xb5\x13\0" /* offset 3498 */ + "\xb5\x14\0" /* offset 3503 */ + "\xb5\x13\x00\0" /* offset 3508 */ + "\xb5\x14\x00\0" /* offset 3515 */ + "\xb5\x13\x01\0" /* offset 3522 */ + "\xb5\x14\x01\0" /* offset 3529 */ + "\x95\x13\0" /* offset 3536 */ + "\x95\x14\0" /* offset 3541 */ + "\x95\x13\x00\0" /* offset 3546 */ + "\x95\x14\x00\0" /* offset 3553 */ + "\x95\x13\x01\0" /* offset 3560 */ + "\x95\x14\x01\0" /* offset 3567 */ + "\xb7\x13\0" /* offset 3574 */ + "\xb7\x14\0" /* offset 3579 */ + "\xb7\x13\x00\0" /* offset 3584 */ + "\xb7\x14\x00\0" /* offset 3591 */ + "\xb7\x13\x01\0" /* offset 3598 */ + "\xb7\x14\x01\0" /* offset 3605 */ + "\xb7\x13\x42\0" /* offset 3612 */ + "\xb7\x14\x42\0" /* offset 3619 */ + "\x97\x13\0" /* offset 3626 */ + "\x97\x14\0" /* offset 3631 */ + "\x97\x13\x00\0" /* offset 3636 */ + "\x97\x14\x00\0" /* offset 3643 */ + "\x97\x13\x01\0" /* offset 3650 */ + "\x97\x14\x01\0" /* offset 3657 */ + "\x97\x13\x42\0" /* offset 3664 */ + "\x97\x14\x42\0" /* offset 3671 */ + "\xb9\x13\0" /* offset 3678 */ + "\xb9\x14\0" /* offset 3683 */ + "\xb9\x13\x00\0" /* offset 3688 */ + "\xb9\x14\x00\0" /* offset 3695 */ + "\xb9\x13\x01\0" /* offset 3702 */ + "\xb9\x14\x01\0" /* offset 3709 */ + "\xb9\x13\x42\0" /* offset 3716 */ + "\xb9\x14\x42\0" /* offset 3723 */ + "\x99\x13\0" /* offset 3730 */ + "\x99\x14\0" /* offset 3735 */ + "\x99\x13\x00\0" /* offset 3740 */ + "\x99\x14\x00\0" /* offset 3747 */ + "\x99\x13\x01\0" /* offset 3754 */ + "\x99\x14\x01\0" /* offset 3761 */ + "\x99\x13\x42\0" /* offset 3768 */ + "\x99\x14\x42\0" /* offset 3775 */ + "\xbf\x13\0" /* offset 3782 */ + "\xbf\x14\0" /* offset 3787 */ + "\xbf\x13\x00\0" /* offset 3792 */ + "\xbf\x14\x00\0" /* offset 3799 */ + "\xbf\x13\x01\0" /* offset 3806 */ + "\xbf\x14\x01\0" /* offset 3813 */ + "\x9f\x13\0" /* offset 3820 */ + "\x9f\x14\0" /* offset 3825 */ + "\x9f\x13\x00\0" /* offset 3830 */ + "\x9f\x14\x00\0" /* offset 3837 */ + "\x9f\x13\x01\0" /* offset 3844 */ + "\x9f\x14\x01\0" /* offset 3851 */ + "\xc5\x13\0" /* offset 3858 */ + "\xc5\x14\0" /* offset 3863 */ + "\xc5\x13\x00\0" /* offset 3868 */ + "\xc5\x14\x00\0" /* offset 3875 */ + "\xc5\x13\x01\0" /* offset 3882 */ + "\xc5\x14\x01\0" /* offset 3889 */ + "\xc5\x13\x42\0" /* offset 3896 */ + "\xc5\x14\x42\0" /* offset 3903 */ + "\xa5\x14\0" /* offset 3910 */ + "\xa5\x14\x00\0" /* offset 3915 */ + "\xa5\x14\x01\0" /* offset 3922 */ + "\xa5\x14\x42\0" /* offset 3929 */ + "\xc9\x13\0" /* offset 3936 */ + "\xc9\x14\0" /* offset 3941 */ + "\xc9\x13\x00\0" /* offset 3946 */ + "\xc9\x14\x00\0" /* offset 3953 */ + "\xc9\x13\x01\0" /* offset 3960 */ + "\xc9\x14\x01\0" /* offset 3967 */ + "\xc9\x13\x42\0" /* offset 3974 */ + "\xc9\x14\x42\0" /* offset 3981 */ + "\xa9\x13\0" /* offset 3988 */ + "\xa9\x14\0" /* offset 3993 */ + "\xa9\x13\x00\0" /* offset 3998 */ + "\xa9\x14\x00\0" /* offset 4005 */ + "\xa9\x13\x01\0" /* offset 4012 */ + "\xa9\x14\x01\0" /* offset 4019 */ + "\xa9\x13\x42\0" /* offset 4026 */ + "\xa9\x14\x42\0" /* offset 4033 */ + "\xb1\x00\0" /* offset 4040 */ + "\xb5\x00\0" /* offset 4045 */ + "\xb7\x00\0" /* offset 4050 */ + "\xb9\x00\0" /* offset 4055 */ + "\xbf\x00\0" /* offset 4060 */ + "\xc5\x00\0" /* offset 4065 */ + "\xc9\x00\0" /* offset 4070 */ + "\xb1\x13\x45\0" /* offset 4075 */ + "\xb1\x14\x45\0" /* offset 4082 */ + "\xb1\x13\x00\x45\0" /* offset 4089 */ + "\xb1\x14\x00\x45\0" /* offset 4098 */ + "\xb1\x13\x01\x45\0" /* offset 4107 */ + "\xb1\x14\x01\x45\0" /* offset 4116 */ + "\xb1\x13\x42\x45\0" /* offset 4125 */ + "\xb1\x14\x42\x45\0" /* offset 4134 */ + "\x91\x13\x45\0" /* offset 4143 */ + "\x91\x14\x45\0" /* offset 4150 */ + "\x91\x13\x00\x45\0" /* offset 4157 */ + "\x91\x14\x00\x45\0" /* offset 4166 */ + "\x91\x13\x01\x45\0" /* offset 4175 */ + "\x91\x14\x01\x45\0" /* offset 4184 */ + "\x91\x13\x42\x45\0" /* offset 4193 */ + "\x91\x14\x42\x45\0" /* offset 4202 */ + "\xb7\x13\x45\0" /* offset 4211 */ + "\xb7\x14\x45\0" /* offset 4218 */ + "\xb7\x13\x00\x45\0" /* offset 4225 */ + "\xb7\x14\x00\x45\0" /* offset 4234 */ + "\xb7\x13\x01\x45\0" /* offset 4243 */ + "\xb7\x14\x01\x45\0" /* offset 4252 */ + "\xb7\x13\x42\x45\0" /* offset 4261 */ + "\xb7\x14\x42\x45\0" /* offset 4270 */ + "\x97\x13\x45\0" /* offset 4279 */ + "\x97\x14\x45\0" /* offset 4286 */ + "\x97\x13\x00\x45\0" /* offset 4293 */ + "\x97\x14\x00\x45\0" /* offset 4302 */ + "\x97\x13\x01\x45\0" /* offset 4311 */ + "\x97\x14\x01\x45\0" /* offset 4320 */ + "\x97\x13\x42\x45\0" /* offset 4329 */ + "\x97\x14\x42\x45\0" /* offset 4338 */ + "\xc9\x13\x45\0" /* offset 4347 */ + "\xc9\x14\x45\0" /* offset 4354 */ + "\xc9\x13\x00\x45\0" /* offset 4361 */ + "\xc9\x14\x00\x45\0" /* offset 4370 */ + "\xc9\x13\x01\x45\0" /* offset 4379 */ + "\xc9\x14\x01\x45\0" /* offset 4388 */ + "\xc9\x13\x42\x45\0" /* offset 4397 */ + "\xc9\x14\x42\x45\0" /* offset 4406 */ + "\xa9\x13\x45\0" /* offset 4415 */ + "\xa9\x14\x45\0" /* offset 4422 */ + "\xa9\x13\x00\x45\0" /* offset 4429 */ + "\xa9\x14\x00\x45\0" /* offset 4438 */ + "\xa9\x13\x01\x45\0" /* offset 4447 */ + "\xa9\x14\x01\x45\0" /* offset 4456 */ + "\xa9\x13\x42\x45\0" /* offset 4465 */ + "\xa9\x14\x42\x45\0" /* offset 4474 */ + "\xb1\x06\0" /* offset 4483 */ + "\xb1\x04\0" /* offset 4488 */ + "\xb1\x00\x45\0" /* offset 4493 */ + "\xb1\x45\0" /* offset 4500 */ + "\xb1\x01\x45\0" /* offset 4505 */ + "\xb1\x42\0" /* offset 4512 */ + "\xb1\x42\x45\0" /* offset 4517 */ + "\x91\x06\0" /* offset 4524 */ + "\x91\x04\0" /* offset 4529 */ + "\x91\x00\0" /* offset 4534 */ + "\x91\x45\0" /* offset 4539 */ + "\x20\x13\0" /* offset 4544 */ + "\xb9\0" /* offset 4548 */ + "\x20\x42\0" /* offset 4551 */ + "\xa8\x42\0" /* offset 4555 */ + "\x20\x08\x42\0" /* offset 4560 */ + "\xb7\x00\x45\0" /* offset 4566 */ + "\xb7\x45\0" /* offset 4573 */ + "\xb7\x01\x45\0" /* offset 4578 */ + "\xb7\x42\0" /* offset 4585 */ + "\xb7\x42\x45\0" /* offset 4590 */ + "\x95\x00\0" /* offset 4597 */ + "\x97\x00\0" /* offset 4602 */ + "\x97\x45\0" /* offset 4607 */ + "\xbf\x00\0" /* offset 4612 */ + "\x20\x13\x00\0" /* offset 4618 */ + "\xbf\x01\0" /* offset 4624 */ + "\x20\x13\x01\0" /* offset 4630 */ + "\xbf\x42\0" /* offset 4636 */ + "\x20\x13\x42\0" /* offset 4642 */ + "\xb9\x06\0" /* offset 4648 */ + "\xb9\x04\0" /* offset 4653 */ + "\xb9\x08\x00\0" /* offset 4658 */ + "\xb9\x42\0" /* offset 4665 */ + "\xb9\x08\x42\0" /* offset 4670 */ + "\x99\x06\0" /* offset 4677 */ + "\x99\x04\0" /* offset 4682 */ + "\x99\x00\0" /* offset 4687 */ + "\xfe\x00\0" /* offset 4692 */ + "\x20\x14\x00\0" /* offset 4698 */ + "\xfe\x01\0" /* offset 4704 */ + "\x20\x14\x01\0" /* offset 4710 */ + "\xfe\x42\0" /* offset 4716 */ + "\x20\x14\x42\0" /* offset 4722 */ + "\xc5\x06\0" /* offset 4728 */ + "\xc5\x04\0" /* offset 4733 */ + "\xc5\x08\x00\0" /* offset 4738 */ + "\xc1\x13\0" /* offset 4745 */ + "\xc1\x14\0" /* offset 4750 */ + "\xc5\x42\0" /* offset 4755 */ + "\xc5\x08\x42\0" /* offset 4760 */ + "\xa5\x06\0" /* offset 4767 */ + "\xa5\x04\0" /* offset 4772 */ + "\xa5\x00\0" /* offset 4777 */ + "\xa1\x14\0" /* offset 4782 */ + "\xa8\x00\0" /* offset 4787 */ + "\x20\x08\x00\0" /* offset 4792 */ + "\x60\0" /* offset 4798 */ + "\xc9\x00\x45\0" /* offset 4800 */ + "\xc9\x45\0" /* offset 4807 */ + "\xc9\x01\x45\0" /* offset 4812 */ + "\xc9\x42\0" /* offset 4819 */ + "\xc9\x42\x45\0" /* offset 4824 */ + "\x9f\x00\0" /* offset 4831 */ + "\xa9\x00\0" /* offset 4836 */ + "\xa9\x45\0" /* offset 4841 */ + "\xb4\0" /* offset 4846 */ + "\x20\x14\0" /* offset 4849 */ + "\x02\0" /* offset 4853 */ + "\x03\0" /* offset 4857 */ + "\x10\0" /* offset 4861 */ + "\x20\x33\0" /* offset 4865 */ + "\x2e\0" /* offset 4869 */ + "\x2e\x2e\0" /* offset 4871 */ + "\x2e\x2e\x2e\0" /* offset 4874 */ + "\x32\x32\0" /* offset 4878 */ + "\x32\x32\x32\0" /* offset 4885 */ + "\x35\x35\0" /* offset 4895 */ + "\x35\x35\x35\0" /* offset 4902 */ + "\x21\x21\0" /* offset 4912 */ + "\x20\x05\0" /* offset 4915 */ + "\x3f\x3f\0" /* offset 4919 */ + "\x3f\x21\0" /* offset 4922 */ + "\x21\x3f\0" /* offset 4925 */ + "\x32\x32\x32\x32\0" /* offset 4928 */ + "\x30\0" /* offset 4941 */ + "\x69\0" /* offset 4943 */ + "\x34\0" /* offset 4945 */ + "\x35\0" /* offset 4947 */ + "\x36\0" /* offset 4949 */ + "\x37\0" /* offset 4951 */ + "\x38\0" /* offset 4953 */ + "\x39\0" /* offset 4955 */ + "\x2b\0" /* offset 4957 */ + "\x12\0" /* offset 4959 */ + "\x3d\0" /* offset 4963 */ + "\x28\0" /* offset 4965 */ + "\x29\0" /* offset 4967 */ + "\x6e\0" /* offset 4969 */ + "\x52\x73\0" /* offset 4971 */ + "\x61\x2f\x63\0" /* offset 4974 */ + "\x61\x2f\x73\0" /* offset 4978 */ + "\x43\0" /* offset 4982 */ + "\xb0\x43\0" /* offset 4984 */ + "\x63\x2f\x6f\0" /* offset 4988 */ + "\x63\x2f\x75\0" /* offset 4992 */ + "\x90\0" /* offset 4996 */ + "\xb0\x46\0" /* offset 4999 */ + "\x67\0" /* offset 5003 */ + "\x48\0" /* offset 5005 */ + "\x27\0" /* offset 5007 */ + "\x49\0" /* offset 5010 */ + "\x4c\0" /* offset 5012 */ + "\x4e\0" /* offset 5014 */ + "\x4e\x6f\0" /* offset 5016 */ + "\x50\0" /* offset 5019 */ + "\x51\0" /* offset 5021 */ + "\x52\0" /* offset 5023 */ + "\x53\x4d\0" /* offset 5025 */ + "\x54\x45\x4c\0" /* offset 5028 */ + "\x54\x4d\0" /* offset 5032 */ + "\x5a\0" /* offset 5035 */ + "\xa9\0" /* offset 5037 */ + "\x4b\0" /* offset 5040 */ + "\x42\0" /* offset 5042 */ + "\x65\0" /* offset 5044 */ + "\x45\0" /* offset 5046 */ + "\x46\0" /* offset 5048 */ + "\x4d\0" /* offset 5050 */ + "\xd0\0" /* offset 5052 */ + "\xd1\0" /* offset 5055 */ + "\xd2\0" /* offset 5058 */ + "\xd3\0" /* offset 5061 */ + "\xb3\0" /* offset 5064 */ + "\x93\0" /* offset 5067 */ + "\xa0\0" /* offset 5070 */ + "\x11\0" /* offset 5073 */ + "\x44\0" /* offset 5077 */ + "\x64\0" /* offset 5079 */ + "\x31\x44\x33\0" /* offset 5081 */ + "\x32\x44\x33\0" /* offset 5087 */ + "\x31\x44\x35\0" /* offset 5093 */ + "\x32\x44\x35\0" /* offset 5099 */ + "\x33\x44\x35\0" /* offset 5105 */ + "\x34\x44\x35\0" /* offset 5111 */ + "\x31\x44\x36\0" /* offset 5117 */ + "\x35\x44\x36\0" /* offset 5123 */ + "\x31\x44\x38\0" /* offset 5129 */ + "\x33\x44\x38\0" /* offset 5135 */ + "\x35\x44\x38\0" /* offset 5141 */ + "\x37\x44\x38\0" /* offset 5147 */ + "\x31\x44\0" /* offset 5153 */ + "\x49\x49\0" /* offset 5158 */ + "\x49\x49\x49\0" /* offset 5161 */ + "\x49\x56\0" /* offset 5165 */ + "\x56\0" /* offset 5168 */ + "\x56\x49\0" /* offset 5170 */ + "\x56\x49\x49\0" /* offset 5173 */ + "\x56\x49\x49\x49\0" /* offset 5177 */ + "\x49\x58\0" /* offset 5182 */ + "\x58\0" /* offset 5185 */ + "\x58\x49\0" /* offset 5187 */ + "\x58\x49\x49\0" /* offset 5190 */ + "\x69\x69\0" /* offset 5194 */ + "\x69\x69\x69\0" /* offset 5197 */ + "\x69\x76\0" /* offset 5201 */ + "\x76\0" /* offset 5204 */ + "\x76\x69\0" /* offset 5206 */ + "\x76\x69\x69\0" /* offset 5209 */ + "\x76\x69\x69\x69\0" /* offset 5213 */ + "\x69\x78\0" /* offset 5218 */ + "\x78\x69\0" /* offset 5221 */ + "\x78\x69\x69\0" /* offset 5224 */ + "\x63\0" /* offset 5228 */ + "\x6d\0" /* offset 5230 */ + "\x90\x38\0" /* offset 5232 */ + "\x92\x38\0" /* offset 5238 */ + "\x94\x38\0" /* offset 5244 */ + "\xd0\x38\0" /* offset 5250 */ + "\xd4\x38\0" /* offset 5256 */ + "\xd2\x38\0" /* offset 5262 */ + "\x03\x38\0" /* offset 5268 */ + "\x08\x38\0" /* offset 5274 */ + "\x0b\x38\0" /* offset 5280 */ + "\x23\x38\0" /* offset 5286 */ + "\x25\x38\0" /* offset 5292 */ + "\x2b\x2b\0" /* offset 5298 */ + "\x2b\x2b\x2b\0" /* offset 5305 */ + "\x2e\x2e\0" /* offset 5315 */ + "\x2e\x2e\x2e\0" /* offset 5322 */ + "\x3c\x38\0" /* offset 5332 */ + "\x43\x38\0" /* offset 5338 */ + "\x45\x38\0" /* offset 5344 */ + "\x48\x38\0" /* offset 5350 */ + "\x3d\x38\0" /* offset 5356 */ + "\x61\x38\0" /* offset 5360 */ + "\x4d\x38\0" /* offset 5366 */ + "\x3c\x38\0" /* offset 5372 */ + "\x3e\x38\0" /* offset 5376 */ + "\x64\x38\0" /* offset 5380 */ + "\x65\x38\0" /* offset 5386 */ + "\x72\x38\0" /* offset 5392 */ + "\x73\x38\0" /* offset 5398 */ + "\x76\x38\0" /* offset 5404 */ + "\x77\x38\0" /* offset 5410 */ + "\x7a\x38\0" /* offset 5416 */ + "\x7b\x38\0" /* offset 5422 */ + "\x82\x38\0" /* offset 5428 */ + "\x83\x38\0" /* offset 5434 */ + "\x86\x38\0" /* offset 5440 */ + "\x87\x38\0" /* offset 5446 */ + "\xa2\x38\0" /* offset 5452 */ + "\xa8\x38\0" /* offset 5458 */ + "\xa9\x38\0" /* offset 5464 */ + "\xab\x38\0" /* offset 5470 */ + "\x7c\x38\0" /* offset 5476 */ + "\x7d\x38\0" /* offset 5482 */ + "\x91\x38\0" /* offset 5488 */ + "\x92\x38\0" /* offset 5494 */ + "\xb2\x38\0" /* offset 5500 */ + "\xb3\x38\0" /* offset 5506 */ + "\xb4\x38\0" /* offset 5512 */ + "\xb5\x38\0" /* offset 5518 */ + "\x08\0" /* offset 5524 */ + "\x09\0" /* offset 5528 */ + "\x31\x30\0" /* offset 5532 */ + "\x31\x31\0" /* offset 5535 */ + "\x31\x32\0" /* offset 5538 */ + "\x31\x33\0" /* offset 5541 */ + "\x31\x34\0" /* offset 5544 */ + "\x31\x35\0" /* offset 5547 */ + "\x31\x36\0" /* offset 5550 */ + "\x31\x37\0" /* offset 5553 */ + "\x31\x38\0" /* offset 5556 */ + "\x31\x39\0" /* offset 5559 */ + "\x32\x30\0" /* offset 5562 */ + "\x28\x31\x29\0" /* offset 5565 */ + "\x28\x32\x29\0" /* offset 5569 */ + "\x28\x33\x29\0" /* offset 5573 */ + "\x28\x34\x29\0" /* offset 5577 */ + "\x28\x35\x29\0" /* offset 5581 */ + "\x28\x36\x29\0" /* offset 5585 */ + "\x28\x37\x29\0" /* offset 5589 */ + "\x28\x38\x29\0" /* offset 5593 */ + "\x28\x39\x29\0" /* offset 5597 */ + "\x28\x31\x30\x29\0" /* offset 5601 */ + "\x28\x31\x31\x29\0" /* offset 5606 */ + "\x28\x31\x32\x29\0" /* offset 5611 */ + "\x28\x31\x33\x29\0" /* offset 5616 */ + "\x28\x31\x34\x29\0" /* offset 5621 */ + "\x28\x31\x35\x29\0" /* offset 5626 */ + "\x28\x31\x36\x29\0" /* offset 5631 */ + "\x28\x31\x37\x29\0" /* offset 5636 */ + "\x28\x31\x38\x29\0" /* offset 5641 */ + "\x28\x31\x39\x29\0" /* offset 5646 */ + "\x28\x32\x30\x29\0" /* offset 5651 */ + "\x31\x2e\0" /* offset 5656 */ + "\x32\x2e\0" /* offset 5659 */ + "\x33\x2e\0" /* offset 5662 */ + "\x34\x2e\0" /* offset 5665 */ + "\x35\x2e\0" /* offset 5668 */ + "\x36\x2e\0" /* offset 5671 */ + "\x37\x2e\0" /* offset 5674 */ + "\x38\x2e\0" /* offset 5677 */ + "\x39\x2e\0" /* offset 5680 */ + "\x31\x30\x2e\0" /* offset 5683 */ + "\x31\x31\x2e\0" /* offset 5687 */ + "\x31\x32\x2e\0" /* offset 5691 */ + "\x31\x33\x2e\0" /* offset 5695 */ + "\x31\x34\x2e\0" /* offset 5699 */ + "\x31\x35\x2e\0" /* offset 5703 */ + "\x31\x36\x2e\0" /* offset 5707 */ + "\x31\x37\x2e\0" /* offset 5711 */ + "\x31\x38\x2e\0" /* offset 5715 */ + "\x31\x39\x2e\0" /* offset 5719 */ + "\x32\x30\x2e\0" /* offset 5723 */ + "\x28\x61\x29\0" /* offset 5727 */ + "\x28\x62\x29\0" /* offset 5731 */ + "\x28\x63\x29\0" /* offset 5735 */ + "\x28\x64\x29\0" /* offset 5739 */ + "\x28\x65\x29\0" /* offset 5743 */ + "\x28\x66\x29\0" /* offset 5747 */ + "\x28\x67\x29\0" /* offset 5751 */ + "\x28\x68\x29\0" /* offset 5755 */ + "\x28\x69\x29\0" /* offset 5759 */ + "\x28\x6a\x29\0" /* offset 5763 */ + "\x28\x6b\x29\0" /* offset 5767 */ + "\x28\x6c\x29\0" /* offset 5771 */ + "\x28\x6d\x29\0" /* offset 5775 */ + "\x28\x6e\x29\0" /* offset 5779 */ + "\x28\x6f\x29\0" /* offset 5783 */ + "\x28\x70\x29\0" /* offset 5787 */ + "\x28\x71\x29\0" /* offset 5791 */ + "\x28\x72\x29\0" /* offset 5795 */ + "\x28\x73\x29\0" /* offset 5799 */ + "\x28\x74\x29\0" /* offset 5803 */ + "\x28\x75\x29\0" /* offset 5807 */ + "\x28\x76\x29\0" /* offset 5811 */ + "\x28\x77\x29\0" /* offset 5815 */ + "\x28\x78\x29\0" /* offset 5819 */ + "\x28\x79\x29\0" /* offset 5823 */ + "\x28\x7a\x29\0" /* offset 5827 */ + "\x41\0" /* offset 5831 */ + "\x47\0" /* offset 5833 */ + "\x4a\0" /* offset 5835 */ + "\x4f\0" /* offset 5837 */ + "\x53\0" /* offset 5839 */ + "\x54\0" /* offset 5841 */ + "\x55\0" /* offset 5843 */ + "\x57\0" /* offset 5845 */ + "\x59\0" /* offset 5847 */ + "\x62\0" /* offset 5849 */ + "\x66\0" /* offset 5851 */ + "\x6b\0" /* offset 5853 */ + "\x70\0" /* offset 5855 */ + "\x71\0" /* offset 5857 */ + "\x74\0" /* offset 5859 */ + "\x75\0" /* offset 5861 */ + "\x7a\0" /* offset 5863 */ + "\x2b\x2b\x2b\x2b\0" /* offset 5865 */ + "\x3a\x3a\x3d\0" /* offset 5878 */ + "\x3d\x3d\0" /* offset 5882 */ + "\x3d\x3d\x3d\0" /* offset 5885 */ + "\xdd\x38\0" /* offset 5889 */ + "\xcd\0" /* offset 5895 */ + "\x9f\0" /* offset 5899 */ + "\x00\0" /* offset 5903 */ + "\x28\0" /* offset 5907 */ + "\x36\0" /* offset 5911 */ + "\x3f\0" /* offset 5915 */ + "\x59\0" /* offset 5919 */ + "\x85\0" /* offset 5923 */ + "\x8c\0" /* offset 5927 */ + "\xa0\0" /* offset 5931 */ + "\xba\0" /* offset 5935 */ + "\x3f\0" /* offset 5939 */ + "\x65\0" /* offset 5943 */ + "\x6b\0" /* offset 5947 */ + "\x82\0" /* offset 5951 */ + "\x96\0" /* offset 5955 */ + "\xab\0" /* offset 5959 */ + "\xe0\0" /* offset 5963 */ + "\xf5\0" /* offset 5967 */ + "\x00\0" /* offset 5971 */ + "\x9b\0" /* offset 5975 */ + "\xf9\0" /* offset 5979 */ + "\x15\0" /* offset 5983 */ + "\x1a\0" /* offset 5987 */ + "\x38\0" /* offset 5991 */ + "\x41\0" /* offset 5995 */ + "\x5c\0" /* offset 5999 */ + "\x69\0" /* offset 6003 */ + "\x82\0" /* offset 6007 */ + "\xb6\0" /* offset 6011 */ + "\xc8\0" /* offset 6015 */ + "\xe3\0" /* offset 6019 */ + "\xd7\0" /* offset 6023 */ + "\x1f\0" /* offset 6027 */ + "\xeb\0" /* offset 6031 */ + "\x02\0" /* offset 6035 */ + "\x0a\0" /* offset 6039 */ + "\x15\0" /* offset 6043 */ + "\x27\0" /* offset 6047 */ + "\x73\0" /* offset 6051 */ + "\x50\0" /* offset 6055 */ + "\x80\0" /* offset 6059 */ + "\xf8\0" /* offset 6063 */ + "\x0f\0" /* offset 6067 */ + "\x22\0" /* offset 6071 */ + "\x38\0" /* offset 6075 */ + "\x6e\0" /* offset 6079 */ + "\x71\0" /* offset 6083 */ + "\xdb\0" /* offset 6087 */ + "\xe5\0" /* offset 6091 */ + "\xf1\0" /* offset 6095 */ + "\xfe\0" /* offset 6099 */ + "\x72\0" /* offset 6103 */ + "\x7a\0" /* offset 6107 */ + "\x7f\0" /* offset 6111 */ + "\xf4\0" /* offset 6115 */ + "\xfe\0" /* offset 6119 */ + "\x0b\0" /* offset 6123 */ + "\x13\0" /* offset 6127 */ + "\x50\0" /* offset 6131 */ + "\x61\0" /* offset 6135 */ + "\x73\0" /* offset 6139 */ + "\xc3\0" /* offset 6143 */ + "\x08\0" /* offset 6147 */ + "\x36\0" /* offset 6151 */ + "\x4b\0" /* offset 6155 */ + "\x2f\0" /* offset 6159 */ + "\x34\0" /* offset 6163 */ + "\x87\0" /* offset 6167 */ + "\x97\0" /* offset 6171 */ + "\xa4\0" /* offset 6175 */ + "\xb9\0" /* offset 6179 */ + "\xe0\0" /* offset 6183 */ + "\xe5\0" /* offset 6187 */ + "\xf0\0" /* offset 6191 */ + "\x08\0" /* offset 6195 */ + "\x28\0" /* offset 6199 */ + "\x20\0" /* offset 6203 */ + "\x62\0" /* offset 6207 */ + "\x79\0" /* offset 6211 */ + "\xb3\0" /* offset 6215 */ + "\xcb\0" /* offset 6219 */ + "\xd4\0" /* offset 6223 */ + "\xdb\0" /* offset 6227 */ + "\x0f\0" /* offset 6231 */ + "\x14\0" /* offset 6235 */ + "\x34\0" /* offset 6239 */ + "\x6b\0" /* offset 6243 */ + "\x2a\0" /* offset 6247 */ + "\x36\0" /* offset 6251 */ + "\x3b\0" /* offset 6255 */ + "\x3f\0" /* offset 6259 */ + "\x47\0" /* offset 6263 */ + "\x59\0" /* offset 6267 */ + "\x5b\0" /* offset 6271 */ + "\xac\0" /* offset 6275 */ + "\x84\0" /* offset 6279 */ + "\x89\0" /* offset 6283 */ + "\xdc\0" /* offset 6287 */ + "\xe6\0" /* offset 6291 */ + "\x18\0" /* offset 6295 */ + "\x1f\0" /* offset 6299 */ + "\x28\0" /* offset 6303 */ + "\x30\0" /* offset 6307 */ + "\x8b\0" /* offset 6311 */ + "\x92\0" /* offset 6315 */ + "\x76\0" /* offset 6319 */ + "\x7d\0" /* offset 6323 */ + "\xae\0" /* offset 6327 */ + "\xbf\0" /* offset 6331 */ + "\xee\0" /* offset 6335 */ + "\xdb\0" /* offset 6339 */ + "\xe2\0" /* offset 6343 */ + "\xf3\0" /* offset 6347 */ + "\x3a\0" /* offset 6351 */ + "\xb8\0" /* offset 6355 */ + "\xbe\0" /* offset 6359 */ + "\x74\0" /* offset 6363 */ + "\xcb\0" /* offset 6367 */ + "\xf9\0" /* offset 6371 */ + "\x73\0" /* offset 6375 */ + "\xf8\0" /* offset 6379 */ + "\x36\0" /* offset 6383 */ + "\x51\0" /* offset 6387 */ + "\x8a\0" /* offset 6391 */ + "\xbd\0" /* offset 6395 */ + "\x01\0" /* offset 6399 */ + "\x0c\0" /* offset 6403 */ + "\x12\0" /* offset 6407 */ + "\x33\0" /* offset 6411 */ + "\x7f\0" /* offset 6415 */ + "\x89\0" /* offset 6419 */ + "\xe3\0" /* offset 6423 */ + "\xea\0" /* offset 6427 */ + "\xf3\0" /* offset 6431 */ + "\xfc\0" /* offset 6435 */ + "\x0c\0" /* offset 6439 */ + "\x1b\0" /* offset 6443 */ + "\x1f\0" /* offset 6447 */ + "\x6e\0" /* offset 6451 */ + "\x72\0" /* offset 6455 */ + "\x78\0" /* offset 6459 */ + "\x4d\0" /* offset 6463 */ + "\x6b\0" /* offset 6467 */ + "\x40\0" /* offset 6471 */ + "\x4c\0" /* offset 6475 */ + "\x63\0" /* offset 6479 */ + "\x7e\0" /* offset 6483 */ + "\x8b\0" /* offset 6487 */ + "\xd2\0" /* offset 6491 */ + "\x00\0" /* offset 6495 */ + "\x37\0" /* offset 6499 */ + "\x46\0" /* offset 6503 */ + "\x55\0" /* offset 6507 */ + "\x78\0" /* offset 6511 */ + "\x9d\0" /* offset 6515 */ + "\x64\0" /* offset 6519 */ + "\x70\0" /* offset 6523 */ + "\xb3\0" /* offset 6527 */ + "\xab\0" /* offset 6531 */ + "\xca\0" /* offset 6535 */ + "\x9b\0" /* offset 6539 */ + "\xb0\0" /* offset 6543 */ + "\xb5\0" /* offset 6547 */ + "\x91\0" /* offset 6551 */ + "\x49\0" /* offset 6555 */ + "\xc6\0" /* offset 6559 */ + "\xcc\0" /* offset 6563 */ + "\xd1\0" /* offset 6567 */ + "\x77\0" /* offset 6571 */ + "\x80\0" /* offset 6575 */ + "\x1c\0" /* offset 6579 */ + "\xb6\0" /* offset 6583 */ + "\xb9\0" /* offset 6587 */ + "\xe8\0" /* offset 6591 */ + "\x51\0" /* offset 6595 */ + "\x5e\0" /* offset 6599 */ + "\x62\0" /* offset 6603 */ + "\x69\0" /* offset 6607 */ + "\xcb\0" /* offset 6611 */ + "\xed\0" /* offset 6615 */ + "\xf3\0" /* offset 6619 */ + "\x01\0" /* offset 6623 */ + "\xa8\0" /* offset 6627 */ + "\xdb\0" /* offset 6631 */ + "\xdf\0" /* offset 6635 */ + "\x96\0" /* offset 6639 */ + "\x99\0" /* offset 6643 */ + "\xac\0" /* offset 6647 */ + "\xa8\0" /* offset 6651 */ + "\xd8\0" /* offset 6655 */ + "\xdf\0" /* offset 6659 */ + "\x25\0" /* offset 6663 */ + "\x2f\0" /* offset 6667 */ + "\x32\0" /* offset 6671 */ + "\x3c\0" /* offset 6675 */ + "\x5a\0" /* offset 6679 */ + "\xe5\0" /* offset 6683 */ + "\x75\0" /* offset 6687 */ + "\x7f\0" /* offset 6691 */ + "\xa5\0" /* offset 6695 */ + "\xbb\0" /* offset 6699 */ + "\xc3\0" /* offset 6703 */ + "\xcd\0" /* offset 6707 */ + "\xd1\0" /* offset 6711 */ + "\xf9\0" /* offset 6715 */ + "\xfd\0" /* offset 6719 */ + "\x0e\0" /* offset 6723 */ + "\x13\0" /* offset 6727 */ + "\x20\0" /* offset 6731 */ + "\x3b\0" /* offset 6735 */ + "\x4a\0" /* offset 6739 */ + "\x52\0" /* offset 6743 */ + "\x8d\0" /* offset 6747 */ + "\x9c\0" /* offset 6751 */ + "\xa0\0" /* offset 6755 */ + "\x12\0" /* offset 6759 */ + "\x44\0" /* offset 6763 */ + "\x45\0" /* offset 6767 */ + "\x4b\x99\0" /* offset 6771 */ + "\x4d\x99\0" /* offset 6778 */ + "\x4f\x99\0" /* offset 6785 */ + "\x51\x99\0" /* offset 6792 */ + "\x53\x99\0" /* offset 6799 */ + "\x55\x99\0" /* offset 6806 */ + "\x57\x99\0" /* offset 6813 */ + "\x59\x99\0" /* offset 6820 */ + "\x5b\x99\0" /* offset 6827 */ + "\x5d\x99\0" /* offset 6834 */ + "\x5f\x99\0" /* offset 6841 */ + "\x61\x99\0" /* offset 6848 */ + "\x64\x99\0" /* offset 6855 */ + "\x66\x99\0" /* offset 6862 */ + "\x68\x99\0" /* offset 6869 */ + "\x6f\x99\0" /* offset 6876 */ + "\x6f\x9a\0" /* offset 6883 */ + "\x72\x99\0" /* offset 6890 */ + "\x72\x9a\0" /* offset 6897 */ + "\x75\x99\0" /* offset 6904 */ + "\x75\x9a\0" /* offset 6911 */ + "\x78\x99\0" /* offset 6918 */ + "\x78\x9a\0" /* offset 6925 */ + "\x7b\x99\0" /* offset 6932 */ + "\x7b\x9a\0" /* offset 6939 */ + "\x46\x99\0" /* offset 6946 */ + "\x20\x99\0" /* offset 6953 */ + "\x20\x9a\0" /* offset 6958 */ + "\x9d\x99\0" /* offset 6963 */ + "\x88\x8a\0" /* offset 6970 */ + "\xab\x99\0" /* offset 6977 */ + "\xad\x99\0" /* offset 6984 */ + "\xaf\x99\0" /* offset 6991 */ + "\xb1\x99\0" /* offset 6998 */ + "\xb3\x99\0" /* offset 7005 */ + "\xb5\x99\0" /* offset 7012 */ + "\xb7\x99\0" /* offset 7019 */ + "\xb9\x99\0" /* offset 7026 */ + "\xbb\x99\0" /* offset 7033 */ + "\xbd\x99\0" /* offset 7040 */ + "\xbf\x99\0" /* offset 7047 */ + "\xc1\x99\0" /* offset 7054 */ + "\xc4\x99\0" /* offset 7061 */ + "\xc6\x99\0" /* offset 7068 */ + "\xc8\x99\0" /* offset 7075 */ + "\xcf\x99\0" /* offset 7082 */ + "\xcf\x9a\0" /* offset 7089 */ + "\xd2\x99\0" /* offset 7096 */ + "\xd2\x9a\0" /* offset 7103 */ + "\xd5\x99\0" /* offset 7110 */ + "\xd5\x9a\0" /* offset 7117 */ + "\xd8\x99\0" /* offset 7124 */ + "\xd8\x9a\0" /* offset 7131 */ + "\xdb\x99\0" /* offset 7138 */ + "\xdb\x9a\0" /* offset 7145 */ + "\xa6\x99\0" /* offset 7152 */ + "\xef\x99\0" /* offset 7159 */ + "\xf0\x99\0" /* offset 7166 */ + "\xf1\x99\0" /* offset 7173 */ + "\xf2\x99\0" /* offset 7180 */ + "\xfd\x99\0" /* offset 7187 */ + "\xb3\xc8\0" /* offset 7194 */ + "\x00\0" /* offset 7201 */ + "\x01\0" /* offset 7205 */ + "\xaa\0" /* offset 7209 */ + "\x02\0" /* offset 7213 */ + "\xac\0" /* offset 7217 */ + "\xad\0" /* offset 7221 */ + "\x03\0" /* offset 7225 */ + "\x04\0" /* offset 7229 */ + "\x05\0" /* offset 7233 */ + "\xb0\0" /* offset 7237 */ + "\xb1\0" /* offset 7241 */ + "\xb2\0" /* offset 7245 */ + "\xb3\0" /* offset 7249 */ + "\xb4\0" /* offset 7253 */ + "\xb5\0" /* offset 7257 */ + "\x1a\0" /* offset 7261 */ + "\x06\0" /* offset 7265 */ + "\x07\0" /* offset 7269 */ + "\x08\0" /* offset 7273 */ + "\x21\0" /* offset 7277 */ + "\x09\0" /* offset 7281 */ + "\x0a\0" /* offset 7285 */ + "\x0b\0" /* offset 7289 */ + "\x0c\0" /* offset 7293 */ + "\x0d\0" /* offset 7297 */ + "\x0e\0" /* offset 7301 */ + "\x0f\0" /* offset 7305 */ + "\x10\0" /* offset 7309 */ + "\x11\0" /* offset 7313 */ + "\x12\0" /* offset 7317 */ + "\x61\0" /* offset 7321 */ + "\x62\0" /* offset 7325 */ + "\x63\0" /* offset 7329 */ + "\x64\0" /* offset 7333 */ + "\x65\0" /* offset 7337 */ + "\x66\0" /* offset 7341 */ + "\x67\0" /* offset 7345 */ + "\x68\0" /* offset 7349 */ + "\x69\0" /* offset 7353 */ + "\x6a\0" /* offset 7357 */ + "\x6b\0" /* offset 7361 */ + "\x6c\0" /* offset 7365 */ + "\x6d\0" /* offset 7369 */ + "\x6e\0" /* offset 7373 */ + "\x6f\0" /* offset 7377 */ + "\x70\0" /* offset 7381 */ + "\x71\0" /* offset 7385 */ + "\x72\0" /* offset 7389 */ + "\x73\0" /* offset 7393 */ + "\x74\0" /* offset 7397 */ + "\x75\0" /* offset 7401 */ + "\x60\0" /* offset 7405 */ + "\x14\0" /* offset 7409 */ + "\x15\0" /* offset 7413 */ + "\xc7\0" /* offset 7417 */ + "\xc8\0" /* offset 7421 */ + "\xcc\0" /* offset 7425 */ + "\xce\0" /* offset 7429 */ + "\xd3\0" /* offset 7433 */ + "\xd7\0" /* offset 7437 */ + "\xd9\0" /* offset 7441 */ + "\x1c\0" /* offset 7445 */ + "\xdd\0" /* offset 7449 */ + "\xdf\0" /* offset 7453 */ + "\x1d\0" /* offset 7457 */ + "\x1e\0" /* offset 7461 */ + "\x20\0" /* offset 7465 */ + "\x22\0" /* offset 7469 */ + "\x23\0" /* offset 7473 */ + "\x27\0" /* offset 7477 */ + "\x29\0" /* offset 7481 */ + "\x2b\0" /* offset 7485 */ + "\x2c\0" /* offset 7489 */ + "\x2d\0" /* offset 7493 */ + "\x2e\0" /* offset 7497 */ + "\x2f\0" /* offset 7501 */ + "\x32\0" /* offset 7505 */ + "\x36\0" /* offset 7509 */ + "\x40\0" /* offset 7513 */ + "\x47\0" /* offset 7517 */ + "\x4c\0" /* offset 7521 */ + "\xf1\0" /* offset 7525 */ + "\xf2\0" /* offset 7529 */ + "\x57\0" /* offset 7533 */ + "\x58\0" /* offset 7537 */ + "\x59\0" /* offset 7541 */ + "\x84\0" /* offset 7545 */ + "\x85\0" /* offset 7549 */ + "\x88\0" /* offset 7553 */ + "\x91\0" /* offset 7557 */ + "\x92\0" /* offset 7561 */ + "\x94\0" /* offset 7565 */ + "\x9e\0" /* offset 7569 */ + "\xa1\0" /* offset 7573 */ + "\x09\0" /* offset 7577 */ + "\xdb\0" /* offset 7581 */ + "\x0a\0" /* offset 7585 */ + "\x2d\0" /* offset 7589 */ + "\x0b\0" /* offset 7593 */ + "\x32\0" /* offset 7597 */ + "\x19\0" /* offset 7601 */ + "\x01\0" /* offset 7605 */ + "\x29\0" /* offset 7609 */ + "\x30\0" /* offset 7613 */ + "\x28\x00\x29\0" /* offset 7617 */ + "\x28\x02\x29\0" /* offset 7623 */ + "\x28\x03\x29\0" /* offset 7629 */ + "\x28\x05\x29\0" /* offset 7635 */ + "\x28\x06\x29\0" /* offset 7641 */ + "\x28\x07\x29\0" /* offset 7647 */ + "\x28\x09\x29\0" /* offset 7653 */ + "\x28\x0b\x29\0" /* offset 7659 */ + "\x28\x0c\x29\0" /* offset 7665 */ + "\x28\x0e\x29\0" /* offset 7671 */ + "\x28\x0f\x29\0" /* offset 7677 */ + "\x28\x10\x29\0" /* offset 7683 */ + "\x28\x11\x29\0" /* offset 7689 */ + "\x28\x12\x29\0" /* offset 7695 */ + "\x28\x00\x61\x29\0" /* offset 7701 */ + "\x28\x02\x61\x29\0" /* offset 7710 */ + "\x28\x03\x61\x29\0" /* offset 7719 */ + "\x28\x05\x61\x29\0" /* offset 7728 */ + "\x28\x06\x61\x29\0" /* offset 7737 */ + "\x28\x07\x61\x29\0" /* offset 7746 */ + "\x28\x09\x61\x29\0" /* offset 7755 */ + "\x28\x0b\x61\x29\0" /* offset 7764 */ + "\x28\x0c\x61\x29\0" /* offset 7773 */ + "\x28\x0e\x61\x29\0" /* offset 7782 */ + "\x28\x0f\x61\x29\0" /* offset 7791 */ + "\x28\x10\x61\x29\0" /* offset 7800 */ + "\x28\x11\x61\x29\0" /* offset 7809 */ + "\x28\x12\x61\x29\0" /* offset 7818 */ + "\x28\x0c\x6e\x29\0" /* offset 7827 */ + "\x28\x00\x29\0" /* offset 7836 */ + "\x28\x8c\x29\0" /* offset 7842 */ + "\x28\x09\x29\0" /* offset 7848 */ + "\x28\xdb\x29\0" /* offset 7854 */ + "\x28\x94\x29\0" /* offset 7860 */ + "\x28\x6d\x29\0" /* offset 7866 */ + "\x28\x03\x29\0" /* offset 7872 */ + "\x28\x6b\x29\0" /* offset 7878 */ + "\x28\x5d\x29\0" /* offset 7884 */ + "\x28\x41\x29\0" /* offset 7890 */ + "\x28\x08\x29\0" /* offset 7896 */ + "\x28\x6b\x29\0" /* offset 7902 */ + "\x28\x34\x29\0" /* offset 7908 */ + "\x28\x28\x29\0" /* offset 7914 */ + "\x28\xd1\x29\0" /* offset 7920 */ + "\x28\x1f\x29\0" /* offset 7926 */ + "\x28\xe5\x29\0" /* offset 7932 */ + "\x28\x2a\x29\0" /* offset 7938 */ + "\x28\x09\x29\0" /* offset 7944 */ + "\x28\x3e\x29\0" /* offset 7950 */ + "\x28\x0d\x29\0" /* offset 7956 */ + "\x28\x79\x29\0" /* offset 7962 */ + "\x28\xa1\x29\0" /* offset 7968 */ + "\x28\x5d\x29\0" /* offset 7974 */ + "\x28\xb4\x29\0" /* offset 7980 */ + "\x28\xe3\x29\0" /* offset 7986 */ + "\x28\x7c\x29\0" /* offset 7992 */ + "\x28\x66\x29\0" /* offset 7998 */ + "\x28\xe3\x29\0" /* offset 8004 */ + "\x28\x01\x29\0" /* offset 8010 */ + "\x28\xc7\x29\0" /* offset 8016 */ + "\x28\x54\x29\0" /* offset 8022 */ + "\x28\x6d\x29\0" /* offset 8028 */ + "\x28\x11\x29\0" /* offset 8034 */ + "\x28\xea\x29\0" /* offset 8040 */ + "\x28\xf3\x29\0" /* offset 8046 */ + "\x32\x31\0" /* offset 8052 */ + "\x32\x32\0" /* offset 8055 */ + "\x32\x33\0" /* offset 8058 */ + "\x32\x34\0" /* offset 8061 */ + "\x32\x35\0" /* offset 8064 */ + "\x32\x36\0" /* offset 8067 */ + "\x32\x37\0" /* offset 8070 */ + "\x32\x38\0" /* offset 8073 */ + "\x32\x39\0" /* offset 8076 */ + "\x33\x30\0" /* offset 8079 */ + "\x33\x31\0" /* offset 8082 */ + "\x33\x32\0" /* offset 8085 */ + "\x33\x33\0" /* offset 8088 */ + "\x33\x34\0" /* offset 8091 */ + "\x33\x35\0" /* offset 8094 */ + "\x00\x61\0" /* offset 8097 */ + "\x02\x61\0" /* offset 8104 */ + "\x03\x61\0" /* offset 8111 */ + "\x05\x61\0" /* offset 8118 */ + "\x06\x61\0" /* offset 8125 */ + "\x07\x61\0" /* offset 8132 */ + "\x09\x61\0" /* offset 8139 */ + "\x0b\x61\0" /* offset 8146 */ + "\x0c\x61\0" /* offset 8153 */ + "\x0e\x61\0" /* offset 8160 */ + "\x0f\x61\0" /* offset 8167 */ + "\x10\x61\0" /* offset 8174 */ + "\x11\x61\0" /* offset 8181 */ + "\x12\x61\0" /* offset 8188 */ + "\x94\0" /* offset 8195 */ + "\x6d\0" /* offset 8199 */ + "\x03\0" /* offset 8203 */ + "\x5d\0" /* offset 8207 */ + "\x2a\0" /* offset 8211 */ + "\x09\0" /* offset 8215 */ + "\x3e\0" /* offset 8219 */ + "\x0d\0" /* offset 8223 */ + "\x79\0" /* offset 8227 */ + "\xa1\0" /* offset 8231 */ + "\x5d\0" /* offset 8235 */ + "\xb4\0" /* offset 8239 */ + "\xd8\0" /* offset 8243 */ + "\x37\0" /* offset 8247 */ + "\x69\0" /* offset 8251 */ + "\x2a\0" /* offset 8255 */ + "\x70\0" /* offset 8259 */ + "\xe8\0" /* offset 8263 */ + "\x05\0" /* offset 8267 */ + "\x11\0" /* offset 8271 */ + "\x99\0" /* offset 8275 */ + "\x63\0" /* offset 8279 */ + "\xe6\0" /* offset 8283 */ + "\xf3\0" /* offset 8287 */ + "\x3b\0" /* offset 8291 */ + "\x97\0" /* offset 8295 */ + "\x66\0" /* offset 8299 */ + "\xe3\0" /* offset 8303 */ + "\x01\0" /* offset 8307 */ + "\xc7\0" /* offset 8311 */ + "\x54\0" /* offset 8315 */ + "\x1c\0" /* offset 8319 */ + "\x33\x36\0" /* offset 8323 */ + "\x33\x37\0" /* offset 8326 */ + "\x33\x38\0" /* offset 8329 */ + "\x33\x39\0" /* offset 8332 */ + "\x34\x30\0" /* offset 8335 */ + "\x34\x31\0" /* offset 8338 */ + "\x34\x32\0" /* offset 8341 */ + "\x34\x33\0" /* offset 8344 */ + "\x34\x34\0" /* offset 8347 */ + "\x34\x35\0" /* offset 8350 */ + "\x34\x36\0" /* offset 8353 */ + "\x34\x37\0" /* offset 8356 */ + "\x34\x38\0" /* offset 8359 */ + "\x34\x39\0" /* offset 8362 */ + "\x35\x30\0" /* offset 8365 */ + "\x31\x08\0" /* offset 8368 */ + "\x32\x08\0" /* offset 8373 */ + "\x33\x08\0" /* offset 8378 */ + "\x34\x08\0" /* offset 8383 */ + "\x35\x08\0" /* offset 8388 */ + "\x36\x08\0" /* offset 8393 */ + "\x37\x08\0" /* offset 8398 */ + "\x38\x08\0" /* offset 8403 */ + "\x39\x08\0" /* offset 8408 */ + "\x31\x30\x08\0" /* offset 8413 */ + "\x31\x31\x08\0" /* offset 8419 */ + "\x31\x32\x08\0" /* offset 8425 */ + "\xa2\0" /* offset 8431 */ + "\xa4\0" /* offset 8435 */ + "\xa6\0" /* offset 8439 */ + "\xa8\0" /* offset 8443 */ + "\xaa\0" /* offset 8447 */ + "\xab\0" /* offset 8451 */ + "\xad\0" /* offset 8455 */ + "\xaf\0" /* offset 8459 */ + "\xb1\0" /* offset 8463 */ + "\xb3\0" /* offset 8467 */ + "\xb5\0" /* offset 8471 */ + "\xb7\0" /* offset 8475 */ + "\xb9\0" /* offset 8479 */ + "\xbb\0" /* offset 8483 */ + "\xbd\0" /* offset 8487 */ + "\xbf\0" /* offset 8491 */ + "\xc1\0" /* offset 8495 */ + "\xc4\0" /* offset 8499 */ + "\xc6\0" /* offset 8503 */ + "\xc8\0" /* offset 8507 */ + "\xca\0" /* offset 8511 */ + "\xcb\0" /* offset 8515 */ + "\xcc\0" /* offset 8519 */ + "\xcd\0" /* offset 8523 */ + "\xce\0" /* offset 8527 */ + "\xcf\0" /* offset 8531 */ + "\xd2\0" /* offset 8535 */ + "\xd5\0" /* offset 8539 */ + "\xd8\0" /* offset 8543 */ + "\xdb\0" /* offset 8547 */ + "\xde\0" /* offset 8551 */ + "\xdf\0" /* offset 8555 */ + "\xe0\0" /* offset 8559 */ + "\xe1\0" /* offset 8563 */ + "\xe2\0" /* offset 8567 */ + "\xe4\0" /* offset 8571 */ + "\xe6\0" /* offset 8575 */ + "\xe8\0" /* offset 8579 */ + "\xe9\0" /* offset 8583 */ + "\xea\0" /* offset 8587 */ + "\xeb\0" /* offset 8591 */ + "\xec\0" /* offset 8595 */ + "\xed\0" /* offset 8599 */ + "\xef\0" /* offset 8603 */ + "\xf0\0" /* offset 8607 */ + "\xf1\0" /* offset 8611 */ + "\xf2\0" /* offset 8615 */ + "\xa2\xcf\x9a\xfc\xc8\0" /* offset 8619 */ + "\xa2\xeb\xd5\xa1\0" /* offset 8635 */ + "\xa2\xf3\xd8\x9a\xa2\0" /* offset 8648 */ + "\xa2\xfc\xeb\0" /* offset 8664 */ + "\xa4\xcb\xf3\xaf\x99\0" /* offset 8674 */ + "\xa4\xf3\xc1\0" /* offset 8690 */ + "\xa6\xa9\xf3\0" /* offset 8700 */ + "\xa8\xb9\xaf\xfc\xc8\x99\0" /* offset 8710 */ + "\xa8\xfc\xab\xfc\0" /* offset 8729 */ + "\xaa\xf3\xb9\0" /* offset 8742 */ + "\xaa\xfc\xe0\0" /* offset 8752 */ + "\xab\xa4\xea\0" /* offset 8762 */ + "\xab\xe9\xc3\xc8\0" /* offset 8772 */ + "\xab\xed\xea\xfc\0" /* offset 8785 */ + "\xab\x99\xed\xf3\0" /* offset 8798 */ + "\xab\x99\xf3\xde\0" /* offset 8811 */ + "\xad\x99\xab\x99\0" /* offset 8824 */ + "\xad\x99\xcb\xfc\0" /* offset 8837 */ + "\xad\xe5\xea\xfc\0" /* offset 8850 */ + "\xad\x99\xeb\xbf\x99\xfc\0" /* offset 8863 */ + "\xad\xed\0" /* offset 8882 */ + "\xad\xed\xaf\x99\xe9\xe0\0" /* offset 8889 */ + "\xad\xed\xe1\xfc\xc8\xeb\0" /* offset 8908 */ + "\xad\xed\xef\xc3\xc8\0" /* offset 8927 */ + "\xaf\x99\xe9\xe0\0" /* offset 8943 */ + "\xaf\x99\xe9\xe0\xc8\xf3\0" /* offset 8956 */ + "\xaf\xeb\xbb\x99\xa4\xed\0" /* offset 8975 */ + "\xaf\xed\xfc\xcd\0" /* offset 8994 */ + "\xb1\xfc\xb9\0" /* offset 9007 */ + "\xb3\xeb\xca\0" /* offset 9017 */ + "\xb3\xfc\xdb\x9a\0" /* offset 9027 */ + "\xb5\xa4\xaf\xeb\0" /* offset 9040 */ + "\xb5\xf3\xc1\xfc\xe0\0" /* offset 9053 */ + "\xb7\xea\xf3\xaf\x99\0" /* offset 9069 */ + "\xbb\xf3\xc1\0" /* offset 9085 */ + "\xbb\xf3\xc8\0" /* offset 9095 */ + "\xbf\x99\xfc\xb9\0" /* offset 9105 */ + "\xc6\x99\xb7\0" /* offset 9118 */ + "\xc8\x99\xeb\0" /* offset 9128 */ + "\xc8\xf3\0" /* offset 9138 */ + "\xca\xce\0" /* offset 9145 */ + "\xce\xc3\xc8\0" /* offset 9152 */ + "\xcf\xa4\xc4\0" /* offset 9162 */ + "\xcf\x9a\xfc\xbb\xf3\xc8\0" /* offset 9172 */ + "\xcf\x9a\xfc\xc4\0" /* offset 9191 */ + "\xcf\x99\xfc\xec\xeb\0" /* offset 9204 */ + "\xd2\x9a\xa2\xb9\xc8\xeb\0" /* offset 9220 */ + "\xd2\x9a\xaf\xeb\0" /* offset 9239 */ + "\xd2\x9a\xb3\0" /* offset 9252 */ + "\xd2\x99\xeb\0" /* offset 9262 */ + "\xd5\xa1\xe9\xc3\xc8\x99\0" /* offset 9272 */ + "\xd5\xa3\xfc\xc8\0" /* offset 9291 */ + "\xd5\x99\xc3\xb7\xa7\xeb\0" /* offset 9304 */ + "\xd5\xe9\xf3\0" /* offset 9323 */ + "\xd8\xaf\xbf\xfc\xeb\0" /* offset 9333 */ + "\xd8\x9a\xbd\0" /* offset 9349 */ + "\xd8\x9a\xcb\xd2\0" /* offset 9359 */ + "\xd8\xeb\xc4\0" /* offset 9372 */ + "\xd8\x9a\xf3\xb9\0" /* offset 9382 */ + "\xd8\x9a\xfc\xb7\x99\0" /* offset 9395 */ + "\xd8\x99\xfc\xbf\0" /* offset 9411 */ + "\xdb\x9a\xa4\xf3\xc8\0" /* offset 9424 */ + "\xdb\x99\xeb\xc8\0" /* offset 9440 */ + "\xdb\xf3\0" /* offset 9453 */ + "\xdb\x9a\xf3\xc8\x99\0" /* offset 9460 */ + "\xdb\xfc\xeb\0" /* offset 9476 */ + "\xdb\xfc\xf3\0" /* offset 9486 */ + "\xde\xa4\xaf\xed\0" /* offset 9496 */ + "\xde\xa4\xeb\0" /* offset 9509 */ + "\xde\xc3\xcf\0" /* offset 9519 */ + "\xde\xeb\xaf\0" /* offset 9529 */ + "\xde\xf3\xb7\xe7\xf3\0" /* offset 9539 */ + "\xdf\xaf\xed\xf3\0" /* offset 9555 */ + "\xdf\xea\0" /* offset 9568 */ + "\xdf\xea\xcf\x99\xfc\xeb\0" /* offset 9575 */ + "\xe1\xab\x99\0" /* offset 9594 */ + "\xe1\xab\x99\xc8\xf3\0" /* offset 9604 */ + "\xe1\xfc\xc8\xeb\0" /* offset 9620 */ + "\xe4\xfc\xc8\x99\0" /* offset 9633 */ + "\xe4\xfc\xeb\0" /* offset 9646 */ + "\xe6\xa2\xf3\0" /* offset 9656 */ + "\xea\xc3\xc8\xeb\0" /* offset 9666 */ + "\xea\xe9\0" /* offset 9679 */ + "\xeb\xd2\x9a\xfc\0" /* offset 9686 */ + "\xeb\xfc\xd5\x99\xeb\0" /* offset 9699 */ + "\xec\xe0\0" /* offset 9715 */ + "\xec\xf3\xc8\xb1\x99\xf3\0" /* offset 9722 */ + "\xef\xc3\xc8\0" /* offset 9741 */ + "\x30\xb9\0" /* offset 9751 */ + "\x31\xb9\0" /* offset 9756 */ + "\x32\xb9\0" /* offset 9761 */ + "\x33\xb9\0" /* offset 9766 */ + "\x34\xb9\0" /* offset 9771 */ + "\x35\xb9\0" /* offset 9776 */ + "\x36\xb9\0" /* offset 9781 */ + "\x37\xb9\0" /* offset 9786 */ + "\x38\xb9\0" /* offset 9791 */ + "\x39\xb9\0" /* offset 9796 */ + "\x31\x30\xb9\0" /* offset 9801 */ + "\x31\x31\xb9\0" /* offset 9807 */ + "\x31\x32\xb9\0" /* offset 9813 */ + "\x31\x33\xb9\0" /* offset 9819 */ + "\x31\x34\xb9\0" /* offset 9825 */ + "\x31\x35\xb9\0" /* offset 9831 */ + "\x31\x36\xb9\0" /* offset 9837 */ + "\x31\x37\xb9\0" /* offset 9843 */ + "\x31\x38\xb9\0" /* offset 9849 */ + "\x31\x39\xb9\0" /* offset 9855 */ + "\x32\x30\xb9\0" /* offset 9861 */ + "\x32\x31\xb9\0" /* offset 9867 */ + "\x32\x32\xb9\0" /* offset 9873 */ + "\x32\x33\xb9\0" /* offset 9879 */ + "\x32\x34\xb9\0" /* offset 9885 */ + "\x68\x50\x61\0" /* offset 9891 */ + "\x64\x61\0" /* offset 9895 */ + "\x41\x55\0" /* offset 9898 */ + "\x62\x61\x72\0" /* offset 9901 */ + "\x6f\x56\0" /* offset 9905 */ + "\x70\x63\0" /* offset 9908 */ + "\x73\x10\0" /* offset 9911 */ + "\x2d\x8c\0" /* offset 9918 */ + "\x27\x63\0" /* offset 9925 */ + "\x0e\xbb\0" /* offset 9932 */ + "\x2a\x0f\x1a\x3e\0" /* offset 9939 */ + "\x70\x41\0" /* offset 9952 */ + "\x6e\x41\0" /* offset 9955 */ + "\xbc\x41\0" /* offset 9958 */ + "\x6d\x41\0" /* offset 9962 */ + "\x6b\x41\0" /* offset 9965 */ + "\x4b\x42\0" /* offset 9968 */ + "\x4d\x42\0" /* offset 9971 */ + "\x47\x42\0" /* offset 9974 */ + "\x63\x61\x6c\0" /* offset 9977 */ + "\x6b\x63\x61\x6c\0" /* offset 9981 */ + "\x70\x46\0" /* offset 9986 */ + "\x6e\x46\0" /* offset 9989 */ + "\xbc\x46\0" /* offset 9992 */ + "\xbc\x67\0" /* offset 9996 */ + "\x6d\x67\0" /* offset 10000 */ + "\x6b\x67\0" /* offset 10003 */ + "\x48\x7a\0" /* offset 10006 */ + "\x6b\x48\x7a\0" /* offset 10009 */ + "\x4d\x48\x7a\0" /* offset 10013 */ + "\x47\x48\x7a\0" /* offset 10017 */ + "\x54\x48\x7a\0" /* offset 10021 */ + "\xbc\x6c\0" /* offset 10025 */ + "\x6d\x6c\0" /* offset 10029 */ + "\x64\x6c\0" /* offset 10032 */ + "\x6b\x6c\0" /* offset 10035 */ + "\x66\x6d\0" /* offset 10038 */ + "\x6e\x6d\0" /* offset 10041 */ + "\xbc\x6d\0" /* offset 10044 */ + "\x6d\x6d\0" /* offset 10048 */ + "\x63\x6d\0" /* offset 10051 */ + "\x6b\x6d\0" /* offset 10054 */ + "\x6d\x6d\x32\0" /* offset 10057 */ + "\x63\x6d\x32\0" /* offset 10061 */ + "\x6d\x32\0" /* offset 10065 */ + "\x6b\x6d\x32\0" /* offset 10068 */ + "\x6d\x6d\x33\0" /* offset 10072 */ + "\x63\x6d\x33\0" /* offset 10076 */ + "\x6d\x33\0" /* offset 10080 */ + "\x6b\x6d\x33\0" /* offset 10083 */ + "\x6d\x15\x73\0" /* offset 10087 */ + "\x6d\x15\x73\x32\0" /* offset 10093 */ + "\x50\x61\0" /* offset 10100 */ + "\x6b\x50\x61\0" /* offset 10103 */ + "\x4d\x50\x61\0" /* offset 10107 */ + "\x47\x50\x61\0" /* offset 10111 */ + "\x72\x61\x64\0" /* offset 10115 */ + "\x72\x61\x64\x15\x73\0" /* offset 10119 */ + "\x72\x61\x64\x15\x73\x32\0" /* offset 10127 */ + "\x70\x73\0" /* offset 10136 */ + "\x6e\x73\0" /* offset 10139 */ + "\xbc\x73\0" /* offset 10142 */ + "\x6d\x73\0" /* offset 10146 */ + "\x70\x56\0" /* offset 10149 */ + "\x6e\x56\0" /* offset 10152 */ + "\xbc\x56\0" /* offset 10155 */ + "\x6d\x56\0" /* offset 10159 */ + "\x6b\x56\0" /* offset 10162 */ + "\x4d\x56\0" /* offset 10165 */ + "\x70\x57\0" /* offset 10168 */ + "\x6e\x57\0" /* offset 10171 */ + "\xbc\x57\0" /* offset 10174 */ + "\x6d\x57\0" /* offset 10178 */ + "\x6b\x57\0" /* offset 10181 */ + "\x4d\x57\0" /* offset 10184 */ + "\x6b\xa9\0" /* offset 10187 */ + "\x4d\xa9\0" /* offset 10191 */ + "\x61\x2e\x6d\x2e\0" /* offset 10195 */ + "\x42\x71\0" /* offset 10200 */ + "\x63\x63\0" /* offset 10203 */ + "\x63\x64\0" /* offset 10206 */ + "\x43\x15\x6b\x67\0" /* offset 10209 */ + "\x43\x6f\x2e\0" /* offset 10216 */ + "\x64\x42\0" /* offset 10220 */ + "\x47\x79\0" /* offset 10223 */ + "\x68\x61\0" /* offset 10226 */ + "\x48\x50\0" /* offset 10229 */ + "\x69\x6e\0" /* offset 10232 */ + "\x4b\x4b\0" /* offset 10235 */ + "\x4b\x4d\0" /* offset 10238 */ + "\x6b\x74\0" /* offset 10241 */ + "\x6c\x6d\0" /* offset 10244 */ + "\x6c\x6e\0" /* offset 10247 */ + "\x6c\x6f\x67\0" /* offset 10250 */ + "\x6c\x78\0" /* offset 10254 */ + "\x6d\x62\0" /* offset 10257 */ + "\x6d\x69\x6c\0" /* offset 10260 */ + "\x6d\x6f\x6c\0" /* offset 10264 */ + "\x50\x48\0" /* offset 10268 */ + "\x70\x2e\x6d\x2e\0" /* offset 10271 */ + "\x50\x50\x4d\0" /* offset 10276 */ + "\x50\x52\0" /* offset 10280 */ + "\x73\x72\0" /* offset 10283 */ + "\x53\x76\0" /* offset 10286 */ + "\x57\x62\0" /* offset 10289 */ + "\x31\xe5\0" /* offset 10292 */ + "\x32\xe5\0" /* offset 10297 */ + "\x33\xe5\0" /* offset 10302 */ + "\x34\xe5\0" /* offset 10307 */ + "\x35\xe5\0" /* offset 10312 */ + "\x36\xe5\0" /* offset 10317 */ + "\x37\xe5\0" /* offset 10322 */ + "\x38\xe5\0" /* offset 10327 */ + "\x39\xe5\0" /* offset 10332 */ + "\x31\x30\xe5\0" /* offset 10337 */ + "\x31\x31\xe5\0" /* offset 10343 */ + "\x31\x32\xe5\0" /* offset 10349 */ + "\x31\x33\xe5\0" /* offset 10355 */ + "\x31\x34\xe5\0" /* offset 10361 */ + "\x31\x35\xe5\0" /* offset 10367 */ + "\x31\x36\xe5\0" /* offset 10373 */ + "\x31\x37\xe5\0" /* offset 10379 */ + "\x31\x38\xe5\0" /* offset 10385 */ + "\x31\x39\xe5\0" /* offset 10391 */ + "\x32\x30\xe5\0" /* offset 10397 */ + "\x32\x31\xe5\0" /* offset 10403 */ + "\x32\x32\xe5\0" /* offset 10409 */ + "\x32\x33\xe5\0" /* offset 10415 */ + "\x32\x34\xe5\0" /* offset 10421 */ + "\x32\x35\xe5\0" /* offset 10427 */ + "\x32\x36\xe5\0" /* offset 10433 */ + "\x32\x37\xe5\0" /* offset 10439 */ + "\x32\x38\xe5\0" /* offset 10445 */ + "\x32\x39\xe5\0" /* offset 10451 */ + "\x33\x30\xe5\0" /* offset 10457 */ + "\x33\x31\xe5\0" /* offset 10463 */ + "\x48\0" /* offset 10469 */ + "\xf4\0" /* offset 10473 */ + "\xc8\0" /* offset 10477 */ + "\xd1\0" /* offset 10481 */ + "\x32\0" /* offset 10485 */ + "\xe5\0" /* offset 10489 */ + "\x51\0" /* offset 10493 */ + "\x87\0" /* offset 10497 */ + "\x48\0" /* offset 10501 */ + "\xf6\0" /* offset 10505 */ + "\x69\0" /* offset 10509 */ + "\x85\0" /* offset 10513 */ + "\x3f\0" /* offset 10517 */ + "\xba\0" /* offset 10521 */ + "\xf8\0" /* offset 10525 */ + "\x8f\0" /* offset 10529 */ + "\x02\0" /* offset 10533 */ + "\x1b\0" /* offset 10537 */ + "\xd9\0" /* offset 10541 */ + "\xde\0" /* offset 10545 */ + "\x3d\0" /* offset 10549 */ + "\x6a\0" /* offset 10553 */ + "\xf1\0" /* offset 10557 */ + "\x82\0" /* offset 10561 */ + "\x75\0" /* offset 10565 */ + "\x04\0" /* offset 10569 */ + "\x1b\0" /* offset 10573 */ + "\x2d\0" /* offset 10577 */ + "\x1e\0" /* offset 10581 */ + "\x50\0" /* offset 10585 */ + "\xeb\0" /* offset 10589 */ + "\xcd\0" /* offset 10593 */ + "\x64\0" /* offset 10597 */ + "\xc9\0" /* offset 10601 */ + "\xd8\0" /* offset 10605 */ + "\x1f\0" /* offset 10609 */ + "\xca\0" /* offset 10613 */ + "\x17\0" /* offset 10617 */ + "\x6a\0" /* offset 10621 */ + "\xfc\0" /* offset 10625 */ + "\xce\0" /* offset 10629 */ + "\x86\0" /* offset 10633 */ + "\xb7\0" /* offset 10637 */ + "\xde\0" /* offset 10641 */ + "\xc4\0" /* offset 10645 */ + "\xd3\0" /* offset 10649 */ + "\x10\0" /* offset 10653 */ + "\xe7\0" /* offset 10657 */ + "\x06\0" /* offset 10661 */ + "\x5c\0" /* offset 10665 */ + "\xef\0" /* offset 10669 */ + "\x32\0" /* offset 10673 */ + "\x6f\0" /* offset 10677 */ + "\xfa\0" /* offset 10681 */ + "\x8c\0" /* offset 10685 */ + "\x7f\0" /* offset 10689 */ + "\xa0\0" /* offset 10693 */ + "\xc9\0" /* offset 10697 */ + "\x04\0" /* offset 10701 */ + "\xd6\0" /* offset 10705 */ + "\xdf\0" /* offset 10709 */ + "\x04\0" /* offset 10713 */ + "\x60\0" /* offset 10717 */ + "\x7e\0" /* offset 10721 */ + "\x62\0" /* offset 10725 */ + "\xca\0" /* offset 10729 */ + "\xc2\0" /* offset 10733 */ + "\xf7\0" /* offset 10737 */ + "\xd8\0" /* offset 10741 */ + "\x62\0" /* offset 10745 */ + "\x13\0" /* offset 10749 */ + "\xda\0" /* offset 10753 */ + "\x0f\0" /* offset 10757 */ + "\x2f\0" /* offset 10761 */ + "\x37\0" /* offset 10765 */ + "\x4b\0" /* offset 10769 */ + "\xd2\0" /* offset 10773 */ + "\x8b\0" /* offset 10777 */ + "\xdc\0" /* offset 10781 */ + "\xcc\0" /* offset 10785 */ + "\x1c\0" /* offset 10789 */ + "\xbe\0" /* offset 10793 */ + "\xf1\0" /* offset 10797 */ + "\x75\0" /* offset 10801 */ + "\x80\0" /* offset 10805 */ + "\xcf\0" /* offset 10809 */ + "\xfe\0" /* offset 10813 */ + "\x39\0" /* offset 10817 */ + "\xe7\0" /* offset 10821 */ + "\x12\0" /* offset 10825 */ + "\x87\0" /* offset 10829 */ + "\x70\0" /* offset 10833 */ + "\x17\0" /* offset 10837 */ + "\xfb\0" /* offset 10841 */ + "\xbf\0" /* offset 10845 */ + "\xa9\0" /* offset 10849 */ + "\x0d\0" /* offset 10853 */ + "\xcc\0" /* offset 10857 */ + "\x78\0" /* offset 10861 */ + "\x22\0" /* offset 10865 */ + "\xc3\0" /* offset 10869 */ + "\x5e\0" /* offset 10873 */ + "\x01\0" /* offset 10877 */ + "\x49\0" /* offset 10881 */ + "\xaa\0" /* offset 10885 */ + "\xba\0" /* offset 10889 */ + "\x88\0" /* offset 10893 */ + "\xfe\0" /* offset 10897 */ + "\xe5\0" /* offset 10901 */ + "\xa0\0" /* offset 10905 */ + "\x65\0" /* offset 10909 */ + "\xae\0" /* offset 10913 */ + "\x69\0" /* offset 10917 */ + "\xc9\0" /* offset 10921 */ + "\x81\0" /* offset 10925 */ + "\xe7\0" /* offset 10929 */ + "\x6f\0" /* offset 10933 */ + "\xd2\0" /* offset 10937 */ + "\xcf\0" /* offset 10941 */ + "\xf5\0" /* offset 10945 */ + "\x42\0" /* offset 10949 */ + "\xec\0" /* offset 10953 */ + "\xc5\0" /* offset 10957 */ + "\xfe\0" /* offset 10961 */ + "\x2a\0" /* offset 10965 */ + "\xad\0" /* offset 10969 */ + "\x6a\0" /* offset 10973 */ + "\x97\0" /* offset 10977 */ + "\xce\0" /* offset 10981 */ + "\xc6\0" /* offset 10985 */ + "\x77\0" /* offset 10989 */ + "\x62\0" /* offset 10993 */ + "\x74\0" /* offset 10997 */ + "\x90\0" /* offset 11001 */ + "\x00\0" /* offset 11005 */ + "\x9a\0" /* offset 11009 */ + "\x23\0" /* offset 11013 */ + "\x49\0" /* offset 11017 */ + "\x89\0" /* offset 11021 */ + "\xca\0" /* offset 11025 */ + "\xf4\0" /* offset 11029 */ + "\x6f\0" /* offset 11033 */ + "\x26\0" /* offset 11037 */ + "\xee\0" /* offset 11041 */ + "\x23\0" /* offset 11045 */ + "\x4a\0" /* offset 11049 */ + "\x17\0" /* offset 11053 */ + "\xa3\0" /* offset 11057 */ + "\xbd\0" /* offset 11061 */ + "\xc8\0" /* offset 11065 */ + "\xc2\0" /* offset 11069 */ + "\xc9\0" /* offset 11073 */ + "\xf5\0" /* offset 11077 */ + "\x7b\0" /* offset 11081 */ + "\xae\0" /* offset 11085 */ + "\x3e\0" /* offset 11089 */ + "\x75\0" /* offset 11093 */ + "\xe4\0" /* offset 11097 */ + "\xf9\0" /* offset 11101 */ + "\xba\0" /* offset 11105 */ + "\x1c\0" /* offset 11109 */ + "\xb2\0" /* offset 11113 */ + "\x69\0" /* offset 11117 */ + "\x9a\0" /* offset 11121 */ + "\x46\0" /* offset 11125 */ + "\x34\0" /* offset 11129 */ + "\xf6\0" /* offset 11133 */ + "\x48\0" /* offset 11137 */ + "\x18\0" /* offset 11141 */ + "\x8b\0" /* offset 11145 */ + "\xae\0" /* offset 11149 */ + "\xb4\0" /* offset 11153 */ + "\xb8\0" /* offset 11157 */ + "\xe1\0" /* offset 11161 */ + "\x86\0" /* offset 11165 */ + "\xda\0" /* offset 11169 */ + "\xee\0" /* offset 11173 */ + "\x3f\0" /* offset 11177 */ + "\x99\0" /* offset 11181 */ + "\xce\0" /* offset 11185 */ + "\x42\0" /* offset 11189 */ + "\xfc\0" /* offset 11193 */ + "\x7c\0" /* offset 11197 */ + "\x88\0" /* offset 11201 */ + "\x2e\0" /* offset 11205 */ + "\x89\0" /* offset 11209 */ + "\x7b\0" /* offset 11213 */ + "\xf3\0" /* offset 11217 */ + "\x41\0" /* offset 11221 */ + "\x9c\0" /* offset 11225 */ + "\x09\0" /* offset 11229 */ + "\x59\0" /* offset 11233 */ + "\x6b\0" /* offset 11237 */ + "\x10\0" /* offset 11241 */ + "\x5e\0" /* offset 11245 */ + "\x2e\0" /* offset 11249 */ + "\x78\0" /* offset 11253 */ + "\x2b\0" /* offset 11257 */ + "\x19\0" /* offset 11261 */ + "\xea\0" /* offset 11265 */ + "\x2a\0" /* offset 11269 */ + "\x8b\0" /* offset 11273 */ + "\x44\0" /* offset 11277 */ + "\x17\0" /* offset 11281 */ + "\x86\0" /* offset 11285 */ + "\x29\0" /* offset 11289 */ + "\x0f\0" /* offset 11293 */ + "\x65\0" /* offset 11297 */ + "\x13\0" /* offset 11301 */ + "\x4e\0" /* offset 11305 */ + "\xa8\0" /* offset 11309 */ + "\xe5\0" /* offset 11313 */ + "\x06\0" /* offset 11317 */ + "\xe2\0" /* offset 11321 */ + "\x79\0" /* offset 11325 */ + "\xcf\0" /* offset 11329 */ + "\xe1\0" /* offset 11333 */ + "\xe2\0" /* offset 11337 */ + "\x3f\0" /* offset 11341 */ + "\xba\0" /* offset 11345 */ + "\x1d\0" /* offset 11349 */ + "\xd0\0" /* offset 11353 */ + "\x98\0" /* offset 11357 */ + "\xfa\0" /* offset 11361 */ + "\xa3\0" /* offset 11365 */ + "\x57\0" /* offset 11369 */ + "\x9f\0" /* offset 11373 */ + "\x97\0" /* offset 11377 */ + "\xcb\0" /* offset 11381 */ + "\xe8\0" /* offset 11385 */ + "\x20\0" /* offset 11389 */ + "\x92\0" /* offset 11393 */ + "\xc0\0" /* offset 11397 */ + "\x99\0" /* offset 11401 */ + "\x58\0" /* offset 11405 */ + "\xc0\0" /* offset 11409 */ + "\x36\0" /* offset 11413 */ + "\x3a\0" /* offset 11417 */ + "\x07\0" /* offset 11421 */ + "\xa6\0" /* offset 11425 */ + "\xd3\0" /* offset 11429 */ + "\xd6\0" /* offset 11433 */ + "\x85\0" /* offset 11437 */ + "\x1e\0" /* offset 11441 */ + "\xb4\0" /* offset 11445 */ + "\x3b\0" /* offset 11449 */ + "\x4d\0" /* offset 11453 */ + "\xd3\0" /* offset 11457 */ + "\x40\0" /* offset 11461 */ + "\xc0\0" /* offset 11465 */ + "\x5a\0" /* offset 11469 */ + "\x74\0" /* offset 11473 */ + "\xde\0" /* offset 11477 */ + "\x2a\0" /* offset 11481 */ + "\xca\0" /* offset 11485 */ + "\x3c\0" /* offset 11489 */ + "\x5e\0" /* offset 11493 */ + "\x65\0" /* offset 11497 */ + "\x8f\0" /* offset 11501 */ + "\x56\0" /* offset 11505 */ + "\xbe\0" /* offset 11509 */ + "\x12\0" /* offset 11513 */ + "\xf8\0" /* offset 11517 */ + "\x38\0" /* offset 11521 */ + "\xfd\0" /* offset 11525 */ + "\xef\0" /* offset 11529 */ + "\xfc\0" /* offset 11533 */ + "\x28\0" /* offset 11537 */ + "\xb4\0" /* offset 11541 */ + "\xae\0" /* offset 11545 */ + "\xe7\0" /* offset 11549 */ + "\x4d\0" /* offset 11553 */ + "\xc9\0" /* offset 11557 */ + "\xe4\0" /* offset 11561 */ + "\x51\0" /* offset 11565 */ + "\x9d\0" /* offset 11569 */ + "\x06\0" /* offset 11573 */ + "\x68\0" /* offset 11577 */ + "\x40\0" /* offset 11581 */ + "\xa8\0" /* offset 11585 */ + "\x64\0" /* offset 11589 */ + "\x94\0" /* offset 11593 */ + "\x68\0" /* offset 11597 */ + "\x8e\0" /* offset 11601 */ + "\xf2\0" /* offset 11605 */ + "\x4f\0" /* offset 11609 */ + "\xe2\0" /* offset 11613 */ + "\x91\0" /* offset 11617 */ + "\x85\0" /* offset 11621 */ + "\x77\0" /* offset 11625 */ + "\x1a\0" /* offset 11629 */ + "\x22\0" /* offset 11633 */ + "\x6e\0" /* offset 11637 */ + "\x2b\0" /* offset 11641 */ + "\x22\0" /* offset 11645 */ + "\x91\0" /* offset 11649 */ + "\x49\0" /* offset 11653 */ + "\x48\0" /* offset 11657 */ + "\x50\0" /* offset 11661 */ + "\x56\0" /* offset 11665 */ + "\x8d\0" /* offset 11669 */ + "\x8e\0" /* offset 11673 */ + "\x40\0" /* offset 11677 */ + "\x81\0" /* offset 11681 */ + "\xc0\0" /* offset 11685 */ + "\x09\0" /* offset 11689 */ + "\x41\0" /* offset 11693 */ + "\x72\0" /* offset 11697 */ + "\x05\0" /* offset 11701 */ + "\xed\0" /* offset 11705 */ + "\x79\0" /* offset 11709 */ + "\x57\0" /* offset 11713 */ + "\x10\0" /* offset 11717 */ + "\x96\0" /* offset 11721 */ + "\x01\0" /* offset 11725 */ + "\x39\0" /* offset 11729 */ + "\xd3\0" /* offset 11733 */ + "\x08\0" /* offset 11737 */ + "\xb6\0" /* offset 11741 */ + "\xe3\0" /* offset 11745 */ + "\xff\0" /* offset 11749 */ + "\x3b\0" /* offset 11753 */ + "\x66\x66\0" /* offset 11757 */ + "\x66\x69\0" /* offset 11760 */ + "\x66\x6c\0" /* offset 11763 */ + "\x66\x66\x69\0" /* offset 11766 */ + "\x66\x66\x6c\0" /* offset 11770 */ + "\x73\x74\0" /* offset 11774 */ + "\x74\x76\0" /* offset 11777 */ + "\x74\x65\0" /* offset 11782 */ + "\x74\x6b\0" /* offset 11787 */ + "\x7e\x76\0" /* offset 11792 */ + "\x74\x6d\0" /* offset 11797 */ + "\xd9\xb4\0" /* offset 11802 */ + "\xf2\xb7\0" /* offset 11807 */ + "\xe2\0" /* offset 11812 */ + "\xd4\0" /* offset 11815 */ + "\xdb\0" /* offset 11818 */ + "\xdc\0" /* offset 11821 */ + "\xdd\0" /* offset 11824 */ + "\xe8\0" /* offset 11827 */ + "\xea\0" /* offset 11830 */ + "\xe9\xc1\0" /* offset 11833 */ + "\xe9\xc2\0" /* offset 11838 */ + "\xe9\xbc\xc1\0" /* offset 11843 */ + "\xe9\xbc\xc2\0" /* offset 11850 */ + "\xd0\xb7\0" /* offset 11857 */ + "\xd0\xb8\0" /* offset 11862 */ + "\xd0\xbc\0" /* offset 11867 */ + "\xd1\xbc\0" /* offset 11872 */ + "\xd2\xbc\0" /* offset 11877 */ + "\xd3\xbc\0" /* offset 11882 */ + "\xd4\xbc\0" /* offset 11887 */ + "\xd5\xbc\0" /* offset 11892 */ + "\xd6\xbc\0" /* offset 11897 */ + "\xd8\xbc\0" /* offset 11902 */ + "\xd9\xbc\0" /* offset 11907 */ + "\xda\xbc\0" /* offset 11912 */ + "\xdb\xbc\0" /* offset 11917 */ + "\xdc\xbc\0" /* offset 11922 */ + "\xde\xbc\0" /* offset 11927 */ + "\xe0\xbc\0" /* offset 11932 */ + "\xe1\xbc\0" /* offset 11937 */ + "\xe3\xbc\0" /* offset 11942 */ + "\xe4\xbc\0" /* offset 11947 */ + "\xe6\xbc\0" /* offset 11952 */ + "\xe7\xbc\0" /* offset 11957 */ + "\xe8\xbc\0" /* offset 11962 */ + "\xe9\xbc\0" /* offset 11967 */ + "\xea\xbc\0" /* offset 11972 */ + "\xd5\xb9\0" /* offset 11977 */ + "\xd1\xbf\0" /* offset 11982 */ + "\xdb\xbf\0" /* offset 11987 */ + "\xe4\xbf\0" /* offset 11992 */ + "\xd0\xdc\0" /* offset 11997 */ + "\x71\0" /* offset 12002 */ + "\x7b\0" /* offset 12005 */ + "\x7e\0" /* offset 12008 */ + "\x80\0" /* offset 12011 */ + "\x7a\0" /* offset 12014 */ + "\x7f\0" /* offset 12017 */ + "\x79\0" /* offset 12020 */ + "\xa4\0" /* offset 12023 */ + "\xa6\0" /* offset 12026 */ + "\x84\0" /* offset 12029 */ + "\x83\0" /* offset 12032 */ + "\x86\0" /* offset 12035 */ + "\x87\0" /* offset 12038 */ + "\x8d\0" /* offset 12041 */ + "\x8c\0" /* offset 12044 */ + "\x8e\0" /* offset 12047 */ + "\x88\0" /* offset 12050 */ + "\x98\0" /* offset 12053 */ + "\x91\0" /* offset 12056 */ + "\xa9\0" /* offset 12059 */ + "\xaf\0" /* offset 12062 */ + "\xb3\0" /* offset 12065 */ + "\xb1\0" /* offset 12068 */ + "\xba\0" /* offset 12071 */ + "\xbb\0" /* offset 12074 */ + "\xc1\0" /* offset 12077 */ + "\xbe\0" /* offset 12080 */ + "\xd2\0" /* offset 12083 */ + "\xad\0" /* offset 12086 */ + "\xc7\0" /* offset 12089 */ + "\xc6\0" /* offset 12092 */ + "\xc8\0" /* offset 12095 */ + "\xcb\0" /* offset 12098 */ + "\xc5\0" /* offset 12101 */ + "\xc9\0" /* offset 12104 */ + "\xd0\0" /* offset 12107 */ + "\x49\0" /* offset 12110 */ + "\x4a\x54\x27\0" /* offset 12113 */ + "\x4a\x54\xd5\0" /* offset 12120 */ + "\x4a\x54\x48\0" /* offset 12127 */ + "\x4a\x54\xc7\0" /* offset 12134 */ + "\x4a\x54\xc6\0" /* offset 12141 */ + "\x4a\x54\xc8\0" /* offset 12148 */ + "\x4a\x54\xd0\0" /* offset 12155 */ + "\x4a\x54\x49\0" /* offset 12162 */ + "\xcc\0" /* offset 12169 */ + "\x4a\x54\x2c\0" /* offset 12172 */ + "\x4a\x54\x2d\0" /* offset 12179 */ + "\x4a\x54\x45\0" /* offset 12186 */ + "\x4a\x54\x4a\0" /* offset 12193 */ + "\x28\x2c\0" /* offset 12200 */ + "\x28\x2d\0" /* offset 12205 */ + "\x28\x2e\0" /* offset 12210 */ + "\x28\x45\0" /* offset 12215 */ + "\x28\x49\0" /* offset 12220 */ + "\x28\x4a\0" /* offset 12225 */ + "\x2a\x2c\0" /* offset 12230 */ + "\x2a\x2d\0" /* offset 12235 */ + "\x2a\x2e\0" /* offset 12240 */ + "\x2a\x45\0" /* offset 12245 */ + "\x2a\x49\0" /* offset 12250 */ + "\x2a\x4a\0" /* offset 12255 */ + "\x2b\x2c\0" /* offset 12260 */ + "\x2b\x45\0" /* offset 12265 */ + "\x2b\x49\0" /* offset 12270 */ + "\x2b\x4a\0" /* offset 12275 */ + "\x2c\x2d\0" /* offset 12280 */ + "\x2c\x45\0" /* offset 12285 */ + "\x2d\x2c\0" /* offset 12290 */ + "\x2d\x45\0" /* offset 12295 */ + "\x2e\x2c\0" /* offset 12300 */ + "\x2e\x2d\0" /* offset 12305 */ + "\x2e\x45\0" /* offset 12310 */ + "\x33\x2c\0" /* offset 12315 */ + "\x33\x2d\0" /* offset 12320 */ + "\x33\x2e\0" /* offset 12325 */ + "\x33\x45\0" /* offset 12330 */ + "\x35\x2d\0" /* offset 12335 */ + "\x35\x45\0" /* offset 12340 */ + "\x36\x2c\0" /* offset 12345 */ + "\x36\x2d\0" /* offset 12350 */ + "\x36\x2e\0" /* offset 12355 */ + "\x36\x45\0" /* offset 12360 */ + "\x37\x2d\0" /* offset 12365 */ + "\x37\x45\0" /* offset 12370 */ + "\x38\x45\0" /* offset 12375 */ + "\x39\x2c\0" /* offset 12380 */ + "\x39\x45\0" /* offset 12385 */ + "\x3a\x2c\0" /* offset 12390 */ + "\x3a\x45\0" /* offset 12395 */ + "\x41\x2c\0" /* offset 12400 */ + "\x41\x2d\0" /* offset 12405 */ + "\x41\x2e\0" /* offset 12410 */ + "\x41\x45\0" /* offset 12415 */ + "\x41\x49\0" /* offset 12420 */ + "\x41\x4a\0" /* offset 12425 */ + "\x42\x2d\0" /* offset 12430 */ + "\x42\x45\0" /* offset 12435 */ + "\x42\x49\0" /* offset 12440 */ + "\x42\x4a\0" /* offset 12445 */ + "\x43\x27\0" /* offset 12450 */ + "\x43\x2c\0" /* offset 12455 */ + "\x43\x2d\0" /* offset 12460 */ + "\x43\x2e\0" /* offset 12465 */ + "\x43\x44\0" /* offset 12470 */ + "\x43\x45\0" /* offset 12475 */ + "\x43\x49\0" /* offset 12480 */ + "\x43\x4a\0" /* offset 12485 */ + "\x44\x2c\0" /* offset 12490 */ + "\x44\x2d\0" /* offset 12495 */ + "\x44\x2e\0" /* offset 12500 */ + "\x44\x45\0" /* offset 12505 */ + "\x44\x49\0" /* offset 12510 */ + "\x44\x4a\0" /* offset 12515 */ + "\x45\x2c\0" /* offset 12520 */ + "\x45\x2d\0" /* offset 12525 */ + "\x45\x2e\0" /* offset 12530 */ + "\x45\x45\0" /* offset 12535 */ + "\x45\x49\0" /* offset 12540 */ + "\x45\x4a\0" /* offset 12545 */ + "\x46\x2c\0" /* offset 12550 */ + "\x46\x2d\0" /* offset 12555 */ + "\x46\x2e\0" /* offset 12560 */ + "\x46\x45\0" /* offset 12565 */ + "\x46\x49\0" /* offset 12570 */ + "\x46\x4a\0" /* offset 12575 */ + "\x47\x2c\0" /* offset 12580 */ + "\x47\x45\0" /* offset 12585 */ + "\x47\x49\0" /* offset 12590 */ + "\x47\x4a\0" /* offset 12595 */ + "\x4a\x2c\0" /* offset 12600 */ + "\x4a\x2d\0" /* offset 12605 */ + "\x4a\x2e\0" /* offset 12610 */ + "\x4a\x45\0" /* offset 12615 */ + "\x4a\x49\0" /* offset 12620 */ + "\x4a\x4a\0" /* offset 12625 */ + "\x30\x70\0" /* offset 12630 */ + "\x31\x70\0" /* offset 12635 */ + "\x49\x70\0" /* offset 12640 */ + "\x20\x4c\x51\0" /* offset 12645 */ + "\x20\x4d\x51\0" /* offset 12651 */ + "\x20\x4e\x51\0" /* offset 12657 */ + "\x20\x4f\x51\0" /* offset 12663 */ + "\x20\x50\x51\0" /* offset 12669 */ + "\x20\x51\x70\0" /* offset 12675 */ + "\x4a\x54\x31\0" /* offset 12681 */ + "\x4a\x54\x32\0" /* offset 12688 */ + "\x4a\x54\x46\0" /* offset 12695 */ + "\x28\x31\0" /* offset 12702 */ + "\x28\x32\0" /* offset 12707 */ + "\x28\x46\0" /* offset 12712 */ + "\x2a\x31\0" /* offset 12717 */ + "\x2a\x32\0" /* offset 12722 */ + "\x2a\x46\0" /* offset 12727 */ + "\x2b\x31\0" /* offset 12732 */ + "\x2b\x32\0" /* offset 12737 */ + "\x2b\x46\0" /* offset 12742 */ + "\x45\x27\0" /* offset 12747 */ + "\x46\x31\0" /* offset 12752 */ + "\x46\x32\0" /* offset 12757 */ + "\x46\x46\0" /* offset 12762 */ + "\x4a\x31\0" /* offset 12767 */ + "\x4a\x32\0" /* offset 12772 */ + "\x4a\x46\0" /* offset 12777 */ + "\x4a\x54\x2e\0" /* offset 12782 */ + "\x4a\x54\x47\0" /* offset 12789 */ + "\x28\x47\0" /* offset 12796 */ + "\x2a\x47\0" /* offset 12801 */ + "\x35\x2e\0" /* offset 12806 */ + "\x44\x47\0" /* offset 12811 */ + "\x46\x47\0" /* offset 12816 */ + "\x47\x70\0" /* offset 12821 */ + "\x4a\x47\0" /* offset 12826 */ + "\x2b\x47\0" /* offset 12831 */ + "\x33\x47\0" /* offset 12836 */ + "\x34\x45\0" /* offset 12841 */ + "\x34\x47\0" /* offset 12846 */ + "\x40\x4e\x51\0" /* offset 12851 */ + "\x40\x4f\x51\0" /* offset 12858 */ + "\x40\x50\x51\0" /* offset 12865 */ + "\x37\x49\0" /* offset 12872 */ + "\x37\x4a\0" /* offset 12877 */ + "\x39\x49\0" /* offset 12882 */ + "\x39\x4a\0" /* offset 12887 */ + "\x3a\x49\0" /* offset 12892 */ + "\x3a\x4a\0" /* offset 12897 */ + "\x33\x49\0" /* offset 12902 */ + "\x33\x4a\0" /* offset 12907 */ + "\x34\x49\0" /* offset 12912 */ + "\x34\x4a\0" /* offset 12917 */ + "\x2d\x49\0" /* offset 12922 */ + "\x2d\x4a\0" /* offset 12927 */ + "\x2c\x49\0" /* offset 12932 */ + "\x2c\x4a\0" /* offset 12937 */ + "\x2e\x49\0" /* offset 12942 */ + "\x2e\x4a\0" /* offset 12947 */ + "\x35\x49\0" /* offset 12952 */ + "\x35\x4a\0" /* offset 12957 */ + "\x36\x49\0" /* offset 12962 */ + "\x36\x4a\0" /* offset 12967 */ + "\x34\x2c\0" /* offset 12972 */ + "\x34\x2d\0" /* offset 12977 */ + "\x34\x2e\0" /* offset 12982 */ + "\x34\x31\0" /* offset 12987 */ + "\x33\x31\0" /* offset 12992 */ + "\x35\x31\0" /* offset 12997 */ + "\x36\x31\0" /* offset 13002 */ + "\x27\x4b\0" /* offset 13007 */ + "\x2a\x2c\x45\0" /* offset 13012 */ + "\x2a\x2d\x2c\0" /* offset 13019 */ + "\x2a\x2d\x45\0" /* offset 13026 */ + "\x2a\x2e\x45\0" /* offset 13033 */ + "\x2a\x45\x2c\0" /* offset 13040 */ + "\x2a\x45\x2d\0" /* offset 13047 */ + "\x2a\x45\x2e\0" /* offset 13054 */ + "\x2c\x45\x2d\0" /* offset 13061 */ + "\x2d\x45\x4a\0" /* offset 13068 */ + "\x2d\x45\x49\0" /* offset 13075 */ + "\x33\x2d\x2c\0" /* offset 13082 */ + "\x33\x2c\x2d\0" /* offset 13089 */ + "\x33\x2c\x49\0" /* offset 13096 */ + "\x33\x45\x2d\0" /* offset 13103 */ + "\x33\x45\x2c\0" /* offset 13110 */ + "\x33\x45\x45\0" /* offset 13117 */ + "\x35\x2d\x2d\0" /* offset 13124 */ + "\x35\x45\x45\0" /* offset 13131 */ + "\x34\x2d\x45\0" /* offset 13138 */ + "\x34\x2c\x4a\0" /* offset 13145 */ + "\x34\x45\x2e\0" /* offset 13152 */ + "\x34\x45\x45\0" /* offset 13159 */ + "\x36\x2d\x49\0" /* offset 13166 */ + "\x36\x2e\x45\0" /* offset 13173 */ + "\x37\x45\x2d\0" /* offset 13180 */ + "\x37\x45\x45\0" /* offset 13187 */ + "\x37\x45\x4a\0" /* offset 13194 */ + "\x39\x2c\x45\0" /* offset 13201 */ + "\x39\x45\x45\0" /* offset 13208 */ + "\x39\x45\x49\0" /* offset 13215 */ + "\x3a\x45\x45\0" /* offset 13222 */ + "\x3a\x45\x4a\0" /* offset 13229 */ + "\x3a\x45\x49\0" /* offset 13236 */ + "\x41\x2e\x45\0" /* offset 13243 */ + "\x42\x45\x2d\0" /* offset 13250 */ + "\x42\x45\x45\0" /* offset 13257 */ + "\x44\x2d\x45\0" /* offset 13264 */ + "\x44\x2d\x4a\0" /* offset 13271 */ + "\x44\x2d\x49\0" /* offset 13278 */ + "\x44\x2c\x2c\0" /* offset 13285 */ + "\x44\x2e\x45\0" /* offset 13292 */ + "\x44\x45\x2d\0" /* offset 13299 */ + "\x45\x2d\x2c\0" /* offset 13306 */ + "\x45\x2d\x45\0" /* offset 13313 */ + "\x45\x2d\x4a\0" /* offset 13320 */ + "\x45\x2c\x2d\0" /* offset 13327 */ + "\x45\x2c\x45\0" /* offset 13334 */ + "\x45\x2e\x2c\0" /* offset 13341 */ + "\x45\x2e\x45\0" /* offset 13348 */ + "\x45\x2c\x2e\0" /* offset 13355 */ + "\x47\x45\x2c\0" /* offset 13362 */ + "\x47\x45\x45\0" /* offset 13369 */ + "\x46\x2d\x45\0" /* offset 13376 */ + "\x46\x2d\x49\0" /* offset 13383 */ + "\x46\x2c\x45\0" /* offset 13390 */ + "\x46\x2c\x49\0" /* offset 13397 */ + "\x46\x45\x4a\0" /* offset 13404 */ + "\x46\x45\x49\0" /* offset 13411 */ + "\x4a\x45\x45\0" /* offset 13418 */ + "\x28\x2e\x4a\0" /* offset 13425 */ + "\x2a\x2c\x4a\0" /* offset 13432 */ + "\x2a\x2c\x49\0" /* offset 13439 */ + "\x2a\x2e\x4a\0" /* offset 13446 */ + "\x2a\x2e\x49\0" /* offset 13453 */ + "\x2a\x45\x4a\0" /* offset 13460 */ + "\x2a\x45\x49\0" /* offset 13467 */ + "\x2c\x45\x4a\0" /* offset 13474 */ + "\x2c\x2d\x49\0" /* offset 13481 */ + "\x2c\x45\x49\0" /* offset 13488 */ + "\x33\x2e\x49\0" /* offset 13495 */ + "\x35\x2d\x4a\0" /* offset 13502 */ + "\x34\x2d\x4a\0" /* offset 13509 */ + "\x36\x2d\x4a\0" /* offset 13516 */ + "\x44\x2c\x4a\0" /* offset 13523 */ + "\x44\x45\x4a\0" /* offset 13530 */ + "\x4a\x2d\x4a\0" /* offset 13537 */ + "\x4a\x2c\x4a\0" /* offset 13544 */ + "\x4a\x45\x4a\0" /* offset 13551 */ + "\x45\x45\x4a\0" /* offset 13558 */ + "\x42\x45\x4a\0" /* offset 13565 */ + "\x46\x2d\x4a\0" /* offset 13572 */ + "\x39\x45\x4a\0" /* offset 13579 */ + "\x43\x45\x4a\0" /* offset 13586 */ + "\x46\x2c\x2d\0" /* offset 13593 */ + "\x45\x2e\x4a\0" /* offset 13600 */ + "\x44\x2c\x45\0" /* offset 13607 */ + "\x43\x45\x45\0" /* offset 13614 */ + "\x2c\x2d\x4a\0" /* offset 13621 */ + "\x2d\x2c\x4a\0" /* offset 13628 */ + "\x45\x2c\x4a\0" /* offset 13635 */ + "\x41\x45\x4a\0" /* offset 13642 */ + "\x28\x2d\x4a\0" /* offset 13649 */ + "\x33\x2e\x4a\0" /* offset 13656 */ + "\x46\x2c\x4a\0" /* offset 13663 */ + "\x35\x44\xd2\0" /* offset 13670 */ + "\x42\x44\xd2\0" /* offset 13677 */ + "\x27\x44\x44\x47\0" /* offset 13684 */ + "\x27\x43\x28\x31\0" /* offset 13693 */ + "\x45\x2d\x45\x2f\0" /* offset 13702 */ + "\x35\x44\x39\x45\0" /* offset 13711 */ + "\x31\x33\x48\x44\0" /* offset 13720 */ + "\x39\x44\x4a\x47\0" /* offset 13729 */ + "\x48\x33\x44\x45\0" /* offset 13738 */ + "\x35\x44\x49\0" /* offset 13747 */ + "\x35\x44\x49\x20\x27\x44\x44\x47\x20\x39\x44\x4a\x47\x20\x48\x33\x44\x45\0" /* offset 13754 */ + "\x2c\x44\x20\x2c\x44\x27\x44\x47\0" /* offset 13788 */ + "\x31\xcc\x27\x44\0" /* offset 13804 */ + "\x14\0" /* offset 13813 */ + "\x13\0" /* offset 13817 */ + "\x5f\0" /* offset 13821 */ + "\x7b\0" /* offset 13823 */ + "\x7d\0" /* offset 13825 */ + "\x14\0" /* offset 13827 */ + "\x15\0" /* offset 13831 */ + "\x10\0" /* offset 13835 */ + "\x11\0" /* offset 13839 */ + "\x0a\0" /* offset 13843 */ + "\x0b\0" /* offset 13847 */ + "\x0c\0" /* offset 13851 */ + "\x0d\0" /* offset 13855 */ + "\x0e\0" /* offset 13859 */ + "\x0f\0" /* offset 13863 */ + "\x2c\0" /* offset 13867 */ + "\x01\0" /* offset 13869 */ + "\x3a\0" /* offset 13873 */ + "\x3f\0" /* offset 13875 */ + "\x21\0" /* offset 13877 */ + "\x23\0" /* offset 13879 */ + "\x26\0" /* offset 13881 */ + "\x2a\0" /* offset 13883 */ + "\x2d\0" /* offset 13885 */ + "\x3c\0" /* offset 13887 */ + "\x3e\0" /* offset 13889 */ + "\x5c\0" /* offset 13891 */ + "\x24\0" /* offset 13893 */ + "\x25\0" /* offset 13895 */ + "\x40\0" /* offset 13897 */ + "\x20\x4b\0" /* offset 13899 */ + "\x40\x4b\0" /* offset 13903 */ + "\x20\x4c\0" /* offset 13908 */ + "\x20\x4d\0" /* offset 13912 */ + "\x20\x4e\0" /* offset 13916 */ + "\x40\x4e\0" /* offset 13920 */ + "\x20\x4f\0" /* offset 13925 */ + "\x40\x4f\0" /* offset 13929 */ + "\x20\x50\0" /* offset 13934 */ + "\x40\x50\0" /* offset 13938 */ + "\x20\x51\0" /* offset 13943 */ + "\x40\x51\0" /* offset 13947 */ + "\x20\x52\0" /* offset 13952 */ + "\x40\x52\0" /* offset 13956 */ + "\x21\0" /* offset 13961 */ + "\x27\0" /* offset 13964 */ + "\x28\0" /* offset 13967 */ + "\x29\0" /* offset 13970 */ + "\x2a\0" /* offset 13973 */ + "\x2b\0" /* offset 13976 */ + "\x2c\0" /* offset 13979 */ + "\x2d\0" /* offset 13982 */ + "\x2e\0" /* offset 13985 */ + "\x2f\0" /* offset 13988 */ + "\x30\0" /* offset 13991 */ + "\x31\0" /* offset 13994 */ + "\x32\0" /* offset 13997 */ + "\x33\0" /* offset 14000 */ + "\x34\0" /* offset 14003 */ + "\x35\0" /* offset 14006 */ + "\x36\0" /* offset 14009 */ + "\x37\0" /* offset 14012 */ + "\x38\0" /* offset 14015 */ + "\x39\0" /* offset 14018 */ + "\x3a\0" /* offset 14021 */ + "\x41\0" /* offset 14024 */ + "\x42\0" /* offset 14027 */ + "\x43\0" /* offset 14030 */ + "\x44\0" /* offset 14033 */ + "\x45\0" /* offset 14036 */ + "\x46\0" /* offset 14039 */ + "\x47\0" /* offset 14042 */ + "\x48\0" /* offset 14045 */ + "\x4a\0" /* offset 14048 */ + "\x44\x27\x53\0" /* offset 14051 */ + "\x44\x27\x54\0" /* offset 14058 */ + "\x44\x27\x55\0" /* offset 14065 */ + "\x44\x27\0" /* offset 14072 */ + "\x22\0" /* offset 14077 */ + "\x27\0" /* offset 14079 */ + "\x2f\0" /* offset 14081 */ + "\x5b\0" /* offset 14083 */ + "\x5d\0" /* offset 14085 */ + "\x5e\0" /* offset 14087 */ + "\x7c\0" /* offset 14089 */ + "\x7e\0" /* offset 14091 */ + "\x85\0" /* offset 14093 */ + "\x86\0" /* offset 14097 */ + "\x02\0" /* offset 14101 */ + "\xfb\0" /* offset 14105 */ + "\xa1\0" /* offset 14109 */ + "\xa3\0" /* offset 14113 */ + "\xa5\0" /* offset 14117 */ + "\xa7\0" /* offset 14121 */ + "\xa9\0" /* offset 14125 */ + "\xe3\0" /* offset 14129 */ + "\xe5\0" /* offset 14133 */ + "\xe7\0" /* offset 14137 */ + "\xc3\0" /* offset 14141 */ + "\xfc\0" /* offset 14145 */ + "\xf3\0" /* offset 14149 */ + "\x99\0" /* offset 14153 */ + "\x9a\0" /* offset 14157 */ + "\xa2\0" /* offset 14161 */ + "\xa3\0" /* offset 14164 */ + "\xac\0" /* offset 14167 */ + "\xa6\0" /* offset 14170 */ + "\xa5\0" /* offset 14173 */ + "\xa9\0" /* offset 14176 */ + "\x02\0" /* offset 14180 */ + "\x90\0" /* offset 14184 */ + "\x91\0" /* offset 14188 */ + "\x92\0" /* offset 14192 */ + "\x93\0" /* offset 14196 */ + "\xa0\0" /* offset 14200 */ + "\xcb\0" /* offset 14204 */ + "\x57\x65\0" /* offset 14208 */ + "\x58\x65\0" /* offset 14217 */ + "\x58\x65\x6e\0" /* offset 14226 */ + "\x58\x65\x6f\0" /* offset 14239 */ + "\x58\x65\x70\0" /* offset 14252 */ + "\x58\x65\x71\0" /* offset 14265 */ + "\x58\x65\x72\0" /* offset 14278 */ + "\xb9\x65\0" /* offset 14291 */ + "\xba\x65\0" /* offset 14300 */ + "\xb9\x65\x6e\0" /* offset 14309 */ + "\xba\x65\x6e\0" /* offset 14322 */ + "\xb9\x65\x6f\0" /* offset 14335 */ + "\xba\x65\x6f\0" /* offset 14348 */ + "\x91\0" /* offset 14361 */ + "\x92\0" /* offset 14364 */ + "\x94\0" /* offset 14367 */ + "\x95\0" /* offset 14370 */ + "\x96\0" /* offset 14373 */ + "\x97\0" /* offset 14376 */ + "\x99\0" /* offset 14379 */ + "\x9a\0" /* offset 14382 */ + "\x9b\0" /* offset 14385 */ + "\x9c\0" /* offset 14388 */ + "\x9d\0" /* offset 14391 */ + "\x9e\0" /* offset 14394 */ + "\x9f\0" /* offset 14397 */ + "\xa1\0" /* offset 14400 */ + "\xa3\0" /* offset 14403 */ + "\xa4\0" /* offset 14406 */ + "\xa6\0" /* offset 14409 */ + "\xa7\0" /* offset 14412 */ + "\xa8\0" /* offset 14415 */ + "\x07\0" /* offset 14418 */ + "\xb1\0" /* offset 14422 */ + "\xb4\0" /* offset 14425 */ + "\xb6\0" /* offset 14428 */ + "\xb7\0" /* offset 14431 */ + "\xbb\0" /* offset 14434 */ + "\xbd\0" /* offset 14437 */ + "\xbe\0" /* offset 14440 */ + "\xbf\0" /* offset 14443 */ + "\xc3\0" /* offset 14446 */ + "\xc4\0" /* offset 14449 */ + "\xc5\0" /* offset 14452 */ + "\xc7\0" /* offset 14455 */ + "\xc8\0" /* offset 14458 */ + "\xc9\0" /* offset 14461 */ + "\x02\0" /* offset 14464 */ + "\x3d\0" /* offset 14468 */ + "\x38\0" /* offset 14472 */ + "\x41\0" /* offset 14476 */ + "\x22\0" /* offset 14480 */ + "\x60\0" /* offset 14485 */ + "\xbb\0" /* offset 14489 */ + "\x02\0" /* offset 14493 */ + "\x7a\0" /* offset 14497 */ + "\x99\0" /* offset 14501 */ + "\xcf\0" /* offset 14505 */ + "\x9e\0" /* offset 14509 */ + "\x3a\0" /* offset 14513 */ + "\x54\0" /* offset 14518 */ + "\x64\0" /* offset 14522 */ + "\x77\0" /* offset 14526 */ + "\x1c\0" /* offset 14530 */ + "\xb9\0" /* offset 14535 */ + "\x67\0" /* offset 14539 */ + "\x8d\0" /* offset 14543 */ + "\x4b\0" /* offset 14547 */ + "\x97\0" /* offset 14552 */ + "\xa4\0" /* offset 14556 */ + "\xcc\0" /* offset 14560 */ + "\xac\0" /* offset 14564 */ + "\xb5\0" /* offset 14568 */ + "\xdf\0" /* offset 14572 */ + "\x03\0" /* offset 14577 */ + "\xdf\0" /* offset 14581 */ + "\x3b\0" /* offset 14585 */ + "\x46\0" /* offset 14589 */ + "\x72\0" /* offset 14593 */ + "\x77\0" /* offset 14597 */ + "\x15\0" /* offset 14601 */ + "\xc7\0" /* offset 14605 */ + "\xfa\0" /* offset 14609 */ + "\x05\0" /* offset 14613 */ + "\x06\0" /* offset 14617 */ + "\x49\0" /* offset 14621 */ + "\x5a\0" /* offset 14625 */ + "\x73\0" /* offset 14629 */ + "\x7d\0" /* offset 14633 */ + "\x7f\0" /* offset 14637 */ + "\x2c\0" /* offset 14641 */ + "\x70\0" /* offset 14646 */ + "\xca\0" /* offset 14650 */ + "\xdf\0" /* offset 14654 */ + "\x63\0" /* offset 14658 */ + "\xeb\0" /* offset 14663 */ + "\xf1\0" /* offset 14667 */ + "\x06\0" /* offset 14671 */ + "\x9e\0" /* offset 14675 */ + "\x38\0" /* offset 14679 */ + "\x48\0" /* offset 14683 */ + "\x68\0" /* offset 14687 */ + "\xa2\0" /* offset 14691 */ + "\xf6\0" /* offset 14695 */ + "\x10\0" /* offset 14699 */ + "\x53\0" /* offset 14703 */ + "\x63\0" /* offset 14707 */ + "\x84\0" /* offset 14711 */ + "\x99\0" /* offset 14715 */ + "\xab\0" /* offset 14719 */ + "\xb3\0" /* offset 14723 */ + "\xc2\0" /* offset 14727 */ + "\x16\0" /* offset 14731 */ + "\x17\0" /* offset 14735 */ + "\x51\0" /* offset 14739 */ + "\x74\0" /* offset 14743 */ + "\xee\0" /* offset 14747 */ + "\xce\0" /* offset 14751 */ + "\xf4\0" /* offset 14755 */ + "\x0d\0" /* offset 14759 */ + "\x8b\0" /* offset 14763 */ + "\x32\0" /* offset 14767 */ + "\x31\0" /* offset 14771 */ + "\xac\0" /* offset 14775 */ + "\xe4\0" /* offset 14779 */ + "\xf2\0" /* offset 14784 */ + "\xf7\0" /* offset 14788 */ + "\x06\0" /* offset 14792 */ + "\x1a\0" /* offset 14796 */ + "\x22\0" /* offset 14800 */ + "\x62\0" /* offset 14804 */ + "\xa8\0" /* offset 14808 */ + "\xea\0" /* offset 14813 */ + "\xec\0" /* offset 14818 */ + "\x1b\0" /* offset 14822 */ + "\x27\0" /* offset 14826 */ + "\xd8\0" /* offset 14830 */ + "\x66\0" /* offset 14834 */ + "\xee\0" /* offset 14838 */ + "\x6a\0" /* offset 14842 */ + "\x08\0" /* offset 14847 */ + "\x3e\0" /* offset 14851 */ + "\xc8\0" /* offset 14855 */ + "\xc3\0" /* offset 14860 */ + "\xd8\0" /* offset 14864 */ + "\xf3\0" /* offset 14868 */ + "\x18\0" /* offset 14872 */ + "\xff\0" /* offset 14877 */ + "\x06\0" /* offset 14881 */ + "\x33\0" /* offset 14885 */ + "\x81\0" /* offset 14889 */ + "\x60\0" /* offset 14893 */ + "\xc0\0" /* offset 14897 */ + "\x8d\0" /* offset 14901 */ + "\xe4\0" /* offset 14905 */ + "\x43\0" /* offset 14910 */ + "\xe6\0" /* offset 14914 */ + "\x6e\0" /* offset 14919 */ + "\x6b\0" /* offset 14923 */ + "\x7c\0" /* offset 14927 */ + "\xe1\0" /* offset 14931 */ + "\xe2\0" /* offset 14935 */ + "\x2f\0" /* offset 14939 */ + "\xfd\0" /* offset 14943 */ + "\x28\0" /* offset 14947 */ + "\x3d\0" /* offset 14951 */ + "\x69\0" /* offset 14955 */ + "\x62\0" /* offset 14959 */ + "\x83\0" /* offset 14963 */ + "\x7c\0" /* offset 14968 */ + "\xb0\0" /* offset 14972 */ + "\xb3\0" /* offset 14976 */ + "\xb6\0" /* offset 14980 */ + "\x92\0" /* offset 14984 */ + "\x31\0" /* offset 14989 */ + "\x01\0" /* offset 14994 */ + "\x22\0" /* offset 14998 */ + "\xc7\0" /* offset 15002 */ + "\xb8\0" /* offset 15006 */ + "\xda\0" /* offset 15011 */ + "\x62\0" /* offset 15016 */ + "\x6b\0" /* offset 15020 */ + "\xe3\0" /* offset 15024 */ + "\x9a\0" /* offset 15028 */ + "\xcd\0" /* offset 15032 */ + "\xd7\0" /* offset 15036 */ + "\xf9\0" /* offset 15040 */ + "\x81\0" /* offset 15044 */ + "\x3a\0" /* offset 15048 */ + "\x1c\0" /* offset 15052 */ + "\xd4\0" /* offset 15056 */ + "\xc7\0" /* offset 15061 */ + "\x48\0" /* offset 15065 */ + "\x4c\0" /* offset 15069 */ + "\x4e\0" /* offset 15073 */ + "\x7a\0" /* offset 15077 */ + "\xb2\0" /* offset 15081 */ + "\xa4\0" /* offset 15085 */ + "\xaf\0" /* offset 15089 */ + "\xde\0" /* offset 15093 */ + "\x10\0" /* offset 15097 */ + "\x1b\0" /* offset 15101 */ + "\x5d\0" /* offset 15105 */ + "\xb1\0" /* offset 15109 */ + "\xd4\0" /* offset 15113 */ + "\x50\0" /* offset 15117 */ + "\x0c\0" /* offset 15121 */ + "\x3d\0" /* offset 15126 */ + "\xfc\0" /* offset 15130 */ + "\x68\0" /* offset 15134 */ + "\x83\0" /* offset 15138 */ + "\xe4\0" /* offset 15142 */ + "\xf1\0" /* offset 15146 */ + "\x22\0" /* offset 15151 */ + "\xc5\0" /* offset 15155 */ + "\xa9\0" /* offset 15159 */ + "\x2e\0" /* offset 15163 */ + "\x69\0" /* offset 15167 */ + "\x7e\0" /* offset 15171 */ + "\x9d\0" /* offset 15175 */ + "\x77\0" /* offset 15179 */ + "\x6c\0" /* offset 15183 */ + "\x6c\0" /* offset 15187 */ + "\x0a\0" /* offset 15191 */ + "\xe3\0" /* offset 15196 */ + "\xf8\0" /* offset 15200 */ + "\x49\0" /* offset 15204 */ + "\x19\0" /* offset 15208 */ + "\x08\0" /* offset 15212 */ + "\xe4\0" /* offset 15216 */ + "\x92\0" /* offset 15220 */ + "\x95\0" /* offset 15224 */ + "\x00\0" /* offset 15228 */ + "\x9c\0" /* offset 15232 */ + "\xad\0" /* offset 15236 */ + "\xd9\0" /* offset 15240 */ + "\x1b\0" /* offset 15244 */ + "\x21\0" /* offset 15248 */ + "\x5e\0" /* offset 15252 */ + "\x53\0" /* offset 15256 */ + "\xc3\0" /* offset 15260 */ + "\x49\0" /* offset 15265 */ + "\xfa\0" /* offset 15269 */ + "\x85\0" /* offset 15273 */ + "\x52\0" /* offset 15277 */ + "\x6d\0" /* offset 15281 */ + "\x8e\0" /* offset 15286 */ + "\x1f\0" /* offset 15290 */ + "\x14\0" /* offset 15294 */ + "\x9d\0" /* offset 15298 */ + "\x42\0" /* offset 15302 */ + "\xa3\0" /* offset 15306 */ + "\xea\0" /* offset 15310 */ + "\xa8\0" /* offset 15314 */ + "\xa3\0" /* offset 15318 */ + "\xdb\0" /* offset 15323 */ + "\x18\0" /* offset 15327 */ + "\x21\0" /* offset 15331 */ + "\xa7\0" /* offset 15335 */ + "\x54\0" /* offset 15340 */ + "\x4e\0" /* offset 15344 */ + "\x72\0" /* offset 15348 */ + "\x9f\0" /* offset 15352 */ + "\xbb\0" /* offset 15356 */ + "\x8d\0" /* offset 15360 */ + "\x0b\0" /* offset 15365 */ + "\xfa\0" /* offset 15370 */ + "\x4e\0" /* offset 15375 */ + "\xbc\0" /* offset 15379 */ + "\xbf\0" /* offset 15384 */ + "\xcd\0" /* offset 15388 */ + "\x67\0" /* offset 15392 */ + "\x16\0" /* offset 15396 */ + "\x3e\0" /* offset 15400 */ + "\x69\0" /* offset 15404 */ + "\x78\0" /* offset 15408 */ + "\x85\0" /* offset 15412 */ + "\x1e\0" /* offset 15416 */ + "\x34\0" /* offset 15421 */ + "\x2f\0" /* offset 15425 */ + "\x6e\0" /* offset 15429 */ + "\x33\0" /* offset 15433 */ + "\xcb\0" /* offset 15437 */ + "\xc7\0" /* offset 15441 */ + "\xd1\0" /* offset 15445 */ + "\xf9\0" /* offset 15450 */ + "\x6e\0" /* offset 15454 */ + "\x5e\0" /* offset 15458 */ + "\x8e\0" /* offset 15463 */ + "\xc6\0" /* offset 15468 */ + "\x39\0" /* offset 15472 */ + "\x1e\0" /* offset 15476 */ + "\x1b\0" /* offset 15480 */ + "\x96\0" /* offset 15484 */ + "\x4a\0" /* offset 15488 */ + "\x7d\0" /* offset 15492 */ + "\x77\0" /* offset 15496 */ + "\xad\0" /* offset 15500 */ + "\x25\0" /* offset 15504 */ + "\x45\0" /* offset 15509 */ + "\x63\0" /* offset 15513 */ + "\x9c\0" /* offset 15518 */ + "\xab\0" /* offset 15522 */ + "\x28\0" /* offset 15526 */ + "\x35\0" /* offset 15530 */ + "\x50\0" /* offset 15534 */ + "\x08\0" /* offset 15538 */ + "\x80\0" /* offset 15543 */ + "\x95\0" /* offset 15547 */ + "\x35\0" /* offset 15551 */ + "\x14\0" /* offset 15556 */ + "\x7a\0" /* offset 15561 */ + "\x8b\0" /* offset 15565 */ + "\xac\0" /* offset 15569 */ + "\xa5\0" /* offset 15573 */ + "\xb8\0" /* offset 15577 */ + "\x47\0" /* offset 15581 */ + "\x5c\0" /* offset 15585 */ + "\x71\0" /* offset 15589 */ + "\x85\0" /* offset 15593 */ + "\xca\0" /* offset 15597 */ + "\x1b\0" /* offset 15601 */ + "\x24\0" /* offset 15605 */ + "\x36\0" /* offset 15609 */ + "\x3e\0" /* offset 15614 */ + "\x92\0" /* offset 15618 */ + "\x9f\0" /* offset 15623 */ + "\x10\0" /* offset 15628 */ + "\xa1\0" /* offset 15632 */ + "\xb8\0" /* offset 15637 */ + "\x44\0" /* offset 15642 */ + "\xfc\0" /* offset 15647 */ + "\x08\0" /* offset 15651 */ + "\xf4\0" /* offset 15655 */ + "\xf3\0" /* offset 15659 */ + "\xf2\0" /* offset 15664 */ + "\x19\0" /* offset 15669 */ + "\x33\0" /* offset 15674 */ + "\x1e\0" /* offset 15679 */ + "\x1f\0" /* offset 15683 */ + "\x4a\0" /* offset 15687 */ + "\x39\0" /* offset 15691 */ + "\x8b\0" /* offset 15695 */ + "\x46\0" /* offset 15699 */ + "\x96\0" /* offset 15703 */ + "\x1d\0" /* offset 15707 */ + "\x4e\0" /* offset 15712 */ + "\xcc\0" /* offset 15716 */ + "\xe3\0" /* offset 15720 */ + "\x26\0" /* offset 15724 */ + "\x9a\0" /* offset 15729 */ + "\xc5\0" /* offset 15734 */ + "\xeb\0" /* offset 15739 */ + "\x2f\0" /* offset 15743 */ + "\x4a\0" /* offset 15747 */ + "\x4f\0" /* offset 15751 */ + "\x7c\0" /* offset 15755 */ + "\xa7\0" /* offset 15760 */ + "\xae\0" /* offset 15765 */ + "\x02\0" /* offset 15769 */ + "\xab\0" /* offset 15773 */ + "\xc6\0" /* offset 15778 */ + "\xc9\0" /* offset 15782 */ + "\x27\0" /* offset 15786 */ + "\x80\0" /* offset 15790 */ + "\xd2\0" /* offset 15795 */ + "\xa0\0" /* offset 15799 */ + "\xe8\0" /* offset 15803 */ + "\xe3\0" /* offset 15807 */ + "\x00\0" /* offset 15811 */ + "\x86\0" /* offset 15815 */ + "\x63\0" /* offset 15820 */ + "\x01\0" /* offset 15824 */ + "\xc7\0" /* offset 15828 */ + "\x02\0" /* offset 15832 */ + "\x45\0" /* offset 15836 */ + "\x34\0" /* offset 15840 */ + "\x28\0" /* offset 15844 */ + "\x47\0" /* offset 15849 */ + "\x59\0" /* offset 15854 */ + "\xd9\0" /* offset 15858 */ + "\x7a\0" /* offset 15863 */ + "\x3e\0" /* offset 15867 */ + "\x95\0" /* offset 15872 */ + "\xfa\0" /* offset 15876 */ + "\xda\0" /* offset 15880 */ + "\x23\0" /* offset 15885 */ + "\x60\0" /* offset 15890 */ + "\xa8\0" /* offset 15894 */ + "\x70\0" /* offset 15899 */ + "\x5f\0" /* offset 15903 */ + "\xd5\0" /* offset 15908 */ + "\xb2\0" /* offset 15912 */ + "\x03\0" /* offset 15916 */ + "\x0b\0" /* offset 15920 */ + "\x3e\0" /* offset 15924 */ + "\xb5\0" /* offset 15928 */ + "\xa7\0" /* offset 15932 */ + "\xb5\0" /* offset 15937 */ + "\x93\0" /* offset 15942 */ + "\x9c\0" /* offset 15947 */ + "\x04\0" /* offset 15952 */ + "\x9e\0" /* offset 15956 */ + "\x6b\0" /* offset 15960 */ + "\x91\0" /* offset 15964 */ + "\x8b\0" /* offset 15968 */ + "\x9d\0" /* offset 15972 */ + "\xb3\0" /* offset 15976 */ + "\xb1\0" /* offset 15980 */ + "\xb3\0" /* offset 15984 */ + "\xbd\0" /* offset 15988 */ + "\xe6\0" /* offset 15992 */ + "\x3c\0" /* offset 15996 */ + "\x1d\0" /* offset 16001 */ + "\x63\0" /* offset 16005 */ + "\xad\0" /* offset 16009 */ + "\x23\0" /* offset 16013 */ + "\xbd\0" /* offset 16017 */ + "\xe7\0" /* offset 16021 */ + "\x53\0" /* offset 16025 */ + "\xca\0" /* offset 16029 */ + "\xcc\0" /* offset 16033 */ + "\xdc\0" /* offset 16037 */ + "\x36\0" /* offset 16041 */ + "\x6b\0" /* offset 16046 */ + "\xd5\0" /* offset 16051 */ + "\x2b\0" /* offset 16056 */ + "\xf1\0" /* offset 16060 */ + "\xf3\0" /* offset 16064 */ + "\x16\0" /* offset 16068 */ + "\xca\0" /* offset 16072 */ + "\x64\0" /* offset 16077 */ + "\x2c\0" /* offset 16081 */ + "\x5d\0" /* offset 16086 */ + "\x61\0" /* offset 16090 */ + "\xb1\0" /* offset 16094 */ + "\xd2\0" /* offset 16099 */ + "\x6b\0" /* offset 16104 */ + "\x50\0" /* offset 16108 */ + "\x67\0" /* offset 16112 */ + "\x69\0" /* offset 16116 */ + "\xa9\0" /* offset 16120 */ + "\x88\0" /* offset 16124 */ + "\x0e\0" /* offset 16128 */ + "\xe2\0" /* offset 16132 */ + "\x79\0" /* offset 16136 */ + "\x28\0" /* offset 16140 */ + "\x6b\0" /* offset 16144 */ + "\x86\0" /* offset 16148 */ + "\x57\0" /* offset 16152 */ + "\xe1\0" /* offset 16156 */ + "\x01\0" /* offset 16160 */ + "\xf9\0" /* offset 16164 */ + "\x60\0" /* offset 16168 */ + "\x67\0" /* offset 16172 */ + "\xd7\0" /* offset 16177 */ + "\xde\0" /* offset 16181 */ + "\x35\0" /* offset 16185 */ + "\xfa\0" /* offset 16189 */ + "\xbb\0" /* offset 16193 */ + "\xae\0" /* offset 16197 */ + "\x66\0" /* offset 16202 */ + "\xbe\0" /* offset 16207 */ + "\xc7\0" /* offset 16211 */ + "\xa0\0" /* offset 16215 */ + "\xed\0" /* offset 16219 */ + "\x8a\0" /* offset 16223 */ + "\xa8\0" /* offset 16227 */ + "\xab\0" /* offset 16232 */ + "\xc1\0" /* offset 16236 */ + "\x1b\0" /* offset 16240 */ + "\x77\0" /* offset 16244 */ + "\x2f\0" /* offset 16248 */ + "\x04\0" /* offset 16253 */ + "\xcb\0" /* offset 16258 */ + "\xbc\0" /* offset 16262 */ + "\xf0\0" /* offset 16266 */ + "\xde\0" /* offset 16270 */ + "\xd4\0" /* offset 16275 */ + "\x38\0" /* offset 16279 */ + "\xd2\0" /* offset 16283 */ + "\xed\0" /* offset 16288 */ + "\x94\0" /* offset 16293 */ + "\xf1\0" /* offset 16297 */ + "\x11\0" /* offset 16301 */ + "\x2e\0" /* offset 16305 */ + "\x1b\0" /* offset 16310 */ + "\x38\0" /* offset 16314 */ + "\xd7\0" /* offset 16318 */ + "\xd8\0" /* offset 16322 */ + "\x7c\0" /* offset 16326 */ + "\xf9\0" /* offset 16330 */ + "\x15\0" /* offset 16334 */ + "\xfa\0" /* offset 16338 */ + "\x8b\0" /* offset 16343 */ + "\x95\0" /* offset 16347 */ + "\xb7\0" /* offset 16351 */ + "\x77\0" /* offset 16355 */ + "\xe6\0" /* offset 16360 */ + "\xc3\0" /* offset 16364 */ + "\xb2\0" /* offset 16368 */ + "\x23\0" /* offset 16372 */ + "\x45\0" /* offset 16376 */ + "\x1a\0" /* offset 16381 */ + "\x6e\0" /* offset 16386 */ + "\x76\0" /* offset 16390 */ + "\xe0\0" /* offset 16394 */ + "\x0a\0" /* offset 16398 */ + "\xb2\0" /* offset 16403 */ + "\x96\0" /* offset 16407 */ + "\x0b\0" /* offset 16412 */ + "\x29\0" /* offset 16416 */ + "\xb6\0" /* offset 16420 */ + "\xe2\0" /* offset 16425 */ + "\x33\0" /* offset 16429 */ + "\x29\0" /* offset 16433 */ + "\xa7\0" /* offset 16437 */ + "\xc2\0" /* offset 16441 */ + "\xfe\0" /* offset 16445 */ + "\xce\0" /* offset 16449 */ + "\x30\0" /* offset 16453 */ + "\x12\0" /* offset 16458 */ + "\x40\0" /* offset 16462 */ + "\xfd\0" /* offset 16466 */ + "\xce\0" /* offset 16470 */ + "\xed\0" /* offset 16474 */ + "\x67\0" /* offset 16478 */ + "\xce\0" /* offset 16482 */ + "\xf8\0" /* offset 16487 */ + "\x05\0" /* offset 16491 */ + "\x0e\0" /* offset 16496 */ + "\x91\0" /* offset 16501 */ + "\x56\0" /* offset 16506 */ + "\xfe\0" /* offset 16510 */ + "\x05\0" /* offset 16514 */ + "\x0f\0" /* offset 16518 */ + "\x16\0" /* offset 16522 */ + "\x00\0" /* offset 16526 */; + +#endif /* DECOMP_H */ diff --git a/lib/idn-free.c b/lib/idn-free.c new file mode 100644 index 0000000..892716c --- /dev/null +++ b/lib/idn-free.c @@ -0,0 +1,48 @@ +/* idn-free.c --- Invoke the `free' function releasing memory + * allocated by libidn functions. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include <config.h> + +/* Get specification. */ +#include "idn-free.h" + +/* Get free. */ +#include <stdlib.h> + +/** + * idn_free: + * @ptr: memory region to deallocate, or %NULL. + * + * Deallocates memory region by calling free(). If @ptr is %NULL no + * operation is performed. + * + * Normally applications de-allocate strings allocated by libidn by + * calling free() directly. Under Windows, different parts of the + * same application may use different heap memory, and then it is + * important to deallocate memory allocated within the same module + * that allocated it. This function makes that possible. + **/ +void +idn_free (void *ptr) +{ + free (ptr); +} diff --git a/lib/idn-free.h b/lib/idn-free.h new file mode 100644 index 0000000..3edd263 --- /dev/null +++ b/lib/idn-free.h @@ -0,0 +1,58 @@ +/* idn-free.h --- Invoke the `free' function releasing memory + * allocated by libidn functions. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef IDN_FREE_H +# define IDN_FREE_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +/* I don't recommend using this interface in general. Use `free'. + * + * I'm told Microsoft Windows may use one set of `malloc' and `free' + * in a library, and another incompatible set in a statically compiled + * application that link to the library, thus creating problems if the + * application would invoke `free' on a pointer pointing to memory + * allocated by the library. This motivated adding this function. + * + * The theory of isolating all memory allocations and de-allocations + * within a code package (library) sounds good, to simplify hunting + * down memory allocation related problems, but I'm not sure if it is + * worth enough to motivate recommending this interface over calling + * `free' directly, though. + * + * See the manual section 'Memory handling under Windows' for more + * information. + */ + +extern void IDNAPI idn_free (void *ptr); + +#endif /* IDN_FREE_H */ diff --git a/lib/idna.c b/lib/idna.c new file mode 100644 index 0000000..0f70f73 --- /dev/null +++ b/lib/idna.c @@ -0,0 +1,850 @@ +/* idna.c --- Convert to or from IDN strings. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdlib.h> +#include <string.h> +#include <stringprep.h> +#include <punycode.h> + +#include "idna.h" + +/* Get c_strcasecmp. */ +#include <c-strcase.h> + +#define DOTP(c) ((c) == 0x002E || (c) == 0x3002 || \ + (c) == 0xFF0E || (c) == 0xFF61) + +/* Core functions */ + +/** + * idna_to_ascii_4i - convert Unicode domain name label to text + * @in: input array with unicode code points. + * @inlen: length of input array with unicode code points. + * @out: output zero terminated string that must have room for at + * least 63 characters plus the terminating zero. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * The ToASCII operation takes a sequence of Unicode code points that + * make up one domain label and transforms it into a sequence of code + * points in the ASCII range (0..7F). If ToASCII succeeds, the + * original sequence and the resulting sequence are equivalent labels. + * + * It is important to note that the ToASCII operation can fail. ToASCII + * fails if any step of it fails. If any step of the ToASCII operation + * fails on any label in a domain name, that domain name MUST NOT be used + * as an internationalized domain name. The method for deadling with this + * failure is application-specific. + * + * The inputs to ToASCII are a sequence of code points, the AllowUnassigned + * flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a + * sequence of ASCII code points or a failure condition. + * + * ToASCII never alters a sequence of code points that are all in the ASCII + * range to begin with (although it could fail). Applying the ToASCII + * operation multiple times has exactly the same effect as applying it just + * once. + * + * Return value: Returns 0 on success, or an #Idna_rc error code. + */ +int +idna_to_ascii_4i (const uint32_t * in, size_t inlen, char *out, int flags) +{ + size_t len, outlen; + uint32_t *src; /* XXX don't need to copy data? */ + int rc; + + /* + * ToASCII consists of the following steps: + * + * 1. If all code points in the sequence are in the ASCII range (0..7F) + * then skip to step 3. + */ + + { + size_t i; + int inasciirange; + + inasciirange = 1; + for (i = 0; i < inlen; i++) + if (in[i] > 0x7F) + inasciirange = 0; + if (inasciirange) + { + src = malloc (sizeof (in[0]) * (inlen + 1)); + if (src == NULL) + return IDNA_MALLOC_ERROR; + + memcpy (src, in, sizeof (in[0]) * inlen); + src[inlen] = 0; + + goto step3; + } + } + + /* + * 2. Perform the steps specified in [NAMEPREP] and fail if there is + * an error. The AllowUnassigned flag is used in [NAMEPREP]. + */ + + { + char *p; + + p = stringprep_ucs4_to_utf8 (in, (ssize_t) inlen, NULL, NULL); + if (p == NULL) + return IDNA_MALLOC_ERROR; + + len = strlen (p); + do + { + char *newp; + + len = 2 * len + 10; /* XXX better guess? */ + newp = realloc (p, len); + if (newp == NULL) + { + free (p); + return IDNA_MALLOC_ERROR; + } + p = newp; + + if (flags & IDNA_ALLOW_UNASSIGNED) + rc = stringprep_nameprep (p, len); + else + rc = stringprep_nameprep_no_unassigned (p, len); + } + while (rc == STRINGPREP_TOO_SMALL_BUFFER); + + if (rc != STRINGPREP_OK) + { + free (p); + return IDNA_STRINGPREP_ERROR; + } + + src = stringprep_utf8_to_ucs4 (p, -1, NULL); + + free (p); + } + +step3: + /* + * 3. If the UseSTD3ASCIIRules flag is set, then perform these checks: + * + * (a) Verify the absence of non-LDH ASCII code points; that is, + * the absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F. + * + * (b) Verify the absence of leading and trailing hyphen-minus; + * that is, the absence of U+002D at the beginning and end of + * the sequence. + */ + + if (flags & IDNA_USE_STD3_ASCII_RULES) + { + size_t i; + + for (i = 0; src[i]; i++) + if (src[i] <= 0x2C || src[i] == 0x2E || src[i] == 0x2F || + (src[i] >= 0x3A && src[i] <= 0x40) || + (src[i] >= 0x5B && src[i] <= 0x60) || + (src[i] >= 0x7B && src[i] <= 0x7F)) + { + free (src); + return IDNA_CONTAINS_NON_LDH; + } + + if (src[0] == 0x002D || (i > 0 && src[i - 1] == 0x002D)) + { + free (src); + return IDNA_CONTAINS_MINUS; + } + } + + /* + * 4. If all code points in the sequence are in the ASCII range + * (0..7F), then skip to step 8. + */ + + { + size_t i; + int inasciirange; + + inasciirange = 1; + for (i = 0; src[i]; i++) + { + if (src[i] > 0x7F) + inasciirange = 0; + /* copy string to output buffer if we are about to skip to step8 */ + if (i < 64) + out[i] = src[i]; + } + if (i < 64) + out[i] = '\0'; + if (inasciirange) + goto step8; + } + + /* + * 5. Verify that the sequence does NOT begin with the ACE prefix. + * + */ + + { + size_t i; + int match; + + match = 1; + for (i = 0; match && i < strlen (IDNA_ACE_PREFIX); i++) + if (((uint32_t) IDNA_ACE_PREFIX[i] & 0xFF) != src[i]) + match = 0; + if (match) + { + free (src); + return IDNA_CONTAINS_ACE_PREFIX; + } + } + + /* + * 6. Encode the sequence using the encoding algorithm in [PUNYCODE] + * and fail if there is an error. + */ + for (len = 0; src[len]; len++) + ; + src[len] = '\0'; + outlen = 63 - strlen (IDNA_ACE_PREFIX); + rc = punycode_encode (len, src, NULL, + &outlen, &out[strlen (IDNA_ACE_PREFIX)]); + if (rc != PUNYCODE_SUCCESS) + { + free (src); + return IDNA_PUNYCODE_ERROR; + } + out[strlen (IDNA_ACE_PREFIX) + outlen] = '\0'; + + /* + * 7. Prepend the ACE prefix. + */ + + memcpy (out, IDNA_ACE_PREFIX, strlen (IDNA_ACE_PREFIX)); + + /* + * 8. Verify that the number of code points is in the range 1 to 63 + * inclusive (0 is excluded). + */ + +step8: + free (src); + if (strlen (out) < 1 || strlen (out) > 63) + return IDNA_INVALID_LENGTH; + + return IDNA_SUCCESS; +} + +/* ToUnicode(). May realloc() utf8in. Will free utf8in unconditionally. */ +static int +idna_to_unicode_internal (char *utf8in, + uint32_t * out, size_t * outlen, int flags) +{ + int rc; + char tmpout[64]; + size_t utf8len = strlen (utf8in) + 1; + size_t addlen = 0; + + /* + * ToUnicode consists of the following steps: + * + * 1. If the sequence contains any code points outside the ASCII range + * (0..7F) then proceed to step 2, otherwise skip to step 3. + */ + + { + size_t i; + int inasciirange; + + inasciirange = 1; + for (i = 0; utf8in[i]; i++) + if (utf8in[i] & ~0x7F) + inasciirange = 0; + if (inasciirange) + goto step3; + } + + /* + * 2. Perform the steps specified in [NAMEPREP] and fail if there is an + * error. (If step 3 of ToASCII is also performed here, it will not + * affect the overall behavior of ToUnicode, but it is not + * necessary.) The AllowUnassigned flag is used in [NAMEPREP]. + */ + do + { + char *newp = realloc (utf8in, utf8len + addlen); + if (newp == NULL) + { + free (utf8in); + return IDNA_MALLOC_ERROR; + } + utf8in = newp; + if (flags & IDNA_ALLOW_UNASSIGNED) + rc = stringprep_nameprep (utf8in, utf8len + addlen); + else + rc = stringprep_nameprep_no_unassigned (utf8in, utf8len + addlen); + addlen += 1; + } + while (rc == STRINGPREP_TOO_SMALL_BUFFER); + + if (rc != STRINGPREP_OK) + { + free (utf8in); + return IDNA_STRINGPREP_ERROR; + } + + /* 3. Verify that the sequence begins with the ACE prefix, and save a + * copy of the sequence. + */ + +step3: + if (memcmp (IDNA_ACE_PREFIX, utf8in, strlen (IDNA_ACE_PREFIX)) != 0) + { + free (utf8in); + return IDNA_NO_ACE_PREFIX; + } + + /* 4. Remove the ACE prefix. + */ + + memmove (utf8in, &utf8in[strlen (IDNA_ACE_PREFIX)], + strlen (utf8in) - strlen (IDNA_ACE_PREFIX) + 1); + + /* 5. Decode the sequence using the decoding algorithm in [PUNYCODE] + * and fail if there is an error. Save a copy of the result of + * this step. + */ + + (*outlen)--; /* reserve one for the zero */ + + rc = punycode_decode (strlen (utf8in), utf8in, outlen, out, NULL); + if (rc != PUNYCODE_SUCCESS) + { + free (utf8in); + return IDNA_PUNYCODE_ERROR; + } + + out[*outlen] = 0; /* add zero */ + + /* 6. Apply ToASCII. + */ + + rc = idna_to_ascii_4i (out, *outlen, tmpout, flags); + if (rc != IDNA_SUCCESS) + { + free (utf8in); + return rc; + } + + /* 7. Verify that the result of step 6 matches the saved copy from + * step 3, using a case-insensitive ASCII comparison. + */ + + if (c_strcasecmp (utf8in, tmpout + strlen (IDNA_ACE_PREFIX)) != 0) + { + free (utf8in); + return IDNA_ROUNDTRIP_VERIFY_ERROR; + } + + /* 8. Return the saved copy from step 5. + */ + + free (utf8in); + return IDNA_SUCCESS; +} + +/** + * idna_to_unicode_44i - convert domain name label to Unicode + * @in: input array with unicode code points. + * @inlen: length of input array with unicode code points. + * @out: output array with unicode code points. + * @outlen: on input, maximum size of output array with unicode code points, + * on exit, actual size of output array with unicode code points. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * The ToUnicode operation takes a sequence of Unicode code points + * that make up one domain label and returns a sequence of Unicode + * code points. If the input sequence is a label in ACE form, then the + * result is an equivalent internationalized label that is not in ACE + * form, otherwise the original sequence is returned unaltered. + * + * ToUnicode never fails. If any step fails, then the original input + * sequence is returned immediately in that step. + * + * The Punycode decoder can never output more code points than it + * inputs, but Nameprep can, and therefore ToUnicode can. Note that + * the number of octets needed to represent a sequence of code points + * depends on the particular character encoding used. + * + * The inputs to ToUnicode are a sequence of code points, the + * AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of + * ToUnicode is always a sequence of Unicode code points. + * + * Return value: Returns #Idna_rc error condition, but it must only be + * used for debugging purposes. The output buffer is always + * guaranteed to contain the correct data according to the + * specification (sans malloc induced errors). NB! This means that + * you normally ignore the return code from this function, as + * checking it means breaking the standard. + */ +int +idna_to_unicode_44i (const uint32_t * in, size_t inlen, + uint32_t * out, size_t * outlen, int flags) +{ + int rc; + size_t outlensave = *outlen; + char *p; + + p = stringprep_ucs4_to_utf8 (in, (ssize_t) inlen, NULL, NULL); + if (p == NULL) + return IDNA_MALLOC_ERROR; + + rc = idna_to_unicode_internal (p, out, outlen, flags); + if (rc != IDNA_SUCCESS) + { + memcpy (out, in, sizeof (in[0]) * (inlen < outlensave ? + inlen : outlensave)); + *outlen = inlen; + } + + /* p is freed in idna_to_unicode_internal. */ + + return rc; +} + +/* Wrappers that handle several labels */ + +/** + * idna_to_ascii_4z - convert Unicode domain name to text + * @input: zero terminated input Unicode string. + * @output: pointer to newly allocated output string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert UCS-4 domain name to ASCII string. The domain name may + * contain several labels, separated by dots. The output buffer must + * be deallocated by the caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_ascii_4z (const uint32_t * input, char **output, int flags) +{ + const uint32_t *start = input; + const uint32_t *end = input; + char buf[64]; + char *out = NULL; + int rc; + + /* 1) Whenever dots are used as label separators, the following + characters MUST be recognized as dots: U+002E (full stop), + U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), + U+FF61 (halfwidth ideographic full stop). */ + + if (input[0] == 0) + { + /* Handle implicit zero-length root label. */ + *output = malloc (1); + if (!*output) + return IDNA_MALLOC_ERROR; + strcpy (*output, ""); + return IDNA_SUCCESS; + } + + if (DOTP (input[0]) && input[1] == 0) + { + /* Handle explicit zero-length root label. */ + *output = malloc (2); + if (!*output) + return IDNA_MALLOC_ERROR; + strcpy (*output, "."); + return IDNA_SUCCESS; + } + + *output = NULL; + do + { + end = start; + + for (; *end && !DOTP (*end); end++) + ; + + if (*end == '\0' && start == end) + { + /* Handle explicit zero-length root label. */ + buf[0] = '\0'; + } + else + { + rc = idna_to_ascii_4i (start, (size_t) (end - start), buf, flags); + if (rc != IDNA_SUCCESS) + return rc; + } + + if (out) + { + char *newp = realloc (out, strlen (out) + 1 + strlen (buf) + 1); + if (!newp) + { + free (out); + return IDNA_MALLOC_ERROR; + } + out = newp; + strcat (out, "."); + strcat (out, buf); + } + else + { + out = (char *) malloc (strlen (buf) + 1); + if (!out) + return IDNA_MALLOC_ERROR; + strcpy (out, buf); + } + + start = end + 1; + } + while (*end); + + *output = out; + + return IDNA_SUCCESS; +} + +/** + * idna_to_ascii_8z - convert Unicode domain name to text + * @input: zero terminated input UTF-8 string. + * @output: pointer to newly allocated output string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert UTF-8 domain name to ASCII string. The domain name may + * contain several labels, separated by dots. The output buffer must + * be deallocated by the caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_ascii_8z (const char *input, char **output, int flags) +{ + uint32_t *ucs4; + size_t ucs4len; + int rc; + + ucs4 = stringprep_utf8_to_ucs4 (input, -1, &ucs4len); + if (!ucs4) + return IDNA_ICONV_ERROR; + + rc = idna_to_ascii_4z (ucs4, output, flags); + + free (ucs4); + + return rc; + +} + +/** + * idna_to_ascii_lz - convert Unicode domain name to text + * @input: zero terminated input string encoded in the current locale's + * character set. + * @output: pointer to newly allocated output string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert domain name in the locale's encoding to ASCII string. The + * domain name may contain several labels, separated by dots. The + * output buffer must be deallocated by the caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_ascii_lz (const char *input, char **output, int flags) +{ + char *utf8; + int rc; + + utf8 = stringprep_locale_to_utf8 (input); + if (!utf8) + return IDNA_ICONV_ERROR; + + rc = idna_to_ascii_8z (utf8, output, flags); + + free (utf8); + + return rc; +} + +/** + * idna_to_unicode_4z4z - convert domain name to Unicode + * @input: zero-terminated Unicode string. + * @output: pointer to newly allocated output Unicode string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert possibly ACE encoded domain name in UCS-4 format into a + * UCS-4 string. The domain name may contain several labels, + * separated by dots. The output buffer must be deallocated by the + * caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_unicode_4z4z (const uint32_t * input, uint32_t ** output, int flags) +{ + const uint32_t *start = input; + const uint32_t *end = input; + uint32_t *buf; + size_t buflen; + uint32_t *out = NULL; + size_t outlen = 0; + int rc; + + *output = NULL; + + do + { + end = start; + + for (; *end && !DOTP (*end); end++) + ; + + buflen = (size_t) (end - start); + buf = malloc (sizeof (buf[0]) * (buflen + 1)); + if (!buf) + return IDNA_MALLOC_ERROR; + + rc = idna_to_unicode_44i (start, (size_t) (end - start), + buf, &buflen, flags); + /* don't check rc as per specification! */ + + if (out) + { + uint32_t *newp = realloc (out, + sizeof (out[0]) + * (outlen + 1 + buflen + 1)); + if (!newp) + { + free (buf); + free (out); + return IDNA_MALLOC_ERROR; + } + out = newp; + out[outlen++] = 0x002E; /* '.' (full stop) */ + memcpy (out + outlen, buf, sizeof (buf[0]) * buflen); + outlen += buflen; + out[outlen] = 0x0; + free (buf); + } + else + { + out = buf; + outlen = buflen; + out[outlen] = 0x0; + } + + start = end + 1; + } + while (*end); + + *output = out; + + return IDNA_SUCCESS; +} + +/** + * idna_to_unicode_8z4z - convert domain name to Unicode + * @input: zero-terminated UTF-8 string. + * @output: pointer to newly allocated output Unicode string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert possibly ACE encoded domain name in UTF-8 format into a + * UCS-4 string. The domain name may contain several labels, + * separated by dots. The output buffer must be deallocated by the + * caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_unicode_8z4z (const char *input, uint32_t ** output, int flags) +{ + uint32_t *ucs4; + size_t ucs4len; + int rc; + + ucs4 = stringprep_utf8_to_ucs4 (input, -1, &ucs4len); + if (!ucs4) + return IDNA_ICONV_ERROR; + + rc = idna_to_unicode_4z4z (ucs4, output, flags); + free (ucs4); + + return rc; +} + +/** + * idna_to_unicode_8z8z - convert domain name to Unicode + * @input: zero-terminated UTF-8 string. + * @output: pointer to newly allocated output UTF-8 string. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert possibly ACE encoded domain name in UTF-8 format into a + * UTF-8 string. The domain name may contain several labels, + * separated by dots. The output buffer must be deallocated by the + * caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_unicode_8z8z (const char *input, char **output, int flags) +{ + uint32_t *ucs4; + int rc; + + rc = idna_to_unicode_8z4z (input, &ucs4, flags); + *output = stringprep_ucs4_to_utf8 (ucs4, -1, NULL, NULL); + free (ucs4); + + if (!*output) + return IDNA_ICONV_ERROR; + + return rc; +} + +/** + * idna_to_unicode_8zlz - convert domain name to Unicode + * @input: zero-terminated UTF-8 string. + * @output: pointer to newly allocated output string encoded in the + * current locale's character set. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert possibly ACE encoded domain name in UTF-8 format into a + * string encoded in the current locale's character set. The domain + * name may contain several labels, separated by dots. The output + * buffer must be deallocated by the caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_unicode_8zlz (const char *input, char **output, int flags) +{ + char *utf8; + int rc; + + rc = idna_to_unicode_8z8z (input, &utf8, flags); + *output = stringprep_utf8_to_locale (utf8); + free (utf8); + + if (!*output) + return IDNA_ICONV_ERROR; + + return rc; +} + +/** + * idna_to_unicode_lzlz - convert domain name to Unicode + * @input: zero-terminated string encoded in the current locale's + * character set. + * @output: pointer to newly allocated output string encoded in the + * current locale's character set. + * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or + * %IDNA_USE_STD3_ASCII_RULES. + * + * Convert possibly ACE encoded domain name in the locale's character + * set into a string encoded in the current locale's character set. + * The domain name may contain several labels, separated by dots. The + * output buffer must be deallocated by the caller. + * + * Return value: Returns %IDNA_SUCCESS on success, or error code. + **/ +int +idna_to_unicode_lzlz (const char *input, char **output, int flags) +{ + char *utf8; + int rc; + + utf8 = stringprep_locale_to_utf8 (input); + if (!utf8) + return IDNA_ICONV_ERROR; + + rc = idna_to_unicode_8zlz (utf8, output, flags); + free (utf8); + + return rc; +} + +/** + * IDNA_ACE_PREFIX + * + * The IANA allocated prefix to use for IDNA. "xn--" + */ + +/** + * Idna_rc: + * @IDNA_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * @IDNA_STRINGPREP_ERROR: Error during string preparation. + * @IDNA_PUNYCODE_ERROR: Error during punycode operation. + * @IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that + * the string contains non-LDH ASCII characters. + * @IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that + * the string contains a leading or trailing hyphen-minus (U+002D). + * @IDNA_INVALID_LENGTH: The final output string is not within the + * (inclusive) range 1 to 63 characters. + * @IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix + * (for ToUnicode). + * @IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output + * string does not equal the input. + * @IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for + * ToASCII). + * @IDNA_ICONV_ERROR: Could not convert string in locale encoding. + * @IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a + * fatal error). + * @IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used + * internally in libc). + * + * Enumerated return codes of idna_to_ascii_4i(), + * idna_to_unicode_44i() functions (and functions derived from those + * functions). The value 0 is guaranteed to always correspond to + * success. + */ + + +/** + * Idna_flags: + * @IDNA_ALLOW_UNASSIGNED: Don't reject strings containing unassigned + * Unicode code points. + * @IDNA_USE_STD3_ASCII_RULES: Validate strings according to STD3 + * rules (i.e., normal host name rules). + * + * Flags to pass to idna_to_ascii_4i(), idna_to_unicode_44i() etc. + */ diff --git a/lib/idna.h b/lib/idna.h new file mode 100644 index 0000000..93412ac --- /dev/null +++ b/lib/idna.h @@ -0,0 +1,115 @@ +/* idna.h --- Declarations for Internationalized Domain Name in Applications. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef IDNA_H +# define IDNA_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +# include <stddef.h> /* size_t */ +# include <idn-int.h> /* uint32_t */ + +# ifdef __cplusplus +extern "C" +{ +# endif + + /* Error codes. */ + typedef enum + { + IDNA_SUCCESS = 0, + IDNA_STRINGPREP_ERROR = 1, + IDNA_PUNYCODE_ERROR = 2, + IDNA_CONTAINS_NON_LDH = 3, + /* Workaround typo in earlier versions. */ + IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH, + IDNA_CONTAINS_MINUS = 4, + IDNA_INVALID_LENGTH = 5, + IDNA_NO_ACE_PREFIX = 6, + IDNA_ROUNDTRIP_VERIFY_ERROR = 7, + IDNA_CONTAINS_ACE_PREFIX = 8, + IDNA_ICONV_ERROR = 9, + /* Internal errors. */ + IDNA_MALLOC_ERROR = 201, + IDNA_DLOPEN_ERROR = 202 + } Idna_rc; + + /* IDNA flags */ + typedef enum + { + IDNA_ALLOW_UNASSIGNED = 0x0001, + IDNA_USE_STD3_ASCII_RULES = 0x0002 + } Idna_flags; + +# ifndef IDNA_ACE_PREFIX +# define IDNA_ACE_PREFIX "xn--" +# endif + + extern IDNAPI const char *idna_strerror (Idna_rc rc); + + /* Core functions */ + extern IDNAPI int idna_to_ascii_4i (const uint32_t * in, size_t inlen, + char *out, int flags); + extern IDNAPI int idna_to_unicode_44i (const uint32_t * in, size_t inlen, + uint32_t * out, size_t * outlen, + int flags); + + /* Wrappers that handle several labels */ + + extern IDNAPI int idna_to_ascii_4z (const uint32_t * input, + char **output, int flags); + + extern IDNAPI int idna_to_ascii_8z (const char *input, char **output, + int flags); + + extern IDNAPI int idna_to_ascii_lz (const char *input, char **output, + int flags); + + extern IDNAPI int idna_to_unicode_4z4z (const uint32_t * input, + uint32_t ** output, int flags); + + extern IDNAPI int idna_to_unicode_8z4z (const char *input, + uint32_t ** output, int flags); + + extern IDNAPI int idna_to_unicode_8z8z (const char *input, + char **output, int flags); + + extern IDNAPI int idna_to_unicode_8zlz (const char *input, + char **output, int flags); + + extern IDNAPI int idna_to_unicode_lzlz (const char *input, + char **output, int flags); + +# ifdef __cplusplus +} +# endif + +#endif /* IDNA_H */ diff --git a/lib/libidn.map b/lib/libidn.map new file mode 100644 index 0000000..d393696 --- /dev/null +++ b/lib/libidn.map @@ -0,0 +1,100 @@ +# Copyright (C) 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# GNU Libidn 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. +# +# GNU Libidn 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 GNU Libidn; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +LIBIDN_1.0 { + global: + idn_free; + idna_strerror; + idna_to_ascii_4i; + idna_to_ascii_4z; + idna_to_ascii_8z; + idna_to_ascii_lz; + idna_to_unicode_44i; + idna_to_unicode_4z4z; + idna_to_unicode_8z4z; + idna_to_unicode_8z8z; + idna_to_unicode_8zlz; + idna_to_unicode_lzlz; + pr29_4; + pr29_4z; + pr29_8z; + pr29_strerror; + punycode_decode; + punycode_encode; + punycode_strerror; + stringprep; + stringprep_4i; + stringprep_4zi; + stringprep_check_version; + stringprep_convert; + stringprep_iscsi; + stringprep_iscsi_prohibit; + stringprep_kerberos5; + stringprep_locale_charset; + stringprep_locale_to_utf8; + stringprep_nameprep; + stringprep_plain; + stringprep_profile; + stringprep_profiles; + stringprep_rfc3454_A_1; + stringprep_rfc3454_B_1; + stringprep_rfc3454_B_2; + stringprep_rfc3454_B_3; + stringprep_rfc3454_C_1_1; + stringprep_rfc3454_C_1_2; + stringprep_rfc3454_C_2_1; + stringprep_rfc3454_C_2_2; + stringprep_rfc3454_C_3; + stringprep_rfc3454_C_4; + stringprep_rfc3454_C_5; + stringprep_rfc3454_C_6; + stringprep_rfc3454_C_7; + stringprep_rfc3454_C_8; + stringprep_rfc3454_C_9; + stringprep_rfc3454_D_1; + stringprep_rfc3454_D_2; + stringprep_saslprep; + stringprep_saslprep_space_map; + stringprep_strerror; + stringprep_trace; + stringprep_ucs4_nfkc_normalize; + stringprep_ucs4_to_utf8; + stringprep_unichar_to_utf8; + stringprep_utf8_nfkc_normalize; + stringprep_utf8_to_locale; + stringprep_utf8_to_ucs4; + stringprep_utf8_to_unichar; + stringprep_xmpp_nodeprep; + stringprep_xmpp_nodeprep_prohibit; + stringprep_xmpp_resourceprep; + tld_check_4; + tld_check_4t; + tld_check_4tz; + tld_check_4z; + tld_check_8z; + tld_check_lz; + tld_default_table; + tld_get_4; + tld_get_4z; + tld_get_table; + tld_get_z; + tld_strerror; + + local: + *; +}; diff --git a/lib/nfkc.c b/lib/nfkc.c new file mode 100644 index 0000000..ce67b75 --- /dev/null +++ b/lib/nfkc.c @@ -0,0 +1,1046 @@ +/* nfkc.c --- Unicode normalization utilities. + * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdlib.h> +#include <string.h> + +#include "stringprep.h" + +/* This file contains functions from GLIB, including gutf8.c and + * gunidecomp.c, all licensed under LGPL and copyright hold by: + * + * Copyright (C) 1999, 2000 Tom Tromey + * Copyright 2000 Red Hat, Inc. + */ + +/* Hacks to make syncing with GLIB code easier. */ +#define gboolean int +#define gchar char +#define guchar unsigned char +#define glong long +#define gint int +#define guint unsigned int +#define gushort unsigned short +#define gint16 int16_t +#define guint16 uint16_t +#define gunichar uint32_t +#define gsize size_t +#define gssize ssize_t +#define g_malloc malloc +#define g_free free +#define g_new(struct_type, n_structs) \ + ((struct_type *) g_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs)))) +# if defined (__GNUC__) && !defined (__STRICT_ANSI__) && !defined (__cplusplus) +# define G_STMT_START (void)( +# define G_STMT_END ) +# else +# if (defined (sun) || defined (__sun__)) +# define G_STMT_START if (1) +# define G_STMT_END else (void)0 +# else +# define G_STMT_START do +# define G_STMT_END while (0) +# endif +# endif +#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END +#define G_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0])) +#define TRUE 1 +#define FALSE 0 + +/* Code from GLIB gunicode.h starts here. */ + +typedef enum +{ + G_NORMALIZE_DEFAULT, + G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT, + G_NORMALIZE_DEFAULT_COMPOSE, + G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE, + G_NORMALIZE_ALL, + G_NORMALIZE_NFKD = G_NORMALIZE_ALL, + G_NORMALIZE_ALL_COMPOSE, + G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE +} +GNormalizeMode; + +/* Code from GLIB gutf8.c starts here. */ + +#define UTF8_COMPUTE(Char, Mask, Len) \ + if (Char < 128) \ + { \ + Len = 1; \ + Mask = 0x7f; \ + } \ + else if ((Char & 0xe0) == 0xc0) \ + { \ + Len = 2; \ + Mask = 0x1f; \ + } \ + else if ((Char & 0xf0) == 0xe0) \ + { \ + Len = 3; \ + Mask = 0x0f; \ + } \ + else if ((Char & 0xf8) == 0xf0) \ + { \ + Len = 4; \ + Mask = 0x07; \ + } \ + else if ((Char & 0xfc) == 0xf8) \ + { \ + Len = 5; \ + Mask = 0x03; \ + } \ + else if ((Char & 0xfe) == 0xfc) \ + { \ + Len = 6; \ + Mask = 0x01; \ + } \ + else \ + Len = -1; + +#define UTF8_LENGTH(Char) \ + ((Char) < 0x80 ? 1 : \ + ((Char) < 0x800 ? 2 : \ + ((Char) < 0x10000 ? 3 : \ + ((Char) < 0x200000 ? 4 : \ + ((Char) < 0x4000000 ? 5 : 6))))) + + +#define UTF8_GET(Result, Chars, Count, Mask, Len) \ + (Result) = (Chars)[0] & (Mask); \ + for ((Count) = 1; (Count) < (Len); ++(Count)) \ + { \ + if (((Chars)[(Count)] & 0xc0) != 0x80) \ + { \ + (Result) = -1; \ + break; \ + } \ + (Result) <<= 6; \ + (Result) |= ((Chars)[(Count)] & 0x3f); \ + } + +static const gchar utf8_skip_data[256] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, + 5, 5, 5, 6, 6, 1, 1 +}; + +static const gchar *const g_utf8_skip = utf8_skip_data; + +#define g_utf8_next_char(p) ((p) + g_utf8_skip[*(const guchar *)(p)]) + +/* + * g_utf8_strlen: + * @p: pointer to the start of a UTF-8 encoded string. + * @max: the maximum number of bytes to examine. If @max + * is less than 0, then the string is assumed to be + * nul-terminated. If @max is 0, @p will not be examined and + * may be %NULL. + * + * Returns the length of the string in characters. + * + * Return value: the length of the string in characters + **/ +static glong +g_utf8_strlen (const gchar * p, gssize max) +{ + glong len = 0; + const gchar *start = p; + g_return_val_if_fail (p != NULL || max == 0, 0); + + if (max < 0) + { + while (*p) + { + p = g_utf8_next_char (p); + ++len; + } + } + else + { + if (max == 0 || !*p) + return 0; + + p = g_utf8_next_char (p); + + while (p - start < max && *p) + { + ++len; + p = g_utf8_next_char (p); + } + + /* only do the last len increment if we got a complete + * char (don't count partial chars) + */ + if (p - start == max) + ++len; + } + + return len; +} + +/* + * g_utf8_get_char: + * @p: a pointer to Unicode character encoded as UTF-8 + * + * Converts a sequence of bytes encoded as UTF-8 to a Unicode character. + * If @p does not point to a valid UTF-8 encoded character, results are + * undefined. If you are not sure that the bytes are complete + * valid Unicode characters, you should use g_utf8_get_char_validated() + * instead. + * + * Return value: the resulting character + **/ +static gunichar +g_utf8_get_char (const gchar * p) +{ + int i, mask = 0, len; + gunichar result; + unsigned char c = (unsigned char) *p; + + UTF8_COMPUTE (c, mask, len); + if (len == -1) + return (gunichar) - 1; + UTF8_GET (result, p, i, mask, len); + + return result; +} + +/* + * g_unichar_to_utf8: + * @c: a ISO10646 character code + * @outbuf: output buffer, must have at least 6 bytes of space. + * If %NULL, the length will be computed and returned + * and nothing will be written to @outbuf. + * + * Converts a single character to UTF-8. + * + * Return value: number of bytes written + **/ +static int +g_unichar_to_utf8 (gunichar c, gchar * outbuf) +{ + guint len = 0; + int first; + + if (c < 0x80) + { + first = 0; + len = 1; + } + else if (c < 0x800) + { + first = 0xc0; + len = 2; + } + else if (c < 0x10000) + { + first = 0xe0; + len = 3; + } + else if (c < 0x200000) + { + first = 0xf0; + len = 4; + } + else if (c < 0x4000000) + { + first = 0xf8; + len = 5; + } + else + { + first = 0xfc; + len = 6; + } + + if (outbuf) + { + guint i; + for (i = len - 1; i > 0; --i) + { + outbuf[i] = (c & 0x3f) | 0x80; + c >>= 6; + } + outbuf[0] = c | first; + } + + return len; +} + +/* + * g_utf8_to_ucs4_fast: + * @str: a UTF-8 encoded string + * @len: the maximum length of @str to use. If @len < 0, then + * the string is nul-terminated. + * @items_written: location to store the number of characters in the + * result, or %NULL. + * + * Convert a string from UTF-8 to a 32-bit fixed width + * representation as UCS-4, assuming valid UTF-8 input. + * This function is roughly twice as fast as g_utf8_to_ucs4() + * but does no error checking on the input. + * + * Return value: a pointer to a newly allocated UCS-4 string. + * This value must be freed with g_free(). + **/ +static gunichar * +g_utf8_to_ucs4_fast (const gchar * str, glong len, glong * items_written) +{ + gint j, charlen; + gunichar *result; + gint n_chars, i; + const gchar *p; + + g_return_val_if_fail (str != NULL, NULL); + + p = str; + n_chars = 0; + if (len < 0) + { + while (*p) + { + p = g_utf8_next_char (p); + ++n_chars; + } + } + else + { + while (p < str + len && *p) + { + p = g_utf8_next_char (p); + ++n_chars; + } + } + + result = g_new (gunichar, n_chars + 1); + if (!result) + return NULL; + + p = str; + for (i = 0; i < n_chars; i++) + { + gunichar wc = ((const unsigned char *) p)[0]; + + if (wc < 0x80) + { + result[i] = wc; + p++; + } + else + { + if (wc < 0xe0) + { + charlen = 2; + wc &= 0x1f; + } + else if (wc < 0xf0) + { + charlen = 3; + wc &= 0x0f; + } + else if (wc < 0xf8) + { + charlen = 4; + wc &= 0x07; + } + else if (wc < 0xfc) + { + charlen = 5; + wc &= 0x03; + } + else + { + charlen = 6; + wc &= 0x01; + } + + for (j = 1; j < charlen; j++) + { + wc <<= 6; + wc |= ((const unsigned char *) p)[j] & 0x3f; + } + + result[i] = wc; + p += charlen; + } + } + result[i] = 0; + + if (items_written) + *items_written = i; + + return result; +} + +/* + * g_ucs4_to_utf8: + * @str: a UCS-4 encoded string + * @len: the maximum length of @str to use. If @len < 0, then + * the string is terminated with a 0 character. + * @items_read: location to store number of characters read read, or %NULL. + * @items_written: location to store number of bytes written or %NULL. + * The value here stored does not include the trailing 0 + * byte. + * @error: location to store the error occuring, or %NULL to ignore + * errors. Any of the errors in #GConvertError other than + * %G_CONVERT_ERROR_NO_CONVERSION may occur. + * + * Convert a string from a 32-bit fixed width representation as UCS-4. + * to UTF-8. The result will be terminated with a 0 byte. + * + * Return value: a pointer to a newly allocated UTF-8 string. + * This value must be freed with g_free(). If an + * error occurs, %NULL will be returned and + * @error set. + **/ +static gchar * +g_ucs4_to_utf8 (const gunichar * str, + glong len, + glong * items_read, glong * items_written) +{ + gint result_length; + gchar *result = NULL; + gchar *p; + gint i; + + result_length = 0; + for (i = 0; len < 0 || i < len; i++) + { + if (!str[i]) + break; + + if (str[i] >= 0x80000000) + { + if (items_read) + *items_read = i; + + goto err_out; + } + + result_length += UTF8_LENGTH (str[i]); + } + + result = g_malloc (result_length + 1); + if (!result) + return NULL; + p = result; + + i = 0; + while (p < result + result_length) + p += g_unichar_to_utf8 (str[i++], p); + + *p = '\0'; + + if (items_written) + *items_written = p - result; + +err_out: + if (items_read) + *items_read = i; + + return result; +} + +/* Code from GLIB gunidecomp.c starts here. */ + +#include "gunidecomp.h" +#include "gunicomp.h" + +#define CC_PART1(Page, Char) \ + ((combining_class_table_part1[Page] >= G_UNICODE_MAX_TABLE_INDEX) \ + ? (combining_class_table_part1[Page] - G_UNICODE_MAX_TABLE_INDEX) \ + : (cclass_data[combining_class_table_part1[Page]][Char])) + +#define CC_PART2(Page, Char) \ + ((combining_class_table_part2[Page] >= G_UNICODE_MAX_TABLE_INDEX) \ + ? (combining_class_table_part2[Page] - G_UNICODE_MAX_TABLE_INDEX) \ + : (cclass_data[combining_class_table_part2[Page]][Char])) + +#define COMBINING_CLASS(Char) \ + (((Char) <= G_UNICODE_LAST_CHAR_PART1) \ + ? CC_PART1 ((Char) >> 8, (Char) & 0xff) \ + : (((Char) >= 0xe0000 && (Char) <= G_UNICODE_LAST_CHAR) \ + ? CC_PART2 (((Char) - 0xe0000) >> 8, (Char) & 0xff) \ + : 0)) + +/* constants for hangul syllable [de]composition */ +#define SBase 0xAC00 +#define LBase 0x1100 +#define VBase 0x1161 +#define TBase 0x11A7 +#define LCount 19 +#define VCount 21 +#define TCount 28 +#define NCount (VCount * TCount) +#define SCount (LCount * NCount) + +/* + * g_unicode_canonical_ordering: + * @string: a UCS-4 encoded string. + * @len: the maximum length of @string to use. + * + * Computes the canonical ordering of a string in-place. + * This rearranges decomposed characters in the string + * according to their combining classes. See the Unicode + * manual for more information. + **/ +static void +g_unicode_canonical_ordering (gunichar * string, gsize len) +{ + gsize i; + int swap = 1; + + while (swap) + { + int last; + swap = 0; + last = COMBINING_CLASS (string[0]); + for (i = 0; i < len - 1; ++i) + { + int next = COMBINING_CLASS (string[i + 1]); + if (next != 0 && last > next) + { + gsize j; + /* Percolate item leftward through string. */ + for (j = i + 1; j > 0; --j) + { + gunichar t; + if (COMBINING_CLASS (string[j - 1]) <= next) + break; + t = string[j]; + string[j] = string[j - 1]; + string[j - 1] = t; + swap = 1; + } + /* We're re-entering the loop looking at the old + character again. */ + next = last; + } + last = next; + } + } +} + +/* http://www.unicode.org/unicode/reports/tr15/#Hangul + * r should be null or have sufficient space. Calling with r == NULL will + * only calculate the result_len; however, a buffer with space for three + * characters will always be big enough. */ +static void +decompose_hangul (gunichar s, gunichar * r, gsize * result_len) +{ + gint SIndex = s - SBase; + + /* not a hangul syllable */ + if (SIndex < 0 || SIndex >= SCount) + { + if (r) + r[0] = s; + *result_len = 1; + } + else + { + gunichar L = LBase + SIndex / NCount; + gunichar V = VBase + (SIndex % NCount) / TCount; + gunichar T = TBase + SIndex % TCount; + + if (r) + { + r[0] = L; + r[1] = V; + } + + if (T != TBase) + { + if (r) + r[2] = T; + *result_len = 3; + } + else + *result_len = 2; + } +} + +/* returns a pointer to a null-terminated UTF-8 string */ +static const gchar * +find_decomposition (gunichar ch, gboolean compat) +{ + int start = 0; + int end = G_N_ELEMENTS (decomp_table); + + if (ch >= decomp_table[start].ch && ch <= decomp_table[end - 1].ch) + { + while (TRUE) + { + int half = (start + end) / 2; + if (ch == decomp_table[half].ch) + { + int offset; + + if (compat) + { + offset = decomp_table[half].compat_offset; + if (offset == G_UNICODE_NOT_PRESENT_OFFSET) + offset = decomp_table[half].canon_offset; + } + else + { + offset = decomp_table[half].canon_offset; + if (offset == G_UNICODE_NOT_PRESENT_OFFSET) + return NULL; + } + + return &(decomp_expansion_string[offset]); + } + else if (half == start) + break; + else if (ch > decomp_table[half].ch) + start = half; + else + end = half; + } + } + + return NULL; +} + +/* L,V => LV and LV,T => LVT */ +static gboolean +combine_hangul (gunichar a, gunichar b, gunichar * result) +{ + gint LIndex = a - LBase; + gint SIndex = a - SBase; + + gint VIndex = b - VBase; + gint TIndex = b - TBase; + + if (0 <= LIndex && LIndex < LCount && 0 <= VIndex && VIndex < VCount) + { + *result = SBase + (LIndex * VCount + VIndex) * TCount; + return TRUE; + } + else if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0 + && 0 <= TIndex && TIndex <= TCount) + { + *result = a + TIndex; + return TRUE; + } + + return FALSE; +} + +#define CI(Page, Char) \ + ((compose_table[Page] >= G_UNICODE_MAX_TABLE_INDEX) \ + ? (compose_table[Page] - G_UNICODE_MAX_TABLE_INDEX) \ + : (compose_data[compose_table[Page]][Char])) + +#define COMPOSE_INDEX(Char) \ + ((((Char) >> 8) > (COMPOSE_TABLE_LAST)) ? 0 : CI((Char) >> 8, (Char) & 0xff)) + +static gboolean +combine (gunichar a, gunichar b, gunichar * result) +{ + gushort index_a, index_b; + + if (combine_hangul (a, b, result)) + return TRUE; + + index_a = COMPOSE_INDEX (a); + + if (index_a >= COMPOSE_FIRST_SINGLE_START && index_a < COMPOSE_SECOND_START) + { + if (b == compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][0]) + { + *result = + compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][1]; + return TRUE; + } + else + return FALSE; + } + + index_b = COMPOSE_INDEX (b); + + if (index_b >= COMPOSE_SECOND_SINGLE_START) + { + if (a == + compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][0]) + { + *result = + compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][1]; + return TRUE; + } + else + return FALSE; + } + + if (index_a >= COMPOSE_FIRST_START && index_a < COMPOSE_FIRST_SINGLE_START + && index_b >= COMPOSE_SECOND_START + && index_b < COMPOSE_SECOND_SINGLE_START) + { + gunichar res = + compose_array[index_a - COMPOSE_FIRST_START][index_b - + COMPOSE_SECOND_START]; + + if (res) + { + *result = res; + return TRUE; + } + } + + return FALSE; +} + +static gunichar * +_g_utf8_normalize_wc (const gchar * str, gssize max_len, GNormalizeMode mode) +{ + gsize n_wc; + gunichar *wc_buffer; + const char *p; + gsize last_start; + gboolean do_compat = (mode == G_NORMALIZE_NFKC || mode == G_NORMALIZE_NFKD); + gboolean do_compose = (mode == G_NORMALIZE_NFC || mode == G_NORMALIZE_NFKC); + + n_wc = 0; + p = str; + while ((max_len < 0 || p < str + max_len) && *p) + { + const gchar *decomp; + gunichar wc = g_utf8_get_char (p); + + if (wc >= 0xac00 && wc <= 0xd7af) + { + gsize result_len; + decompose_hangul (wc, NULL, &result_len); + n_wc += result_len; + } + else + { + decomp = find_decomposition (wc, do_compat); + + if (decomp) + n_wc += g_utf8_strlen (decomp, -1); + else + n_wc++; + } + + p = g_utf8_next_char (p); + } + + wc_buffer = g_new (gunichar, n_wc + 1); + if (!wc_buffer) + return NULL; + + last_start = 0; + n_wc = 0; + p = str; + while ((max_len < 0 || p < str + max_len) && *p) + { + gunichar wc = g_utf8_get_char (p); + const gchar *decomp; + int cc; + gsize old_n_wc = n_wc; + + if (wc >= 0xac00 && wc <= 0xd7af) + { + gsize result_len; + decompose_hangul (wc, wc_buffer + n_wc, &result_len); + n_wc += result_len; + } + else + { + decomp = find_decomposition (wc, do_compat); + + if (decomp) + { + const char *pd; + for (pd = decomp; *pd != '\0'; pd = g_utf8_next_char (pd)) + wc_buffer[n_wc++] = g_utf8_get_char (pd); + } + else + wc_buffer[n_wc++] = wc; + } + + if (n_wc > 0) + { + cc = COMBINING_CLASS (wc_buffer[old_n_wc]); + + if (cc == 0) + { + g_unicode_canonical_ordering (wc_buffer + last_start, + n_wc - last_start); + last_start = old_n_wc; + } + } + + p = g_utf8_next_char (p); + } + + if (n_wc > 0) + { + g_unicode_canonical_ordering (wc_buffer + last_start, + n_wc - last_start); + last_start = n_wc; + } + + wc_buffer[n_wc] = 0; + + /* All decomposed and reordered */ + + if (do_compose && n_wc > 0) + { + gsize i, j; + int last_cc = 0; + last_start = 0; + + for (i = 0; i < n_wc; i++) + { + int cc = COMBINING_CLASS (wc_buffer[i]); + + if (i > 0 && + (last_cc == 0 || last_cc != cc) && + combine (wc_buffer[last_start], wc_buffer[i], + &wc_buffer[last_start])) + { + for (j = i + 1; j < n_wc; j++) + wc_buffer[j - 1] = wc_buffer[j]; + n_wc--; + i--; + + if (i == last_start) + last_cc = 0; + else + last_cc = COMBINING_CLASS (wc_buffer[i - 1]); + + continue; + } + + if (cc == 0) + last_start = i; + + last_cc = cc; + } + } + + wc_buffer[n_wc] = 0; + + return wc_buffer; +} + +/* + * g_utf8_normalize: + * @str: a UTF-8 encoded string. + * @len: length of @str, in bytes, or -1 if @str is nul-terminated. + * @mode: the type of normalization to perform. + * + * Converts a string into canonical form, standardizing + * such issues as whether a character with an accent + * is represented as a base character and combining + * accent or as a single precomposed character. You + * should generally call g_utf8_normalize() before + * comparing two Unicode strings. + * + * The normalization mode %G_NORMALIZE_DEFAULT only + * standardizes differences that do not affect the + * text content, such as the above-mentioned accent + * representation. %G_NORMALIZE_ALL also standardizes + * the "compatibility" characters in Unicode, such + * as SUPERSCRIPT THREE to the standard forms + * (in this case DIGIT THREE). Formatting information + * may be lost but for most text operations such + * characters should be considered the same. + * For example, g_utf8_collate() normalizes + * with %G_NORMALIZE_ALL as its first step. + * + * %G_NORMALIZE_DEFAULT_COMPOSE and %G_NORMALIZE_ALL_COMPOSE + * are like %G_NORMALIZE_DEFAULT and %G_NORMALIZE_ALL, + * but returned a result with composed forms rather + * than a maximally decomposed form. This is often + * useful if you intend to convert the string to + * a legacy encoding or pass it to a system with + * less capable Unicode handling. + * + * Return value: a newly allocated string, that is the + * normalized form of @str. + **/ +static gchar * +g_utf8_normalize (const gchar * str, gssize len, GNormalizeMode mode) +{ + gunichar *result_wc = _g_utf8_normalize_wc (str, len, mode); + gchar *result; + + result = g_ucs4_to_utf8 (result_wc, -1, NULL, NULL); + g_free (result_wc); + + return result; +} + +/* Public Libidn API starts here. */ + +/** + * stringprep_utf8_to_unichar - convert UTF-8 to Unicode code point + * @p: a pointer to Unicode character encoded as UTF-8 + * + * Converts a sequence of bytes encoded as UTF-8 to a Unicode character. + * If @p does not point to a valid UTF-8 encoded character, results are + * undefined. + * + * Return value: the resulting character. + **/ +uint32_t +stringprep_utf8_to_unichar (const char *p) +{ + return g_utf8_get_char (p); +} + +/** + * stringprep_unichar_to_utf8 - convert Unicode code point to UTF-8 + * @c: a ISO10646 character code + * @outbuf: output buffer, must have at least 6 bytes of space. + * If %NULL, the length will be computed and returned + * and nothing will be written to @outbuf. + * + * Converts a single character to UTF-8. + * + * Return value: number of bytes written. + **/ +int +stringprep_unichar_to_utf8 (uint32_t c, char *outbuf) +{ + return g_unichar_to_utf8 (c, outbuf); +} + +/** + * stringprep_utf8_to_ucs4 - convert UTF-8 string to UCS-4 + * @str: a UTF-8 encoded string + * @len: the maximum length of @str to use. If @len < 0, then + * the string is nul-terminated. + * @items_written: location to store the number of characters in the + * result, or %NULL. + * + * Convert a string from UTF-8 to a 32-bit fixed width + * representation as UCS-4, assuming valid UTF-8 input. + * This function does no error checking on the input. + * + * Return value: a pointer to a newly allocated UCS-4 string. + * This value must be deallocated by the caller. + **/ +uint32_t * +stringprep_utf8_to_ucs4 (const char *str, ssize_t len, size_t * items_written) +{ + return g_utf8_to_ucs4_fast (str, (glong) len, (glong *) items_written); +} + +/** + * stringprep_ucs4_to_utf8 - convert UCS-4 string to UTF-8 + * @str: a UCS-4 encoded string + * @len: the maximum length of @str to use. If @len < 0, then + * the string is terminated with a 0 character. + * @items_read: location to store number of characters read read, or %NULL. + * @items_written: location to store number of bytes written or %NULL. + * The value here stored does not include the trailing 0 + * byte. + * + * Convert a string from a 32-bit fixed width representation as UCS-4. + * to UTF-8. The result will be terminated with a 0 byte. + * + * Return value: a pointer to a newly allocated UTF-8 string. + * This value must be deallocated by the caller. + * If an error occurs, %NULL will be returned and @error + * set. + **/ +char * +stringprep_ucs4_to_utf8 (const uint32_t * str, ssize_t len, + size_t * items_read, size_t * items_written) +{ + return g_ucs4_to_utf8 (str, len, (glong *) items_read, + (glong *) items_written); +} + +/** + * stringprep_utf8_nfkc_normalize - normalize Unicode string + * @str: a UTF-8 encoded string. + * @len: length of @str, in bytes, or -1 if @str is nul-terminated. + * + * Converts a string into canonical form, standardizing + * such issues as whether a character with an accent + * is represented as a base character and combining + * accent or as a single precomposed character. + * + * The normalization mode is NFKC (ALL COMPOSE). It standardizes + * differences that do not affect the text content, such as the + * above-mentioned accent representation. It standardizes the + * "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to + * the standard forms (in this case DIGIT THREE). Formatting + * information may be lost but for most text operations such + * characters should be considered the same. It returns a result with + * composed forms rather than a maximally decomposed form. + * + * Return value: a newly allocated string, that is the + * NFKC normalized form of @str. + **/ +char * +stringprep_utf8_nfkc_normalize (const char *str, ssize_t len) +{ + return g_utf8_normalize (str, len, G_NORMALIZE_NFKC); +} + +/** + * stringprep_ucs4_nfkc_normalize - normalize Unicode string + * @str: a Unicode string. + * @len: length of @str array, or -1 if @str is nul-terminated. + * + * Converts UCS4 string into UTF-8 and runs + * stringprep_utf8_nfkc_normalize(). + * + * Return value: a newly allocated Unicode string, that is the NFKC + * normalized form of @str. + **/ +uint32_t * +stringprep_ucs4_nfkc_normalize (uint32_t * str, ssize_t len) +{ + char *p; + uint32_t *result_wc; + + p = stringprep_ucs4_to_utf8 (str, len, 0, 0); + result_wc = _g_utf8_normalize_wc (p, -1, G_NORMALIZE_NFKC); + free (p); + + return result_wc; +} diff --git a/lib/pr29.c b/lib/pr29.c new file mode 100644 index 0000000..c932e48 --- /dev/null +++ b/lib/pr29.c @@ -0,0 +1,1332 @@ +/* pr29.h --- Detect strings that are non-idempotent under NFKC in Unicode 3.2. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include <config.h> + +#include "pr29.h" + +/* Get stringprep_utf8_to_ucs4. */ +#include <stringprep.h> + +/* + * The tables used in this file was extracted by Simon Josefsson from + * pr-29.html and DerivedCombiningClass-3.2.0.txt, as published by + * Unicode Inc., for the GNU Libidn project. + * + */ + +/* These are the characters with non-zero combination class, extracted + from DerivedCombiningClass-3.2.0.txt. */ +static uint32_t nzcc[] = { + /* 1 # Mn [5] COMBINING TILDE OVERLAY.. + * ..COMBINING LONG SOLIDUS OVERLAY */ + 0x0334, + 0x0335, + 0x0336, + 0x0337, + 0x0338, + /* 1 # Mn [2] COMBINING LONG VERTICAL LINE OVERLAY.. + * ..COMBINING SHORT VERTICAL LINE OVERLAY */ + 0x20D2, + 0x20D3, + /* 1 # Mn [3] COMBINING RING OVERLAY.. + * ..COMBINING ANTICLOCKWISE RING OVERLAY */ + 0x20D8, + 0x20D9, + 0x20DA, + /* 1 # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY.. + * ..COMBINING DOUBLE VERTICAL STROKE OVERLAY */ + 0x20E5, + 0x20E6, + /* 1 # Mn COMBINING LEFTWARDS ARROW OVERLAY */ + 0x20EA, + /* 1 # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1.. + * ..MUSICAL SYMBOL COMBINING TREMOLO-3 */ + 0x1D167, + 0x1D168, + 0x1D169, + /* 7 # Mn DEVANAGARI SIGN NUKTA */ + 0x093C, + /* 7 # Mn BENGALI SIGN NUKTA */ + 0x09BC, + /* 7 # Mn GURMUKHI SIGN NUKTA */ + 0x0A3C, + /* 7 # Mn GUJARATI SIGN NUKTA */ + 0x0ABC, + /* 7 # Mn ORIYA SIGN NUKTA */ + 0x0B3C, + /* 7 # Mn MYANMAR SIGN DOT BELOW */ + 0x1037, + /* 8 # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK.. + * ..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ + 0x3099, + 0x309A, + /* 9 # Mn DEVANAGARI SIGN VIRAMA */ + 0x094D, + /* 9 # Mn BENGALI SIGN VIRAMA */ + 0x09CD, + /* 9 # Mn GURMUKHI SIGN VIRAMA */ + 0x0A4D, + /* 9 # Mn GUJARATI SIGN VIRAMA */ + 0x0ACD, + /* 9 # Mn ORIYA SIGN VIRAMA */ + 0x0B4D, + /* 9 # Mn TAMIL SIGN VIRAMA */ + 0x0BCD, + /* 9 # Mn TELUGU SIGN VIRAMA */ + 0x0C4D, + /* 9 # Mn KANNADA SIGN VIRAMA */ + 0x0CCD, + /* 9 # Mn MALAYALAM SIGN VIRAMA */ + 0x0D4D, + /* 9 # Mn SINHALA SIGN AL-LAKUNA */ + 0x0DCA, + /* 9 # Mn THAI CHARACTER PHINTHU */ + 0x0E3A, + /* 9 # Mn TIBETAN MARK HALANTA */ + 0x0F84, + /* 9 # Mn MYANMAR SIGN VIRAMA */ + 0x1039, + /* 9 # Mn TAGALOG SIGN VIRAMA */ + 0x1714, + /* 9 # Mn HANUNOO SIGN PAMUDPOD */ + 0x1734, + /* 9 # Mn KHMER SIGN COENG */ + 0x17D2, + /* 10 # Mn HEBREW POINT SHEVA */ + 0x05B0, + /* 11 # Mn HEBREW POINT HATAF SEGOL */ + 0x05B1, + /* 12 # Mn HEBREW POINT HATAF PATAH */ + 0x05B2, + /* 13 # Mn HEBREW POINT HATAF QAMATS */ + 0x05B3, + /* 14 # Mn HEBREW POINT HIRIQ */ + 0x05B4, + /* 15 # Mn HEBREW POINT TSERE */ + 0x05B5, + /* 16 # Mn HEBREW POINT SEGOL */ + 0x05B6, + /* 17 # Mn HEBREW POINT PATAH */ + 0x05B7, + /* 18 # Mn HEBREW POINT QAMATS */ + 0x05B8, + /* 19 # Mn HEBREW POINT HOLAM */ + 0x05B9, + /* 20 # Mn HEBREW POINT QUBUTS */ + 0x05BB, + /* 21 # Mn HEBREW POINT DAGESH OR MAPIQ */ + 0x05BC, + /* 22 # Mn HEBREW POINT METEG */ + 0x05BD, + /* 23 # Mn HEBREW POINT RAFE */ + 0x05BF, + /* 24 # Mn HEBREW POINT SHIN DOT */ + 0x05C1, + /* 25 # Mn HEBREW POINT SIN DOT */ + 0x05C2, + /* 26 # Mn HEBREW POINT JUDEO-SPANISH VARIKA */ + 0xFB1E, + /* 27 # Mn ARABIC FATHATAN */ + 0x064B, + /* 28 # Mn ARABIC DAMMATAN */ + 0x064C, + /* 29 # Mn ARABIC KASRATAN */ + 0x064D, + /* 30 # Mn ARABIC FATHA */ + 0x064E, + /* 31 # Mn ARABIC DAMMA */ + 0x064F, + /* 32 # Mn ARABIC KASRA */ + 0x0650, + /* 33 # Mn ARABIC SHADDA */ + 0x0651, + /* 34 # Mn ARABIC SUKUN */ + 0x0652, + /* 35 # Mn ARABIC LETTER SUPERSCRIPT ALEF */ + 0x0670, + /* 36 # Mn SYRIAC LETTER SUPERSCRIPT ALAPH */ + 0x0711, + /* 84 # Mn TELUGU LENGTH MARK */ + 0x0C55, + /* 91 # Mn TELUGU AI LENGTH MARK */ + 0x0C56, + /* 103 # Mn [2] THAI CHARACTER SARA U.. + * ..THAI CHARACTER SARA UU */ + 0x0E38, + 0x0E39, + /* 107 # Mn [4] THAI CHARACTER MAI EK.. + * ..THAI CHARACTER MAI CHATTAWA */ + 0x0E48, + 0x0E49, + 0x0E4A, + 0x04EB, + /* 118 # Mn [2] LAO VOWEL SIGN U.. + * ..LAO VOWEL SIGN UU */ + 0x0EB8, + 0x0EB9, + /* 122 # Mn [4] LAO TONE MAI EK.. + * ..LAO TONE MAI CATAWA */ + 0x0EC8, + 0x0EC9, + 0x0ECA, + 0x0ECB, + /* 129 # Mn TIBETAN VOWEL SIGN AA */ + 0x0F71, + /* 130 # Mn TIBETAN VOWEL SIGN I */ + 0x0F72, + /* 130 # Mn [4] TIBETAN VOWEL SIGN E.. + * ..TIBETAN VOWEL SIGN OO */ + 0x0F7A, + 0x0F7B, + 0x0F7C, + 0x0F7D, + /* 130 # Mn TIBETAN VOWEL SIGN REVERSED I */ + 0x0F80, + /* 132 # Mn TIBETAN VOWEL SIGN U */ + 0x0F74, + /* 202 # Mn [2] COMBINING PALATALIZED HOOK BELOW.. + * ..COMBINING RETROFLEX HOOK BELOW */ + 0x0321, + 0x0322, + /* 202 # Mn [2] COMBINING CEDILLA.. + * ..COMBINING OGONEK */ + 0x0327, + 0x0328, + /* 216 # Mn COMBINING HORN */ + 0x031B, + /* 216 # Mn TIBETAN MARK TSA -PHRU */ + 0x0F39, + /* 216 # Mc [2] MUSICAL SYMBOL COMBINING STEM.. + * ..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM */ + 0x1D165, + 0x1D166, + /* 216 # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1.. + * ..MUSICAL SYMBOL COMBINING FLAG-5 */ + 0x1D16E, + 0x1D16F, + 0x1D170, + 0x1D171, + 0x1D172, + /* 218 # Mn IDEOGRAPHIC LEVEL TONE MARK */ + 0x302A, + /* 220 # Mn [4] COMBINING GRAVE ACCENT BELOW.. + * ..COMBINING RIGHT TACK BELOW */ + 0x0316, + 0x0317, + 0x0318, + 0x0319, + /* 220 # Mn [5] COMBINING LEFT HALF RING BELOW.. + * ..COMBINING MINUS SIGN BELOW */ + 0x031C, + 0x031D, + 0x031E, + 0x031F, + 0x0320, + /* 220 # Mn [4] COMBINING DOT BELOW.. + * ..COMBINING COMMA BELOW */ + 0x0323, + 0x0324, + 0x0325, + 0x0326, + /* 220 # Mn [11] COMBINING VERTICAL LINE BELOW.. + * ..COMBINING DOUBLE LOW LINE */ + 0x0329, + 0x032A, + 0x032B, + 0x032C, + 0x032D, + 0x032E, + 0x032F, + 0x0330, + 0x0331, + 0x0332, + 0x0333, + /* 220 # Mn [4] COMBINING RIGHT HALF RING BELOW.. + * ..COMBINING SEAGULL BELOW */ + 0x0339, + 0x033A, + 0x033B, + 0x033C, + /* 220 # Mn [3] COMBINING EQUALS SIGN BELOW.. + * ..COMBINING LEFT ANGLE BELOW */ + 0x0347, + 0x0348, + 0x0349, + /* 220 # Mn [2] COMBINING LEFT RIGHT ARROW BELOW.. + * ..COMBINING UPWARDS ARROW BELOW */ + 0x034D, + 0x034E, + /* 220 # Mn HEBREW ACCENT ETNAHTA */ + 0x0591, + /* 220 # Mn HEBREW ACCENT TIPEHA */ + 0x0596, + /* 220 # Mn HEBREW ACCENT TEVIR */ + 0x059B, + /* 220 # Mn [5] HEBREW ACCENT MUNAH.. + * ..HEBREW ACCENT DARGA */ + 0x05A3, + 0x05A4, + 0x05A5, + 0x05A6, + 0x05A7, + /* 220 # Mn HEBREW ACCENT YERAH BEN YOMO */ + 0x05AA, + /* 220 # Mn ARABIC HAMZA BELOW */ + 0x0655, + /* 220 # Mn ARABIC SMALL LOW SEEN */ + 0x06E3, + /* 220 # Mn ARABIC EMPTY CENTRE LOW STOP */ + 0x06EA, + /* 220 # Mn ARABIC SMALL LOW MEEM */ + 0x06ED, + /* 220 # Mn SYRIAC PTHAHA BELOW */ + 0x0731, + /* 220 # Mn SYRIAC ZQAPHA BELOW */ + 0x0734, + /* 220 # Mn [3] SYRIAC RBASA BELOW.. + * ..SYRIAC DOTTED ZLAMA ANGULAR */ + 0x0737, + 0x0738, + 0x0739, + /* 220 # Mn [2] SYRIAC HBASA BELOW.. + * ..SYRIAC HBASA-ESASA DOTTED */ + 0x073B, + 0x073C, + /* 220 # Mn SYRIAC ESASA BELOW */ + 0x073E, + /* 220 # Mn SYRIAC RUKKAKHA */ + 0x0742, + /* 220 # Mn SYRIAC TWO VERTICAL DOTS BELOW */ + 0x0744, + /* 220 # Mn SYRIAC THREE DOTS BELOW */ + 0x0746, + /* 220 # Mn SYRIAC OBLIQUE LINE BELOW */ + 0x0748, + /* 220 # Mn DEVANAGARI STRESS SIGN ANUDATTA */ + 0x0952, + /* 220 # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA.. + * ..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS */ + 0x0F18, + 0x0F19, + /* 220 # Mn TIBETAN MARK NGAS BZUNG NYI ZLA */ + 0x0F35, + /* 220 # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS */ + 0x0F37, + /* 220 # Mn TIBETAN SYMBOL PADMA GDAN */ + 0x0FC6, + /* 220 # Mn COMBINING TRIPLE UNDERDOT */ + 0x20E8, + /* 220 # Mn [8] MUSICAL SYMBOL COMBINING ACCENT.. + * ..MUSICAL SYMBOL COMBINING LOURE */ + 0x1D17B, + 0x1D17C, + 0x1D17D, + 0x1D17E, + 0x1D17F, + 0x1D180, + 0x1D181, + 0x1D182, + /* 220 # Mn [2] MUSICAL SYMBOL COMBINING DOUBLE TONGUE.. + * ..MUSICAL SYMBOL COMBINING TRIPLE TONGUE */ + 0x1D18A, + 0x1D18B, + /* 222 # Mn HEBREW ACCENT YETIV */ + 0x059A, + /* 222 # Mn HEBREW ACCENT DEHI */ + 0x05AD, + /* 222 # Mn IDEOGRAPHIC ENTERING TONE MARK */ + 0x302D, + /* 224 # Mn [2] HANGUL SINGLE DOT TONE MARK.. + * ..HANGUL DOUBLE DOT TONE MARK */ + 0x302E, + 0x302F, + /* 226 # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT */ + 0x1D16D, + /* 228 # Mn HEBREW ACCENT ZINOR */ + 0x05AE, + /* 228 # Mn MONGOLIAN LETTER ALI GALI DAGALGA */ + 0x18A9, + /* 228 # Mn IDEOGRAPHIC RISING TONE MARK */ + 0x302B, + /* 230 # Mn [21] COMBINING GRAVE ACCENT.. + * ..COMBINING REVERSED COMMA ABOVE */ + 0x0300, + 0x0301, + 0x0302, + 0x0303, + 0x0304, + 0x0305, + 0x0306, + 0x0307, + 0x0308, + 0x0309, + 0x030A, + 0x030B, + 0x030C, + 0x030D, + 0x030E, + 0x030F, + 0x0310, + 0x0311, + 0x0312, + 0x0313, + 0x0314, + /* 230 # Mn [8] COMBINING X ABOVE.. + * ..COMBINING GREEK DIALYTIKA TONOS */ + 0x033D, + 0x033E, + 0x033F, + 0x0340, + 0x0341, + 0x0342, + 0x0343, + 0x0344, + /* 230 # Mn COMBINING BRIDGE ABOVE */ + 0x0346, + /* 230 # Mn [3] COMBINING NOT TILDE ABOVE.. + * ..COMBINING ALMOST EQUAL TO ABOVE */ + 0x034A, + 0x034B, + 0x034C, + /* 230 # Mn [13] COMBINING LATIN SMALL LETTER A.. + * ..COMBINING LATIN SMALL LETTER X */ + 0x0363, + 0x0364, + 0x0365, + 0x0366, + 0x0367, + 0x0368, + 0x0369, + 0x036A, + 0x036B, + 0x036C, + 0x036D, + 0x036E, + 0x036F, + /* 230 # Mn [4] COMBINING CYRILLIC TITLO.. + * ..COMBINING CYRILLIC PSILI PNEUMATA */ + 0x0483, + 0x0484, + 0x0485, + 0x0486, + /* 230 # Mn [4] HEBREW ACCENT SEGOL.. + * ..HEBREW ACCENT ZAQEF GADOL */ + 0x0592, + 0x0593, + 0x0594, + 0x0595, + /* 230 # Mn [3] HEBREW ACCENT REVIA.. + * ..HEBREW ACCENT PASHTA */ + 0x0597, + 0x0598, + 0x0599, + /* 230 # Mn [6] HEBREW ACCENT GERESH.. + * ..HEBREW ACCENT PAZER */ + 0x059C, + 0x059D, + 0x059E, + 0x059F, + 0x05A0, + 0x05A1, + /* 230 # Mn [2] HEBREW ACCENT QADMA.. + * ..HEBREW ACCENT TELISHA QETANA */ + 0x05A8, + 0x05A9, + /* 230 # Mn [2] HEBREW ACCENT OLE.. + * ..HEBREW ACCENT ILUY */ + 0x05AB, + 0x05AC, + /* 230 # Mn HEBREW MARK MASORA CIRCLE */ + 0x05AF, + /* 230 # Mn HEBREW MARK UPPER DOT */ + 0x05C4, + /* 230 # Mn [2] ARABIC MADDAH ABOVE.. + * ..ARABIC HAMZA ABOVE */ + 0x0653, + 0x0654, + /* 230 # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA.. + * ..ARABIC SMALL HIGH SEEN */ + 0x06D6, + 0x06D7, + 0x06D8, + 0x06D9, + 0x06DA, + 0x06DB, + 0x06DC, + /* 230 # Mn [4] ARABIC SMALL HIGH ROUNDED ZERO.. + * ..ARABIC SMALL HIGH MEEM ISOLATED FORM */ + 0x06DF, + 0x06E0, + 0x06E1, + 0x06E2, + /* 230 # Mn ARABIC SMALL HIGH MADDA */ + 0x06E4, + /* 230 # Mn [2] ARABIC SMALL HIGH YEH.. + * ..ARABIC SMALL HIGH NOON */ + 0x06E7, + 0x06E8, + /* 230 # Mn [2] ARABIC EMPTY CENTRE HIGH STOP.. + * ..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE */ + 0x06EB, + 0x06EC, + /* 230 # Mn SYRIAC PTHAHA ABOVE */ + 0x0730, + /* 230 # Mn [2] SYRIAC PTHAHA DOTTED.. + * ..SYRIAC ZQAPHA ABOVE */ + 0x0732, + 0x0733, + /* 230 # Mn [2] SYRIAC ZQAPHA DOTTED.. + * ..SYRIAC RBASA ABOVE */ + 0x0735, + 0x0736, + /* 230 # Mn SYRIAC HBASA ABOVE */ + 0x073A, + /* 230 # Mn SYRIAC ESASA ABOVE */ + 0x073D, + /* 230 # Mn [3] SYRIAC RWAHA.. + * ..SYRIAC QUSHSHAYA */ + 0x073F, + 0x0740, + 0x0741, + /* 230 # Mn SYRIAC TWO VERTICAL DOTS ABOVE */ + 0x0743, + /* 230 # Mn SYRIAC THREE DOTS ABOVE */ + 0x0745, + /* 230 # Mn SYRIAC OBLIQUE LINE ABOVE */ + 0x0747, + /* 230 # Mn [2] SYRIAC MUSIC.. + * ..SYRIAC BARREKH */ + 0x0749, + 0x074A, + /* 230 # Mn DEVANAGARI STRESS SIGN UDATTA */ + 0x0951, + /* 230 # Mn [2] DEVANAGARI GRAVE ACCENT.. + * ..DEVANAGARI ACUTE ACCENT */ + 0x0953, + 0x0954, + /* 230 # Mn [2] TIBETAN SIGN NYI ZLA NAA DA.. + * ..TIBETAN SIGN SNA LDAN */ + 0x0F82, + 0x0F83, + /* 230 # Mn [2] TIBETAN SIGN LCI RTAGS.. + * ..TIBETAN SIGN YANG RTAGS */ + 0x0F86, + 0x0F87, + /* 230 # Mn [2] COMBINING LEFT HARPOON ABOVE.. + * ..COMBINING RIGHT HARPOON ABOVE */ + 0x20D0, + 0x20D1, + /* 230 # Mn [4] COMBINING ANTICLOCKWISE ARROW ABOVE.. + * ..COMBINING RIGHT ARROW ABOVE */ + 0x20D4, + 0x20D5, + 0x20D6, + 0x20D7, + /* 230 # Mn [2] COMBINING THREE DOTS ABOVE.. + * ..COMBINING FOUR DOTS ABOVE */ + 0x20DB, + 0x20DC, + /* 230 # Mn COMBINING LEFT RIGHT ARROW ABOVE */ + 0x20E1, + /* 230 # Mn COMBINING ANNUITY SYMBOL */ + 0x20E7, + /* 230 # Mn COMBINING WIDE BRIDGE ABOVE */ + 0x20E9, + /* 230 # Mn [4] COMBINING LIGATURE LEFT HALF.. + * ..COMBINING DOUBLE TILDE RIGHT HALF */ + 0xFE20, + 0xFE21, + 0xFE22, + 0xFE23, + /* 230 # Mn [5] MUSICAL SYMBOL COMBINING DOIT.. + * ..MUSICAL SYMBOL COMBINING BEND */ + 0x1D185, + 0x1D186, + 0x1D187, + 0x1D188, + 0x1D189, + /* 230 # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW.. + * ..MUSICAL SYMBOL COMBINING SNAP PIZZICATO */ + 0x1D1AA, + 0x1D1AB, + 0x1D1AC, + 0x1D1AD, + /* 232 # Mn COMBINING COMMA ABOVE RIGHT */ + 0x0315, + /* 232 # Mn COMBINING LEFT ANGLE ABOVE */ + 0x031A, + /* 232 # Mn IDEOGRAPHIC DEPARTING TONE MARK */ + 0x302C, + /* 233 # Mn COMBINING DOUBLE RIGHTWARDS ARROW BELOW */ + 0x0362, + /* 234 # Mn [2] COMBINING DOUBLE TILDE.. + * ..COMBINING DOUBLE INVERTED BREVE */ + 0x0360, + 0x0361, + /* 240 # Mn COMBINING GREEK YPOGEGRAMMENI */ + 0x0345, + 0 +}; + +/* + * 09C7 BENGALI VOWEL SIGN E 09BE BENGALI VOWEL SIGN AA or + * 09D7 BENGALI AU LENGTH MARK + */ + +static const uint32_t pr29_1_1[] = { + 0x09C7, 0 +}; + +static const uint32_t pr29_1_2[] = { + 0x09BE, 0x09D7, 0 +}; + +/* + * 0B47 ORIYA VOWEL SIGN E 0B3E ORIYA VOWEL SIGN AA or + * 0B56 ORIYA AI LENGTH MARK or + * 0B57 ORIYA AU LENGTH MARK + */ + +static const uint32_t pr29_2_1[] = { + 0x0B47, 0 +}; + +static const uint32_t pr29_2_2[] = { + 0x0B3E, 0x0B56, 0x0B57, 0 +}; + +/* + * 0BC6 TAMIL VOWEL SIGN E 0BBE TAMIL VOWEL SIGN AA or + * 0BD7 TAMIL AU LENGTH MARK + */ + +static const uint32_t pr29_3_1[] = { + 0x0BC6, 0 +}; + +static const uint32_t pr29_3_2[] = { + 0x0BBE, 0x0BD7, 0 +}; + +/* + * 0BC7 TAMIL VOWEL SIGN EE 0BBE TAMIL VOWEL SIGN AA + */ + +static const uint32_t pr29_4_1[] = { + 0x0BC7, 0 +}; + +static const uint32_t pr29_4_2[] = { + 0x0BBE, 0 +}; + +/* + * 0B92 TAMIL LETTER O 0BD7 TAMIL AU LENGTH MARK + */ + +static const uint32_t pr29_5_1[] = { + 0x0B92, 0 +}; + +static const uint32_t pr29_5_2[] = { + 0x0BD7, 0 +}; + +/* + * 0CC6 KANNADA VOWEL SIGN E 0CC2 KANNADA VOWEL SIGN UU or + * 0CD5 KANNADA LENGTH MARK or + * 0CD6 KANNADA AI LENGTH MARK + */ + +static const uint32_t pr29_6_1[] = { + 0x0CC6, 0 +}; + +static const uint32_t pr29_6_2[] = { + 0x0CC2, 0xCD5, 0xCD6, 0 +}; + +/* + * 0CBF KANNADA VOWEL SIGN I or + * 0CCA KANNADA VOWEL SIGN O 0CD5 KANNADA LENGTH MARK + */ + +static const uint32_t pr29_7_1[] = { + 0x0CBF, 0xCCA, 0 +}; + +static const uint32_t pr29_7_2[] = { + 0x0CD5, 0 +}; + +/* + * 0D47 MALAYALAM VOWEL SIGN EE 0D3E MALAYALAM VOWEL SIGN AA + */ + +static const uint32_t pr29_8_1[] = { + 0x0D47, 0 +}; + +static const uint32_t pr29_8_2[] = { + 0x0D3E, 0 +}; + +/* + * 0D46 MALAYALAM VOWEL SIGN E 0D3E MALAYALAM VOWEL SIGN AA or + * 0D57 MALAYALAM AU LENGTH MARK + */ + +static const uint32_t pr29_9_1[] = { + 0x0D46, 0 +}; + +static const uint32_t pr29_9_2[] = { + 0x0D3E, 0x0D57, 0 +}; + +/* + * 1025 MYANMAR LETTER U 102E MYANMAR VOWEL SIGN II + */ + +static const uint32_t pr29_10_1[] = { + 0x1025, 0 +}; + +static const uint32_t pr29_10_2[] = { + 0x102E, 0 +}; + +/* + * 0DD9 SINHALA VOWEL SIGN KOMBUVA 0DCF SINHALA VOWEL SIGN AELA-PILLA or + * 0DDF SINHALA VOWEL SIGN GAYANUKITTA + */ + +static const uint32_t pr29_11_1[] = { + 0x0DD9, 0 +}; + +static const uint32_t pr29_11_2[] = { + 0x0DCF, 0x0DDF, 0 +}; + +/* + * 1100..1112 HANGUL CHOSEONG KIYEOK..HIEUH [19 instances] + * 1161..1175 HANGUL JUNGSEONG A..I [21 instances] + */ + +static const uint32_t pr29_12_1[] = { + 0x1100, 0x1101, 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, + 0x1108, 0x1109, 0x110A, 0x110B, 0x110C, 0x110D, 0x110E, 0x110F, + 0x1110, 0x1111, 0x1112, 0 +}; + +static const uint32_t pr29_12_2[] = { + 0x1161, 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, + 0x1169, 0x116A, 0x116B, 0x116C, 0x116D, 0x116E, 0x116F, 0x1170, + 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0 +}; + + +/* + * [:HangulSyllableType=LV:] + * 11A8..11C2 HANGUL JONGSEONG KIYEOK..HIEUH [27 instances] + */ + +static const uint32_t pr29_13_1[] = { + 0xAC00, /* LV # Lo HANGUL SYLLABLE GA */ + 0xAC1C, /* LV # Lo HANGUL SYLLABLE GAE */ + 0xAC38, /* LV # Lo HANGUL SYLLABLE GYA */ + 0xAC54, /* LV # Lo HANGUL SYLLABLE GYAE */ + 0xAC70, /* LV # Lo HANGUL SYLLABLE GEO */ + 0xAC8C, /* LV # Lo HANGUL SYLLABLE GE */ + 0xACA8, /* LV # Lo HANGUL SYLLABLE GYEO */ + 0xACC4, /* LV # Lo HANGUL SYLLABLE GYE */ + 0xACE0, /* LV # Lo HANGUL SYLLABLE GO */ + 0xACFC, /* LV # Lo HANGUL SYLLABLE GWA */ + 0xAD18, /* LV # Lo HANGUL SYLLABLE GWAE */ + 0xAD34, /* LV # Lo HANGUL SYLLABLE GOE */ + 0xAD50, /* LV # Lo HANGUL SYLLABLE GYO */ + 0xAD6C, /* LV # Lo HANGUL SYLLABLE GU */ + 0xAD88, /* LV # Lo HANGUL SYLLABLE GWEO */ + 0xADA4, /* LV # Lo HANGUL SYLLABLE GWE */ + 0xADC0, /* LV # Lo HANGUL SYLLABLE GWI */ + 0xADDC, /* LV # Lo HANGUL SYLLABLE GYU */ + 0xADF8, /* LV # Lo HANGUL SYLLABLE GEU */ + 0xAE14, /* LV # Lo HANGUL SYLLABLE GYI */ + 0xAE30, /* LV # Lo HANGUL SYLLABLE GI */ + 0xAE4C, /* LV # Lo HANGUL SYLLABLE GGA */ + 0xAE68, /* LV # Lo HANGUL SYLLABLE GGAE */ + 0xAE84, /* LV # Lo HANGUL SYLLABLE GGYA */ + 0xAEA0, /* LV # Lo HANGUL SYLLABLE GGYAE */ + 0xAEBC, /* LV # Lo HANGUL SYLLABLE GGEO */ + 0xAED8, /* LV # Lo HANGUL SYLLABLE GGE */ + 0xAEF4, /* LV # Lo HANGUL SYLLABLE GGYEO */ + 0xAF10, /* LV # Lo HANGUL SYLLABLE GGYE */ + 0xAF2C, /* LV # Lo HANGUL SYLLABLE GGO */ + 0xAF48, /* LV # Lo HANGUL SYLLABLE GGWA */ + 0xAF64, /* LV # Lo HANGUL SYLLABLE GGWAE */ + 0xAF80, /* LV # Lo HANGUL SYLLABLE GGOE */ + 0xAF9C, /* LV # Lo HANGUL SYLLABLE GGYO */ + 0xAFB8, /* LV # Lo HANGUL SYLLABLE GGU */ + 0xAFD4, /* LV # Lo HANGUL SYLLABLE GGWEO */ + 0xAFF0, /* LV # Lo HANGUL SYLLABLE GGWE */ + 0xB00C, /* LV # Lo HANGUL SYLLABLE GGWI */ + 0xB028, /* LV # Lo HANGUL SYLLABLE GGYU */ + 0xB044, /* LV # Lo HANGUL SYLLABLE GGEU */ + 0xB060, /* LV # Lo HANGUL SYLLABLE GGYI */ + 0xB07C, /* LV # Lo HANGUL SYLLABLE GGI */ + 0xB098, /* LV # Lo HANGUL SYLLABLE NA */ + 0xB0B4, /* LV # Lo HANGUL SYLLABLE NAE */ + 0xB0D0, /* LV # Lo HANGUL SYLLABLE NYA */ + 0xB0EC, /* LV # Lo HANGUL SYLLABLE NYAE */ + 0xB108, /* LV # Lo HANGUL SYLLABLE NEO */ + 0xB124, /* LV # Lo HANGUL SYLLABLE NE */ + 0xB140, /* LV # Lo HANGUL SYLLABLE NYEO */ + 0xB15C, /* LV # Lo HANGUL SYLLABLE NYE */ + 0xB178, /* LV # Lo HANGUL SYLLABLE NO */ + 0xB194, /* LV # Lo HANGUL SYLLABLE NWA */ + 0xB1B0, /* LV # Lo HANGUL SYLLABLE NWAE */ + 0xB1CC, /* LV # Lo HANGUL SYLLABLE NOE */ + 0xB1E8, /* LV # Lo HANGUL SYLLABLE NYO */ + 0xB204, /* LV # Lo HANGUL SYLLABLE NU */ + 0xB220, /* LV # Lo HANGUL SYLLABLE NWEO */ + 0xB23C, /* LV # Lo HANGUL SYLLABLE NWE */ + 0xB258, /* LV # Lo HANGUL SYLLABLE NWI */ + 0xB274, /* LV # Lo HANGUL SYLLABLE NYU */ + 0xB290, /* LV # Lo HANGUL SYLLABLE NEU */ + 0xB2AC, /* LV # Lo HANGUL SYLLABLE NYI */ + 0xB2C8, /* LV # Lo HANGUL SYLLABLE NI */ + 0xB2E4, /* LV # Lo HANGUL SYLLABLE DA */ + 0xB300, /* LV # Lo HANGUL SYLLABLE DAE */ + 0xB31C, /* LV # Lo HANGUL SYLLABLE DYA */ + 0xB338, /* LV # Lo HANGUL SYLLABLE DYAE */ + 0xB354, /* LV # Lo HANGUL SYLLABLE DEO */ + 0xB370, /* LV # Lo HANGUL SYLLABLE DE */ + 0xB38C, /* LV # Lo HANGUL SYLLABLE DYEO */ + 0xB3A8, /* LV # Lo HANGUL SYLLABLE DYE */ + 0xB3C4, /* LV # Lo HANGUL SYLLABLE DO */ + 0xB3E0, /* LV # Lo HANGUL SYLLABLE DWA */ + 0xB3FC, /* LV # Lo HANGUL SYLLABLE DWAE */ + 0xB418, /* LV # Lo HANGUL SYLLABLE DOE */ + 0xB434, /* LV # Lo HANGUL SYLLABLE DYO */ + 0xB450, /* LV # Lo HANGUL SYLLABLE DU */ + 0xB46C, /* LV # Lo HANGUL SYLLABLE DWEO */ + 0xB488, /* LV # Lo HANGUL SYLLABLE DWE */ + 0xB4A4, /* LV # Lo HANGUL SYLLABLE DWI */ + 0xB4C0, /* LV # Lo HANGUL SYLLABLE DYU */ + 0xB4DC, /* LV # Lo HANGUL SYLLABLE DEU */ + 0xB4F8, /* LV # Lo HANGUL SYLLABLE DYI */ + 0xB514, /* LV # Lo HANGUL SYLLABLE DI */ + 0xB530, /* LV # Lo HANGUL SYLLABLE DDA */ + 0xB54C, /* LV # Lo HANGUL SYLLABLE DDAE */ + 0xB568, /* LV # Lo HANGUL SYLLABLE DDYA */ + 0xB584, /* LV # Lo HANGUL SYLLABLE DDYAE */ + 0xB5A0, /* LV # Lo HANGUL SYLLABLE DDEO */ + 0xB5BC, /* LV # Lo HANGUL SYLLABLE DDE */ + 0xB5D8, /* LV # Lo HANGUL SYLLABLE DDYEO */ + 0xB5F4, /* LV # Lo HANGUL SYLLABLE DDYE */ + 0xB610, /* LV # Lo HANGUL SYLLABLE DDO */ + 0xB62C, /* LV # Lo HANGUL SYLLABLE DDWA */ + 0xB648, /* LV # Lo HANGUL SYLLABLE DDWAE */ + 0xB664, /* LV # Lo HANGUL SYLLABLE DDOE */ + 0xB680, /* LV # Lo HANGUL SYLLABLE DDYO */ + 0xB69C, /* LV # Lo HANGUL SYLLABLE DDU */ + 0xB6B8, /* LV # Lo HANGUL SYLLABLE DDWEO */ + 0xB6D4, /* LV # Lo HANGUL SYLLABLE DDWE */ + 0xB6F0, /* LV # Lo HANGUL SYLLABLE DDWI */ + 0xB70C, /* LV # Lo HANGUL SYLLABLE DDYU */ + 0xB728, /* LV # Lo HANGUL SYLLABLE DDEU */ + 0xB744, /* LV # Lo HANGUL SYLLABLE DDYI */ + 0xB760, /* LV # Lo HANGUL SYLLABLE DDI */ + 0xB77C, /* LV # Lo HANGUL SYLLABLE RA */ + 0xB798, /* LV # Lo HANGUL SYLLABLE RAE */ + 0xB7B4, /* LV # Lo HANGUL SYLLABLE RYA */ + 0xB7D0, /* LV # Lo HANGUL SYLLABLE RYAE */ + 0xB7EC, /* LV # Lo HANGUL SYLLABLE REO */ + 0xB808, /* LV # Lo HANGUL SYLLABLE RE */ + 0xB824, /* LV # Lo HANGUL SYLLABLE RYEO */ + 0xB840, /* LV # Lo HANGUL SYLLABLE RYE */ + 0xB85C, /* LV # Lo HANGUL SYLLABLE RO */ + 0xB878, /* LV # Lo HANGUL SYLLABLE RWA */ + 0xB894, /* LV # Lo HANGUL SYLLABLE RWAE */ + 0xB8B0, /* LV # Lo HANGUL SYLLABLE ROE */ + 0xB8CC, /* LV # Lo HANGUL SYLLABLE RYO */ + 0xB8E8, /* LV # Lo HANGUL SYLLABLE RU */ + 0xB904, /* LV # Lo HANGUL SYLLABLE RWEO */ + 0xB920, /* LV # Lo HANGUL SYLLABLE RWE */ + 0xB93C, /* LV # Lo HANGUL SYLLABLE RWI */ + 0xB958, /* LV # Lo HANGUL SYLLABLE RYU */ + 0xB974, /* LV # Lo HANGUL SYLLABLE REU */ + 0xB990, /* LV # Lo HANGUL SYLLABLE RYI */ + 0xB9AC, /* LV # Lo HANGUL SYLLABLE RI */ + 0xB9C8, /* LV # Lo HANGUL SYLLABLE MA */ + 0xB9E4, /* LV # Lo HANGUL SYLLABLE MAE */ + 0xBA00, /* LV # Lo HANGUL SYLLABLE MYA */ + 0xBA1C, /* LV # Lo HANGUL SYLLABLE MYAE */ + 0xBA38, /* LV # Lo HANGUL SYLLABLE MEO */ + 0xBA54, /* LV # Lo HANGUL SYLLABLE ME */ + 0xBA70, /* LV # Lo HANGUL SYLLABLE MYEO */ + 0xBA8C, /* LV # Lo HANGUL SYLLABLE MYE */ + 0xBAA8, /* LV # Lo HANGUL SYLLABLE MO */ + 0xBAC4, /* LV # Lo HANGUL SYLLABLE MWA */ + 0xBAE0, /* LV # Lo HANGUL SYLLABLE MWAE */ + 0xBAFC, /* LV # Lo HANGUL SYLLABLE MOE */ + 0xBB18, /* LV # Lo HANGUL SYLLABLE MYO */ + 0xBB34, /* LV # Lo HANGUL SYLLABLE MU */ + 0xBB50, /* LV # Lo HANGUL SYLLABLE MWEO */ + 0xBB6C, /* LV # Lo HANGUL SYLLABLE MWE */ + 0xBB88, /* LV # Lo HANGUL SYLLABLE MWI */ + 0xBBA4, /* LV # Lo HANGUL SYLLABLE MYU */ + 0xBBC0, /* LV # Lo HANGUL SYLLABLE MEU */ + 0xBBDC, /* LV # Lo HANGUL SYLLABLE MYI */ + 0xBBF8, /* LV # Lo HANGUL SYLLABLE MI */ + 0xBC14, /* LV # Lo HANGUL SYLLABLE BA */ + 0xBC30, /* LV # Lo HANGUL SYLLABLE BAE */ + 0xBC4C, /* LV # Lo HANGUL SYLLABLE BYA */ + 0xBC68, /* LV # Lo HANGUL SYLLABLE BYAE */ + 0xBC84, /* LV # Lo HANGUL SYLLABLE BEO */ + 0xBCA0, /* LV # Lo HANGUL SYLLABLE BE */ + 0xBCBC, /* LV # Lo HANGUL SYLLABLE BYEO */ + 0xBCD8, /* LV # Lo HANGUL SYLLABLE BYE */ + 0xBCF4, /* LV # Lo HANGUL SYLLABLE BO */ + 0xBD10, /* LV # Lo HANGUL SYLLABLE BWA */ + 0xBD2C, /* LV # Lo HANGUL SYLLABLE BWAE */ + 0xBD48, /* LV # Lo HANGUL SYLLABLE BOE */ + 0xBD64, /* LV # Lo HANGUL SYLLABLE BYO */ + 0xBD80, /* LV # Lo HANGUL SYLLABLE BU */ + 0xBD9C, /* LV # Lo HANGUL SYLLABLE BWEO */ + 0xBDB8, /* LV # Lo HANGUL SYLLABLE BWE */ + 0xBDD4, /* LV # Lo HANGUL SYLLABLE BWI */ + 0xBDF0, /* LV # Lo HANGUL SYLLABLE BYU */ + 0xBE0C, /* LV # Lo HANGUL SYLLABLE BEU */ + 0xBE28, /* LV # Lo HANGUL SYLLABLE BYI */ + 0xBE44, /* LV # Lo HANGUL SYLLABLE BI */ + 0xBE60, /* LV # Lo HANGUL SYLLABLE BBA */ + 0xBE7C, /* LV # Lo HANGUL SYLLABLE BBAE */ + 0xBE98, /* LV # Lo HANGUL SYLLABLE BBYA */ + 0xBEB4, /* LV # Lo HANGUL SYLLABLE BBYAE */ + 0xBED0, /* LV # Lo HANGUL SYLLABLE BBEO */ + 0xBEEC, /* LV # Lo HANGUL SYLLABLE BBE */ + 0xBF08, /* LV # Lo HANGUL SYLLABLE BBYEO */ + 0xBF24, /* LV # Lo HANGUL SYLLABLE BBYE */ + 0xBF40, /* LV # Lo HANGUL SYLLABLE BBO */ + 0xBF5C, /* LV # Lo HANGUL SYLLABLE BBWA */ + 0xBF78, /* LV # Lo HANGUL SYLLABLE BBWAE */ + 0xBF94, /* LV # Lo HANGUL SYLLABLE BBOE */ + 0xBFB0, /* LV # Lo HANGUL SYLLABLE BBYO */ + 0xBFCC, /* LV # Lo HANGUL SYLLABLE BBU */ + 0xBFE8, /* LV # Lo HANGUL SYLLABLE BBWEO */ + 0xC004, /* LV # Lo HANGUL SYLLABLE BBWE */ + 0xC020, /* LV # Lo HANGUL SYLLABLE BBWI */ + 0xC03C, /* LV # Lo HANGUL SYLLABLE BBYU */ + 0xC058, /* LV # Lo HANGUL SYLLABLE BBEU */ + 0xC074, /* LV # Lo HANGUL SYLLABLE BBYI */ + 0xC090, /* LV # Lo HANGUL SYLLABLE BBI */ + 0xC0AC, /* LV # Lo HANGUL SYLLABLE SA */ + 0xC0C8, /* LV # Lo HANGUL SYLLABLE SAE */ + 0xC0E4, /* LV # Lo HANGUL SYLLABLE SYA */ + 0xC100, /* LV # Lo HANGUL SYLLABLE SYAE */ + 0xC11C, /* LV # Lo HANGUL SYLLABLE SEO */ + 0xC138, /* LV # Lo HANGUL SYLLABLE SE */ + 0xC154, /* LV # Lo HANGUL SYLLABLE SYEO */ + 0xC170, /* LV # Lo HANGUL SYLLABLE SYE */ + 0xC18C, /* LV # Lo HANGUL SYLLABLE SO */ + 0xC1A8, /* LV # Lo HANGUL SYLLABLE SWA */ + 0xC1C4, /* LV # Lo HANGUL SYLLABLE SWAE */ + 0xC1E0, /* LV # Lo HANGUL SYLLABLE SOE */ + 0xC1FC, /* LV # Lo HANGUL SYLLABLE SYO */ + 0xC218, /* LV # Lo HANGUL SYLLABLE SU */ + 0xC234, /* LV # Lo HANGUL SYLLABLE SWEO */ + 0xC250, /* LV # Lo HANGUL SYLLABLE SWE */ + 0xC26C, /* LV # Lo HANGUL SYLLABLE SWI */ + 0xC288, /* LV # Lo HANGUL SYLLABLE SYU */ + 0xC2A4, /* LV # Lo HANGUL SYLLABLE SEU */ + 0xC2C0, /* LV # Lo HANGUL SYLLABLE SYI */ + 0xC2DC, /* LV # Lo HANGUL SYLLABLE SI */ + 0xC2F8, /* LV # Lo HANGUL SYLLABLE SSA */ + 0xC314, /* LV # Lo HANGUL SYLLABLE SSAE */ + 0xC330, /* LV # Lo HANGUL SYLLABLE SSYA */ + 0xC34C, /* LV # Lo HANGUL SYLLABLE SSYAE */ + 0xC368, /* LV # Lo HANGUL SYLLABLE SSEO */ + 0xC384, /* LV # Lo HANGUL SYLLABLE SSE */ + 0xC3A0, /* LV # Lo HANGUL SYLLABLE SSYEO */ + 0xC3BC, /* LV # Lo HANGUL SYLLABLE SSYE */ + 0xC3D8, /* LV # Lo HANGUL SYLLABLE SSO */ + 0xC3F4, /* LV # Lo HANGUL SYLLABLE SSWA */ + 0xC410, /* LV # Lo HANGUL SYLLABLE SSWAE */ + 0xC42C, /* LV # Lo HANGUL SYLLABLE SSOE */ + 0xC448, /* LV # Lo HANGUL SYLLABLE SSYO */ + 0xC464, /* LV # Lo HANGUL SYLLABLE SSU */ + 0xC480, /* LV # Lo HANGUL SYLLABLE SSWEO */ + 0xC49C, /* LV # Lo HANGUL SYLLABLE SSWE */ + 0xC4B8, /* LV # Lo HANGUL SYLLABLE SSWI */ + 0xC4D4, /* LV # Lo HANGUL SYLLABLE SSYU */ + 0xC4F0, /* LV # Lo HANGUL SYLLABLE SSEU */ + 0xC50C, /* LV # Lo HANGUL SYLLABLE SSYI */ + 0xC528, /* LV # Lo HANGUL SYLLABLE SSI */ + 0xC544, /* LV # Lo HANGUL SYLLABLE A */ + 0xC560, /* LV # Lo HANGUL SYLLABLE AE */ + 0xC57C, /* LV # Lo HANGUL SYLLABLE YA */ + 0xC598, /* LV # Lo HANGUL SYLLABLE YAE */ + 0xC5B4, /* LV # Lo HANGUL SYLLABLE EO */ + 0xC5D0, /* LV # Lo HANGUL SYLLABLE E */ + 0xC5EC, /* LV # Lo HANGUL SYLLABLE YEO */ + 0xC608, /* LV # Lo HANGUL SYLLABLE YE */ + 0xC624, /* LV # Lo HANGUL SYLLABLE O */ + 0xC640, /* LV # Lo HANGUL SYLLABLE WA */ + 0xC65C, /* LV # Lo HANGUL SYLLABLE WAE */ + 0xC678, /* LV # Lo HANGUL SYLLABLE OE */ + 0xC694, /* LV # Lo HANGUL SYLLABLE YO */ + 0xC6B0, /* LV # Lo HANGUL SYLLABLE U */ + 0xC6CC, /* LV # Lo HANGUL SYLLABLE WEO */ + 0xC6E8, /* LV # Lo HANGUL SYLLABLE WE */ + 0xC704, /* LV # Lo HANGUL SYLLABLE WI */ + 0xC720, /* LV # Lo HANGUL SYLLABLE YU */ + 0xC73C, /* LV # Lo HANGUL SYLLABLE EU */ + 0xC758, /* LV # Lo HANGUL SYLLABLE YI */ + 0xC774, /* LV # Lo HANGUL SYLLABLE I */ + 0xC790, /* LV # Lo HANGUL SYLLABLE JA */ + 0xC7AC, /* LV # Lo HANGUL SYLLABLE JAE */ + 0xC7C8, /* LV # Lo HANGUL SYLLABLE JYA */ + 0xC7E4, /* LV # Lo HANGUL SYLLABLE JYAE */ + 0xC800, /* LV # Lo HANGUL SYLLABLE JEO */ + 0xC81C, /* LV # Lo HANGUL SYLLABLE JE */ + 0xC838, /* LV # Lo HANGUL SYLLABLE JYEO */ + 0xC854, /* LV # Lo HANGUL SYLLABLE JYE */ + 0xC870, /* LV # Lo HANGUL SYLLABLE JO */ + 0xC88C, /* LV # Lo HANGUL SYLLABLE JWA */ + 0xC8A8, /* LV # Lo HANGUL SYLLABLE JWAE */ + 0xC8C4, /* LV # Lo HANGUL SYLLABLE JOE */ + 0xC8E0, /* LV # Lo HANGUL SYLLABLE JYO */ + 0xC8FC, /* LV # Lo HANGUL SYLLABLE JU */ + 0xC918, /* LV # Lo HANGUL SYLLABLE JWEO */ + 0xC934, /* LV # Lo HANGUL SYLLABLE JWE */ + 0xC950, /* LV # Lo HANGUL SYLLABLE JWI */ + 0xC96C, /* LV # Lo HANGUL SYLLABLE JYU */ + 0xC988, /* LV # Lo HANGUL SYLLABLE JEU */ + 0xC9A4, /* LV # Lo HANGUL SYLLABLE JYI */ + 0xC9C0, /* LV # Lo HANGUL SYLLABLE JI */ + 0xC9DC, /* LV # Lo HANGUL SYLLABLE JJA */ + 0xC9F8, /* LV # Lo HANGUL SYLLABLE JJAE */ + 0xCA14, /* LV # Lo HANGUL SYLLABLE JJYA */ + 0xCA30, /* LV # Lo HANGUL SYLLABLE JJYAE */ + 0xCA4C, /* LV # Lo HANGUL SYLLABLE JJEO */ + 0xCA68, /* LV # Lo HANGUL SYLLABLE JJE */ + 0xCA84, /* LV # Lo HANGUL SYLLABLE JJYEO */ + 0xCAA0, /* LV # Lo HANGUL SYLLABLE JJYE */ + 0xCABC, /* LV # Lo HANGUL SYLLABLE JJO */ + 0xCAD8, /* LV # Lo HANGUL SYLLABLE JJWA */ + 0xCAF4, /* LV # Lo HANGUL SYLLABLE JJWAE */ + 0xCB10, /* LV # Lo HANGUL SYLLABLE JJOE */ + 0xCB2C, /* LV # Lo HANGUL SYLLABLE JJYO */ + 0xCB48, /* LV # Lo HANGUL SYLLABLE JJU */ + 0xCB64, /* LV # Lo HANGUL SYLLABLE JJWEO */ + 0xCB80, /* LV # Lo HANGUL SYLLABLE JJWE */ + 0xCB9C, /* LV # Lo HANGUL SYLLABLE JJWI */ + 0xCBB8, /* LV # Lo HANGUL SYLLABLE JJYU */ + 0xCBD4, /* LV # Lo HANGUL SYLLABLE JJEU */ + 0xCBF0, /* LV # Lo HANGUL SYLLABLE JJYI */ + 0xCC0C, /* LV # Lo HANGUL SYLLABLE JJI */ + 0xCC28, /* LV # Lo HANGUL SYLLABLE CA */ + 0xCC44, /* LV # Lo HANGUL SYLLABLE CAE */ + 0xCC60, /* LV # Lo HANGUL SYLLABLE CYA */ + 0xCC7C, /* LV # Lo HANGUL SYLLABLE CYAE */ + 0xCC98, /* LV # Lo HANGUL SYLLABLE CEO */ + 0xCCB4, /* LV # Lo HANGUL SYLLABLE CE */ + 0xCCD0, /* LV # Lo HANGUL SYLLABLE CYEO */ + 0xCCEC, /* LV # Lo HANGUL SYLLABLE CYE */ + 0xCD08, /* LV # Lo HANGUL SYLLABLE CO */ + 0xCD24, /* LV # Lo HANGUL SYLLABLE CWA */ + 0xCD40, /* LV # Lo HANGUL SYLLABLE CWAE */ + 0xCD5C, /* LV # Lo HANGUL SYLLABLE COE */ + 0xCD78, /* LV # Lo HANGUL SYLLABLE CYO */ + 0xCD94, /* LV # Lo HANGUL SYLLABLE CU */ + 0xCDB0, /* LV # Lo HANGUL SYLLABLE CWEO */ + 0xCDCC, /* LV # Lo HANGUL SYLLABLE CWE */ + 0xCDE8, /* LV # Lo HANGUL SYLLABLE CWI */ + 0xCE04, /* LV # Lo HANGUL SYLLABLE CYU */ + 0xCE20, /* LV # Lo HANGUL SYLLABLE CEU */ + 0xCE3C, /* LV # Lo HANGUL SYLLABLE CYI */ + 0xCE58, /* LV # Lo HANGUL SYLLABLE CI */ + 0xCE74, /* LV # Lo HANGUL SYLLABLE KA */ + 0xCE90, /* LV # Lo HANGUL SYLLABLE KAE */ + 0xCEAC, /* LV # Lo HANGUL SYLLABLE KYA */ + 0xCEC8, /* LV # Lo HANGUL SYLLABLE KYAE */ + 0xCEE4, /* LV # Lo HANGUL SYLLABLE KEO */ + 0xCF00, /* LV # Lo HANGUL SYLLABLE KE */ + 0xCF1C, /* LV # Lo HANGUL SYLLABLE KYEO */ + 0xCF38, /* LV # Lo HANGUL SYLLABLE KYE */ + 0xCF54, /* LV # Lo HANGUL SYLLABLE KO */ + 0xCF70, /* LV # Lo HANGUL SYLLABLE KWA */ + 0xCF8C, /* LV # Lo HANGUL SYLLABLE KWAE */ + 0xCFA8, /* LV # Lo HANGUL SYLLABLE KOE */ + 0xCFC4, /* LV # Lo HANGUL SYLLABLE KYO */ + 0xCFE0, /* LV # Lo HANGUL SYLLABLE KU */ + 0xCFFC, /* LV # Lo HANGUL SYLLABLE KWEO */ + 0xD018, /* LV # Lo HANGUL SYLLABLE KWE */ + 0xD034, /* LV # Lo HANGUL SYLLABLE KWI */ + 0xD050, /* LV # Lo HANGUL SYLLABLE KYU */ + 0xD06C, /* LV # Lo HANGUL SYLLABLE KEU */ + 0xD088, /* LV # Lo HANGUL SYLLABLE KYI */ + 0xD0A4, /* LV # Lo HANGUL SYLLABLE KI */ + 0xD0C0, /* LV # Lo HANGUL SYLLABLE TA */ + 0xD0DC, /* LV # Lo HANGUL SYLLABLE TAE */ + 0xD0F8, /* LV # Lo HANGUL SYLLABLE TYA */ + 0xD114, /* LV # Lo HANGUL SYLLABLE TYAE */ + 0xD130, /* LV # Lo HANGUL SYLLABLE TEO */ + 0xD14C, /* LV # Lo HANGUL SYLLABLE TE */ + 0xD168, /* LV # Lo HANGUL SYLLABLE TYEO */ + 0xD184, /* LV # Lo HANGUL SYLLABLE TYE */ + 0xD1A0, /* LV # Lo HANGUL SYLLABLE TO */ + 0xD1BC, /* LV # Lo HANGUL SYLLABLE TWA */ + 0xD1D8, /* LV # Lo HANGUL SYLLABLE TWAE */ + 0xD1F4, /* LV # Lo HANGUL SYLLABLE TOE */ + 0xD210, /* LV # Lo HANGUL SYLLABLE TYO */ + 0xD22C, /* LV # Lo HANGUL SYLLABLE TU */ + 0xD248, /* LV # Lo HANGUL SYLLABLE TWEO */ + 0xD264, /* LV # Lo HANGUL SYLLABLE TWE */ + 0xD280, /* LV # Lo HANGUL SYLLABLE TWI */ + 0xD29C, /* LV # Lo HANGUL SYLLABLE TYU */ + 0xD2B8, /* LV # Lo HANGUL SYLLABLE TEU */ + 0xD2D4, /* LV # Lo HANGUL SYLLABLE TYI */ + 0xD2F0, /* LV # Lo HANGUL SYLLABLE TI */ + 0xD30C, /* LV # Lo HANGUL SYLLABLE PA */ + 0xD328, /* LV # Lo HANGUL SYLLABLE PAE */ + 0xD344, /* LV # Lo HANGUL SYLLABLE PYA */ + 0xD360, /* LV # Lo HANGUL SYLLABLE PYAE */ + 0xD37C, /* LV # Lo HANGUL SYLLABLE PEO */ + 0xD398, /* LV # Lo HANGUL SYLLABLE PE */ + 0xD3B4, /* LV # Lo HANGUL SYLLABLE PYEO */ + 0xD3D0, /* LV # Lo HANGUL SYLLABLE PYE */ + 0xD3EC, /* LV # Lo HANGUL SYLLABLE PO */ + 0xD408, /* LV # Lo HANGUL SYLLABLE PWA */ + 0xD424, /* LV # Lo HANGUL SYLLABLE PWAE */ + 0xD440, /* LV # Lo HANGUL SYLLABLE POE */ + 0xD45C, /* LV # Lo HANGUL SYLLABLE PYO */ + 0xD478, /* LV # Lo HANGUL SYLLABLE PU */ + 0xD494, /* LV # Lo HANGUL SYLLABLE PWEO */ + 0xD4B0, /* LV # Lo HANGUL SYLLABLE PWE */ + 0xD4CC, /* LV # Lo HANGUL SYLLABLE PWI */ + 0xD4E8, /* LV # Lo HANGUL SYLLABLE PYU */ + 0xD504, /* LV # Lo HANGUL SYLLABLE PEU */ + 0xD520, /* LV # Lo HANGUL SYLLABLE PYI */ + 0xD53C, /* LV # Lo HANGUL SYLLABLE PI */ + 0xD558, /* LV # Lo HANGUL SYLLABLE HA */ + 0xD574, /* LV # Lo HANGUL SYLLABLE HAE */ + 0xD590, /* LV # Lo HANGUL SYLLABLE HYA */ + 0xD5AC, /* LV # Lo HANGUL SYLLABLE HYAE */ + 0xD5C8, /* LV # Lo HANGUL SYLLABLE HEO */ + 0xD5E4, /* LV # Lo HANGUL SYLLABLE HE */ + 0xD600, /* LV # Lo HANGUL SYLLABLE HYEO */ + 0xD61C, /* LV # Lo HANGUL SYLLABLE HYE */ + 0xD638, /* LV # Lo HANGUL SYLLABLE HO */ + 0xD654, /* LV # Lo HANGUL SYLLABLE HWA */ + 0xD670, /* LV # Lo HANGUL SYLLABLE HWAE */ + 0xD68C, /* LV # Lo HANGUL SYLLABLE HOE */ + 0xD6A8, /* LV # Lo HANGUL SYLLABLE HYO */ + 0xD6C4, /* LV # Lo HANGUL SYLLABLE HU */ + 0xD6E0, /* LV # Lo HANGUL SYLLABLE HWEO */ + 0xD6FC, /* LV # Lo HANGUL SYLLABLE HWE */ + 0xD718, /* LV # Lo HANGUL SYLLABLE HWI */ + 0xD734, /* LV # Lo HANGUL SYLLABLE HYU */ + 0xD750, /* LV # Lo HANGUL SYLLABLE HEU */ + 0xD76C, /* LV # Lo HANGUL SYLLABLE HYI */ + 0xD788, /* LV # Lo HANGUL SYLLABLE HI */ + 0 +}; + +static const uint32_t pr29_13_2[] = { + 0x11A8, 0x11A9, 0x11AA, 0x11AB, 0x11AC, 0x11AD, 0x11AE, 0x11AF, + 0x11B0, 0x11B1, 0x11B2, 0x11B3, 0x11B4, 0x11B5, 0x11B6, 0x11B7, + 0x11B8, 0x11B9, 0x11BA, 0x11BB, 0x11BC, 0x11BD, 0x11BE, 0x11BF, + 0x11C0, 0x11C1, 0x11C2, 0 +}; + +typedef struct +{ + const uint32_t *first; + const uint32_t *last; +} Pr29; + +static const Pr29 pr29[] = { + {&pr29_1_1[0], &pr29_1_2[0]}, + {&pr29_2_1[0], &pr29_2_2[0]}, + {&pr29_3_1[0], &pr29_3_2[0]}, + {&pr29_4_1[0], &pr29_4_2[0]}, + {&pr29_5_1[0], &pr29_5_2[0]}, + {&pr29_6_1[0], &pr29_6_2[0]}, + {&pr29_7_1[0], &pr29_7_2[0]}, + {&pr29_8_1[0], &pr29_8_2[0]}, + {&pr29_9_1[0], &pr29_9_2[0]}, + {&pr29_10_1[0], &pr29_10_2[0]}, + {&pr29_11_1[0], &pr29_11_2[0]}, + {&pr29_12_1[0], &pr29_12_2[0]}, + {&pr29_13_1[0], &pr29_13_2[0]}, + {NULL, NULL} +}; + +static size_t +first_column (uint32_t c) +{ + size_t i, j; + + for (i = 0; pr29[i].first; i++) + for (j = 0; pr29[i].first[j]; j++) + if (c == pr29[i].first[j]) + return i + 1; + + return 0; +} + +static int +in_last_column_row (uint32_t c, size_t row) +{ + size_t i; + + for (i = 0; pr29[row - 1].last[i]; i++) + if (c == pr29[row - 1].last[i]) + return 1; + + return 0; +} + +static size_t +combinationclass (uint32_t c) +{ + size_t i; + + for (i = 0; nzcc[i]; i++) + if (c == nzcc[i]) + return i + 1; + + return 0; +} + +/** + * pr29_4 - check if input trigger Unicode normalization bugs + * @in: input array with unicode code points. + * @len: length of input array with unicode code points. + * + * Check the input to see if it may be normalized into different + * strings by different NFKC implementations, due to an anomaly in the + * NFKC specifications. + * + * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success, + * and %PR29_PROBLEM if the input sequence is a "problem sequence" + * (i.e., may be normalized into different strings by different + * implementations). + **/ +int +pr29_4 (const uint32_t * in, size_t len) +{ + size_t i, j, k, row; + + /* + * The problem sequence are of the form: + * + * first_character intervening_character+ last_character + * + * where the first_character and last_character come from the same + * row in the following table, and there is at least one + * intervening_character with non-zero Canonical Combining + * Class. (The '+' above means one or more occurrences.) + * + */ + + for (i = 0; i < len; i++) + if ((row = first_column (in[i])) > 0) + for (j = i + 1; j < len; j++) + if (combinationclass (in[j])) + for (k = j + 1; k < len; j++) + if (in_last_column_row (in[k], row)) + return PR29_PROBLEM; + + return PR29_SUCCESS; +} + +/** + * pr29_4z - check if input trigger Unicode normalization bugs + * @in: zero terminated array of Unicode code points. + * + * Check the input to see if it may be normalized into different + * strings by different NFKC implementations, due to an anomaly in the + * NFKC specifications. + * + * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success, + * and %PR29_PROBLEM if the input sequence is a "problem sequence" + * (i.e., may be normalized into different strings by different + * implementations). + **/ +int +pr29_4z (const uint32_t * in) +{ + size_t len; + + for (len = 0; in[len]; len++) + ; + + return pr29_4 (in, len); +} + +/** + * pr29_8z - check if input trigger Unicode normalization bugs + * @in: zero terminated input UTF-8 string. + * + * Check the input to see if it may be normalized into different + * strings by different NFKC implementations, due to an anomaly in the + * NFKC specifications. + * + * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success, + * and %PR29_PROBLEM if the input sequence is a "problem sequence" + * (i.e., may be normalized into different strings by different + * implementations), or %PR29_STRINGPREP_ERROR if there was a + * problem converting the string from UTF-8 to UCS-4. + **/ +int +pr29_8z (const char *in) +{ + uint32_t *p; + int rc; + + p = stringprep_utf8_to_ucs4 (in, -1, NULL); + if (!p) + return PR29_STRINGPREP_ERROR; + + rc = pr29_4z (p); + + free (p); + + return rc; +} + +/** + * Pr29_rc: + * @PR29_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * @PR29_PROBLEM: A problem sequence was encountered. + * @PR29_STRINGPREP_ERROR: The character set conversion failed (only + * for pr29_8() and pr29_8z()). + * + * Enumerated return codes for pr29_4(), pr29_4z(), pr29_8z(). The + * value 0 is guaranteed to always correspond to success. + */ diff --git a/lib/pr29.h b/lib/pr29.h new file mode 100644 index 0000000..78d63e6 --- /dev/null +++ b/lib/pr29.h @@ -0,0 +1,65 @@ +/* pr29.h --- Detect strings which are non-idempotent under NFKC. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef PR29_H +# define PR29_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +# ifdef __cplusplus +extern "C" +{ +# endif + + /* Get size_t. */ +# include <stdlib.h> + + /* Get uint32_t. */ +# include <idn-int.h> + + /* Error codes. */ + typedef enum + { + PR29_SUCCESS = 0, + PR29_PROBLEM = 1, /* String is a problem sequence. */ + PR29_STRINGPREP_ERROR = 2 /* Charset conversion failed (p29_8*). */ + } Pr29_rc; + + extern IDNAPI const char *pr29_strerror (Pr29_rc rc); + + extern IDNAPI int pr29_4 (const uint32_t * in, size_t len); + extern IDNAPI int pr29_4z (const uint32_t * in); + extern IDNAPI int pr29_8z (const char *in); + +# ifdef __cplusplus +} +# endif +#endif /* PR29_H */ diff --git a/lib/profiles.c b/lib/profiles.c new file mode 100644 index 0000000..f4c4d9d --- /dev/null +++ b/lib/profiles.c @@ -0,0 +1,314 @@ +/* profiles.c --- Definitions of stringprep profiles. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include <config.h> +#include "stringprep.h" + +const Stringprep_profiles stringprep_profiles[] = { + {"Nameprep", stringprep_nameprep}, + {"KRBprep", stringprep_kerberos5}, /* Deprecate? */ + {"Nodeprep", stringprep_xmpp_nodeprep}, + {"Resourceprep", stringprep_xmpp_resourceprep}, + {"plain", stringprep_plain}, /* sasl-anon-00. */ + {"trace", stringprep_trace}, /* sasl-anon-01,02,03. */ + {"SASLprep", stringprep_saslprep}, + {"ISCSIprep", stringprep_iscsi}, /* Obsolete. */ + {"iSCSI", stringprep_iscsi}, /* IANA. */ + {NULL, NULL} +}; + +const Stringprep_profile stringprep_nameprep[] = { + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI, + stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; + +const Stringprep_profile stringprep_kerberos5[] = { + /* XXX this is likely to be wrong as the specification is + a rough draft. */ + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_3}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI, + stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; + +const Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[] = { + {0x000022}, /* #x22 (") */ + {0x000026}, /* #x26 (&) */ + {0x000027}, /* #x27 (') */ + {0x00002F}, /* #x2F (/) */ + {0x00003A}, /* #x3A (:) */ + {0x00003C}, /* #x3C (<) */ + {0x00003E}, /* #x3E (>) */ + {0x000040}, /* #x40 (@) */ + {0} +}; + +const Stringprep_profile stringprep_xmpp_nodeprep[] = { + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_xmpp_nodeprep_prohibit}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; + +const Stringprep_profile stringprep_xmpp_resourceprep[] = { + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; + +const Stringprep_profile stringprep_plain[] = { + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2}, + {0} +}; + +const Stringprep_profile stringprep_trace[] = { + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2}, + {0} +}; + +const Stringprep_table_element stringprep_iscsi_prohibit[] = { + /* NB, since start == 0, we must have that end != 0 for the + end-of-table logic to work. */ + {0x0000, 1}, /* [ASCII CONTROL CHARACTERS and SPACE through ,] */ + {0x0001}, + {0x0002}, + {0x0003}, + {0x0004}, + {0x0005}, + {0x0006}, + {0x0007}, + {0x0008}, + {0x0009}, + {0x000A}, + {0x000B}, + {0x000C}, + {0x000D}, + {0x000E}, + {0x000F}, + {0x0010}, + {0x0011}, + {0x0012}, + {0x0013}, + {0x0014}, + {0x0015}, + {0x0016}, + {0x0017}, + {0x0018}, + {0x0019}, + {0x001A}, + {0x001B}, + {0x001C}, + {0x001D}, + {0x001E}, + {0x001F}, + {0x0020}, + {0x0021}, + {0x0022}, + {0x0023}, + {0x0024}, + {0x0025}, + {0x0026}, + {0x0027}, + {0x0028}, + {0x0029}, + {0x002A}, + {0x002B}, + {0x002C}, + {0x002F}, /* [ASCII /] */ + {0x003B}, /* [ASCII ; through @] */ + {0x003C}, + {0x003D}, + {0x003E}, + {0x003F}, + {0x0040}, + {0x005B}, /* [ASCII [ through `] */ + {0x005C}, + {0x005D}, + {0x005E}, + {0x005F}, + {0x0060}, + {0x007B}, /* [ASCII { through DEL] */ + {0x007C}, + {0x007D}, + {0x007E}, + {0x007F}, + {0x3002}, /* ideographic full stop */ + {0} +}; + +const Stringprep_profile stringprep_iscsi[] = { + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_iscsi_prohibit}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; + +const Stringprep_table_element stringprep_saslprep_space_map[] = { + {0x0000A0, 0, {0x0020}}, /* 00A0; NO-BREAK SPACE */ + {0x001680, 0, {0x0020}}, /* 1680; OGHAM SPACE MARK */ + {0x002000, 0, {0x0020}}, /* 2000; EN QUAD */ + {0x002001, 0, {0x0020}}, /* 2001; EM QUAD */ + {0x002002, 0, {0x0020}}, /* 2002; EN SPACE */ + {0x002003, 0, {0x0020}}, /* 2003; EM SPACE */ + {0x002004, 0, {0x0020}}, /* 2004; THREE-PER-EM SPACE */ + {0x002005, 0, {0x0020}}, /* 2005; FOUR-PER-EM SPACE */ + {0x002006, 0, {0x0020}}, /* 2006; SIX-PER-EM SPACE */ + {0x002007, 0, {0x0020}}, /* 2007; FIGURE SPACE */ + {0x002008, 0, {0x0020}}, /* 2008; PUNCTUATION SPACE */ + {0x002009, 0, {0x0020}}, /* 2009; THIN SPACE */ + {0x00200A, 0, {0x0020}}, /* 200A; HAIR SPACE */ + {0x00200B, 0, {0x0020}}, /* 200B; ZERO WIDTH SPACE */ + {0x00202F, 0, {0x0020}}, /* 202F; NARROW NO-BREAK SPACE */ + {0x00205F, 0, {0x0020}}, /* 205F; MEDIUM MATHEMATICAL SPACE */ + {0x003000, 0, {0x0020}}, /* 3000; IDEOGRAPHIC SPACE */ + {0} +}; + +const Stringprep_profile stringprep_saslprep[] = { + {STRINGPREP_MAP_TABLE, 0, stringprep_saslprep_space_map}, + {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1}, + {STRINGPREP_NFKC, 0, 0}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9}, + {STRINGPREP_BIDI, 0, 0}, + {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8}, + {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1}, + {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2}, + {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED, + stringprep_rfc3454_A_1}, + {0} +}; diff --git a/lib/punycode.c b/lib/punycode.c new file mode 100644 index 0000000..987767c --- /dev/null +++ b/lib/punycode.c @@ -0,0 +1,457 @@ +/* punycode.c --- Implementation of punycode used to ASCII encode IDN's. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +/* + * This file is derived from RFC 3492bis written by Adam M. Costello. + * + * Disclaimer and license: Regarding this entire document or any + * portion of it (including the pseudocode and C code), the author + * makes no guarantees and is not responsible for any damage resulting + * from its use. The author grants irrevocable permission to anyone + * to use, modify, and distribute it in any way that does not diminish + * the rights of anyone else to use, modify, and distribute it, + * provided that redistributed derivative works do not contain + * misleading author or version information. Derivative works need + * not be licensed under similar terms. + * + * Copyright (C) The Internet Society (2003). All Rights Reserved. + * + * This document and translations of it may be copied and furnished to + * others, and derivative works that comment on or otherwise explain it + * or assist in its implementation may be prepared, copied, published + * and distributed, in whole or in part, without restriction of any + * kind, provided that the above copyright notice and this paragraph are + * included on all such copies and derivative works. However, this + * document itself may not be modified in any way, such as by removing + * the copyright notice or references to the Internet Society or other + * Internet organizations, except as needed for the purpose of + * developing Internet standards in which case the procedures for + * copyrights defined in the Internet Standards process must be + * followed, or as required to translate it into languages other than + * English. + * + * The limited permissions granted above are perpetual and will not be + * revoked by the Internet Society or its successors or assigns. + * + * This document and the information contained herein is provided on an + * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +#include <config.h> +#include <string.h> + +#include "punycode.h" + +/*** Bootstring parameters for Punycode ***/ + +enum +{ base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700, + initial_bias = 72, initial_n = 0x80, delimiter = 0x2D +}; + +/* basic(cp) tests whether cp is a basic code point: */ +#define basic(cp) ((punycode_uint)(cp) < 0x80) + +/* delim(cp) tests whether cp is a delimiter: */ +#define delim(cp) ((cp) == delimiter) + +/* decode_digit(cp) returns the numeric value of a basic code */ +/* point (for use in representing integers) in the range 0 to */ +/* base-1, or base if cp does not represent a value. */ + +static punycode_uint +decode_digit (punycode_uint cp) +{ + return cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 : + cp - 97 < 26 ? cp - 97 : base; +} + +/* encode_digit(d,flag) returns the basic code point whose value */ +/* (when used for representing integers) is d, which needs to be in */ +/* the range 0 to base-1. The lowercase form is used unless flag is */ +/* nonzero, in which case the uppercase form is used. The behavior */ +/* is undefined if flag is nonzero and digit d has no uppercase form. */ + +static char +encode_digit (punycode_uint d, int flag) +{ + return d + 22 + 75 * (d < 26) - ((flag != 0) << 5); + /* 0..25 map to ASCII a..z or A..Z */ + /* 26..35 map to ASCII 0..9 */ +} + +/* flagged(bcp) tests whether a basic code point is flagged */ +/* (uppercase). The behavior is undefined if bcp is not a */ +/* basic code point. */ + +#define flagged(bcp) ((punycode_uint)(bcp) - 65 < 26) + +/* encode_basic(bcp,flag) forces a basic code point to lowercase */ +/* if flag is zero, uppercase if flag is nonzero, and returns */ +/* the resulting code point. The code point is unchanged if it */ +/* is caseless. The behavior is undefined if bcp is not a basic */ +/* code point. */ + +static char +encode_basic (punycode_uint bcp, int flag) +{ + bcp -= (bcp - 97 < 26) << 5; + return bcp + ((!flag && (bcp - 65 < 26)) << 5); +} + +/*** Platform-specific constants ***/ + +/* maxint is the maximum value of a punycode_uint variable: */ +static const punycode_uint maxint = -1; +/* Because maxint is unsigned, -1 becomes the maximum value. */ + +/*** Bias adaptation function ***/ + +static punycode_uint +adapt (punycode_uint delta, punycode_uint numpoints, int firsttime) +{ + punycode_uint k; + + delta = firsttime ? delta / damp : delta >> 1; + /* delta >> 1 is a faster way of doing delta / 2 */ + delta += delta / numpoints; + + for (k = 0; delta > ((base - tmin) * tmax) / 2; k += base) + { + delta /= base - tmin; + } + + return k + (base - tmin + 1) * delta / (delta + skew); +} + +/*** Main encode function ***/ + +/** + * punycode_encode - encode Unicode to Punycode + * @input_length: The number of code points in the @input array and + * the number of flags in the @case_flags array. + * @input: An array of code points. They are presumed to be Unicode + * code points, but that is not strictly REQUIRED. The array + * contains code points, not code units. UTF-16 uses code units + * D800 through DFFF to refer to code points 10000..10FFFF. The + * code points D800..DFFF do not occur in any valid Unicode string. + * The code points that can occur in Unicode strings (0..D7FF and + * E000..10FFFF) are also called Unicode scalar values. + * @case_flags: A %NULL pointer or an array of boolean values parallel + * to the @input array. Nonzero (true, flagged) suggests that the + * corresponding Unicode character be forced to uppercase after + * being decoded (if possible), and zero (false, unflagged) suggests + * that it be forced to lowercase (if possible). ASCII code points + * (0..7F) are encoded literally, except that ASCII letters are + * forced to uppercase or lowercase according to the corresponding + * case flags. If @case_flags is a %NULL pointer then ASCII letters + * are left as they are, and other code points are treated as + * unflagged. + * @output_length: The caller passes in the maximum number of ASCII + * code points that it can receive. On successful return it will + * contain the number of ASCII code points actually output. + * @output: An array of ASCII code points. It is *not* + * null-terminated; it will contain zeros if and only if the @input + * contains zeros. (Of course the caller can leave room for a + * terminator and add one if needed.) + * + * Converts a sequence of code points (presumed to be Unicode code + * points) to Punycode. + * + * Return value: The return value can be any of the #Punycode_status + * values defined above except %PUNYCODE_BAD_INPUT. If not + * %PUNYCODE_SUCCESS, then @output_size and @output might contain + * garbage. + **/ +int +punycode_encode (size_t input_length, + const punycode_uint input[], + const unsigned char case_flags[], + size_t * output_length, char output[]) +{ + punycode_uint input_len, n, delta, h, b, bias, j, m, q, k, t; + size_t out, max_out; + + /* The Punycode spec assumes that the input length is the same type */ + /* of integer as a code point, so we need to convert the size_t to */ + /* a punycode_uint, which could overflow. */ + + if (input_length > maxint) + return punycode_overflow; + input_len = (punycode_uint) input_length; + + /* Initialize the state: */ + + n = initial_n; + delta = 0; + out = 0; + max_out = *output_length; + bias = initial_bias; + + /* Handle the basic code points: */ + + for (j = 0; j < input_len; ++j) + { + if (basic (input[j])) + { + if (max_out - out < 2) + return punycode_big_output; + output[out++] = case_flags ? + encode_basic (input[j], case_flags[j]) : (char) input[j]; + } + /* else if (input[j] < n) return punycode_bad_input; */ + /* (not needed for Punycode with unsigned code points) */ + } + + h = b = (punycode_uint) out; + /* cannot overflow because out <= input_len <= maxint */ + + /* h is the number of code points that have been handled, b is the */ + /* number of basic code points, and out is the number of ASCII code */ + /* points that have been output. */ + + if (b > 0) + output[out++] = delimiter; + + /* Main encoding loop: */ + + while (h < input_len) + { + /* All non-basic code points < n have been */ + /* handled already. Find the next larger one: */ + + for (m = maxint, j = 0; j < input_len; ++j) + { + /* if (basic(input[j])) continue; */ + /* (not needed for Punycode) */ + if (input[j] >= n && input[j] < m) + m = input[j]; + } + + /* Increase delta enough to advance the decoder's */ + /* <n,i> state to <m,0>, but guard against overflow: */ + + if (m - n > (maxint - delta) / (h + 1)) + return punycode_overflow; + delta += (m - n) * (h + 1); + n = m; + + for (j = 0; j < input_len; ++j) + { + /* Punycode does not need to check whether input[j] is basic: */ + if (input[j] < n /* || basic(input[j]) */ ) + { + if (++delta == 0) + return punycode_overflow; + } + + if (input[j] == n) + { + /* Represent delta as a generalized variable-length integer: */ + + for (q = delta, k = base;; k += base) + { + if (out >= max_out) + return punycode_big_output; + t = k <= bias /* + tmin */ ? tmin : /* +tmin not needed */ + k >= bias + tmax ? tmax : k - bias; + if (q < t) + break; + output[out++] = encode_digit (t + (q - t) % (base - t), 0); + q = (q - t) / (base - t); + } + + output[out++] = encode_digit (q, case_flags && case_flags[j]); + bias = adapt (delta, h + 1, h == b); + delta = 0; + ++h; + } + } + + ++delta, ++n; + } + + *output_length = out; + return punycode_success; +} + +/*** Main decode function ***/ + +/** + * punycode_decode - decode Punycode to Unicode + * @input_length: The number of ASCII code points in the @input array. + * @input: An array of ASCII code points (0..7F). + * @output_length: The caller passes in the maximum number of code + * points that it can receive into the @output array (which is also + * the maximum number of flags that it can receive into the + * @case_flags array, if @case_flags is not a %NULL pointer). On + * successful return it will contain the number of code points + * actually output (which is also the number of flags actually + * output, if case_flags is not a null pointer). The decoder will + * never need to output more code points than the number of ASCII + * code points in the input, because of the way the encoding is + * defined. The number of code points output cannot exceed the + * maximum possible value of a punycode_uint, even if the supplied + * @output_length is greater than that. + * @output: An array of code points like the input argument of + * punycode_encode() (see above). + * @case_flags: A %NULL pointer (if the flags are not needed by the + * caller) or an array of boolean values parallel to the @output + * array. Nonzero (true, flagged) suggests that the corresponding + * Unicode character be forced to uppercase by the caller (if + * possible), and zero (false, unflagged) suggests that it be forced + * to lowercase (if possible). ASCII code points (0..7F) are output + * already in the proper case, but their flags will be set + * appropriately so that applying the flags would be harmless. + * + * Converts Punycode to a sequence of code points (presumed to be + * Unicode code points). + * + * Return value: The return value can be any of the #Punycode_status + * values defined above. If not %PUNYCODE_SUCCESS, then + * @output_length, @output, and @case_flags might contain garbage. + * + **/ +int +punycode_decode (size_t input_length, + const char input[], + size_t * output_length, + punycode_uint output[], unsigned char case_flags[]) +{ + punycode_uint n, out, i, max_out, bias, oldi, w, k, digit, t; + size_t b, j, in; + + /* Initialize the state: */ + + n = initial_n; + out = i = 0; + max_out = *output_length > maxint ? maxint + : (punycode_uint) * output_length; + bias = initial_bias; + + /* Handle the basic code points: Let b be the number of input code */ + /* points before the last delimiter, or 0 if there is none, then */ + /* copy the first b code points to the output. */ + + for (b = j = 0; j < input_length; ++j) + if (delim (input[j])) + b = j; + if (b > max_out) + return punycode_big_output; + + for (j = 0; j < b; ++j) + { + if (case_flags) + case_flags[out] = flagged (input[j]); + if (!basic (input[j])) + return punycode_bad_input; + output[out++] = input[j]; + } + + /* Main decoding loop: Start just after the last delimiter if any */ + /* basic code points were copied; start at the beginning otherwise. */ + + for (in = b > 0 ? b + 1 : 0; in < input_length; ++out) + { + + /* in is the index of the next ASCII code point to be consumed, */ + /* and out is the number of code points in the output array. */ + + /* Decode a generalized variable-length integer into delta, */ + /* which gets added to i. The overflow checking is easier */ + /* if we increase i as we go, then subtract off its starting */ + /* value at the end to obtain delta. */ + + for (oldi = i, w = 1, k = base;; k += base) + { + if (in >= input_length) + return punycode_bad_input; + digit = decode_digit (input[in++]); + if (digit >= base) + return punycode_bad_input; + if (digit > (maxint - i) / w) + return punycode_overflow; + i += digit * w; + t = k <= bias /* + tmin */ ? tmin : /* +tmin not needed */ + k >= bias + tmax ? tmax : k - bias; + if (digit < t) + break; + if (w > maxint / (base - t)) + return punycode_overflow; + w *= (base - t); + } + + bias = adapt (i - oldi, out + 1, oldi == 0); + + /* i was supposed to wrap around from out+1 to 0, */ + /* incrementing n each time, so we'll fix that now: */ + + if (i / (out + 1) > maxint - n) + return punycode_overflow; + n += i / (out + 1); + i %= (out + 1); + + /* Insert n at position i of the output: */ + + /* not needed for Punycode: */ + /* if (basic(n)) return punycode_invalid_input; */ + if (out >= max_out) + return punycode_big_output; + + if (case_flags) + { + memmove (case_flags + i + 1, case_flags + i, out - i); + /* Case of last ASCII code point determines case flag: */ + case_flags[i] = flagged (input[in - 1]); + } + + memmove (output + i + 1, output + i, (out - i) * sizeof *output); + output[i++] = n; + } + + *output_length = (size_t) out; + /* cannot overflow because out <= old value of *output_length */ + return punycode_success; +} + +/** + * punycode_uint + * + * Unicode code point data type, this is always a 32 bit unsigned + * integer. + */ + +/** + * Punycode_status + * @PUNYCODE_SUCCESS: Successful operation. This value is guaranteed + * to always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * @PUNYCODE_BAD_INPUT: Input is invalid. + * @PUNYCODE_BIG_OUTPUT: Output would exceed the space provided. + * @PUNYCODE_OVERFLOW: Input needs wider integers to process. + * + * Enumerated return codes of punycode_encode() and punycode_decode(). + * The value 0 is guaranteed to always correspond to success. + */ diff --git a/lib/punycode.h b/lib/punycode.h new file mode 100644 index 0000000..61b1b72 --- /dev/null +++ b/lib/punycode.h @@ -0,0 +1,230 @@ +/* punycode.h --- Declarations for punycode functions. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +/* + * This file is derived from RFC 3492bis written by Adam M. Costello. + * + * Disclaimer and license: Regarding this entire document or any + * portion of it (including the pseudocode and C code), the author + * makes no guarantees and is not responsible for any damage resulting + * from its use. The author grants irrevocable permission to anyone + * to use, modify, and distribute it in any way that does not diminish + * the rights of anyone else to use, modify, and distribute it, + * provided that redistributed derivative works do not contain + * misleading author or version information. Derivative works need + * not be licensed under similar terms. + * + * Copyright (C) The Internet Society (2003). All Rights Reserved. + * + * This document and translations of it may be copied and furnished to + * others, and derivative works that comment on or otherwise explain it + * or assist in its implementation may be prepared, copied, published + * and distributed, in whole or in part, without restriction of any + * kind, provided that the above copyright notice and this paragraph are + * included on all such copies and derivative works. However, this + * document itself may not be modified in any way, such as by removing + * the copyright notice or references to the Internet Society or other + * Internet organizations, except as needed for the purpose of + * developing Internet standards in which case the procedures for + * copyrights defined in the Internet Standards process must be + * followed, or as required to translate it into languages other than + * English. + * + * The limited permissions granted above are perpetual and will not be + * revoked by the Internet Society or its successors or assigns. + * + * This document and the information contained herein is provided on an + * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef PUNYCODE_H +# define PUNYCODE_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <stddef.h> /* size_t */ +#include <idn-int.h> /* uint32_t */ + + enum punycode_status + { + punycode_success = 0, + punycode_bad_input = 1, /* Input is invalid. */ + punycode_big_output = 2, /* Output would exceed the space provided. */ + punycode_overflow = 3 /* Wider integers needed to process input. */ + }; + + typedef enum + { + PUNYCODE_SUCCESS = punycode_success, + PUNYCODE_BAD_INPUT = punycode_bad_input, + PUNYCODE_BIG_OUTPUT = punycode_big_output, + PUNYCODE_OVERFLOW = punycode_overflow + } Punycode_status; + + extern IDNAPI const char *punycode_strerror (Punycode_status rc); + +/* punycode_uint needs to be unsigned and needs to be */ +/* at least 26 bits wide. */ + + typedef uint32_t punycode_uint; + + extern IDNAPI int punycode_encode (size_t input_length, + const punycode_uint input[], + const unsigned char case_flags[], + size_t * output_length, char output[]); + +/* + punycode_encode() converts a sequence of code points (presumed to be + Unicode code points) to Punycode. + + Input arguments (to be supplied by the caller): + + input_length + The number of code points in the input array and the number + of flags in the case_flags array. + + input + An array of code points. They are presumed to be Unicode + code points, but that is not strictly REQUIRED. The + array contains code points, not code units. UTF-16 uses + code units D800 through DFFF to refer to code points + 10000..10FFFF. The code points D800..DFFF do not occur in + any valid Unicode string. The code points that can occur in + Unicode strings (0..D7FF and E000..10FFFF) are also called + Unicode scalar values. + + case_flags + A null pointer or an array of boolean values parallel to + the input array. Nonzero (true, flagged) suggests that the + corresponding Unicode character be forced to uppercase after + being decoded (if possible), and zero (false, unflagged) + suggests that it be forced to lowercase (if possible). + ASCII code points (0..7F) are encoded literally, except that + ASCII letters are forced to uppercase or lowercase according + to the corresponding case flags. If case_flags is a null + pointer then ASCII letters are left as they are, and other + code points are treated as unflagged. + + Output arguments (to be filled in by the function): + + output + An array of ASCII code points. It is *not* null-terminated; + it will contain zeros if and only if the input contains + zeros. (Of course the caller can leave room for a + terminator and add one if needed.) + + Input/output arguments (to be supplied by the caller and overwritten + by the function): + + output_length + The caller passes in the maximum number of ASCII code points + that it can receive. On successful return it will contain + the number of ASCII code points actually output. + + Return value: + + Can be any of the punycode_status values defined above except + punycode_bad_input. If not punycode_success, then output_size + and output might contain garbage. +*/ + + extern IDNAPI int punycode_decode (size_t input_length, + const char input[], + size_t * output_length, + punycode_uint output[], + unsigned char case_flags[]); + +/* + punycode_decode() converts Punycode to a sequence of code points + (presumed to be Unicode code points). + + Input arguments (to be supplied by the caller): + + input_length + The number of ASCII code points in the input array. + + input + An array of ASCII code points (0..7F). + + Output arguments (to be filled in by the function): + + output + An array of code points like the input argument of + punycode_encode() (see above). + + case_flags + A null pointer (if the flags are not needed by the caller) + or an array of boolean values parallel to the output array. + Nonzero (true, flagged) suggests that the corresponding + Unicode character be forced to uppercase by the caller (if + possible), and zero (false, unflagged) suggests that it + be forced to lowercase (if possible). ASCII code points + (0..7F) are output already in the proper case, but their + flags will be set appropriately so that applying the flags + would be harmless. + + Input/output arguments (to be supplied by the caller and overwritten + by the function): + + output_length + The caller passes in the maximum number of code points + that it can receive into the output array (which is also + the maximum number of flags that it can receive into the + case_flags array, if case_flags is not a null pointer). On + successful return it will contain the number of code points + actually output (which is also the number of flags actually + output, if case_flags is not a null pointer). The decoder + will never need to output more code points than the number + of ASCII code points in the input, because of the way the + encoding is defined. The number of code points output + cannot exceed the maximum possible value of a punycode_uint, + even if the supplied output_length is greater than that. + + Return value: + + Can be any of the punycode_status values defined above. If not + punycode_success, then output_length, output, and case_flags + might contain garbage. +*/ + +#ifdef __cplusplus +} +#endif +#endif /* PUNYCODE_H */ diff --git a/lib/rfc3454.c b/lib/rfc3454.c new file mode 100644 index 0000000..856b67a --- /dev/null +++ b/lib/rfc3454.c @@ -0,0 +1,4252 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit gen-stringprep-tables.pl and re-run. */ + +#include "stringprep.h" + +/* + * So we can use this material. There may be other legal analysis that + * also reach the same conclusion. + + */ + +const Stringprep_table_element stringprep_rfc3454_A_1[] = { + { 0x000221 }, /* 0221 */ + { 0x000234, 0x00024F }, /* 0234-024F */ + { 0x0002AE, 0x0002AF }, /* 02AE-02AF */ + { 0x0002EF, 0x0002FF }, /* 02EF-02FF */ + { 0x000350, 0x00035F }, /* 0350-035F */ + { 0x000370, 0x000373 }, /* 0370-0373 */ + { 0x000376, 0x000379 }, /* 0376-0379 */ + { 0x00037B, 0x00037D }, /* 037B-037D */ + { 0x00037F, 0x000383 }, /* 037F-0383 */ + { 0x00038B }, /* 038B */ + { 0x00038D }, /* 038D */ + { 0x0003A2 }, /* 03A2 */ + { 0x0003CF }, /* 03CF */ + { 0x0003F7, 0x0003FF }, /* 03F7-03FF */ + { 0x000487 }, /* 0487 */ + { 0x0004CF }, /* 04CF */ + { 0x0004F6, 0x0004F7 }, /* 04F6-04F7 */ + { 0x0004FA, 0x0004FF }, /* 04FA-04FF */ + { 0x000510, 0x000530 }, /* 0510-0530 */ + { 0x000557, 0x000558 }, /* 0557-0558 */ + { 0x000560 }, /* 0560 */ + { 0x000588 }, /* 0588 */ + { 0x00058B, 0x000590 }, /* 058B-0590 */ + { 0x0005A2 }, /* 05A2 */ + { 0x0005BA }, /* 05BA */ + { 0x0005C5, 0x0005CF }, /* 05C5-05CF */ + { 0x0005EB, 0x0005EF }, /* 05EB-05EF */ + { 0x0005F5, 0x00060B }, /* 05F5-060B */ + { 0x00060D, 0x00061A }, /* 060D-061A */ + { 0x00061C, 0x00061E }, /* 061C-061E */ + { 0x000620 }, /* 0620 */ + { 0x00063B, 0x00063F }, /* 063B-063F */ + { 0x000656, 0x00065F }, /* 0656-065F */ + { 0x0006EE, 0x0006EF }, /* 06EE-06EF */ + { 0x0006FF }, /* 06FF */ + { 0x00070E }, /* 070E */ + { 0x00072D, 0x00072F }, /* 072D-072F */ + { 0x00074B, 0x00077F }, /* 074B-077F */ + { 0x0007B2, 0x000900 }, /* 07B2-0900 */ + { 0x000904 }, /* 0904 */ + { 0x00093A, 0x00093B }, /* 093A-093B */ + { 0x00094E, 0x00094F }, /* 094E-094F */ + { 0x000955, 0x000957 }, /* 0955-0957 */ + { 0x000971, 0x000980 }, /* 0971-0980 */ + { 0x000984 }, /* 0984 */ + { 0x00098D, 0x00098E }, /* 098D-098E */ + { 0x000991, 0x000992 }, /* 0991-0992 */ + { 0x0009A9 }, /* 09A9 */ + { 0x0009B1 }, /* 09B1 */ + { 0x0009B3, 0x0009B5 }, /* 09B3-09B5 */ + { 0x0009BA, 0x0009BB }, /* 09BA-09BB */ + { 0x0009BD }, /* 09BD */ + { 0x0009C5, 0x0009C6 }, /* 09C5-09C6 */ + { 0x0009C9, 0x0009CA }, /* 09C9-09CA */ + { 0x0009CE, 0x0009D6 }, /* 09CE-09D6 */ + { 0x0009D8, 0x0009DB }, /* 09D8-09DB */ + { 0x0009DE }, /* 09DE */ + { 0x0009E4, 0x0009E5 }, /* 09E4-09E5 */ + { 0x0009FB, 0x000A01 }, /* 09FB-0A01 */ + { 0x000A03, 0x000A04 }, /* 0A03-0A04 */ + { 0x000A0B, 0x000A0E }, /* 0A0B-0A0E */ + { 0x000A11, 0x000A12 }, /* 0A11-0A12 */ + { 0x000A29 }, /* 0A29 */ + { 0x000A31 }, /* 0A31 */ + { 0x000A34 }, /* 0A34 */ + { 0x000A37 }, /* 0A37 */ + { 0x000A3A, 0x000A3B }, /* 0A3A-0A3B */ + { 0x000A3D }, /* 0A3D */ + { 0x000A43, 0x000A46 }, /* 0A43-0A46 */ + { 0x000A49, 0x000A4A }, /* 0A49-0A4A */ + { 0x000A4E, 0x000A58 }, /* 0A4E-0A58 */ + { 0x000A5D }, /* 0A5D */ + { 0x000A5F, 0x000A65 }, /* 0A5F-0A65 */ + { 0x000A75, 0x000A80 }, /* 0A75-0A80 */ + { 0x000A84 }, /* 0A84 */ + { 0x000A8C }, /* 0A8C */ + { 0x000A8E }, /* 0A8E */ + { 0x000A92 }, /* 0A92 */ + { 0x000AA9 }, /* 0AA9 */ + { 0x000AB1 }, /* 0AB1 */ + { 0x000AB4 }, /* 0AB4 */ + { 0x000ABA, 0x000ABB }, /* 0ABA-0ABB */ + { 0x000AC6 }, /* 0AC6 */ + { 0x000ACA }, /* 0ACA */ + { 0x000ACE, 0x000ACF }, /* 0ACE-0ACF */ + { 0x000AD1, 0x000ADF }, /* 0AD1-0ADF */ + { 0x000AE1, 0x000AE5 }, /* 0AE1-0AE5 */ + { 0x000AF0, 0x000B00 }, /* 0AF0-0B00 */ + { 0x000B04 }, /* 0B04 */ + { 0x000B0D, 0x000B0E }, /* 0B0D-0B0E */ + { 0x000B11, 0x000B12 }, /* 0B11-0B12 */ + { 0x000B29 }, /* 0B29 */ + { 0x000B31 }, /* 0B31 */ + { 0x000B34, 0x000B35 }, /* 0B34-0B35 */ + { 0x000B3A, 0x000B3B }, /* 0B3A-0B3B */ + { 0x000B44, 0x000B46 }, /* 0B44-0B46 */ + { 0x000B49, 0x000B4A }, /* 0B49-0B4A */ + { 0x000B4E, 0x000B55 }, /* 0B4E-0B55 */ + { 0x000B58, 0x000B5B }, /* 0B58-0B5B */ + { 0x000B5E }, /* 0B5E */ + { 0x000B62, 0x000B65 }, /* 0B62-0B65 */ + { 0x000B71, 0x000B81 }, /* 0B71-0B81 */ + { 0x000B84 }, /* 0B84 */ + { 0x000B8B, 0x000B8D }, /* 0B8B-0B8D */ + { 0x000B91 }, /* 0B91 */ + { 0x000B96, 0x000B98 }, /* 0B96-0B98 */ + { 0x000B9B }, /* 0B9B */ + { 0x000B9D }, /* 0B9D */ + { 0x000BA0, 0x000BA2 }, /* 0BA0-0BA2 */ + { 0x000BA5, 0x000BA7 }, /* 0BA5-0BA7 */ + { 0x000BAB, 0x000BAD }, /* 0BAB-0BAD */ + { 0x000BB6 }, /* 0BB6 */ + { 0x000BBA, 0x000BBD }, /* 0BBA-0BBD */ + { 0x000BC3, 0x000BC5 }, /* 0BC3-0BC5 */ + { 0x000BC9 }, /* 0BC9 */ + { 0x000BCE, 0x000BD6 }, /* 0BCE-0BD6 */ + { 0x000BD8, 0x000BE6 }, /* 0BD8-0BE6 */ + { 0x000BF3, 0x000C00 }, /* 0BF3-0C00 */ + { 0x000C04 }, /* 0C04 */ + { 0x000C0D }, /* 0C0D */ + { 0x000C11 }, /* 0C11 */ + { 0x000C29 }, /* 0C29 */ + { 0x000C34 }, /* 0C34 */ + { 0x000C3A, 0x000C3D }, /* 0C3A-0C3D */ + { 0x000C45 }, /* 0C45 */ + { 0x000C49 }, /* 0C49 */ + { 0x000C4E, 0x000C54 }, /* 0C4E-0C54 */ + { 0x000C57, 0x000C5F }, /* 0C57-0C5F */ + { 0x000C62, 0x000C65 }, /* 0C62-0C65 */ + { 0x000C70, 0x000C81 }, /* 0C70-0C81 */ + { 0x000C84 }, /* 0C84 */ + { 0x000C8D }, /* 0C8D */ + { 0x000C91 }, /* 0C91 */ + { 0x000CA9 }, /* 0CA9 */ + { 0x000CB4 }, /* 0CB4 */ + { 0x000CBA, 0x000CBD }, /* 0CBA-0CBD */ + { 0x000CC5 }, /* 0CC5 */ + { 0x000CC9 }, /* 0CC9 */ + { 0x000CCE, 0x000CD4 }, /* 0CCE-0CD4 */ + { 0x000CD7, 0x000CDD }, /* 0CD7-0CDD */ + { 0x000CDF }, /* 0CDF */ + { 0x000CE2, 0x000CE5 }, /* 0CE2-0CE5 */ + { 0x000CF0, 0x000D01 }, /* 0CF0-0D01 */ + { 0x000D04 }, /* 0D04 */ + { 0x000D0D }, /* 0D0D */ + { 0x000D11 }, /* 0D11 */ + { 0x000D29 }, /* 0D29 */ + { 0x000D3A, 0x000D3D }, /* 0D3A-0D3D */ + { 0x000D44, 0x000D45 }, /* 0D44-0D45 */ + { 0x000D49 }, /* 0D49 */ + { 0x000D4E, 0x000D56 }, /* 0D4E-0D56 */ + { 0x000D58, 0x000D5F }, /* 0D58-0D5F */ + { 0x000D62, 0x000D65 }, /* 0D62-0D65 */ + { 0x000D70, 0x000D81 }, /* 0D70-0D81 */ + { 0x000D84 }, /* 0D84 */ + { 0x000D97, 0x000D99 }, /* 0D97-0D99 */ + { 0x000DB2 }, /* 0DB2 */ + { 0x000DBC }, /* 0DBC */ + { 0x000DBE, 0x000DBF }, /* 0DBE-0DBF */ + { 0x000DC7, 0x000DC9 }, /* 0DC7-0DC9 */ + { 0x000DCB, 0x000DCE }, /* 0DCB-0DCE */ + { 0x000DD5 }, /* 0DD5 */ + { 0x000DD7 }, /* 0DD7 */ + { 0x000DE0, 0x000DF1 }, /* 0DE0-0DF1 */ + { 0x000DF5, 0x000E00 }, /* 0DF5-0E00 */ + { 0x000E3B, 0x000E3E }, /* 0E3B-0E3E */ + { 0x000E5C, 0x000E80 }, /* 0E5C-0E80 */ + { 0x000E83 }, /* 0E83 */ + { 0x000E85, 0x000E86 }, /* 0E85-0E86 */ + { 0x000E89 }, /* 0E89 */ + { 0x000E8B, 0x000E8C }, /* 0E8B-0E8C */ + { 0x000E8E, 0x000E93 }, /* 0E8E-0E93 */ + { 0x000E98 }, /* 0E98 */ + { 0x000EA0 }, /* 0EA0 */ + { 0x000EA4 }, /* 0EA4 */ + { 0x000EA6 }, /* 0EA6 */ + { 0x000EA8, 0x000EA9 }, /* 0EA8-0EA9 */ + { 0x000EAC }, /* 0EAC */ + { 0x000EBA }, /* 0EBA */ + { 0x000EBE, 0x000EBF }, /* 0EBE-0EBF */ + { 0x000EC5 }, /* 0EC5 */ + { 0x000EC7 }, /* 0EC7 */ + { 0x000ECE, 0x000ECF }, /* 0ECE-0ECF */ + { 0x000EDA, 0x000EDB }, /* 0EDA-0EDB */ + { 0x000EDE, 0x000EFF }, /* 0EDE-0EFF */ + { 0x000F48 }, /* 0F48 */ + { 0x000F6B, 0x000F70 }, /* 0F6B-0F70 */ + { 0x000F8C, 0x000F8F }, /* 0F8C-0F8F */ + { 0x000F98 }, /* 0F98 */ + { 0x000FBD }, /* 0FBD */ + { 0x000FCD, 0x000FCE }, /* 0FCD-0FCE */ + { 0x000FD0, 0x000FFF }, /* 0FD0-0FFF */ + { 0x001022 }, /* 1022 */ + { 0x001028 }, /* 1028 */ + { 0x00102B }, /* 102B */ + { 0x001033, 0x001035 }, /* 1033-1035 */ + { 0x00103A, 0x00103F }, /* 103A-103F */ + { 0x00105A, 0x00109F }, /* 105A-109F */ + { 0x0010C6, 0x0010CF }, /* 10C6-10CF */ + { 0x0010F9, 0x0010FA }, /* 10F9-10FA */ + { 0x0010FC, 0x0010FF }, /* 10FC-10FF */ + { 0x00115A, 0x00115E }, /* 115A-115E */ + { 0x0011A3, 0x0011A7 }, /* 11A3-11A7 */ + { 0x0011FA, 0x0011FF }, /* 11FA-11FF */ + { 0x001207 }, /* 1207 */ + { 0x001247 }, /* 1247 */ + { 0x001249 }, /* 1249 */ + { 0x00124E, 0x00124F }, /* 124E-124F */ + { 0x001257 }, /* 1257 */ + { 0x001259 }, /* 1259 */ + { 0x00125E, 0x00125F }, /* 125E-125F */ + { 0x001287 }, /* 1287 */ + { 0x001289 }, /* 1289 */ + { 0x00128E, 0x00128F }, /* 128E-128F */ + { 0x0012AF }, /* 12AF */ + { 0x0012B1 }, /* 12B1 */ + { 0x0012B6, 0x0012B7 }, /* 12B6-12B7 */ + { 0x0012BF }, /* 12BF */ + { 0x0012C1 }, /* 12C1 */ + { 0x0012C6, 0x0012C7 }, /* 12C6-12C7 */ + { 0x0012CF }, /* 12CF */ + { 0x0012D7 }, /* 12D7 */ + { 0x0012EF }, /* 12EF */ + { 0x00130F }, /* 130F */ + { 0x001311 }, /* 1311 */ + { 0x001316, 0x001317 }, /* 1316-1317 */ + { 0x00131F }, /* 131F */ + { 0x001347 }, /* 1347 */ + { 0x00135B, 0x001360 }, /* 135B-1360 */ + { 0x00137D, 0x00139F }, /* 137D-139F */ + { 0x0013F5, 0x001400 }, /* 13F5-1400 */ + { 0x001677, 0x00167F }, /* 1677-167F */ + { 0x00169D, 0x00169F }, /* 169D-169F */ + { 0x0016F1, 0x0016FF }, /* 16F1-16FF */ + { 0x00170D }, /* 170D */ + { 0x001715, 0x00171F }, /* 1715-171F */ + { 0x001737, 0x00173F }, /* 1737-173F */ + { 0x001754, 0x00175F }, /* 1754-175F */ + { 0x00176D }, /* 176D */ + { 0x001771 }, /* 1771 */ + { 0x001774, 0x00177F }, /* 1774-177F */ + { 0x0017DD, 0x0017DF }, /* 17DD-17DF */ + { 0x0017EA, 0x0017FF }, /* 17EA-17FF */ + { 0x00180F }, /* 180F */ + { 0x00181A, 0x00181F }, /* 181A-181F */ + { 0x001878, 0x00187F }, /* 1878-187F */ + { 0x0018AA, 0x001DFF }, /* 18AA-1DFF */ + { 0x001E9C, 0x001E9F }, /* 1E9C-1E9F */ + { 0x001EFA, 0x001EFF }, /* 1EFA-1EFF */ + { 0x001F16, 0x001F17 }, /* 1F16-1F17 */ + { 0x001F1E, 0x001F1F }, /* 1F1E-1F1F */ + { 0x001F46, 0x001F47 }, /* 1F46-1F47 */ + { 0x001F4E, 0x001F4F }, /* 1F4E-1F4F */ + { 0x001F58 }, /* 1F58 */ + { 0x001F5A }, /* 1F5A */ + { 0x001F5C }, /* 1F5C */ + { 0x001F5E }, /* 1F5E */ + { 0x001F7E, 0x001F7F }, /* 1F7E-1F7F */ + { 0x001FB5 }, /* 1FB5 */ + { 0x001FC5 }, /* 1FC5 */ + { 0x001FD4, 0x001FD5 }, /* 1FD4-1FD5 */ + { 0x001FDC }, /* 1FDC */ + { 0x001FF0, 0x001FF1 }, /* 1FF0-1FF1 */ + { 0x001FF5 }, /* 1FF5 */ + { 0x001FFF }, /* 1FFF */ + { 0x002053, 0x002056 }, /* 2053-2056 */ + { 0x002058, 0x00205E }, /* 2058-205E */ + { 0x002064, 0x002069 }, /* 2064-2069 */ + { 0x002072, 0x002073 }, /* 2072-2073 */ + { 0x00208F, 0x00209F }, /* 208F-209F */ + { 0x0020B2, 0x0020CF }, /* 20B2-20CF */ + { 0x0020EB, 0x0020FF }, /* 20EB-20FF */ + { 0x00213B, 0x00213C }, /* 213B-213C */ + { 0x00214C, 0x002152 }, /* 214C-2152 */ + { 0x002184, 0x00218F }, /* 2184-218F */ + { 0x0023CF, 0x0023FF }, /* 23CF-23FF */ + { 0x002427, 0x00243F }, /* 2427-243F */ + { 0x00244B, 0x00245F }, /* 244B-245F */ + { 0x0024FF }, /* 24FF */ + { 0x002614, 0x002615 }, /* 2614-2615 */ + { 0x002618 }, /* 2618 */ + { 0x00267E, 0x00267F }, /* 267E-267F */ + { 0x00268A, 0x002700 }, /* 268A-2700 */ + { 0x002705 }, /* 2705 */ + { 0x00270A, 0x00270B }, /* 270A-270B */ + { 0x002728 }, /* 2728 */ + { 0x00274C }, /* 274C */ + { 0x00274E }, /* 274E */ + { 0x002753, 0x002755 }, /* 2753-2755 */ + { 0x002757 }, /* 2757 */ + { 0x00275F, 0x002760 }, /* 275F-2760 */ + { 0x002795, 0x002797 }, /* 2795-2797 */ + { 0x0027B0 }, /* 27B0 */ + { 0x0027BF, 0x0027CF }, /* 27BF-27CF */ + { 0x0027EC, 0x0027EF }, /* 27EC-27EF */ + { 0x002B00, 0x002E7F }, /* 2B00-2E7F */ + { 0x002E9A }, /* 2E9A */ + { 0x002EF4, 0x002EFF }, /* 2EF4-2EFF */ + { 0x002FD6, 0x002FEF }, /* 2FD6-2FEF */ + { 0x002FFC, 0x002FFF }, /* 2FFC-2FFF */ + { 0x003040 }, /* 3040 */ + { 0x003097, 0x003098 }, /* 3097-3098 */ + { 0x003100, 0x003104 }, /* 3100-3104 */ + { 0x00312D, 0x003130 }, /* 312D-3130 */ + { 0x00318F }, /* 318F */ + { 0x0031B8, 0x0031EF }, /* 31B8-31EF */ + { 0x00321D, 0x00321F }, /* 321D-321F */ + { 0x003244, 0x003250 }, /* 3244-3250 */ + { 0x00327C, 0x00327E }, /* 327C-327E */ + { 0x0032CC, 0x0032CF }, /* 32CC-32CF */ + { 0x0032FF }, /* 32FF */ + { 0x003377, 0x00337A }, /* 3377-337A */ + { 0x0033DE, 0x0033DF }, /* 33DE-33DF */ + { 0x0033FF }, /* 33FF */ + { 0x004DB6, 0x004DFF }, /* 4DB6-4DFF */ + { 0x009FA6, 0x009FFF }, /* 9FA6-9FFF */ + { 0x00A48D, 0x00A48F }, /* A48D-A48F */ + { 0x00A4C7, 0x00ABFF }, /* A4C7-ABFF */ + { 0x00D7A4, 0x00D7FF }, /* D7A4-D7FF */ + { 0x00FA2E, 0x00FA2F }, /* FA2E-FA2F */ + { 0x00FA6B, 0x00FAFF }, /* FA6B-FAFF */ + { 0x00FB07, 0x00FB12 }, /* FB07-FB12 */ + { 0x00FB18, 0x00FB1C }, /* FB18-FB1C */ + { 0x00FB37 }, /* FB37 */ + { 0x00FB3D }, /* FB3D */ + { 0x00FB3F }, /* FB3F */ + { 0x00FB42 }, /* FB42 */ + { 0x00FB45 }, /* FB45 */ + { 0x00FBB2, 0x00FBD2 }, /* FBB2-FBD2 */ + { 0x00FD40, 0x00FD4F }, /* FD40-FD4F */ + { 0x00FD90, 0x00FD91 }, /* FD90-FD91 */ + { 0x00FDC8, 0x00FDCF }, /* FDC8-FDCF */ + { 0x00FDFD, 0x00FDFF }, /* FDFD-FDFF */ + { 0x00FE10, 0x00FE1F }, /* FE10-FE1F */ + { 0x00FE24, 0x00FE2F }, /* FE24-FE2F */ + { 0x00FE47, 0x00FE48 }, /* FE47-FE48 */ + { 0x00FE53 }, /* FE53 */ + { 0x00FE67 }, /* FE67 */ + { 0x00FE6C, 0x00FE6F }, /* FE6C-FE6F */ + { 0x00FE75 }, /* FE75 */ + { 0x00FEFD, 0x00FEFE }, /* FEFD-FEFE */ + { 0x00FF00 }, /* FF00 */ + { 0x00FFBF, 0x00FFC1 }, /* FFBF-FFC1 */ + { 0x00FFC8, 0x00FFC9 }, /* FFC8-FFC9 */ + { 0x00FFD0, 0x00FFD1 }, /* FFD0-FFD1 */ + { 0x00FFD8, 0x00FFD9 }, /* FFD8-FFD9 */ + { 0x00FFDD, 0x00FFDF }, /* FFDD-FFDF */ + { 0x00FFE7 }, /* FFE7 */ + { 0x00FFEF, 0x00FFF8 }, /* FFEF-FFF8 */ + { 0x010000, 0x0102FF }, /* 10000-102FF */ + { 0x01031F }, /* 1031F */ + { 0x010324, 0x01032F }, /* 10324-1032F */ + { 0x01034B, 0x0103FF }, /* 1034B-103FF */ + { 0x010426, 0x010427 }, /* 10426-10427 */ + { 0x01044E, 0x01CFFF }, /* 1044E-1CFFF */ + { 0x01D0F6, 0x01D0FF }, /* 1D0F6-1D0FF */ + { 0x01D127, 0x01D129 }, /* 1D127-1D129 */ + { 0x01D1DE, 0x01D3FF }, /* 1D1DE-1D3FF */ + { 0x01D455 }, /* 1D455 */ + { 0x01D49D }, /* 1D49D */ + { 0x01D4A0, 0x01D4A1 }, /* 1D4A0-1D4A1 */ + { 0x01D4A3, 0x01D4A4 }, /* 1D4A3-1D4A4 */ + { 0x01D4A7, 0x01D4A8 }, /* 1D4A7-1D4A8 */ + { 0x01D4AD }, /* 1D4AD */ + { 0x01D4BA }, /* 1D4BA */ + { 0x01D4BC }, /* 1D4BC */ + { 0x01D4C1 }, /* 1D4C1 */ + { 0x01D4C4 }, /* 1D4C4 */ + { 0x01D506 }, /* 1D506 */ + { 0x01D50B, 0x01D50C }, /* 1D50B-1D50C */ + { 0x01D515 }, /* 1D515 */ + { 0x01D51D }, /* 1D51D */ + { 0x01D53A }, /* 1D53A */ + { 0x01D53F }, /* 1D53F */ + { 0x01D545 }, /* 1D545 */ + { 0x01D547, 0x01D549 }, /* 1D547-1D549 */ + { 0x01D551 }, /* 1D551 */ + { 0x01D6A4, 0x01D6A7 }, /* 1D6A4-1D6A7 */ + { 0x01D7CA, 0x01D7CD }, /* 1D7CA-1D7CD */ + { 0x01D800, 0x01FFFD }, /* 1D800-1FFFD */ + { 0x02A6D7, 0x02F7FF }, /* 2A6D7-2F7FF */ + { 0x02FA1E, 0x02FFFD }, /* 2FA1E-2FFFD */ + { 0x030000, 0x03FFFD }, /* 30000-3FFFD */ + { 0x040000, 0x04FFFD }, /* 40000-4FFFD */ + { 0x050000, 0x05FFFD }, /* 50000-5FFFD */ + { 0x060000, 0x06FFFD }, /* 60000-6FFFD */ + { 0x070000, 0x07FFFD }, /* 70000-7FFFD */ + { 0x080000, 0x08FFFD }, /* 80000-8FFFD */ + { 0x090000, 0x09FFFD }, /* 90000-9FFFD */ + { 0x0A0000, 0x0AFFFD }, /* A0000-AFFFD */ + { 0x0B0000, 0x0BFFFD }, /* B0000-BFFFD */ + { 0x0C0000, 0x0CFFFD }, /* C0000-CFFFD */ + { 0x0D0000, 0x0DFFFD }, /* D0000-DFFFD */ + { 0x0E0000 }, /* E0000 */ + { 0x0E0002, 0x0E001F }, /* E0002-E001F */ + { 0x0E0080, 0x0EFFFD }, /* E0080-EFFFD */ + { 0 }, +}; + + +/* + * E0080-EFFFD + * + */ + +const Stringprep_table_element stringprep_rfc3454_B_1[] = { + { 0x0000AD }, /* 00AD; ; Map to nothing */ + { 0x00034F }, /* 034F; ; Map to nothing */ + { 0x001806 }, /* 1806; ; Map to nothing */ + { 0x00180B }, /* 180B; ; Map to nothing */ + { 0x00180C }, /* 180C; ; Map to nothing */ + { 0x00180D }, /* 180D; ; Map to nothing */ + { 0x00200B }, /* 200B; ; Map to nothing */ + { 0x00200C }, /* 200C; ; Map to nothing */ + { 0x00200D }, /* 200D; ; Map to nothing */ + { 0x002060 }, /* 2060; ; Map to nothing */ + { 0x00FE00 }, /* FE00; ; Map to nothing */ + { 0x00FE01 }, /* FE01; ; Map to nothing */ + { 0x00FE02 }, /* FE02; ; Map to nothing */ + { 0x00FE03 }, /* FE03; ; Map to nothing */ + { 0x00FE04 }, /* FE04; ; Map to nothing */ + { 0x00FE05 }, /* FE05; ; Map to nothing */ + { 0x00FE06 }, /* FE06; ; Map to nothing */ + { 0x00FE07 }, /* FE07; ; Map to nothing */ + { 0x00FE08 }, /* FE08; ; Map to nothing */ + { 0x00FE09 }, /* FE09; ; Map to nothing */ + { 0x00FE0A }, /* FE0A; ; Map to nothing */ + { 0x00FE0B }, /* FE0B; ; Map to nothing */ + { 0x00FE0C }, /* FE0C; ; Map to nothing */ + { 0x00FE0D }, /* FE0D; ; Map to nothing */ + { 0x00FE0E }, /* FE0E; ; Map to nothing */ + { 0x00FE0F }, /* FE0F; ; Map to nothing */ + { 0x00FEFF }, /* FEFF; ; Map to nothing */ + { 0 }, +}; + + +/* + * FEFF; ; Map to nothing + * + */ + +const Stringprep_table_element stringprep_rfc3454_B_2[] = { + { 0x000041, 0, { 0x000061 }}, /* 0041; 0061; Case map */ + { 0x000042, 0, { 0x000062 }}, /* 0042; 0062; Case map */ + { 0x000043, 0, { 0x000063 }}, /* 0043; 0063; Case map */ + { 0x000044, 0, { 0x000064 }}, /* 0044; 0064; Case map */ + { 0x000045, 0, { 0x000065 }}, /* 0045; 0065; Case map */ + { 0x000046, 0, { 0x000066 }}, /* 0046; 0066; Case map */ + { 0x000047, 0, { 0x000067 }}, /* 0047; 0067; Case map */ + { 0x000048, 0, { 0x000068 }}, /* 0048; 0068; Case map */ + { 0x000049, 0, { 0x000069 }}, /* 0049; 0069; Case map */ + { 0x00004A, 0, { 0x00006A }}, /* 004A; 006A; Case map */ + { 0x00004B, 0, { 0x00006B }}, /* 004B; 006B; Case map */ + { 0x00004C, 0, { 0x00006C }}, /* 004C; 006C; Case map */ + { 0x00004D, 0, { 0x00006D }}, /* 004D; 006D; Case map */ + { 0x00004E, 0, { 0x00006E }}, /* 004E; 006E; Case map */ + { 0x00004F, 0, { 0x00006F }}, /* 004F; 006F; Case map */ + { 0x000050, 0, { 0x000070 }}, /* 0050; 0070; Case map */ + { 0x000051, 0, { 0x000071 }}, /* 0051; 0071; Case map */ + { 0x000052, 0, { 0x000072 }}, /* 0052; 0072; Case map */ + { 0x000053, 0, { 0x000073 }}, /* 0053; 0073; Case map */ + { 0x000054, 0, { 0x000074 }}, /* 0054; 0074; Case map */ + { 0x000055, 0, { 0x000075 }}, /* 0055; 0075; Case map */ + { 0x000056, 0, { 0x000076 }}, /* 0056; 0076; Case map */ + { 0x000057, 0, { 0x000077 }}, /* 0057; 0077; Case map */ + { 0x000058, 0, { 0x000078 }}, /* 0058; 0078; Case map */ + { 0x000059, 0, { 0x000079 }}, /* 0059; 0079; Case map */ + { 0x00005A, 0, { 0x00007A }}, /* 005A; 007A; Case map */ + { 0x0000B5, 0, { 0x0003BC }}, /* 00B5; 03BC; Case map */ + { 0x0000C0, 0, { 0x0000E0 }}, /* 00C0; 00E0; Case map */ + { 0x0000C1, 0, { 0x0000E1 }}, /* 00C1; 00E1; Case map */ + { 0x0000C2, 0, { 0x0000E2 }}, /* 00C2; 00E2; Case map */ + { 0x0000C3, 0, { 0x0000E3 }}, /* 00C3; 00E3; Case map */ + { 0x0000C4, 0, { 0x0000E4 }}, /* 00C4; 00E4; Case map */ + { 0x0000C5, 0, { 0x0000E5 }}, /* 00C5; 00E5; Case map */ + { 0x0000C6, 0, { 0x0000E6 }}, /* 00C6; 00E6; Case map */ + { 0x0000C7, 0, { 0x0000E7 }}, /* 00C7; 00E7; Case map */ + { 0x0000C8, 0, { 0x0000E8 }}, /* 00C8; 00E8; Case map */ + { 0x0000C9, 0, { 0x0000E9 }}, /* 00C9; 00E9; Case map */ + { 0x0000CA, 0, { 0x0000EA }}, /* 00CA; 00EA; Case map */ + { 0x0000CB, 0, { 0x0000EB }}, /* 00CB; 00EB; Case map */ + { 0x0000CC, 0, { 0x0000EC }}, /* 00CC; 00EC; Case map */ + { 0x0000CD, 0, { 0x0000ED }}, /* 00CD; 00ED; Case map */ + { 0x0000CE, 0, { 0x0000EE }}, /* 00CE; 00EE; Case map */ + { 0x0000CF, 0, { 0x0000EF }}, /* 00CF; 00EF; Case map */ + { 0x0000D0, 0, { 0x0000F0 }}, /* 00D0; 00F0; Case map */ + { 0x0000D1, 0, { 0x0000F1 }}, /* 00D1; 00F1; Case map */ + { 0x0000D2, 0, { 0x0000F2 }}, /* 00D2; 00F2; Case map */ + { 0x0000D3, 0, { 0x0000F3 }}, /* 00D3; 00F3; Case map */ + { 0x0000D4, 0, { 0x0000F4 }}, /* 00D4; 00F4; Case map */ + { 0x0000D5, 0, { 0x0000F5 }}, /* 00D5; 00F5; Case map */ + { 0x0000D6, 0, { 0x0000F6 }}, /* 00D6; 00F6; Case map */ + { 0x0000D8, 0, { 0x0000F8 }}, /* 00D8; 00F8; Case map */ + { 0x0000D9, 0, { 0x0000F9 }}, /* 00D9; 00F9; Case map */ + { 0x0000DA, 0, { 0x0000FA }}, /* 00DA; 00FA; Case map */ + { 0x0000DB, 0, { 0x0000FB }}, /* 00DB; 00FB; Case map */ + { 0x0000DC, 0, { 0x0000FC }}, /* 00DC; 00FC; Case map */ + { 0x0000DD, 0, { 0x0000FD }}, /* 00DD; 00FD; Case map */ + { 0x0000DE, 0, { 0x0000FE }}, /* 00DE; 00FE; Case map */ + { 0x0000DF, 0, { 0x000073, /* 00DF; 0073 0073; Case map */ + 0x000073 }}, + { 0x000100, 0, { 0x000101 }}, /* 0100; 0101; Case map */ + { 0x000102, 0, { 0x000103 }}, /* 0102; 0103; Case map */ + { 0x000104, 0, { 0x000105 }}, /* 0104; 0105; Case map */ + { 0x000106, 0, { 0x000107 }}, /* 0106; 0107; Case map */ + { 0x000108, 0, { 0x000109 }}, /* 0108; 0109; Case map */ + { 0x00010A, 0, { 0x00010B }}, /* 010A; 010B; Case map */ + { 0x00010C, 0, { 0x00010D }}, /* 010C; 010D; Case map */ + { 0x00010E, 0, { 0x00010F }}, /* 010E; 010F; Case map */ + { 0x000110, 0, { 0x000111 }}, /* 0110; 0111; Case map */ + { 0x000112, 0, { 0x000113 }}, /* 0112; 0113; Case map */ + { 0x000114, 0, { 0x000115 }}, /* 0114; 0115; Case map */ + { 0x000116, 0, { 0x000117 }}, /* 0116; 0117; Case map */ + { 0x000118, 0, { 0x000119 }}, /* 0118; 0119; Case map */ + { 0x00011A, 0, { 0x00011B }}, /* 011A; 011B; Case map */ + { 0x00011C, 0, { 0x00011D }}, /* 011C; 011D; Case map */ + { 0x00011E, 0, { 0x00011F }}, /* 011E; 011F; Case map */ + { 0x000120, 0, { 0x000121 }}, /* 0120; 0121; Case map */ + { 0x000122, 0, { 0x000123 }}, /* 0122; 0123; Case map */ + { 0x000124, 0, { 0x000125 }}, /* 0124; 0125; Case map */ + { 0x000126, 0, { 0x000127 }}, /* 0126; 0127; Case map */ + { 0x000128, 0, { 0x000129 }}, /* 0128; 0129; Case map */ + { 0x00012A, 0, { 0x00012B }}, /* 012A; 012B; Case map */ + { 0x00012C, 0, { 0x00012D }}, /* 012C; 012D; Case map */ + { 0x00012E, 0, { 0x00012F }}, /* 012E; 012F; Case map */ + { 0x000130, 0, { 0x000069, /* 0130; 0069 0307; Case map */ + 0x000307 }}, + { 0x000132, 0, { 0x000133 }}, /* 0132; 0133; Case map */ + { 0x000134, 0, { 0x000135 }}, /* 0134; 0135; Case map */ + { 0x000136, 0, { 0x000137 }}, /* 0136; 0137; Case map */ + { 0x000139, 0, { 0x00013A }}, /* 0139; 013A; Case map */ + { 0x00013B, 0, { 0x00013C }}, /* 013B; 013C; Case map */ + { 0x00013D, 0, { 0x00013E }}, /* 013D; 013E; Case map */ + { 0x00013F, 0, { 0x000140 }}, /* 013F; 0140; Case map */ + { 0x000141, 0, { 0x000142 }}, /* 0141; 0142; Case map */ + { 0x000143, 0, { 0x000144 }}, /* 0143; 0144; Case map */ + { 0x000145, 0, { 0x000146 }}, /* 0145; 0146; Case map */ + { 0x000147, 0, { 0x000148 }}, /* 0147; 0148; Case map */ + { 0x000149, 0, { 0x0002BC, /* 0149; 02BC 006E; Case map */ + 0x00006E }}, + { 0x00014A, 0, { 0x00014B }}, /* 014A; 014B; Case map */ + { 0x00014C, 0, { 0x00014D }}, /* 014C; 014D; Case map */ + { 0x00014E, 0, { 0x00014F }}, /* 014E; 014F; Case map */ + { 0x000150, 0, { 0x000151 }}, /* 0150; 0151; Case map */ + { 0x000152, 0, { 0x000153 }}, /* 0152; 0153; Case map */ + { 0x000154, 0, { 0x000155 }}, /* 0154; 0155; Case map */ + { 0x000156, 0, { 0x000157 }}, /* 0156; 0157; Case map */ + { 0x000158, 0, { 0x000159 }}, /* 0158; 0159; Case map */ + { 0x00015A, 0, { 0x00015B }}, /* 015A; 015B; Case map */ + { 0x00015C, 0, { 0x00015D }}, /* 015C; 015D; Case map */ + { 0x00015E, 0, { 0x00015F }}, /* 015E; 015F; Case map */ + { 0x000160, 0, { 0x000161 }}, /* 0160; 0161; Case map */ + { 0x000162, 0, { 0x000163 }}, /* 0162; 0163; Case map */ + { 0x000164, 0, { 0x000165 }}, /* 0164; 0165; Case map */ + { 0x000166, 0, { 0x000167 }}, /* 0166; 0167; Case map */ + { 0x000168, 0, { 0x000169 }}, /* 0168; 0169; Case map */ + { 0x00016A, 0, { 0x00016B }}, /* 016A; 016B; Case map */ + { 0x00016C, 0, { 0x00016D }}, /* 016C; 016D; Case map */ + { 0x00016E, 0, { 0x00016F }}, /* 016E; 016F; Case map */ + { 0x000170, 0, { 0x000171 }}, /* 0170; 0171; Case map */ + { 0x000172, 0, { 0x000173 }}, /* 0172; 0173; Case map */ + { 0x000174, 0, { 0x000175 }}, /* 0174; 0175; Case map */ + { 0x000176, 0, { 0x000177 }}, /* 0176; 0177; Case map */ + { 0x000178, 0, { 0x0000FF }}, /* 0178; 00FF; Case map */ + { 0x000179, 0, { 0x00017A }}, /* 0179; 017A; Case map */ + { 0x00017B, 0, { 0x00017C }}, /* 017B; 017C; Case map */ + { 0x00017D, 0, { 0x00017E }}, /* 017D; 017E; Case map */ + { 0x00017F, 0, { 0x000073 }}, /* 017F; 0073; Case map */ + { 0x000181, 0, { 0x000253 }}, /* 0181; 0253; Case map */ + { 0x000182, 0, { 0x000183 }}, /* 0182; 0183; Case map */ + { 0x000184, 0, { 0x000185 }}, /* 0184; 0185; Case map */ + { 0x000186, 0, { 0x000254 }}, /* 0186; 0254; Case map */ + { 0x000187, 0, { 0x000188 }}, /* 0187; 0188; Case map */ + { 0x000189, 0, { 0x000256 }}, /* 0189; 0256; Case map */ + { 0x00018A, 0, { 0x000257 }}, /* 018A; 0257; Case map */ + { 0x00018B, 0, { 0x00018C }}, /* 018B; 018C; Case map */ + { 0x00018E, 0, { 0x0001DD }}, /* 018E; 01DD; Case map */ + { 0x00018F, 0, { 0x000259 }}, /* 018F; 0259; Case map */ + { 0x000190, 0, { 0x00025B }}, /* 0190; 025B; Case map */ + { 0x000191, 0, { 0x000192 }}, /* 0191; 0192; Case map */ + { 0x000193, 0, { 0x000260 }}, /* 0193; 0260; Case map */ + { 0x000194, 0, { 0x000263 }}, /* 0194; 0263; Case map */ + { 0x000196, 0, { 0x000269 }}, /* 0196; 0269; Case map */ + { 0x000197, 0, { 0x000268 }}, /* 0197; 0268; Case map */ + { 0x000198, 0, { 0x000199 }}, /* 0198; 0199; Case map */ + { 0x00019C, 0, { 0x00026F }}, /* 019C; 026F; Case map */ + { 0x00019D, 0, { 0x000272 }}, /* 019D; 0272; Case map */ + { 0x00019F, 0, { 0x000275 }}, /* 019F; 0275; Case map */ + { 0x0001A0, 0, { 0x0001A1 }}, /* 01A0; 01A1; Case map */ + { 0x0001A2, 0, { 0x0001A3 }}, /* 01A2; 01A3; Case map */ + { 0x0001A4, 0, { 0x0001A5 }}, /* 01A4; 01A5; Case map */ + { 0x0001A6, 0, { 0x000280 }}, /* 01A6; 0280; Case map */ + { 0x0001A7, 0, { 0x0001A8 }}, /* 01A7; 01A8; Case map */ + { 0x0001A9, 0, { 0x000283 }}, /* 01A9; 0283; Case map */ + { 0x0001AC, 0, { 0x0001AD }}, /* 01AC; 01AD; Case map */ + { 0x0001AE, 0, { 0x000288 }}, /* 01AE; 0288; Case map */ + { 0x0001AF, 0, { 0x0001B0 }}, /* 01AF; 01B0; Case map */ + { 0x0001B1, 0, { 0x00028A }}, /* 01B1; 028A; Case map */ + { 0x0001B2, 0, { 0x00028B }}, /* 01B2; 028B; Case map */ + { 0x0001B3, 0, { 0x0001B4 }}, /* 01B3; 01B4; Case map */ + { 0x0001B5, 0, { 0x0001B6 }}, /* 01B5; 01B6; Case map */ + { 0x0001B7, 0, { 0x000292 }}, /* 01B7; 0292; Case map */ + { 0x0001B8, 0, { 0x0001B9 }}, /* 01B8; 01B9; Case map */ + { 0x0001BC, 0, { 0x0001BD }}, /* 01BC; 01BD; Case map */ + { 0x0001C4, 0, { 0x0001C6 }}, /* 01C4; 01C6; Case map */ + { 0x0001C5, 0, { 0x0001C6 }}, /* 01C5; 01C6; Case map */ + { 0x0001C7, 0, { 0x0001C9 }}, /* 01C7; 01C9; Case map */ + { 0x0001C8, 0, { 0x0001C9 }}, /* 01C8; 01C9; Case map */ + { 0x0001CA, 0, { 0x0001CC }}, /* 01CA; 01CC; Case map */ + { 0x0001CB, 0, { 0x0001CC }}, /* 01CB; 01CC; Case map */ + { 0x0001CD, 0, { 0x0001CE }}, /* 01CD; 01CE; Case map */ + { 0x0001CF, 0, { 0x0001D0 }}, /* 01CF; 01D0; Case map */ + { 0x0001D1, 0, { 0x0001D2 }}, /* 01D1; 01D2; Case map */ + { 0x0001D3, 0, { 0x0001D4 }}, /* 01D3; 01D4; Case map */ + { 0x0001D5, 0, { 0x0001D6 }}, /* 01D5; 01D6; Case map */ + { 0x0001D7, 0, { 0x0001D8 }}, /* 01D7; 01D8; Case map */ + { 0x0001D9, 0, { 0x0001DA }}, /* 01D9; 01DA; Case map */ + { 0x0001DB, 0, { 0x0001DC }}, /* 01DB; 01DC; Case map */ + { 0x0001DE, 0, { 0x0001DF }}, /* 01DE; 01DF; Case map */ + { 0x0001E0, 0, { 0x0001E1 }}, /* 01E0; 01E1; Case map */ + { 0x0001E2, 0, { 0x0001E3 }}, /* 01E2; 01E3; Case map */ + { 0x0001E4, 0, { 0x0001E5 }}, /* 01E4; 01E5; Case map */ + { 0x0001E6, 0, { 0x0001E7 }}, /* 01E6; 01E7; Case map */ + { 0x0001E8, 0, { 0x0001E9 }}, /* 01E8; 01E9; Case map */ + { 0x0001EA, 0, { 0x0001EB }}, /* 01EA; 01EB; Case map */ + { 0x0001EC, 0, { 0x0001ED }}, /* 01EC; 01ED; Case map */ + { 0x0001EE, 0, { 0x0001EF }}, /* 01EE; 01EF; Case map */ + { 0x0001F0, 0, { 0x00006A, /* 01F0; 006A 030C; Case map */ + 0x00030C }}, + { 0x0001F1, 0, { 0x0001F3 }}, /* 01F1; 01F3; Case map */ + { 0x0001F2, 0, { 0x0001F3 }}, /* 01F2; 01F3; Case map */ + { 0x0001F4, 0, { 0x0001F5 }}, /* 01F4; 01F5; Case map */ + { 0x0001F6, 0, { 0x000195 }}, /* 01F6; 0195; Case map */ + { 0x0001F7, 0, { 0x0001BF }}, /* 01F7; 01BF; Case map */ + { 0x0001F8, 0, { 0x0001F9 }}, /* 01F8; 01F9; Case map */ + { 0x0001FA, 0, { 0x0001FB }}, /* 01FA; 01FB; Case map */ + { 0x0001FC, 0, { 0x0001FD }}, /* 01FC; 01FD; Case map */ + { 0x0001FE, 0, { 0x0001FF }}, /* 01FE; 01FF; Case map */ + { 0x000200, 0, { 0x000201 }}, /* 0200; 0201; Case map */ + { 0x000202, 0, { 0x000203 }}, /* 0202; 0203; Case map */ + { 0x000204, 0, { 0x000205 }}, /* 0204; 0205; Case map */ + { 0x000206, 0, { 0x000207 }}, /* 0206; 0207; Case map */ + { 0x000208, 0, { 0x000209 }}, /* 0208; 0209; Case map */ + { 0x00020A, 0, { 0x00020B }}, /* 020A; 020B; Case map */ + { 0x00020C, 0, { 0x00020D }}, /* 020C; 020D; Case map */ + { 0x00020E, 0, { 0x00020F }}, /* 020E; 020F; Case map */ + { 0x000210, 0, { 0x000211 }}, /* 0210; 0211; Case map */ + { 0x000212, 0, { 0x000213 }}, /* 0212; 0213; Case map */ + { 0x000214, 0, { 0x000215 }}, /* 0214; 0215; Case map */ + { 0x000216, 0, { 0x000217 }}, /* 0216; 0217; Case map */ + { 0x000218, 0, { 0x000219 }}, /* 0218; 0219; Case map */ + { 0x00021A, 0, { 0x00021B }}, /* 021A; 021B; Case map */ + { 0x00021C, 0, { 0x00021D }}, /* 021C; 021D; Case map */ + { 0x00021E, 0, { 0x00021F }}, /* 021E; 021F; Case map */ + { 0x000220, 0, { 0x00019E }}, /* 0220; 019E; Case map */ + { 0x000222, 0, { 0x000223 }}, /* 0222; 0223; Case map */ + { 0x000224, 0, { 0x000225 }}, /* 0224; 0225; Case map */ + { 0x000226, 0, { 0x000227 }}, /* 0226; 0227; Case map */ + { 0x000228, 0, { 0x000229 }}, /* 0228; 0229; Case map */ + { 0x00022A, 0, { 0x00022B }}, /* 022A; 022B; Case map */ + { 0x00022C, 0, { 0x00022D }}, /* 022C; 022D; Case map */ + { 0x00022E, 0, { 0x00022F }}, /* 022E; 022F; Case map */ + { 0x000230, 0, { 0x000231 }}, /* 0230; 0231; Case map */ + { 0x000232, 0, { 0x000233 }}, /* 0232; 0233; Case map */ + { 0x000345, 0, { 0x0003B9 }}, /* 0345; 03B9; Case map */ + { 0x00037A, 0, { 0x000020, /* 037A; 0020 03B9; Additional folding */ + 0x0003B9 }}, + { 0x000386, 0, { 0x0003AC }}, /* 0386; 03AC; Case map */ + { 0x000388, 0, { 0x0003AD }}, /* 0388; 03AD; Case map */ + { 0x000389, 0, { 0x0003AE }}, /* 0389; 03AE; Case map */ + { 0x00038A, 0, { 0x0003AF }}, /* 038A; 03AF; Case map */ + { 0x00038C, 0, { 0x0003CC }}, /* 038C; 03CC; Case map */ + { 0x00038E, 0, { 0x0003CD }}, /* 038E; 03CD; Case map */ + { 0x00038F, 0, { 0x0003CE }}, /* 038F; 03CE; Case map */ + { 0x000390, 0, { 0x0003B9, /* 0390; 03B9 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x000391, 0, { 0x0003B1 }}, /* 0391; 03B1; Case map */ + { 0x000392, 0, { 0x0003B2 }}, /* 0392; 03B2; Case map */ + { 0x000393, 0, { 0x0003B3 }}, /* 0393; 03B3; Case map */ + { 0x000394, 0, { 0x0003B4 }}, /* 0394; 03B4; Case map */ + { 0x000395, 0, { 0x0003B5 }}, /* 0395; 03B5; Case map */ + { 0x000396, 0, { 0x0003B6 }}, /* 0396; 03B6; Case map */ + { 0x000397, 0, { 0x0003B7 }}, /* 0397; 03B7; Case map */ + { 0x000398, 0, { 0x0003B8 }}, /* 0398; 03B8; Case map */ + { 0x000399, 0, { 0x0003B9 }}, /* 0399; 03B9; Case map */ + { 0x00039A, 0, { 0x0003BA }}, /* 039A; 03BA; Case map */ + { 0x00039B, 0, { 0x0003BB }}, /* 039B; 03BB; Case map */ + { 0x00039C, 0, { 0x0003BC }}, /* 039C; 03BC; Case map */ + { 0x00039D, 0, { 0x0003BD }}, /* 039D; 03BD; Case map */ + { 0x00039E, 0, { 0x0003BE }}, /* 039E; 03BE; Case map */ + { 0x00039F, 0, { 0x0003BF }}, /* 039F; 03BF; Case map */ + { 0x0003A0, 0, { 0x0003C0 }}, /* 03A0; 03C0; Case map */ + { 0x0003A1, 0, { 0x0003C1 }}, /* 03A1; 03C1; Case map */ + { 0x0003A3, 0, { 0x0003C3 }}, /* 03A3; 03C3; Case map */ + { 0x0003A4, 0, { 0x0003C4 }}, /* 03A4; 03C4; Case map */ + { 0x0003A5, 0, { 0x0003C5 }}, /* 03A5; 03C5; Case map */ + { 0x0003A6, 0, { 0x0003C6 }}, /* 03A6; 03C6; Case map */ + { 0x0003A7, 0, { 0x0003C7 }}, /* 03A7; 03C7; Case map */ + { 0x0003A8, 0, { 0x0003C8 }}, /* 03A8; 03C8; Case map */ + { 0x0003A9, 0, { 0x0003C9 }}, /* 03A9; 03C9; Case map */ + { 0x0003AA, 0, { 0x0003CA }}, /* 03AA; 03CA; Case map */ + { 0x0003AB, 0, { 0x0003CB }}, /* 03AB; 03CB; Case map */ + { 0x0003B0, 0, { 0x0003C5, /* 03B0; 03C5 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x0003C2, 0, { 0x0003C3 }}, /* 03C2; 03C3; Case map */ + { 0x0003D0, 0, { 0x0003B2 }}, /* 03D0; 03B2; Case map */ + { 0x0003D1, 0, { 0x0003B8 }}, /* 03D1; 03B8; Case map */ + { 0x0003D2, 0, { 0x0003C5 }}, /* 03D2; 03C5; Additional folding */ + { 0x0003D3, 0, { 0x0003CD }}, /* 03D3; 03CD; Additional folding */ + { 0x0003D4, 0, { 0x0003CB }}, /* 03D4; 03CB; Additional folding */ + { 0x0003D5, 0, { 0x0003C6 }}, /* 03D5; 03C6; Case map */ + { 0x0003D6, 0, { 0x0003C0 }}, /* 03D6; 03C0; Case map */ + { 0x0003D8, 0, { 0x0003D9 }}, /* 03D8; 03D9; Case map */ + { 0x0003DA, 0, { 0x0003DB }}, /* 03DA; 03DB; Case map */ + { 0x0003DC, 0, { 0x0003DD }}, /* 03DC; 03DD; Case map */ + { 0x0003DE, 0, { 0x0003DF }}, /* 03DE; 03DF; Case map */ + { 0x0003E0, 0, { 0x0003E1 }}, /* 03E0; 03E1; Case map */ + { 0x0003E2, 0, { 0x0003E3 }}, /* 03E2; 03E3; Case map */ + { 0x0003E4, 0, { 0x0003E5 }}, /* 03E4; 03E5; Case map */ + { 0x0003E6, 0, { 0x0003E7 }}, /* 03E6; 03E7; Case map */ + { 0x0003E8, 0, { 0x0003E9 }}, /* 03E8; 03E9; Case map */ + { 0x0003EA, 0, { 0x0003EB }}, /* 03EA; 03EB; Case map */ + { 0x0003EC, 0, { 0x0003ED }}, /* 03EC; 03ED; Case map */ + { 0x0003EE, 0, { 0x0003EF }}, /* 03EE; 03EF; Case map */ + { 0x0003F0, 0, { 0x0003BA }}, /* 03F0; 03BA; Case map */ + { 0x0003F1, 0, { 0x0003C1 }}, /* 03F1; 03C1; Case map */ + { 0x0003F2, 0, { 0x0003C3 }}, /* 03F2; 03C3; Case map */ + { 0x0003F4, 0, { 0x0003B8 }}, /* 03F4; 03B8; Case map */ + { 0x0003F5, 0, { 0x0003B5 }}, /* 03F5; 03B5; Case map */ + { 0x000400, 0, { 0x000450 }}, /* 0400; 0450; Case map */ + { 0x000401, 0, { 0x000451 }}, /* 0401; 0451; Case map */ + { 0x000402, 0, { 0x000452 }}, /* 0402; 0452; Case map */ + { 0x000403, 0, { 0x000453 }}, /* 0403; 0453; Case map */ + { 0x000404, 0, { 0x000454 }}, /* 0404; 0454; Case map */ + { 0x000405, 0, { 0x000455 }}, /* 0405; 0455; Case map */ + { 0x000406, 0, { 0x000456 }}, /* 0406; 0456; Case map */ + { 0x000407, 0, { 0x000457 }}, /* 0407; 0457; Case map */ + { 0x000408, 0, { 0x000458 }}, /* 0408; 0458; Case map */ + { 0x000409, 0, { 0x000459 }}, /* 0409; 0459; Case map */ + { 0x00040A, 0, { 0x00045A }}, /* 040A; 045A; Case map */ + { 0x00040B, 0, { 0x00045B }}, /* 040B; 045B; Case map */ + { 0x00040C, 0, { 0x00045C }}, /* 040C; 045C; Case map */ + { 0x00040D, 0, { 0x00045D }}, /* 040D; 045D; Case map */ + { 0x00040E, 0, { 0x00045E }}, /* 040E; 045E; Case map */ + { 0x00040F, 0, { 0x00045F }}, /* 040F; 045F; Case map */ + { 0x000410, 0, { 0x000430 }}, /* 0410; 0430; Case map */ + { 0x000411, 0, { 0x000431 }}, /* 0411; 0431; Case map */ + { 0x000412, 0, { 0x000432 }}, /* 0412; 0432; Case map */ + { 0x000413, 0, { 0x000433 }}, /* 0413; 0433; Case map */ + { 0x000414, 0, { 0x000434 }}, /* 0414; 0434; Case map */ + { 0x000415, 0, { 0x000435 }}, /* 0415; 0435; Case map */ + { 0x000416, 0, { 0x000436 }}, /* 0416; 0436; Case map */ + { 0x000417, 0, { 0x000437 }}, /* 0417; 0437; Case map */ + { 0x000418, 0, { 0x000438 }}, /* 0418; 0438; Case map */ + { 0x000419, 0, { 0x000439 }}, /* 0419; 0439; Case map */ + { 0x00041A, 0, { 0x00043A }}, /* 041A; 043A; Case map */ + { 0x00041B, 0, { 0x00043B }}, /* 041B; 043B; Case map */ + { 0x00041C, 0, { 0x00043C }}, /* 041C; 043C; Case map */ + { 0x00041D, 0, { 0x00043D }}, /* 041D; 043D; Case map */ + { 0x00041E, 0, { 0x00043E }}, /* 041E; 043E; Case map */ + { 0x00041F, 0, { 0x00043F }}, /* 041F; 043F; Case map */ + { 0x000420, 0, { 0x000440 }}, /* 0420; 0440; Case map */ + { 0x000421, 0, { 0x000441 }}, /* 0421; 0441; Case map */ + { 0x000422, 0, { 0x000442 }}, /* 0422; 0442; Case map */ + { 0x000423, 0, { 0x000443 }}, /* 0423; 0443; Case map */ + { 0x000424, 0, { 0x000444 }}, /* 0424; 0444; Case map */ + { 0x000425, 0, { 0x000445 }}, /* 0425; 0445; Case map */ + { 0x000426, 0, { 0x000446 }}, /* 0426; 0446; Case map */ + { 0x000427, 0, { 0x000447 }}, /* 0427; 0447; Case map */ + { 0x000428, 0, { 0x000448 }}, /* 0428; 0448; Case map */ + { 0x000429, 0, { 0x000449 }}, /* 0429; 0449; Case map */ + { 0x00042A, 0, { 0x00044A }}, /* 042A; 044A; Case map */ + { 0x00042B, 0, { 0x00044B }}, /* 042B; 044B; Case map */ + { 0x00042C, 0, { 0x00044C }}, /* 042C; 044C; Case map */ + { 0x00042D, 0, { 0x00044D }}, /* 042D; 044D; Case map */ + { 0x00042E, 0, { 0x00044E }}, /* 042E; 044E; Case map */ + { 0x00042F, 0, { 0x00044F }}, /* 042F; 044F; Case map */ + { 0x000460, 0, { 0x000461 }}, /* 0460; 0461; Case map */ + { 0x000462, 0, { 0x000463 }}, /* 0462; 0463; Case map */ + { 0x000464, 0, { 0x000465 }}, /* 0464; 0465; Case map */ + { 0x000466, 0, { 0x000467 }}, /* 0466; 0467; Case map */ + { 0x000468, 0, { 0x000469 }}, /* 0468; 0469; Case map */ + { 0x00046A, 0, { 0x00046B }}, /* 046A; 046B; Case map */ + { 0x00046C, 0, { 0x00046D }}, /* 046C; 046D; Case map */ + { 0x00046E, 0, { 0x00046F }}, /* 046E; 046F; Case map */ + { 0x000470, 0, { 0x000471 }}, /* 0470; 0471; Case map */ + { 0x000472, 0, { 0x000473 }}, /* 0472; 0473; Case map */ + { 0x000474, 0, { 0x000475 }}, /* 0474; 0475; Case map */ + { 0x000476, 0, { 0x000477 }}, /* 0476; 0477; Case map */ + { 0x000478, 0, { 0x000479 }}, /* 0478; 0479; Case map */ + { 0x00047A, 0, { 0x00047B }}, /* 047A; 047B; Case map */ + { 0x00047C, 0, { 0x00047D }}, /* 047C; 047D; Case map */ + { 0x00047E, 0, { 0x00047F }}, /* 047E; 047F; Case map */ + { 0x000480, 0, { 0x000481 }}, /* 0480; 0481; Case map */ + { 0x00048A, 0, { 0x00048B }}, /* 048A; 048B; Case map */ + { 0x00048C, 0, { 0x00048D }}, /* 048C; 048D; Case map */ + { 0x00048E, 0, { 0x00048F }}, /* 048E; 048F; Case map */ + { 0x000490, 0, { 0x000491 }}, /* 0490; 0491; Case map */ + { 0x000492, 0, { 0x000493 }}, /* 0492; 0493; Case map */ + { 0x000494, 0, { 0x000495 }}, /* 0494; 0495; Case map */ + { 0x000496, 0, { 0x000497 }}, /* 0496; 0497; Case map */ + { 0x000498, 0, { 0x000499 }}, /* 0498; 0499; Case map */ + { 0x00049A, 0, { 0x00049B }}, /* 049A; 049B; Case map */ + { 0x00049C, 0, { 0x00049D }}, /* 049C; 049D; Case map */ + { 0x00049E, 0, { 0x00049F }}, /* 049E; 049F; Case map */ + { 0x0004A0, 0, { 0x0004A1 }}, /* 04A0; 04A1; Case map */ + { 0x0004A2, 0, { 0x0004A3 }}, /* 04A2; 04A3; Case map */ + { 0x0004A4, 0, { 0x0004A5 }}, /* 04A4; 04A5; Case map */ + { 0x0004A6, 0, { 0x0004A7 }}, /* 04A6; 04A7; Case map */ + { 0x0004A8, 0, { 0x0004A9 }}, /* 04A8; 04A9; Case map */ + { 0x0004AA, 0, { 0x0004AB }}, /* 04AA; 04AB; Case map */ + { 0x0004AC, 0, { 0x0004AD }}, /* 04AC; 04AD; Case map */ + { 0x0004AE, 0, { 0x0004AF }}, /* 04AE; 04AF; Case map */ + { 0x0004B0, 0, { 0x0004B1 }}, /* 04B0; 04B1; Case map */ + { 0x0004B2, 0, { 0x0004B3 }}, /* 04B2; 04B3; Case map */ + { 0x0004B4, 0, { 0x0004B5 }}, /* 04B4; 04B5; Case map */ + { 0x0004B6, 0, { 0x0004B7 }}, /* 04B6; 04B7; Case map */ + { 0x0004B8, 0, { 0x0004B9 }}, /* 04B8; 04B9; Case map */ + { 0x0004BA, 0, { 0x0004BB }}, /* 04BA; 04BB; Case map */ + { 0x0004BC, 0, { 0x0004BD }}, /* 04BC; 04BD; Case map */ + { 0x0004BE, 0, { 0x0004BF }}, /* 04BE; 04BF; Case map */ + { 0x0004C1, 0, { 0x0004C2 }}, /* 04C1; 04C2; Case map */ + { 0x0004C3, 0, { 0x0004C4 }}, /* 04C3; 04C4; Case map */ + { 0x0004C5, 0, { 0x0004C6 }}, /* 04C5; 04C6; Case map */ + { 0x0004C7, 0, { 0x0004C8 }}, /* 04C7; 04C8; Case map */ + { 0x0004C9, 0, { 0x0004CA }}, /* 04C9; 04CA; Case map */ + { 0x0004CB, 0, { 0x0004CC }}, /* 04CB; 04CC; Case map */ + { 0x0004CD, 0, { 0x0004CE }}, /* 04CD; 04CE; Case map */ + { 0x0004D0, 0, { 0x0004D1 }}, /* 04D0; 04D1; Case map */ + { 0x0004D2, 0, { 0x0004D3 }}, /* 04D2; 04D3; Case map */ + { 0x0004D4, 0, { 0x0004D5 }}, /* 04D4; 04D5; Case map */ + { 0x0004D6, 0, { 0x0004D7 }}, /* 04D6; 04D7; Case map */ + { 0x0004D8, 0, { 0x0004D9 }}, /* 04D8; 04D9; Case map */ + { 0x0004DA, 0, { 0x0004DB }}, /* 04DA; 04DB; Case map */ + { 0x0004DC, 0, { 0x0004DD }}, /* 04DC; 04DD; Case map */ + { 0x0004DE, 0, { 0x0004DF }}, /* 04DE; 04DF; Case map */ + { 0x0004E0, 0, { 0x0004E1 }}, /* 04E0; 04E1; Case map */ + { 0x0004E2, 0, { 0x0004E3 }}, /* 04E2; 04E3; Case map */ + { 0x0004E4, 0, { 0x0004E5 }}, /* 04E4; 04E5; Case map */ + { 0x0004E6, 0, { 0x0004E7 }}, /* 04E6; 04E7; Case map */ + { 0x0004E8, 0, { 0x0004E9 }}, /* 04E8; 04E9; Case map */ + { 0x0004EA, 0, { 0x0004EB }}, /* 04EA; 04EB; Case map */ + { 0x0004EC, 0, { 0x0004ED }}, /* 04EC; 04ED; Case map */ + { 0x0004EE, 0, { 0x0004EF }}, /* 04EE; 04EF; Case map */ + { 0x0004F0, 0, { 0x0004F1 }}, /* 04F0; 04F1; Case map */ + { 0x0004F2, 0, { 0x0004F3 }}, /* 04F2; 04F3; Case map */ + { 0x0004F4, 0, { 0x0004F5 }}, /* 04F4; 04F5; Case map */ + { 0x0004F8, 0, { 0x0004F9 }}, /* 04F8; 04F9; Case map */ + { 0x000500, 0, { 0x000501 }}, /* 0500; 0501; Case map */ + { 0x000502, 0, { 0x000503 }}, /* 0502; 0503; Case map */ + { 0x000504, 0, { 0x000505 }}, /* 0504; 0505; Case map */ + { 0x000506, 0, { 0x000507 }}, /* 0506; 0507; Case map */ + { 0x000508, 0, { 0x000509 }}, /* 0508; 0509; Case map */ + { 0x00050A, 0, { 0x00050B }}, /* 050A; 050B; Case map */ + { 0x00050C, 0, { 0x00050D }}, /* 050C; 050D; Case map */ + { 0x00050E, 0, { 0x00050F }}, /* 050E; 050F; Case map */ + { 0x000531, 0, { 0x000561 }}, /* 0531; 0561; Case map */ + { 0x000532, 0, { 0x000562 }}, /* 0532; 0562; Case map */ + { 0x000533, 0, { 0x000563 }}, /* 0533; 0563; Case map */ + { 0x000534, 0, { 0x000564 }}, /* 0534; 0564; Case map */ + { 0x000535, 0, { 0x000565 }}, /* 0535; 0565; Case map */ + { 0x000536, 0, { 0x000566 }}, /* 0536; 0566; Case map */ + { 0x000537, 0, { 0x000567 }}, /* 0537; 0567; Case map */ + { 0x000538, 0, { 0x000568 }}, /* 0538; 0568; Case map */ + { 0x000539, 0, { 0x000569 }}, /* 0539; 0569; Case map */ + { 0x00053A, 0, { 0x00056A }}, /* 053A; 056A; Case map */ + { 0x00053B, 0, { 0x00056B }}, /* 053B; 056B; Case map */ + { 0x00053C, 0, { 0x00056C }}, /* 053C; 056C; Case map */ + { 0x00053D, 0, { 0x00056D }}, /* 053D; 056D; Case map */ + { 0x00053E, 0, { 0x00056E }}, /* 053E; 056E; Case map */ + { 0x00053F, 0, { 0x00056F }}, /* 053F; 056F; Case map */ + { 0x000540, 0, { 0x000570 }}, /* 0540; 0570; Case map */ + { 0x000541, 0, { 0x000571 }}, /* 0541; 0571; Case map */ + { 0x000542, 0, { 0x000572 }}, /* 0542; 0572; Case map */ + { 0x000543, 0, { 0x000573 }}, /* 0543; 0573; Case map */ + { 0x000544, 0, { 0x000574 }}, /* 0544; 0574; Case map */ + { 0x000545, 0, { 0x000575 }}, /* 0545; 0575; Case map */ + { 0x000546, 0, { 0x000576 }}, /* 0546; 0576; Case map */ + { 0x000547, 0, { 0x000577 }}, /* 0547; 0577; Case map */ + { 0x000548, 0, { 0x000578 }}, /* 0548; 0578; Case map */ + { 0x000549, 0, { 0x000579 }}, /* 0549; 0579; Case map */ + { 0x00054A, 0, { 0x00057A }}, /* 054A; 057A; Case map */ + { 0x00054B, 0, { 0x00057B }}, /* 054B; 057B; Case map */ + { 0x00054C, 0, { 0x00057C }}, /* 054C; 057C; Case map */ + { 0x00054D, 0, { 0x00057D }}, /* 054D; 057D; Case map */ + { 0x00054E, 0, { 0x00057E }}, /* 054E; 057E; Case map */ + { 0x00054F, 0, { 0x00057F }}, /* 054F; 057F; Case map */ + { 0x000550, 0, { 0x000580 }}, /* 0550; 0580; Case map */ + { 0x000551, 0, { 0x000581 }}, /* 0551; 0581; Case map */ + { 0x000552, 0, { 0x000582 }}, /* 0552; 0582; Case map */ + { 0x000553, 0, { 0x000583 }}, /* 0553; 0583; Case map */ + { 0x000554, 0, { 0x000584 }}, /* 0554; 0584; Case map */ + { 0x000555, 0, { 0x000585 }}, /* 0555; 0585; Case map */ + { 0x000556, 0, { 0x000586 }}, /* 0556; 0586; Case map */ + { 0x000587, 0, { 0x000565, /* 0587; 0565 0582; Case map */ + 0x000582 }}, + { 0x001E00, 0, { 0x001E01 }}, /* 1E00; 1E01; Case map */ + { 0x001E02, 0, { 0x001E03 }}, /* 1E02; 1E03; Case map */ + { 0x001E04, 0, { 0x001E05 }}, /* 1E04; 1E05; Case map */ + { 0x001E06, 0, { 0x001E07 }}, /* 1E06; 1E07; Case map */ + { 0x001E08, 0, { 0x001E09 }}, /* 1E08; 1E09; Case map */ + { 0x001E0A, 0, { 0x001E0B }}, /* 1E0A; 1E0B; Case map */ + { 0x001E0C, 0, { 0x001E0D }}, /* 1E0C; 1E0D; Case map */ + { 0x001E0E, 0, { 0x001E0F }}, /* 1E0E; 1E0F; Case map */ + { 0x001E10, 0, { 0x001E11 }}, /* 1E10; 1E11; Case map */ + { 0x001E12, 0, { 0x001E13 }}, /* 1E12; 1E13; Case map */ + { 0x001E14, 0, { 0x001E15 }}, /* 1E14; 1E15; Case map */ + { 0x001E16, 0, { 0x001E17 }}, /* 1E16; 1E17; Case map */ + { 0x001E18, 0, { 0x001E19 }}, /* 1E18; 1E19; Case map */ + { 0x001E1A, 0, { 0x001E1B }}, /* 1E1A; 1E1B; Case map */ + { 0x001E1C, 0, { 0x001E1D }}, /* 1E1C; 1E1D; Case map */ + { 0x001E1E, 0, { 0x001E1F }}, /* 1E1E; 1E1F; Case map */ + { 0x001E20, 0, { 0x001E21 }}, /* 1E20; 1E21; Case map */ + { 0x001E22, 0, { 0x001E23 }}, /* 1E22; 1E23; Case map */ + { 0x001E24, 0, { 0x001E25 }}, /* 1E24; 1E25; Case map */ + { 0x001E26, 0, { 0x001E27 }}, /* 1E26; 1E27; Case map */ + { 0x001E28, 0, { 0x001E29 }}, /* 1E28; 1E29; Case map */ + { 0x001E2A, 0, { 0x001E2B }}, /* 1E2A; 1E2B; Case map */ + { 0x001E2C, 0, { 0x001E2D }}, /* 1E2C; 1E2D; Case map */ + { 0x001E2E, 0, { 0x001E2F }}, /* 1E2E; 1E2F; Case map */ + { 0x001E30, 0, { 0x001E31 }}, /* 1E30; 1E31; Case map */ + { 0x001E32, 0, { 0x001E33 }}, /* 1E32; 1E33; Case map */ + { 0x001E34, 0, { 0x001E35 }}, /* 1E34; 1E35; Case map */ + { 0x001E36, 0, { 0x001E37 }}, /* 1E36; 1E37; Case map */ + { 0x001E38, 0, { 0x001E39 }}, /* 1E38; 1E39; Case map */ + { 0x001E3A, 0, { 0x001E3B }}, /* 1E3A; 1E3B; Case map */ + { 0x001E3C, 0, { 0x001E3D }}, /* 1E3C; 1E3D; Case map */ + { 0x001E3E, 0, { 0x001E3F }}, /* 1E3E; 1E3F; Case map */ + { 0x001E40, 0, { 0x001E41 }}, /* 1E40; 1E41; Case map */ + { 0x001E42, 0, { 0x001E43 }}, /* 1E42; 1E43; Case map */ + { 0x001E44, 0, { 0x001E45 }}, /* 1E44; 1E45; Case map */ + { 0x001E46, 0, { 0x001E47 }}, /* 1E46; 1E47; Case map */ + { 0x001E48, 0, { 0x001E49 }}, /* 1E48; 1E49; Case map */ + { 0x001E4A, 0, { 0x001E4B }}, /* 1E4A; 1E4B; Case map */ + { 0x001E4C, 0, { 0x001E4D }}, /* 1E4C; 1E4D; Case map */ + { 0x001E4E, 0, { 0x001E4F }}, /* 1E4E; 1E4F; Case map */ + { 0x001E50, 0, { 0x001E51 }}, /* 1E50; 1E51; Case map */ + { 0x001E52, 0, { 0x001E53 }}, /* 1E52; 1E53; Case map */ + { 0x001E54, 0, { 0x001E55 }}, /* 1E54; 1E55; Case map */ + { 0x001E56, 0, { 0x001E57 }}, /* 1E56; 1E57; Case map */ + { 0x001E58, 0, { 0x001E59 }}, /* 1E58; 1E59; Case map */ + { 0x001E5A, 0, { 0x001E5B }}, /* 1E5A; 1E5B; Case map */ + { 0x001E5C, 0, { 0x001E5D }}, /* 1E5C; 1E5D; Case map */ + { 0x001E5E, 0, { 0x001E5F }}, /* 1E5E; 1E5F; Case map */ + { 0x001E60, 0, { 0x001E61 }}, /* 1E60; 1E61; Case map */ + { 0x001E62, 0, { 0x001E63 }}, /* 1E62; 1E63; Case map */ + { 0x001E64, 0, { 0x001E65 }}, /* 1E64; 1E65; Case map */ + { 0x001E66, 0, { 0x001E67 }}, /* 1E66; 1E67; Case map */ + { 0x001E68, 0, { 0x001E69 }}, /* 1E68; 1E69; Case map */ + { 0x001E6A, 0, { 0x001E6B }}, /* 1E6A; 1E6B; Case map */ + { 0x001E6C, 0, { 0x001E6D }}, /* 1E6C; 1E6D; Case map */ + { 0x001E6E, 0, { 0x001E6F }}, /* 1E6E; 1E6F; Case map */ + { 0x001E70, 0, { 0x001E71 }}, /* 1E70; 1E71; Case map */ + { 0x001E72, 0, { 0x001E73 }}, /* 1E72; 1E73; Case map */ + { 0x001E74, 0, { 0x001E75 }}, /* 1E74; 1E75; Case map */ + { 0x001E76, 0, { 0x001E77 }}, /* 1E76; 1E77; Case map */ + { 0x001E78, 0, { 0x001E79 }}, /* 1E78; 1E79; Case map */ + { 0x001E7A, 0, { 0x001E7B }}, /* 1E7A; 1E7B; Case map */ + { 0x001E7C, 0, { 0x001E7D }}, /* 1E7C; 1E7D; Case map */ + { 0x001E7E, 0, { 0x001E7F }}, /* 1E7E; 1E7F; Case map */ + { 0x001E80, 0, { 0x001E81 }}, /* 1E80; 1E81; Case map */ + { 0x001E82, 0, { 0x001E83 }}, /* 1E82; 1E83; Case map */ + { 0x001E84, 0, { 0x001E85 }}, /* 1E84; 1E85; Case map */ + { 0x001E86, 0, { 0x001E87 }}, /* 1E86; 1E87; Case map */ + { 0x001E88, 0, { 0x001E89 }}, /* 1E88; 1E89; Case map */ + { 0x001E8A, 0, { 0x001E8B }}, /* 1E8A; 1E8B; Case map */ + { 0x001E8C, 0, { 0x001E8D }}, /* 1E8C; 1E8D; Case map */ + { 0x001E8E, 0, { 0x001E8F }}, /* 1E8E; 1E8F; Case map */ + { 0x001E90, 0, { 0x001E91 }}, /* 1E90; 1E91; Case map */ + { 0x001E92, 0, { 0x001E93 }}, /* 1E92; 1E93; Case map */ + { 0x001E94, 0, { 0x001E95 }}, /* 1E94; 1E95; Case map */ + { 0x001E96, 0, { 0x000068, /* 1E96; 0068 0331; Case map */ + 0x000331 }}, + { 0x001E97, 0, { 0x000074, /* 1E97; 0074 0308; Case map */ + 0x000308 }}, + { 0x001E98, 0, { 0x000077, /* 1E98; 0077 030A; Case map */ + 0x00030A }}, + { 0x001E99, 0, { 0x000079, /* 1E99; 0079 030A; Case map */ + 0x00030A }}, + { 0x001E9A, 0, { 0x000061, /* 1E9A; 0061 02BE; Case map */ + 0x0002BE }}, + { 0x001E9B, 0, { 0x001E61 }}, /* 1E9B; 1E61; Case map */ + { 0x001EA0, 0, { 0x001EA1 }}, /* 1EA0; 1EA1; Case map */ + { 0x001EA2, 0, { 0x001EA3 }}, /* 1EA2; 1EA3; Case map */ + { 0x001EA4, 0, { 0x001EA5 }}, /* 1EA4; 1EA5; Case map */ + { 0x001EA6, 0, { 0x001EA7 }}, /* 1EA6; 1EA7; Case map */ + { 0x001EA8, 0, { 0x001EA9 }}, /* 1EA8; 1EA9; Case map */ + { 0x001EAA, 0, { 0x001EAB }}, /* 1EAA; 1EAB; Case map */ + { 0x001EAC, 0, { 0x001EAD }}, /* 1EAC; 1EAD; Case map */ + { 0x001EAE, 0, { 0x001EAF }}, /* 1EAE; 1EAF; Case map */ + { 0x001EB0, 0, { 0x001EB1 }}, /* 1EB0; 1EB1; Case map */ + { 0x001EB2, 0, { 0x001EB3 }}, /* 1EB2; 1EB3; Case map */ + { 0x001EB4, 0, { 0x001EB5 }}, /* 1EB4; 1EB5; Case map */ + { 0x001EB6, 0, { 0x001EB7 }}, /* 1EB6; 1EB7; Case map */ + { 0x001EB8, 0, { 0x001EB9 }}, /* 1EB8; 1EB9; Case map */ + { 0x001EBA, 0, { 0x001EBB }}, /* 1EBA; 1EBB; Case map */ + { 0x001EBC, 0, { 0x001EBD }}, /* 1EBC; 1EBD; Case map */ + { 0x001EBE, 0, { 0x001EBF }}, /* 1EBE; 1EBF; Case map */ + { 0x001EC0, 0, { 0x001EC1 }}, /* 1EC0; 1EC1; Case map */ + { 0x001EC2, 0, { 0x001EC3 }}, /* 1EC2; 1EC3; Case map */ + { 0x001EC4, 0, { 0x001EC5 }}, /* 1EC4; 1EC5; Case map */ + { 0x001EC6, 0, { 0x001EC7 }}, /* 1EC6; 1EC7; Case map */ + { 0x001EC8, 0, { 0x001EC9 }}, /* 1EC8; 1EC9; Case map */ + { 0x001ECA, 0, { 0x001ECB }}, /* 1ECA; 1ECB; Case map */ + { 0x001ECC, 0, { 0x001ECD }}, /* 1ECC; 1ECD; Case map */ + { 0x001ECE, 0, { 0x001ECF }}, /* 1ECE; 1ECF; Case map */ + { 0x001ED0, 0, { 0x001ED1 }}, /* 1ED0; 1ED1; Case map */ + { 0x001ED2, 0, { 0x001ED3 }}, /* 1ED2; 1ED3; Case map */ + { 0x001ED4, 0, { 0x001ED5 }}, /* 1ED4; 1ED5; Case map */ + { 0x001ED6, 0, { 0x001ED7 }}, /* 1ED6; 1ED7; Case map */ + { 0x001ED8, 0, { 0x001ED9 }}, /* 1ED8; 1ED9; Case map */ + { 0x001EDA, 0, { 0x001EDB }}, /* 1EDA; 1EDB; Case map */ + { 0x001EDC, 0, { 0x001EDD }}, /* 1EDC; 1EDD; Case map */ + { 0x001EDE, 0, { 0x001EDF }}, /* 1EDE; 1EDF; Case map */ + { 0x001EE0, 0, { 0x001EE1 }}, /* 1EE0; 1EE1; Case map */ + { 0x001EE2, 0, { 0x001EE3 }}, /* 1EE2; 1EE3; Case map */ + { 0x001EE4, 0, { 0x001EE5 }}, /* 1EE4; 1EE5; Case map */ + { 0x001EE6, 0, { 0x001EE7 }}, /* 1EE6; 1EE7; Case map */ + { 0x001EE8, 0, { 0x001EE9 }}, /* 1EE8; 1EE9; Case map */ + { 0x001EEA, 0, { 0x001EEB }}, /* 1EEA; 1EEB; Case map */ + { 0x001EEC, 0, { 0x001EED }}, /* 1EEC; 1EED; Case map */ + { 0x001EEE, 0, { 0x001EEF }}, /* 1EEE; 1EEF; Case map */ + { 0x001EF0, 0, { 0x001EF1 }}, /* 1EF0; 1EF1; Case map */ + { 0x001EF2, 0, { 0x001EF3 }}, /* 1EF2; 1EF3; Case map */ + { 0x001EF4, 0, { 0x001EF5 }}, /* 1EF4; 1EF5; Case map */ + { 0x001EF6, 0, { 0x001EF7 }}, /* 1EF6; 1EF7; Case map */ + { 0x001EF8, 0, { 0x001EF9 }}, /* 1EF8; 1EF9; Case map */ + { 0x001F08, 0, { 0x001F00 }}, /* 1F08; 1F00; Case map */ + { 0x001F09, 0, { 0x001F01 }}, /* 1F09; 1F01; Case map */ + { 0x001F0A, 0, { 0x001F02 }}, /* 1F0A; 1F02; Case map */ + { 0x001F0B, 0, { 0x001F03 }}, /* 1F0B; 1F03; Case map */ + { 0x001F0C, 0, { 0x001F04 }}, /* 1F0C; 1F04; Case map */ + { 0x001F0D, 0, { 0x001F05 }}, /* 1F0D; 1F05; Case map */ + { 0x001F0E, 0, { 0x001F06 }}, /* 1F0E; 1F06; Case map */ + { 0x001F0F, 0, { 0x001F07 }}, /* 1F0F; 1F07; Case map */ + { 0x001F18, 0, { 0x001F10 }}, /* 1F18; 1F10; Case map */ + { 0x001F19, 0, { 0x001F11 }}, /* 1F19; 1F11; Case map */ + { 0x001F1A, 0, { 0x001F12 }}, /* 1F1A; 1F12; Case map */ + { 0x001F1B, 0, { 0x001F13 }}, /* 1F1B; 1F13; Case map */ + { 0x001F1C, 0, { 0x001F14 }}, /* 1F1C; 1F14; Case map */ + { 0x001F1D, 0, { 0x001F15 }}, /* 1F1D; 1F15; Case map */ + { 0x001F28, 0, { 0x001F20 }}, /* 1F28; 1F20; Case map */ + { 0x001F29, 0, { 0x001F21 }}, /* 1F29; 1F21; Case map */ + { 0x001F2A, 0, { 0x001F22 }}, /* 1F2A; 1F22; Case map */ + { 0x001F2B, 0, { 0x001F23 }}, /* 1F2B; 1F23; Case map */ + { 0x001F2C, 0, { 0x001F24 }}, /* 1F2C; 1F24; Case map */ + { 0x001F2D, 0, { 0x001F25 }}, /* 1F2D; 1F25; Case map */ + { 0x001F2E, 0, { 0x001F26 }}, /* 1F2E; 1F26; Case map */ + { 0x001F2F, 0, { 0x001F27 }}, /* 1F2F; 1F27; Case map */ + { 0x001F38, 0, { 0x001F30 }}, /* 1F38; 1F30; Case map */ + { 0x001F39, 0, { 0x001F31 }}, /* 1F39; 1F31; Case map */ + { 0x001F3A, 0, { 0x001F32 }}, /* 1F3A; 1F32; Case map */ + { 0x001F3B, 0, { 0x001F33 }}, /* 1F3B; 1F33; Case map */ + { 0x001F3C, 0, { 0x001F34 }}, /* 1F3C; 1F34; Case map */ + { 0x001F3D, 0, { 0x001F35 }}, /* 1F3D; 1F35; Case map */ + { 0x001F3E, 0, { 0x001F36 }}, /* 1F3E; 1F36; Case map */ + { 0x001F3F, 0, { 0x001F37 }}, /* 1F3F; 1F37; Case map */ + { 0x001F48, 0, { 0x001F40 }}, /* 1F48; 1F40; Case map */ + { 0x001F49, 0, { 0x001F41 }}, /* 1F49; 1F41; Case map */ + { 0x001F4A, 0, { 0x001F42 }}, /* 1F4A; 1F42; Case map */ + { 0x001F4B, 0, { 0x001F43 }}, /* 1F4B; 1F43; Case map */ + { 0x001F4C, 0, { 0x001F44 }}, /* 1F4C; 1F44; Case map */ + { 0x001F4D, 0, { 0x001F45 }}, /* 1F4D; 1F45; Case map */ + { 0x001F50, 0, { 0x0003C5, /* 1F50; 03C5 0313; Case map */ + 0x000313 }}, + { 0x001F52, 0, { 0x0003C5, /* 1F52; 03C5 0313 0300; Case map */ + 0x000313, 0x000300 }}, + { 0x001F54, 0, { 0x0003C5, /* 1F54; 03C5 0313 0301; Case map */ + 0x000313, 0x000301 }}, + { 0x001F56, 0, { 0x0003C5, /* 1F56; 03C5 0313 0342; Case map */ + 0x000313, 0x000342 }}, + { 0x001F59, 0, { 0x001F51 }}, /* 1F59; 1F51; Case map */ + { 0x001F5B, 0, { 0x001F53 }}, /* 1F5B; 1F53; Case map */ + { 0x001F5D, 0, { 0x001F55 }}, /* 1F5D; 1F55; Case map */ + { 0x001F5F, 0, { 0x001F57 }}, /* 1F5F; 1F57; Case map */ + { 0x001F68, 0, { 0x001F60 }}, /* 1F68; 1F60; Case map */ + { 0x001F69, 0, { 0x001F61 }}, /* 1F69; 1F61; Case map */ + { 0x001F6A, 0, { 0x001F62 }}, /* 1F6A; 1F62; Case map */ + { 0x001F6B, 0, { 0x001F63 }}, /* 1F6B; 1F63; Case map */ + { 0x001F6C, 0, { 0x001F64 }}, /* 1F6C; 1F64; Case map */ + { 0x001F6D, 0, { 0x001F65 }}, /* 1F6D; 1F65; Case map */ + { 0x001F6E, 0, { 0x001F66 }}, /* 1F6E; 1F66; Case map */ + { 0x001F6F, 0, { 0x001F67 }}, /* 1F6F; 1F67; Case map */ + { 0x001F80, 0, { 0x001F00, /* 1F80; 1F00 03B9; Case map */ + 0x0003B9 }}, + { 0x001F81, 0, { 0x001F01, /* 1F81; 1F01 03B9; Case map */ + 0x0003B9 }}, + { 0x001F82, 0, { 0x001F02, /* 1F82; 1F02 03B9; Case map */ + 0x0003B9 }}, + { 0x001F83, 0, { 0x001F03, /* 1F83; 1F03 03B9; Case map */ + 0x0003B9 }}, + { 0x001F84, 0, { 0x001F04, /* 1F84; 1F04 03B9; Case map */ + 0x0003B9 }}, + { 0x001F85, 0, { 0x001F05, /* 1F85; 1F05 03B9; Case map */ + 0x0003B9 }}, + { 0x001F86, 0, { 0x001F06, /* 1F86; 1F06 03B9; Case map */ + 0x0003B9 }}, + { 0x001F87, 0, { 0x001F07, /* 1F87; 1F07 03B9; Case map */ + 0x0003B9 }}, + { 0x001F88, 0, { 0x001F00, /* 1F88; 1F00 03B9; Case map */ + 0x0003B9 }}, + { 0x001F89, 0, { 0x001F01, /* 1F89; 1F01 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8A, 0, { 0x001F02, /* 1F8A; 1F02 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8B, 0, { 0x001F03, /* 1F8B; 1F03 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8C, 0, { 0x001F04, /* 1F8C; 1F04 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8D, 0, { 0x001F05, /* 1F8D; 1F05 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8E, 0, { 0x001F06, /* 1F8E; 1F06 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8F, 0, { 0x001F07, /* 1F8F; 1F07 03B9; Case map */ + 0x0003B9 }}, + { 0x001F90, 0, { 0x001F20, /* 1F90; 1F20 03B9; Case map */ + 0x0003B9 }}, + { 0x001F91, 0, { 0x001F21, /* 1F91; 1F21 03B9; Case map */ + 0x0003B9 }}, + { 0x001F92, 0, { 0x001F22, /* 1F92; 1F22 03B9; Case map */ + 0x0003B9 }}, + { 0x001F93, 0, { 0x001F23, /* 1F93; 1F23 03B9; Case map */ + 0x0003B9 }}, + { 0x001F94, 0, { 0x001F24, /* 1F94; 1F24 03B9; Case map */ + 0x0003B9 }}, + { 0x001F95, 0, { 0x001F25, /* 1F95; 1F25 03B9; Case map */ + 0x0003B9 }}, + { 0x001F96, 0, { 0x001F26, /* 1F96; 1F26 03B9; Case map */ + 0x0003B9 }}, + { 0x001F97, 0, { 0x001F27, /* 1F97; 1F27 03B9; Case map */ + 0x0003B9 }}, + { 0x001F98, 0, { 0x001F20, /* 1F98; 1F20 03B9; Case map */ + 0x0003B9 }}, + { 0x001F99, 0, { 0x001F21, /* 1F99; 1F21 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9A, 0, { 0x001F22, /* 1F9A; 1F22 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9B, 0, { 0x001F23, /* 1F9B; 1F23 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9C, 0, { 0x001F24, /* 1F9C; 1F24 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9D, 0, { 0x001F25, /* 1F9D; 1F25 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9E, 0, { 0x001F26, /* 1F9E; 1F26 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9F, 0, { 0x001F27, /* 1F9F; 1F27 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA0, 0, { 0x001F60, /* 1FA0; 1F60 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA1, 0, { 0x001F61, /* 1FA1; 1F61 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA2, 0, { 0x001F62, /* 1FA2; 1F62 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA3, 0, { 0x001F63, /* 1FA3; 1F63 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA4, 0, { 0x001F64, /* 1FA4; 1F64 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA5, 0, { 0x001F65, /* 1FA5; 1F65 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA6, 0, { 0x001F66, /* 1FA6; 1F66 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA7, 0, { 0x001F67, /* 1FA7; 1F67 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA8, 0, { 0x001F60, /* 1FA8; 1F60 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA9, 0, { 0x001F61, /* 1FA9; 1F61 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAA, 0, { 0x001F62, /* 1FAA; 1F62 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAB, 0, { 0x001F63, /* 1FAB; 1F63 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAC, 0, { 0x001F64, /* 1FAC; 1F64 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAD, 0, { 0x001F65, /* 1FAD; 1F65 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAE, 0, { 0x001F66, /* 1FAE; 1F66 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAF, 0, { 0x001F67, /* 1FAF; 1F67 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB2, 0, { 0x001F70, /* 1FB2; 1F70 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB3, 0, { 0x0003B1, /* 1FB3; 03B1 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB4, 0, { 0x0003AC, /* 1FB4; 03AC 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB6, 0, { 0x0003B1, /* 1FB6; 03B1 0342; Case map */ + 0x000342 }}, + { 0x001FB7, 0, { 0x0003B1, /* 1FB7; 03B1 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FB8, 0, { 0x001FB0 }}, /* 1FB8; 1FB0; Case map */ + { 0x001FB9, 0, { 0x001FB1 }}, /* 1FB9; 1FB1; Case map */ + { 0x001FBA, 0, { 0x001F70 }}, /* 1FBA; 1F70; Case map */ + { 0x001FBB, 0, { 0x001F71 }}, /* 1FBB; 1F71; Case map */ + { 0x001FBC, 0, { 0x0003B1, /* 1FBC; 03B1 03B9; Case map */ + 0x0003B9 }}, + { 0x001FBE, 0, { 0x0003B9 }}, /* 1FBE; 03B9; Case map */ + { 0x001FC2, 0, { 0x001F74, /* 1FC2; 1F74 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC3, 0, { 0x0003B7, /* 1FC3; 03B7 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC4, 0, { 0x0003AE, /* 1FC4; 03AE 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC6, 0, { 0x0003B7, /* 1FC6; 03B7 0342; Case map */ + 0x000342 }}, + { 0x001FC7, 0, { 0x0003B7, /* 1FC7; 03B7 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FC8, 0, { 0x001F72 }}, /* 1FC8; 1F72; Case map */ + { 0x001FC9, 0, { 0x001F73 }}, /* 1FC9; 1F73; Case map */ + { 0x001FCA, 0, { 0x001F74 }}, /* 1FCA; 1F74; Case map */ + { 0x001FCB, 0, { 0x001F75 }}, /* 1FCB; 1F75; Case map */ + { 0x001FCC, 0, { 0x0003B7, /* 1FCC; 03B7 03B9; Case map */ + 0x0003B9 }}, + { 0x001FD2, 0, { 0x0003B9, /* 1FD2; 03B9 0308 0300; Case map */ + 0x000308, 0x000300 }}, + { 0x001FD3, 0, { 0x0003B9, /* 1FD3; 03B9 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x001FD6, 0, { 0x0003B9, /* 1FD6; 03B9 0342; Case map */ + 0x000342 }}, + { 0x001FD7, 0, { 0x0003B9, /* 1FD7; 03B9 0308 0342; Case map */ + 0x000308, 0x000342 }}, + { 0x001FD8, 0, { 0x001FD0 }}, /* 1FD8; 1FD0; Case map */ + { 0x001FD9, 0, { 0x001FD1 }}, /* 1FD9; 1FD1; Case map */ + { 0x001FDA, 0, { 0x001F76 }}, /* 1FDA; 1F76; Case map */ + { 0x001FDB, 0, { 0x001F77 }}, /* 1FDB; 1F77; Case map */ + { 0x001FE2, 0, { 0x0003C5, /* 1FE2; 03C5 0308 0300; Case map */ + 0x000308, 0x000300 }}, + { 0x001FE3, 0, { 0x0003C5, /* 1FE3; 03C5 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x001FE4, 0, { 0x0003C1, /* 1FE4; 03C1 0313; Case map */ + 0x000313 }}, + { 0x001FE6, 0, { 0x0003C5, /* 1FE6; 03C5 0342; Case map */ + 0x000342 }}, + { 0x001FE7, 0, { 0x0003C5, /* 1FE7; 03C5 0308 0342; Case map */ + 0x000308, 0x000342 }}, + { 0x001FE8, 0, { 0x001FE0 }}, /* 1FE8; 1FE0; Case map */ + { 0x001FE9, 0, { 0x001FE1 }}, /* 1FE9; 1FE1; Case map */ + { 0x001FEA, 0, { 0x001F7A }}, /* 1FEA; 1F7A; Case map */ + { 0x001FEB, 0, { 0x001F7B }}, /* 1FEB; 1F7B; Case map */ + { 0x001FEC, 0, { 0x001FE5 }}, /* 1FEC; 1FE5; Case map */ + { 0x001FF2, 0, { 0x001F7C, /* 1FF2; 1F7C 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF3, 0, { 0x0003C9, /* 1FF3; 03C9 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF4, 0, { 0x0003CE, /* 1FF4; 03CE 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF6, 0, { 0x0003C9, /* 1FF6; 03C9 0342; Case map */ + 0x000342 }}, + { 0x001FF7, 0, { 0x0003C9, /* 1FF7; 03C9 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FF8, 0, { 0x001F78 }}, /* 1FF8; 1F78; Case map */ + { 0x001FF9, 0, { 0x001F79 }}, /* 1FF9; 1F79; Case map */ + { 0x001FFA, 0, { 0x001F7C }}, /* 1FFA; 1F7C; Case map */ + { 0x001FFB, 0, { 0x001F7D }}, /* 1FFB; 1F7D; Case map */ + { 0x001FFC, 0, { 0x0003C9, /* 1FFC; 03C9 03B9; Case map */ + 0x0003B9 }}, + { 0x0020A8, 0, { 0x000072, /* 20A8; 0072 0073; Additional folding */ + 0x000073 }}, + { 0x002102, 0, { 0x000063 }}, /* 2102; 0063; Additional folding */ + { 0x002103, 0, { 0x0000B0, /* 2103; 00B0 0063; Additional folding */ + 0x000063 }}, + { 0x002107, 0, { 0x00025B }}, /* 2107; 025B; Additional folding */ + { 0x002109, 0, { 0x0000B0, /* 2109; 00B0 0066; Additional folding */ + 0x000066 }}, + { 0x00210B, 0, { 0x000068 }}, /* 210B; 0068; Additional folding */ + { 0x00210C, 0, { 0x000068 }}, /* 210C; 0068; Additional folding */ + { 0x00210D, 0, { 0x000068 }}, /* 210D; 0068; Additional folding */ + { 0x002110, 0, { 0x000069 }}, /* 2110; 0069; Additional folding */ + { 0x002111, 0, { 0x000069 }}, /* 2111; 0069; Additional folding */ + { 0x002112, 0, { 0x00006C }}, /* 2112; 006C; Additional folding */ + { 0x002115, 0, { 0x00006E }}, /* 2115; 006E; Additional folding */ + { 0x002116, 0, { 0x00006E, /* 2116; 006E 006F; Additional folding */ + 0x00006F }}, + { 0x002119, 0, { 0x000070 }}, /* 2119; 0070; Additional folding */ + { 0x00211A, 0, { 0x000071 }}, /* 211A; 0071; Additional folding */ + { 0x00211B, 0, { 0x000072 }}, /* 211B; 0072; Additional folding */ + { 0x00211C, 0, { 0x000072 }}, /* 211C; 0072; Additional folding */ + { 0x00211D, 0, { 0x000072 }}, /* 211D; 0072; Additional folding */ + { 0x002120, 0, { 0x000073, /* 2120; 0073 006D; Additional folding */ + 0x00006D }}, + { 0x002121, 0, { 0x000074, /* 2121; 0074 0065 006C; Additional folding */ + 0x000065, 0x00006C }}, + { 0x002122, 0, { 0x000074, /* 2122; 0074 006D; Additional folding */ + 0x00006D }}, + { 0x002124, 0, { 0x00007A }}, /* 2124; 007A; Additional folding */ + { 0x002126, 0, { 0x0003C9 }}, /* 2126; 03C9; Case map */ + { 0x002128, 0, { 0x00007A }}, /* 2128; 007A; Additional folding */ + { 0x00212A, 0, { 0x00006B }}, /* 212A; 006B; Case map */ + { 0x00212B, 0, { 0x0000E5 }}, /* 212B; 00E5; Case map */ + { 0x00212C, 0, { 0x000062 }}, /* 212C; 0062; Additional folding */ + { 0x00212D, 0, { 0x000063 }}, /* 212D; 0063; Additional folding */ + { 0x002130, 0, { 0x000065 }}, /* 2130; 0065; Additional folding */ + { 0x002131, 0, { 0x000066 }}, /* 2131; 0066; Additional folding */ + { 0x002133, 0, { 0x00006D }}, /* 2133; 006D; Additional folding */ + { 0x00213E, 0, { 0x0003B3 }}, /* 213E; 03B3; Additional folding */ + { 0x00213F, 0, { 0x0003C0 }}, /* 213F; 03C0; Additional folding */ + { 0x002145, 0, { 0x000064 }}, /* 2145; 0064; Additional folding */ + { 0x002160, 0, { 0x002170 }}, /* 2160; 2170; Case map */ + { 0x002161, 0, { 0x002171 }}, /* 2161; 2171; Case map */ + { 0x002162, 0, { 0x002172 }}, /* 2162; 2172; Case map */ + { 0x002163, 0, { 0x002173 }}, /* 2163; 2173; Case map */ + { 0x002164, 0, { 0x002174 }}, /* 2164; 2174; Case map */ + { 0x002165, 0, { 0x002175 }}, /* 2165; 2175; Case map */ + { 0x002166, 0, { 0x002176 }}, /* 2166; 2176; Case map */ + { 0x002167, 0, { 0x002177 }}, /* 2167; 2177; Case map */ + { 0x002168, 0, { 0x002178 }}, /* 2168; 2178; Case map */ + { 0x002169, 0, { 0x002179 }}, /* 2169; 2179; Case map */ + { 0x00216A, 0, { 0x00217A }}, /* 216A; 217A; Case map */ + { 0x00216B, 0, { 0x00217B }}, /* 216B; 217B; Case map */ + { 0x00216C, 0, { 0x00217C }}, /* 216C; 217C; Case map */ + { 0x00216D, 0, { 0x00217D }}, /* 216D; 217D; Case map */ + { 0x00216E, 0, { 0x00217E }}, /* 216E; 217E; Case map */ + { 0x00216F, 0, { 0x00217F }}, /* 216F; 217F; Case map */ + { 0x0024B6, 0, { 0x0024D0 }}, /* 24B6; 24D0; Case map */ + { 0x0024B7, 0, { 0x0024D1 }}, /* 24B7; 24D1; Case map */ + { 0x0024B8, 0, { 0x0024D2 }}, /* 24B8; 24D2; Case map */ + { 0x0024B9, 0, { 0x0024D3 }}, /* 24B9; 24D3; Case map */ + { 0x0024BA, 0, { 0x0024D4 }}, /* 24BA; 24D4; Case map */ + { 0x0024BB, 0, { 0x0024D5 }}, /* 24BB; 24D5; Case map */ + { 0x0024BC, 0, { 0x0024D6 }}, /* 24BC; 24D6; Case map */ + { 0x0024BD, 0, { 0x0024D7 }}, /* 24BD; 24D7; Case map */ + { 0x0024BE, 0, { 0x0024D8 }}, /* 24BE; 24D8; Case map */ + { 0x0024BF, 0, { 0x0024D9 }}, /* 24BF; 24D9; Case map */ + { 0x0024C0, 0, { 0x0024DA }}, /* 24C0; 24DA; Case map */ + { 0x0024C1, 0, { 0x0024DB }}, /* 24C1; 24DB; Case map */ + { 0x0024C2, 0, { 0x0024DC }}, /* 24C2; 24DC; Case map */ + { 0x0024C3, 0, { 0x0024DD }}, /* 24C3; 24DD; Case map */ + { 0x0024C4, 0, { 0x0024DE }}, /* 24C4; 24DE; Case map */ + { 0x0024C5, 0, { 0x0024DF }}, /* 24C5; 24DF; Case map */ + { 0x0024C6, 0, { 0x0024E0 }}, /* 24C6; 24E0; Case map */ + { 0x0024C7, 0, { 0x0024E1 }}, /* 24C7; 24E1; Case map */ + { 0x0024C8, 0, { 0x0024E2 }}, /* 24C8; 24E2; Case map */ + { 0x0024C9, 0, { 0x0024E3 }}, /* 24C9; 24E3; Case map */ + { 0x0024CA, 0, { 0x0024E4 }}, /* 24CA; 24E4; Case map */ + { 0x0024CB, 0, { 0x0024E5 }}, /* 24CB; 24E5; Case map */ + { 0x0024CC, 0, { 0x0024E6 }}, /* 24CC; 24E6; Case map */ + { 0x0024CD, 0, { 0x0024E7 }}, /* 24CD; 24E7; Case map */ + { 0x0024CE, 0, { 0x0024E8 }}, /* 24CE; 24E8; Case map */ + { 0x0024CF, 0, { 0x0024E9 }}, /* 24CF; 24E9; Case map */ + { 0x003371, 0, { 0x000068, /* 3371; 0068 0070 0061; Additional folding */ + 0x000070, 0x000061 }}, + { 0x003373, 0, { 0x000061, /* 3373; 0061 0075; Additional folding */ + 0x000075 }}, + { 0x003375, 0, { 0x00006F, /* 3375; 006F 0076; Additional folding */ + 0x000076 }}, + { 0x003380, 0, { 0x000070, /* 3380; 0070 0061; Additional folding */ + 0x000061 }}, + { 0x003381, 0, { 0x00006E, /* 3381; 006E 0061; Additional folding */ + 0x000061 }}, + { 0x003382, 0, { 0x0003BC, /* 3382; 03BC 0061; Additional folding */ + 0x000061 }}, + { 0x003383, 0, { 0x00006D, /* 3383; 006D 0061; Additional folding */ + 0x000061 }}, + { 0x003384, 0, { 0x00006B, /* 3384; 006B 0061; Additional folding */ + 0x000061 }}, + { 0x003385, 0, { 0x00006B, /* 3385; 006B 0062; Additional folding */ + 0x000062 }}, + { 0x003386, 0, { 0x00006D, /* 3386; 006D 0062; Additional folding */ + 0x000062 }}, + { 0x003387, 0, { 0x000067, /* 3387; 0067 0062; Additional folding */ + 0x000062 }}, + { 0x00338A, 0, { 0x000070, /* 338A; 0070 0066; Additional folding */ + 0x000066 }}, + { 0x00338B, 0, { 0x00006E, /* 338B; 006E 0066; Additional folding */ + 0x000066 }}, + { 0x00338C, 0, { 0x0003BC, /* 338C; 03BC 0066; Additional folding */ + 0x000066 }}, + { 0x003390, 0, { 0x000068, /* 3390; 0068 007A; Additional folding */ + 0x00007A }}, + { 0x003391, 0, { 0x00006B, /* 3391; 006B 0068 007A; Additional folding */ + 0x000068, 0x00007A }}, + { 0x003392, 0, { 0x00006D, /* 3392; 006D 0068 007A; Additional folding */ + 0x000068, 0x00007A }}, + { 0x003393, 0, { 0x000067, /* 3393; 0067 0068 007A; Additional folding */ + 0x000068, 0x00007A }}, + { 0x003394, 0, { 0x000074, /* 3394; 0074 0068 007A; Additional folding */ + 0x000068, 0x00007A }}, + { 0x0033A9, 0, { 0x000070, /* 33A9; 0070 0061; Additional folding */ + 0x000061 }}, + { 0x0033AA, 0, { 0x00006B, /* 33AA; 006B 0070 0061; Additional folding */ + 0x000070, 0x000061 }}, + { 0x0033AB, 0, { 0x00006D, /* 33AB; 006D 0070 0061; Additional folding */ + 0x000070, 0x000061 }}, + { 0x0033AC, 0, { 0x000067, /* 33AC; 0067 0070 0061; Additional folding */ + 0x000070, 0x000061 }}, + { 0x0033B4, 0, { 0x000070, /* 33B4; 0070 0076; Additional folding */ + 0x000076 }}, + { 0x0033B5, 0, { 0x00006E, /* 33B5; 006E 0076; Additional folding */ + 0x000076 }}, + { 0x0033B6, 0, { 0x0003BC, /* 33B6; 03BC 0076; Additional folding */ + 0x000076 }}, + { 0x0033B7, 0, { 0x00006D, /* 33B7; 006D 0076; Additional folding */ + 0x000076 }}, + { 0x0033B8, 0, { 0x00006B, /* 33B8; 006B 0076; Additional folding */ + 0x000076 }}, + { 0x0033B9, 0, { 0x00006D, /* 33B9; 006D 0076; Additional folding */ + 0x000076 }}, + { 0x0033BA, 0, { 0x000070, /* 33BA; 0070 0077; Additional folding */ + 0x000077 }}, + { 0x0033BB, 0, { 0x00006E, /* 33BB; 006E 0077; Additional folding */ + 0x000077 }}, + { 0x0033BC, 0, { 0x0003BC, /* 33BC; 03BC 0077; Additional folding */ + 0x000077 }}, + { 0x0033BD, 0, { 0x00006D, /* 33BD; 006D 0077; Additional folding */ + 0x000077 }}, + { 0x0033BE, 0, { 0x00006B, /* 33BE; 006B 0077; Additional folding */ + 0x000077 }}, + { 0x0033BF, 0, { 0x00006D, /* 33BF; 006D 0077; Additional folding */ + 0x000077 }}, + { 0x0033C0, 0, { 0x00006B, /* 33C0; 006B 03C9; Additional folding */ + 0x0003C9 }}, + { 0x0033C1, 0, { 0x00006D, /* 33C1; 006D 03C9; Additional folding */ + 0x0003C9 }}, + { 0x0033C3, 0, { 0x000062, /* 33C3; 0062 0071; Additional folding */ + 0x000071 }}, + { 0x0033C6, 0, { 0x000063, /* 33C6; 0063 2215 006B 0067; Additional folding */ + 0x002215, 0x00006B, 0x000067 }}, + { 0x0033C7, 0, { 0x000063, /* 33C7; 0063 006F 002E; Additional folding */ + 0x00006F, 0x00002E }}, + { 0x0033C8, 0, { 0x000064, /* 33C8; 0064 0062; Additional folding */ + 0x000062 }}, + { 0x0033C9, 0, { 0x000067, /* 33C9; 0067 0079; Additional folding */ + 0x000079 }}, + { 0x0033CB, 0, { 0x000068, /* 33CB; 0068 0070; Additional folding */ + 0x000070 }}, + { 0x0033CD, 0, { 0x00006B, /* 33CD; 006B 006B; Additional folding */ + 0x00006B }}, + { 0x0033CE, 0, { 0x00006B, /* 33CE; 006B 006D; Additional folding */ + 0x00006D }}, + { 0x0033D7, 0, { 0x000070, /* 33D7; 0070 0068; Additional folding */ + 0x000068 }}, + { 0x0033D9, 0, { 0x000070, /* 33D9; 0070 0070 006D; Additional folding */ + 0x000070, 0x00006D }}, + { 0x0033DA, 0, { 0x000070, /* 33DA; 0070 0072; Additional folding */ + 0x000072 }}, + { 0x0033DC, 0, { 0x000073, /* 33DC; 0073 0076; Additional folding */ + 0x000076 }}, + { 0x0033DD, 0, { 0x000077, /* 33DD; 0077 0062; Additional folding */ + 0x000062 }}, + { 0x00FB00, 0, { 0x000066, /* FB00; 0066 0066; Case map */ + 0x000066 }}, + { 0x00FB01, 0, { 0x000066, /* FB01; 0066 0069; Case map */ + 0x000069 }}, + { 0x00FB02, 0, { 0x000066, /* FB02; 0066 006C; Case map */ + 0x00006C }}, + { 0x00FB03, 0, { 0x000066, /* FB03; 0066 0066 0069; Case map */ + 0x000066, 0x000069 }}, + { 0x00FB04, 0, { 0x000066, /* FB04; 0066 0066 006C; Case map */ + 0x000066, 0x00006C }}, + { 0x00FB05, 0, { 0x000073, /* FB05; 0073 0074; Case map */ + 0x000074 }}, + { 0x00FB06, 0, { 0x000073, /* FB06; 0073 0074; Case map */ + 0x000074 }}, + { 0x00FB13, 0, { 0x000574, /* FB13; 0574 0576; Case map */ + 0x000576 }}, + { 0x00FB14, 0, { 0x000574, /* FB14; 0574 0565; Case map */ + 0x000565 }}, + { 0x00FB15, 0, { 0x000574, /* FB15; 0574 056B; Case map */ + 0x00056B }}, + { 0x00FB16, 0, { 0x00057E, /* FB16; 057E 0576; Case map */ + 0x000576 }}, + { 0x00FB17, 0, { 0x000574, /* FB17; 0574 056D; Case map */ + 0x00056D }}, + { 0x00FF21, 0, { 0x00FF41 }}, /* FF21; FF41; Case map */ + { 0x00FF22, 0, { 0x00FF42 }}, /* FF22; FF42; Case map */ + { 0x00FF23, 0, { 0x00FF43 }}, /* FF23; FF43; Case map */ + { 0x00FF24, 0, { 0x00FF44 }}, /* FF24; FF44; Case map */ + { 0x00FF25, 0, { 0x00FF45 }}, /* FF25; FF45; Case map */ + { 0x00FF26, 0, { 0x00FF46 }}, /* FF26; FF46; Case map */ + { 0x00FF27, 0, { 0x00FF47 }}, /* FF27; FF47; Case map */ + { 0x00FF28, 0, { 0x00FF48 }}, /* FF28; FF48; Case map */ + { 0x00FF29, 0, { 0x00FF49 }}, /* FF29; FF49; Case map */ + { 0x00FF2A, 0, { 0x00FF4A }}, /* FF2A; FF4A; Case map */ + { 0x00FF2B, 0, { 0x00FF4B }}, /* FF2B; FF4B; Case map */ + { 0x00FF2C, 0, { 0x00FF4C }}, /* FF2C; FF4C; Case map */ + { 0x00FF2D, 0, { 0x00FF4D }}, /* FF2D; FF4D; Case map */ + { 0x00FF2E, 0, { 0x00FF4E }}, /* FF2E; FF4E; Case map */ + { 0x00FF2F, 0, { 0x00FF4F }}, /* FF2F; FF4F; Case map */ + { 0x00FF30, 0, { 0x00FF50 }}, /* FF30; FF50; Case map */ + { 0x00FF31, 0, { 0x00FF51 }}, /* FF31; FF51; Case map */ + { 0x00FF32, 0, { 0x00FF52 }}, /* FF32; FF52; Case map */ + { 0x00FF33, 0, { 0x00FF53 }}, /* FF33; FF53; Case map */ + { 0x00FF34, 0, { 0x00FF54 }}, /* FF34; FF54; Case map */ + { 0x00FF35, 0, { 0x00FF55 }}, /* FF35; FF55; Case map */ + { 0x00FF36, 0, { 0x00FF56 }}, /* FF36; FF56; Case map */ + { 0x00FF37, 0, { 0x00FF57 }}, /* FF37; FF57; Case map */ + { 0x00FF38, 0, { 0x00FF58 }}, /* FF38; FF58; Case map */ + { 0x00FF39, 0, { 0x00FF59 }}, /* FF39; FF59; Case map */ + { 0x00FF3A, 0, { 0x00FF5A }}, /* FF3A; FF5A; Case map */ + { 0x010400, 0, { 0x010428 }}, /* 10400; 10428; Case map */ + { 0x010401, 0, { 0x010429 }}, /* 10401; 10429; Case map */ + { 0x010402, 0, { 0x01042A }}, /* 10402; 1042A; Case map */ + { 0x010403, 0, { 0x01042B }}, /* 10403; 1042B; Case map */ + { 0x010404, 0, { 0x01042C }}, /* 10404; 1042C; Case map */ + { 0x010405, 0, { 0x01042D }}, /* 10405; 1042D; Case map */ + { 0x010406, 0, { 0x01042E }}, /* 10406; 1042E; Case map */ + { 0x010407, 0, { 0x01042F }}, /* 10407; 1042F; Case map */ + { 0x010408, 0, { 0x010430 }}, /* 10408; 10430; Case map */ + { 0x010409, 0, { 0x010431 }}, /* 10409; 10431; Case map */ + { 0x01040A, 0, { 0x010432 }}, /* 1040A; 10432; Case map */ + { 0x01040B, 0, { 0x010433 }}, /* 1040B; 10433; Case map */ + { 0x01040C, 0, { 0x010434 }}, /* 1040C; 10434; Case map */ + { 0x01040D, 0, { 0x010435 }}, /* 1040D; 10435; Case map */ + { 0x01040E, 0, { 0x010436 }}, /* 1040E; 10436; Case map */ + { 0x01040F, 0, { 0x010437 }}, /* 1040F; 10437; Case map */ + { 0x010410, 0, { 0x010438 }}, /* 10410; 10438; Case map */ + { 0x010411, 0, { 0x010439 }}, /* 10411; 10439; Case map */ + { 0x010412, 0, { 0x01043A }}, /* 10412; 1043A; Case map */ + { 0x010413, 0, { 0x01043B }}, /* 10413; 1043B; Case map */ + { 0x010414, 0, { 0x01043C }}, /* 10414; 1043C; Case map */ + { 0x010415, 0, { 0x01043D }}, /* 10415; 1043D; Case map */ + { 0x010416, 0, { 0x01043E }}, /* 10416; 1043E; Case map */ + { 0x010417, 0, { 0x01043F }}, /* 10417; 1043F; Case map */ + { 0x010418, 0, { 0x010440 }}, /* 10418; 10440; Case map */ + { 0x010419, 0, { 0x010441 }}, /* 10419; 10441; Case map */ + { 0x01041A, 0, { 0x010442 }}, /* 1041A; 10442; Case map */ + { 0x01041B, 0, { 0x010443 }}, /* 1041B; 10443; Case map */ + { 0x01041C, 0, { 0x010444 }}, /* 1041C; 10444; Case map */ + { 0x01041D, 0, { 0x010445 }}, /* 1041D; 10445; Case map */ + { 0x01041E, 0, { 0x010446 }}, /* 1041E; 10446; Case map */ + { 0x01041F, 0, { 0x010447 }}, /* 1041F; 10447; Case map */ + { 0x010420, 0, { 0x010448 }}, /* 10420; 10448; Case map */ + { 0x010421, 0, { 0x010449 }}, /* 10421; 10449; Case map */ + { 0x010422, 0, { 0x01044A }}, /* 10422; 1044A; Case map */ + { 0x010423, 0, { 0x01044B }}, /* 10423; 1044B; Case map */ + { 0x010424, 0, { 0x01044C }}, /* 10424; 1044C; Case map */ + { 0x010425, 0, { 0x01044D }}, /* 10425; 1044D; Case map */ + { 0x01D400, 0, { 0x000061 }}, /* 1D400; 0061; Additional folding */ + { 0x01D401, 0, { 0x000062 }}, /* 1D401; 0062; Additional folding */ + { 0x01D402, 0, { 0x000063 }}, /* 1D402; 0063; Additional folding */ + { 0x01D403, 0, { 0x000064 }}, /* 1D403; 0064; Additional folding */ + { 0x01D404, 0, { 0x000065 }}, /* 1D404; 0065; Additional folding */ + { 0x01D405, 0, { 0x000066 }}, /* 1D405; 0066; Additional folding */ + { 0x01D406, 0, { 0x000067 }}, /* 1D406; 0067; Additional folding */ + { 0x01D407, 0, { 0x000068 }}, /* 1D407; 0068; Additional folding */ + { 0x01D408, 0, { 0x000069 }}, /* 1D408; 0069; Additional folding */ + { 0x01D409, 0, { 0x00006A }}, /* 1D409; 006A; Additional folding */ + { 0x01D40A, 0, { 0x00006B }}, /* 1D40A; 006B; Additional folding */ + { 0x01D40B, 0, { 0x00006C }}, /* 1D40B; 006C; Additional folding */ + { 0x01D40C, 0, { 0x00006D }}, /* 1D40C; 006D; Additional folding */ + { 0x01D40D, 0, { 0x00006E }}, /* 1D40D; 006E; Additional folding */ + { 0x01D40E, 0, { 0x00006F }}, /* 1D40E; 006F; Additional folding */ + { 0x01D40F, 0, { 0x000070 }}, /* 1D40F; 0070; Additional folding */ + { 0x01D410, 0, { 0x000071 }}, /* 1D410; 0071; Additional folding */ + { 0x01D411, 0, { 0x000072 }}, /* 1D411; 0072; Additional folding */ + { 0x01D412, 0, { 0x000073 }}, /* 1D412; 0073; Additional folding */ + { 0x01D413, 0, { 0x000074 }}, /* 1D413; 0074; Additional folding */ + { 0x01D414, 0, { 0x000075 }}, /* 1D414; 0075; Additional folding */ + { 0x01D415, 0, { 0x000076 }}, /* 1D415; 0076; Additional folding */ + { 0x01D416, 0, { 0x000077 }}, /* 1D416; 0077; Additional folding */ + { 0x01D417, 0, { 0x000078 }}, /* 1D417; 0078; Additional folding */ + { 0x01D418, 0, { 0x000079 }}, /* 1D418; 0079; Additional folding */ + { 0x01D419, 0, { 0x00007A }}, /* 1D419; 007A; Additional folding */ + { 0x01D434, 0, { 0x000061 }}, /* 1D434; 0061; Additional folding */ + { 0x01D435, 0, { 0x000062 }}, /* 1D435; 0062; Additional folding */ + { 0x01D436, 0, { 0x000063 }}, /* 1D436; 0063; Additional folding */ + { 0x01D437, 0, { 0x000064 }}, /* 1D437; 0064; Additional folding */ + { 0x01D438, 0, { 0x000065 }}, /* 1D438; 0065; Additional folding */ + { 0x01D439, 0, { 0x000066 }}, /* 1D439; 0066; Additional folding */ + { 0x01D43A, 0, { 0x000067 }}, /* 1D43A; 0067; Additional folding */ + { 0x01D43B, 0, { 0x000068 }}, /* 1D43B; 0068; Additional folding */ + { 0x01D43C, 0, { 0x000069 }}, /* 1D43C; 0069; Additional folding */ + { 0x01D43D, 0, { 0x00006A }}, /* 1D43D; 006A; Additional folding */ + { 0x01D43E, 0, { 0x00006B }}, /* 1D43E; 006B; Additional folding */ + { 0x01D43F, 0, { 0x00006C }}, /* 1D43F; 006C; Additional folding */ + { 0x01D440, 0, { 0x00006D }}, /* 1D440; 006D; Additional folding */ + { 0x01D441, 0, { 0x00006E }}, /* 1D441; 006E; Additional folding */ + { 0x01D442, 0, { 0x00006F }}, /* 1D442; 006F; Additional folding */ + { 0x01D443, 0, { 0x000070 }}, /* 1D443; 0070; Additional folding */ + { 0x01D444, 0, { 0x000071 }}, /* 1D444; 0071; Additional folding */ + { 0x01D445, 0, { 0x000072 }}, /* 1D445; 0072; Additional folding */ + { 0x01D446, 0, { 0x000073 }}, /* 1D446; 0073; Additional folding */ + { 0x01D447, 0, { 0x000074 }}, /* 1D447; 0074; Additional folding */ + { 0x01D448, 0, { 0x000075 }}, /* 1D448; 0075; Additional folding */ + { 0x01D449, 0, { 0x000076 }}, /* 1D449; 0076; Additional folding */ + { 0x01D44A, 0, { 0x000077 }}, /* 1D44A; 0077; Additional folding */ + { 0x01D44B, 0, { 0x000078 }}, /* 1D44B; 0078; Additional folding */ + { 0x01D44C, 0, { 0x000079 }}, /* 1D44C; 0079; Additional folding */ + { 0x01D44D, 0, { 0x00007A }}, /* 1D44D; 007A; Additional folding */ + { 0x01D468, 0, { 0x000061 }}, /* 1D468; 0061; Additional folding */ + { 0x01D469, 0, { 0x000062 }}, /* 1D469; 0062; Additional folding */ + { 0x01D46A, 0, { 0x000063 }}, /* 1D46A; 0063; Additional folding */ + { 0x01D46B, 0, { 0x000064 }}, /* 1D46B; 0064; Additional folding */ + { 0x01D46C, 0, { 0x000065 }}, /* 1D46C; 0065; Additional folding */ + { 0x01D46D, 0, { 0x000066 }}, /* 1D46D; 0066; Additional folding */ + { 0x01D46E, 0, { 0x000067 }}, /* 1D46E; 0067; Additional folding */ + { 0x01D46F, 0, { 0x000068 }}, /* 1D46F; 0068; Additional folding */ + { 0x01D470, 0, { 0x000069 }}, /* 1D470; 0069; Additional folding */ + { 0x01D471, 0, { 0x00006A }}, /* 1D471; 006A; Additional folding */ + { 0x01D472, 0, { 0x00006B }}, /* 1D472; 006B; Additional folding */ + { 0x01D473, 0, { 0x00006C }}, /* 1D473; 006C; Additional folding */ + { 0x01D474, 0, { 0x00006D }}, /* 1D474; 006D; Additional folding */ + { 0x01D475, 0, { 0x00006E }}, /* 1D475; 006E; Additional folding */ + { 0x01D476, 0, { 0x00006F }}, /* 1D476; 006F; Additional folding */ + { 0x01D477, 0, { 0x000070 }}, /* 1D477; 0070; Additional folding */ + { 0x01D478, 0, { 0x000071 }}, /* 1D478; 0071; Additional folding */ + { 0x01D479, 0, { 0x000072 }}, /* 1D479; 0072; Additional folding */ + { 0x01D47A, 0, { 0x000073 }}, /* 1D47A; 0073; Additional folding */ + { 0x01D47B, 0, { 0x000074 }}, /* 1D47B; 0074; Additional folding */ + { 0x01D47C, 0, { 0x000075 }}, /* 1D47C; 0075; Additional folding */ + { 0x01D47D, 0, { 0x000076 }}, /* 1D47D; 0076; Additional folding */ + { 0x01D47E, 0, { 0x000077 }}, /* 1D47E; 0077; Additional folding */ + { 0x01D47F, 0, { 0x000078 }}, /* 1D47F; 0078; Additional folding */ + { 0x01D480, 0, { 0x000079 }}, /* 1D480; 0079; Additional folding */ + { 0x01D481, 0, { 0x00007A }}, /* 1D481; 007A; Additional folding */ + { 0x01D49C, 0, { 0x000061 }}, /* 1D49C; 0061; Additional folding */ + { 0x01D49E, 0, { 0x000063 }}, /* 1D49E; 0063; Additional folding */ + { 0x01D49F, 0, { 0x000064 }}, /* 1D49F; 0064; Additional folding */ + { 0x01D4A2, 0, { 0x000067 }}, /* 1D4A2; 0067; Additional folding */ + { 0x01D4A5, 0, { 0x00006A }}, /* 1D4A5; 006A; Additional folding */ + { 0x01D4A6, 0, { 0x00006B }}, /* 1D4A6; 006B; Additional folding */ + { 0x01D4A9, 0, { 0x00006E }}, /* 1D4A9; 006E; Additional folding */ + { 0x01D4AA, 0, { 0x00006F }}, /* 1D4AA; 006F; Additional folding */ + { 0x01D4AB, 0, { 0x000070 }}, /* 1D4AB; 0070; Additional folding */ + { 0x01D4AC, 0, { 0x000071 }}, /* 1D4AC; 0071; Additional folding */ + { 0x01D4AE, 0, { 0x000073 }}, /* 1D4AE; 0073; Additional folding */ + { 0x01D4AF, 0, { 0x000074 }}, /* 1D4AF; 0074; Additional folding */ + { 0x01D4B0, 0, { 0x000075 }}, /* 1D4B0; 0075; Additional folding */ + { 0x01D4B1, 0, { 0x000076 }}, /* 1D4B1; 0076; Additional folding */ + { 0x01D4B2, 0, { 0x000077 }}, /* 1D4B2; 0077; Additional folding */ + { 0x01D4B3, 0, { 0x000078 }}, /* 1D4B3; 0078; Additional folding */ + { 0x01D4B4, 0, { 0x000079 }}, /* 1D4B4; 0079; Additional folding */ + { 0x01D4B5, 0, { 0x00007A }}, /* 1D4B5; 007A; Additional folding */ + { 0x01D4D0, 0, { 0x000061 }}, /* 1D4D0; 0061; Additional folding */ + { 0x01D4D1, 0, { 0x000062 }}, /* 1D4D1; 0062; Additional folding */ + { 0x01D4D2, 0, { 0x000063 }}, /* 1D4D2; 0063; Additional folding */ + { 0x01D4D3, 0, { 0x000064 }}, /* 1D4D3; 0064; Additional folding */ + { 0x01D4D4, 0, { 0x000065 }}, /* 1D4D4; 0065; Additional folding */ + { 0x01D4D5, 0, { 0x000066 }}, /* 1D4D5; 0066; Additional folding */ + { 0x01D4D6, 0, { 0x000067 }}, /* 1D4D6; 0067; Additional folding */ + { 0x01D4D7, 0, { 0x000068 }}, /* 1D4D7; 0068; Additional folding */ + { 0x01D4D8, 0, { 0x000069 }}, /* 1D4D8; 0069; Additional folding */ + { 0x01D4D9, 0, { 0x00006A }}, /* 1D4D9; 006A; Additional folding */ + { 0x01D4DA, 0, { 0x00006B }}, /* 1D4DA; 006B; Additional folding */ + { 0x01D4DB, 0, { 0x00006C }}, /* 1D4DB; 006C; Additional folding */ + { 0x01D4DC, 0, { 0x00006D }}, /* 1D4DC; 006D; Additional folding */ + { 0x01D4DD, 0, { 0x00006E }}, /* 1D4DD; 006E; Additional folding */ + { 0x01D4DE, 0, { 0x00006F }}, /* 1D4DE; 006F; Additional folding */ + { 0x01D4DF, 0, { 0x000070 }}, /* 1D4DF; 0070; Additional folding */ + { 0x01D4E0, 0, { 0x000071 }}, /* 1D4E0; 0071; Additional folding */ + { 0x01D4E1, 0, { 0x000072 }}, /* 1D4E1; 0072; Additional folding */ + { 0x01D4E2, 0, { 0x000073 }}, /* 1D4E2; 0073; Additional folding */ + { 0x01D4E3, 0, { 0x000074 }}, /* 1D4E3; 0074; Additional folding */ + { 0x01D4E4, 0, { 0x000075 }}, /* 1D4E4; 0075; Additional folding */ + { 0x01D4E5, 0, { 0x000076 }}, /* 1D4E5; 0076; Additional folding */ + { 0x01D4E6, 0, { 0x000077 }}, /* 1D4E6; 0077; Additional folding */ + { 0x01D4E7, 0, { 0x000078 }}, /* 1D4E7; 0078; Additional folding */ + { 0x01D4E8, 0, { 0x000079 }}, /* 1D4E8; 0079; Additional folding */ + { 0x01D4E9, 0, { 0x00007A }}, /* 1D4E9; 007A; Additional folding */ + { 0x01D504, 0, { 0x000061 }}, /* 1D504; 0061; Additional folding */ + { 0x01D505, 0, { 0x000062 }}, /* 1D505; 0062; Additional folding */ + { 0x01D507, 0, { 0x000064 }}, /* 1D507; 0064; Additional folding */ + { 0x01D508, 0, { 0x000065 }}, /* 1D508; 0065; Additional folding */ + { 0x01D509, 0, { 0x000066 }}, /* 1D509; 0066; Additional folding */ + { 0x01D50A, 0, { 0x000067 }}, /* 1D50A; 0067; Additional folding */ + { 0x01D50D, 0, { 0x00006A }}, /* 1D50D; 006A; Additional folding */ + { 0x01D50E, 0, { 0x00006B }}, /* 1D50E; 006B; Additional folding */ + { 0x01D50F, 0, { 0x00006C }}, /* 1D50F; 006C; Additional folding */ + { 0x01D510, 0, { 0x00006D }}, /* 1D510; 006D; Additional folding */ + { 0x01D511, 0, { 0x00006E }}, /* 1D511; 006E; Additional folding */ + { 0x01D512, 0, { 0x00006F }}, /* 1D512; 006F; Additional folding */ + { 0x01D513, 0, { 0x000070 }}, /* 1D513; 0070; Additional folding */ + { 0x01D514, 0, { 0x000071 }}, /* 1D514; 0071; Additional folding */ + { 0x01D516, 0, { 0x000073 }}, /* 1D516; 0073; Additional folding */ + { 0x01D517, 0, { 0x000074 }}, /* 1D517; 0074; Additional folding */ + { 0x01D518, 0, { 0x000075 }}, /* 1D518; 0075; Additional folding */ + { 0x01D519, 0, { 0x000076 }}, /* 1D519; 0076; Additional folding */ + { 0x01D51A, 0, { 0x000077 }}, /* 1D51A; 0077; Additional folding */ + { 0x01D51B, 0, { 0x000078 }}, /* 1D51B; 0078; Additional folding */ + { 0x01D51C, 0, { 0x000079 }}, /* 1D51C; 0079; Additional folding */ + { 0x01D538, 0, { 0x000061 }}, /* 1D538; 0061; Additional folding */ + { 0x01D539, 0, { 0x000062 }}, /* 1D539; 0062; Additional folding */ + { 0x01D53B, 0, { 0x000064 }}, /* 1D53B; 0064; Additional folding */ + { 0x01D53C, 0, { 0x000065 }}, /* 1D53C; 0065; Additional folding */ + { 0x01D53D, 0, { 0x000066 }}, /* 1D53D; 0066; Additional folding */ + { 0x01D53E, 0, { 0x000067 }}, /* 1D53E; 0067; Additional folding */ + { 0x01D540, 0, { 0x000069 }}, /* 1D540; 0069; Additional folding */ + { 0x01D541, 0, { 0x00006A }}, /* 1D541; 006A; Additional folding */ + { 0x01D542, 0, { 0x00006B }}, /* 1D542; 006B; Additional folding */ + { 0x01D543, 0, { 0x00006C }}, /* 1D543; 006C; Additional folding */ + { 0x01D544, 0, { 0x00006D }}, /* 1D544; 006D; Additional folding */ + { 0x01D546, 0, { 0x00006F }}, /* 1D546; 006F; Additional folding */ + { 0x01D54A, 0, { 0x000073 }}, /* 1D54A; 0073; Additional folding */ + { 0x01D54B, 0, { 0x000074 }}, /* 1D54B; 0074; Additional folding */ + { 0x01D54C, 0, { 0x000075 }}, /* 1D54C; 0075; Additional folding */ + { 0x01D54D, 0, { 0x000076 }}, /* 1D54D; 0076; Additional folding */ + { 0x01D54E, 0, { 0x000077 }}, /* 1D54E; 0077; Additional folding */ + { 0x01D54F, 0, { 0x000078 }}, /* 1D54F; 0078; Additional folding */ + { 0x01D550, 0, { 0x000079 }}, /* 1D550; 0079; Additional folding */ + { 0x01D56C, 0, { 0x000061 }}, /* 1D56C; 0061; Additional folding */ + { 0x01D56D, 0, { 0x000062 }}, /* 1D56D; 0062; Additional folding */ + { 0x01D56E, 0, { 0x000063 }}, /* 1D56E; 0063; Additional folding */ + { 0x01D56F, 0, { 0x000064 }}, /* 1D56F; 0064; Additional folding */ + { 0x01D570, 0, { 0x000065 }}, /* 1D570; 0065; Additional folding */ + { 0x01D571, 0, { 0x000066 }}, /* 1D571; 0066; Additional folding */ + { 0x01D572, 0, { 0x000067 }}, /* 1D572; 0067; Additional folding */ + { 0x01D573, 0, { 0x000068 }}, /* 1D573; 0068; Additional folding */ + { 0x01D574, 0, { 0x000069 }}, /* 1D574; 0069; Additional folding */ + { 0x01D575, 0, { 0x00006A }}, /* 1D575; 006A; Additional folding */ + { 0x01D576, 0, { 0x00006B }}, /* 1D576; 006B; Additional folding */ + { 0x01D577, 0, { 0x00006C }}, /* 1D577; 006C; Additional folding */ + { 0x01D578, 0, { 0x00006D }}, /* 1D578; 006D; Additional folding */ + { 0x01D579, 0, { 0x00006E }}, /* 1D579; 006E; Additional folding */ + { 0x01D57A, 0, { 0x00006F }}, /* 1D57A; 006F; Additional folding */ + { 0x01D57B, 0, { 0x000070 }}, /* 1D57B; 0070; Additional folding */ + { 0x01D57C, 0, { 0x000071 }}, /* 1D57C; 0071; Additional folding */ + { 0x01D57D, 0, { 0x000072 }}, /* 1D57D; 0072; Additional folding */ + { 0x01D57E, 0, { 0x000073 }}, /* 1D57E; 0073; Additional folding */ + { 0x01D57F, 0, { 0x000074 }}, /* 1D57F; 0074; Additional folding */ + { 0x01D580, 0, { 0x000075 }}, /* 1D580; 0075; Additional folding */ + { 0x01D581, 0, { 0x000076 }}, /* 1D581; 0076; Additional folding */ + { 0x01D582, 0, { 0x000077 }}, /* 1D582; 0077; Additional folding */ + { 0x01D583, 0, { 0x000078 }}, /* 1D583; 0078; Additional folding */ + { 0x01D584, 0, { 0x000079 }}, /* 1D584; 0079; Additional folding */ + { 0x01D585, 0, { 0x00007A }}, /* 1D585; 007A; Additional folding */ + { 0x01D5A0, 0, { 0x000061 }}, /* 1D5A0; 0061; Additional folding */ + { 0x01D5A1, 0, { 0x000062 }}, /* 1D5A1; 0062; Additional folding */ + { 0x01D5A2, 0, { 0x000063 }}, /* 1D5A2; 0063; Additional folding */ + { 0x01D5A3, 0, { 0x000064 }}, /* 1D5A3; 0064; Additional folding */ + { 0x01D5A4, 0, { 0x000065 }}, /* 1D5A4; 0065; Additional folding */ + { 0x01D5A5, 0, { 0x000066 }}, /* 1D5A5; 0066; Additional folding */ + { 0x01D5A6, 0, { 0x000067 }}, /* 1D5A6; 0067; Additional folding */ + { 0x01D5A7, 0, { 0x000068 }}, /* 1D5A7; 0068; Additional folding */ + { 0x01D5A8, 0, { 0x000069 }}, /* 1D5A8; 0069; Additional folding */ + { 0x01D5A9, 0, { 0x00006A }}, /* 1D5A9; 006A; Additional folding */ + { 0x01D5AA, 0, { 0x00006B }}, /* 1D5AA; 006B; Additional folding */ + { 0x01D5AB, 0, { 0x00006C }}, /* 1D5AB; 006C; Additional folding */ + { 0x01D5AC, 0, { 0x00006D }}, /* 1D5AC; 006D; Additional folding */ + { 0x01D5AD, 0, { 0x00006E }}, /* 1D5AD; 006E; Additional folding */ + { 0x01D5AE, 0, { 0x00006F }}, /* 1D5AE; 006F; Additional folding */ + { 0x01D5AF, 0, { 0x000070 }}, /* 1D5AF; 0070; Additional folding */ + { 0x01D5B0, 0, { 0x000071 }}, /* 1D5B0; 0071; Additional folding */ + { 0x01D5B1, 0, { 0x000072 }}, /* 1D5B1; 0072; Additional folding */ + { 0x01D5B2, 0, { 0x000073 }}, /* 1D5B2; 0073; Additional folding */ + { 0x01D5B3, 0, { 0x000074 }}, /* 1D5B3; 0074; Additional folding */ + { 0x01D5B4, 0, { 0x000075 }}, /* 1D5B4; 0075; Additional folding */ + { 0x01D5B5, 0, { 0x000076 }}, /* 1D5B5; 0076; Additional folding */ + { 0x01D5B6, 0, { 0x000077 }}, /* 1D5B6; 0077; Additional folding */ + { 0x01D5B7, 0, { 0x000078 }}, /* 1D5B7; 0078; Additional folding */ + { 0x01D5B8, 0, { 0x000079 }}, /* 1D5B8; 0079; Additional folding */ + { 0x01D5B9, 0, { 0x00007A }}, /* 1D5B9; 007A; Additional folding */ + { 0x01D5D4, 0, { 0x000061 }}, /* 1D5D4; 0061; Additional folding */ + { 0x01D5D5, 0, { 0x000062 }}, /* 1D5D5; 0062; Additional folding */ + { 0x01D5D6, 0, { 0x000063 }}, /* 1D5D6; 0063; Additional folding */ + { 0x01D5D7, 0, { 0x000064 }}, /* 1D5D7; 0064; Additional folding */ + { 0x01D5D8, 0, { 0x000065 }}, /* 1D5D8; 0065; Additional folding */ + { 0x01D5D9, 0, { 0x000066 }}, /* 1D5D9; 0066; Additional folding */ + { 0x01D5DA, 0, { 0x000067 }}, /* 1D5DA; 0067; Additional folding */ + { 0x01D5DB, 0, { 0x000068 }}, /* 1D5DB; 0068; Additional folding */ + { 0x01D5DC, 0, { 0x000069 }}, /* 1D5DC; 0069; Additional folding */ + { 0x01D5DD, 0, { 0x00006A }}, /* 1D5DD; 006A; Additional folding */ + { 0x01D5DE, 0, { 0x00006B }}, /* 1D5DE; 006B; Additional folding */ + { 0x01D5DF, 0, { 0x00006C }}, /* 1D5DF; 006C; Additional folding */ + { 0x01D5E0, 0, { 0x00006D }}, /* 1D5E0; 006D; Additional folding */ + { 0x01D5E1, 0, { 0x00006E }}, /* 1D5E1; 006E; Additional folding */ + { 0x01D5E2, 0, { 0x00006F }}, /* 1D5E2; 006F; Additional folding */ + { 0x01D5E3, 0, { 0x000070 }}, /* 1D5E3; 0070; Additional folding */ + { 0x01D5E4, 0, { 0x000071 }}, /* 1D5E4; 0071; Additional folding */ + { 0x01D5E5, 0, { 0x000072 }}, /* 1D5E5; 0072; Additional folding */ + { 0x01D5E6, 0, { 0x000073 }}, /* 1D5E6; 0073; Additional folding */ + { 0x01D5E7, 0, { 0x000074 }}, /* 1D5E7; 0074; Additional folding */ + { 0x01D5E8, 0, { 0x000075 }}, /* 1D5E8; 0075; Additional folding */ + { 0x01D5E9, 0, { 0x000076 }}, /* 1D5E9; 0076; Additional folding */ + { 0x01D5EA, 0, { 0x000077 }}, /* 1D5EA; 0077; Additional folding */ + { 0x01D5EB, 0, { 0x000078 }}, /* 1D5EB; 0078; Additional folding */ + { 0x01D5EC, 0, { 0x000079 }}, /* 1D5EC; 0079; Additional folding */ + { 0x01D5ED, 0, { 0x00007A }}, /* 1D5ED; 007A; Additional folding */ + { 0x01D608, 0, { 0x000061 }}, /* 1D608; 0061; Additional folding */ + { 0x01D609, 0, { 0x000062 }}, /* 1D609; 0062; Additional folding */ + { 0x01D60A, 0, { 0x000063 }}, /* 1D60A; 0063; Additional folding */ + { 0x01D60B, 0, { 0x000064 }}, /* 1D60B; 0064; Additional folding */ + { 0x01D60C, 0, { 0x000065 }}, /* 1D60C; 0065; Additional folding */ + { 0x01D60D, 0, { 0x000066 }}, /* 1D60D; 0066; Additional folding */ + { 0x01D60E, 0, { 0x000067 }}, /* 1D60E; 0067; Additional folding */ + { 0x01D60F, 0, { 0x000068 }}, /* 1D60F; 0068; Additional folding */ + { 0x01D610, 0, { 0x000069 }}, /* 1D610; 0069; Additional folding */ + { 0x01D611, 0, { 0x00006A }}, /* 1D611; 006A; Additional folding */ + { 0x01D612, 0, { 0x00006B }}, /* 1D612; 006B; Additional folding */ + { 0x01D613, 0, { 0x00006C }}, /* 1D613; 006C; Additional folding */ + { 0x01D614, 0, { 0x00006D }}, /* 1D614; 006D; Additional folding */ + { 0x01D615, 0, { 0x00006E }}, /* 1D615; 006E; Additional folding */ + { 0x01D616, 0, { 0x00006F }}, /* 1D616; 006F; Additional folding */ + { 0x01D617, 0, { 0x000070 }}, /* 1D617; 0070; Additional folding */ + { 0x01D618, 0, { 0x000071 }}, /* 1D618; 0071; Additional folding */ + { 0x01D619, 0, { 0x000072 }}, /* 1D619; 0072; Additional folding */ + { 0x01D61A, 0, { 0x000073 }}, /* 1D61A; 0073; Additional folding */ + { 0x01D61B, 0, { 0x000074 }}, /* 1D61B; 0074; Additional folding */ + { 0x01D61C, 0, { 0x000075 }}, /* 1D61C; 0075; Additional folding */ + { 0x01D61D, 0, { 0x000076 }}, /* 1D61D; 0076; Additional folding */ + { 0x01D61E, 0, { 0x000077 }}, /* 1D61E; 0077; Additional folding */ + { 0x01D61F, 0, { 0x000078 }}, /* 1D61F; 0078; Additional folding */ + { 0x01D620, 0, { 0x000079 }}, /* 1D620; 0079; Additional folding */ + { 0x01D621, 0, { 0x00007A }}, /* 1D621; 007A; Additional folding */ + { 0x01D63C, 0, { 0x000061 }}, /* 1D63C; 0061; Additional folding */ + { 0x01D63D, 0, { 0x000062 }}, /* 1D63D; 0062; Additional folding */ + { 0x01D63E, 0, { 0x000063 }}, /* 1D63E; 0063; Additional folding */ + { 0x01D63F, 0, { 0x000064 }}, /* 1D63F; 0064; Additional folding */ + { 0x01D640, 0, { 0x000065 }}, /* 1D640; 0065; Additional folding */ + { 0x01D641, 0, { 0x000066 }}, /* 1D641; 0066; Additional folding */ + { 0x01D642, 0, { 0x000067 }}, /* 1D642; 0067; Additional folding */ + { 0x01D643, 0, { 0x000068 }}, /* 1D643; 0068; Additional folding */ + { 0x01D644, 0, { 0x000069 }}, /* 1D644; 0069; Additional folding */ + { 0x01D645, 0, { 0x00006A }}, /* 1D645; 006A; Additional folding */ + { 0x01D646, 0, { 0x00006B }}, /* 1D646; 006B; Additional folding */ + { 0x01D647, 0, { 0x00006C }}, /* 1D647; 006C; Additional folding */ + { 0x01D648, 0, { 0x00006D }}, /* 1D648; 006D; Additional folding */ + { 0x01D649, 0, { 0x00006E }}, /* 1D649; 006E; Additional folding */ + { 0x01D64A, 0, { 0x00006F }}, /* 1D64A; 006F; Additional folding */ + { 0x01D64B, 0, { 0x000070 }}, /* 1D64B; 0070; Additional folding */ + { 0x01D64C, 0, { 0x000071 }}, /* 1D64C; 0071; Additional folding */ + { 0x01D64D, 0, { 0x000072 }}, /* 1D64D; 0072; Additional folding */ + { 0x01D64E, 0, { 0x000073 }}, /* 1D64E; 0073; Additional folding */ + { 0x01D64F, 0, { 0x000074 }}, /* 1D64F; 0074; Additional folding */ + { 0x01D650, 0, { 0x000075 }}, /* 1D650; 0075; Additional folding */ + { 0x01D651, 0, { 0x000076 }}, /* 1D651; 0076; Additional folding */ + { 0x01D652, 0, { 0x000077 }}, /* 1D652; 0077; Additional folding */ + { 0x01D653, 0, { 0x000078 }}, /* 1D653; 0078; Additional folding */ + { 0x01D654, 0, { 0x000079 }}, /* 1D654; 0079; Additional folding */ + { 0x01D655, 0, { 0x00007A }}, /* 1D655; 007A; Additional folding */ + { 0x01D670, 0, { 0x000061 }}, /* 1D670; 0061; Additional folding */ + { 0x01D671, 0, { 0x000062 }}, /* 1D671; 0062; Additional folding */ + { 0x01D672, 0, { 0x000063 }}, /* 1D672; 0063; Additional folding */ + { 0x01D673, 0, { 0x000064 }}, /* 1D673; 0064; Additional folding */ + { 0x01D674, 0, { 0x000065 }}, /* 1D674; 0065; Additional folding */ + { 0x01D675, 0, { 0x000066 }}, /* 1D675; 0066; Additional folding */ + { 0x01D676, 0, { 0x000067 }}, /* 1D676; 0067; Additional folding */ + { 0x01D677, 0, { 0x000068 }}, /* 1D677; 0068; Additional folding */ + { 0x01D678, 0, { 0x000069 }}, /* 1D678; 0069; Additional folding */ + { 0x01D679, 0, { 0x00006A }}, /* 1D679; 006A; Additional folding */ + { 0x01D67A, 0, { 0x00006B }}, /* 1D67A; 006B; Additional folding */ + { 0x01D67B, 0, { 0x00006C }}, /* 1D67B; 006C; Additional folding */ + { 0x01D67C, 0, { 0x00006D }}, /* 1D67C; 006D; Additional folding */ + { 0x01D67D, 0, { 0x00006E }}, /* 1D67D; 006E; Additional folding */ + { 0x01D67E, 0, { 0x00006F }}, /* 1D67E; 006F; Additional folding */ + { 0x01D67F, 0, { 0x000070 }}, /* 1D67F; 0070; Additional folding */ + { 0x01D680, 0, { 0x000071 }}, /* 1D680; 0071; Additional folding */ + { 0x01D681, 0, { 0x000072 }}, /* 1D681; 0072; Additional folding */ + { 0x01D682, 0, { 0x000073 }}, /* 1D682; 0073; Additional folding */ + { 0x01D683, 0, { 0x000074 }}, /* 1D683; 0074; Additional folding */ + { 0x01D684, 0, { 0x000075 }}, /* 1D684; 0075; Additional folding */ + { 0x01D685, 0, { 0x000076 }}, /* 1D685; 0076; Additional folding */ + { 0x01D686, 0, { 0x000077 }}, /* 1D686; 0077; Additional folding */ + { 0x01D687, 0, { 0x000078 }}, /* 1D687; 0078; Additional folding */ + { 0x01D688, 0, { 0x000079 }}, /* 1D688; 0079; Additional folding */ + { 0x01D689, 0, { 0x00007A }}, /* 1D689; 007A; Additional folding */ + { 0x01D6A8, 0, { 0x0003B1 }}, /* 1D6A8; 03B1; Additional folding */ + { 0x01D6A9, 0, { 0x0003B2 }}, /* 1D6A9; 03B2; Additional folding */ + { 0x01D6AA, 0, { 0x0003B3 }}, /* 1D6AA; 03B3; Additional folding */ + { 0x01D6AB, 0, { 0x0003B4 }}, /* 1D6AB; 03B4; Additional folding */ + { 0x01D6AC, 0, { 0x0003B5 }}, /* 1D6AC; 03B5; Additional folding */ + { 0x01D6AD, 0, { 0x0003B6 }}, /* 1D6AD; 03B6; Additional folding */ + { 0x01D6AE, 0, { 0x0003B7 }}, /* 1D6AE; 03B7; Additional folding */ + { 0x01D6AF, 0, { 0x0003B8 }}, /* 1D6AF; 03B8; Additional folding */ + { 0x01D6B0, 0, { 0x0003B9 }}, /* 1D6B0; 03B9; Additional folding */ + { 0x01D6B1, 0, { 0x0003BA }}, /* 1D6B1; 03BA; Additional folding */ + { 0x01D6B2, 0, { 0x0003BB }}, /* 1D6B2; 03BB; Additional folding */ + { 0x01D6B3, 0, { 0x0003BC }}, /* 1D6B3; 03BC; Additional folding */ + { 0x01D6B4, 0, { 0x0003BD }}, /* 1D6B4; 03BD; Additional folding */ + { 0x01D6B5, 0, { 0x0003BE }}, /* 1D6B5; 03BE; Additional folding */ + { 0x01D6B6, 0, { 0x0003BF }}, /* 1D6B6; 03BF; Additional folding */ + { 0x01D6B7, 0, { 0x0003C0 }}, /* 1D6B7; 03C0; Additional folding */ + { 0x01D6B8, 0, { 0x0003C1 }}, /* 1D6B8; 03C1; Additional folding */ + { 0x01D6B9, 0, { 0x0003B8 }}, /* 1D6B9; 03B8; Additional folding */ + { 0x01D6BA, 0, { 0x0003C3 }}, /* 1D6BA; 03C3; Additional folding */ + { 0x01D6BB, 0, { 0x0003C4 }}, /* 1D6BB; 03C4; Additional folding */ + { 0x01D6BC, 0, { 0x0003C5 }}, /* 1D6BC; 03C5; Additional folding */ + { 0x01D6BD, 0, { 0x0003C6 }}, /* 1D6BD; 03C6; Additional folding */ + { 0x01D6BE, 0, { 0x0003C7 }}, /* 1D6BE; 03C7; Additional folding */ + { 0x01D6BF, 0, { 0x0003C8 }}, /* 1D6BF; 03C8; Additional folding */ + { 0x01D6C0, 0, { 0x0003C9 }}, /* 1D6C0; 03C9; Additional folding */ + { 0x01D6D3, 0, { 0x0003C3 }}, /* 1D6D3; 03C3; Additional folding */ + { 0x01D6E2, 0, { 0x0003B1 }}, /* 1D6E2; 03B1; Additional folding */ + { 0x01D6E3, 0, { 0x0003B2 }}, /* 1D6E3; 03B2; Additional folding */ + { 0x01D6E4, 0, { 0x0003B3 }}, /* 1D6E4; 03B3; Additional folding */ + { 0x01D6E5, 0, { 0x0003B4 }}, /* 1D6E5; 03B4; Additional folding */ + { 0x01D6E6, 0, { 0x0003B5 }}, /* 1D6E6; 03B5; Additional folding */ + { 0x01D6E7, 0, { 0x0003B6 }}, /* 1D6E7; 03B6; Additional folding */ + { 0x01D6E8, 0, { 0x0003B7 }}, /* 1D6E8; 03B7; Additional folding */ + { 0x01D6E9, 0, { 0x0003B8 }}, /* 1D6E9; 03B8; Additional folding */ + { 0x01D6EA, 0, { 0x0003B9 }}, /* 1D6EA; 03B9; Additional folding */ + { 0x01D6EB, 0, { 0x0003BA }}, /* 1D6EB; 03BA; Additional folding */ + { 0x01D6EC, 0, { 0x0003BB }}, /* 1D6EC; 03BB; Additional folding */ + { 0x01D6ED, 0, { 0x0003BC }}, /* 1D6ED; 03BC; Additional folding */ + { 0x01D6EE, 0, { 0x0003BD }}, /* 1D6EE; 03BD; Additional folding */ + { 0x01D6EF, 0, { 0x0003BE }}, /* 1D6EF; 03BE; Additional folding */ + { 0x01D6F0, 0, { 0x0003BF }}, /* 1D6F0; 03BF; Additional folding */ + { 0x01D6F1, 0, { 0x0003C0 }}, /* 1D6F1; 03C0; Additional folding */ + { 0x01D6F2, 0, { 0x0003C1 }}, /* 1D6F2; 03C1; Additional folding */ + { 0x01D6F3, 0, { 0x0003B8 }}, /* 1D6F3; 03B8; Additional folding */ + { 0x01D6F4, 0, { 0x0003C3 }}, /* 1D6F4; 03C3; Additional folding */ + { 0x01D6F5, 0, { 0x0003C4 }}, /* 1D6F5; 03C4; Additional folding */ + { 0x01D6F6, 0, { 0x0003C5 }}, /* 1D6F6; 03C5; Additional folding */ + { 0x01D6F7, 0, { 0x0003C6 }}, /* 1D6F7; 03C6; Additional folding */ + { 0x01D6F8, 0, { 0x0003C7 }}, /* 1D6F8; 03C7; Additional folding */ + { 0x01D6F9, 0, { 0x0003C8 }}, /* 1D6F9; 03C8; Additional folding */ + { 0x01D6FA, 0, { 0x0003C9 }}, /* 1D6FA; 03C9; Additional folding */ + { 0x01D70D, 0, { 0x0003C3 }}, /* 1D70D; 03C3; Additional folding */ + { 0x01D71C, 0, { 0x0003B1 }}, /* 1D71C; 03B1; Additional folding */ + { 0x01D71D, 0, { 0x0003B2 }}, /* 1D71D; 03B2; Additional folding */ + { 0x01D71E, 0, { 0x0003B3 }}, /* 1D71E; 03B3; Additional folding */ + { 0x01D71F, 0, { 0x0003B4 }}, /* 1D71F; 03B4; Additional folding */ + { 0x01D720, 0, { 0x0003B5 }}, /* 1D720; 03B5; Additional folding */ + { 0x01D721, 0, { 0x0003B6 }}, /* 1D721; 03B6; Additional folding */ + { 0x01D722, 0, { 0x0003B7 }}, /* 1D722; 03B7; Additional folding */ + { 0x01D723, 0, { 0x0003B8 }}, /* 1D723; 03B8; Additional folding */ + { 0x01D724, 0, { 0x0003B9 }}, /* 1D724; 03B9; Additional folding */ + { 0x01D725, 0, { 0x0003BA }}, /* 1D725; 03BA; Additional folding */ + { 0x01D726, 0, { 0x0003BB }}, /* 1D726; 03BB; Additional folding */ + { 0x01D727, 0, { 0x0003BC }}, /* 1D727; 03BC; Additional folding */ + { 0x01D728, 0, { 0x0003BD }}, /* 1D728; 03BD; Additional folding */ + { 0x01D729, 0, { 0x0003BE }}, /* 1D729; 03BE; Additional folding */ + { 0x01D72A, 0, { 0x0003BF }}, /* 1D72A; 03BF; Additional folding */ + { 0x01D72B, 0, { 0x0003C0 }}, /* 1D72B; 03C0; Additional folding */ + { 0x01D72C, 0, { 0x0003C1 }}, /* 1D72C; 03C1; Additional folding */ + { 0x01D72D, 0, { 0x0003B8 }}, /* 1D72D; 03B8; Additional folding */ + { 0x01D72E, 0, { 0x0003C3 }}, /* 1D72E; 03C3; Additional folding */ + { 0x01D72F, 0, { 0x0003C4 }}, /* 1D72F; 03C4; Additional folding */ + { 0x01D730, 0, { 0x0003C5 }}, /* 1D730; 03C5; Additional folding */ + { 0x01D731, 0, { 0x0003C6 }}, /* 1D731; 03C6; Additional folding */ + { 0x01D732, 0, { 0x0003C7 }}, /* 1D732; 03C7; Additional folding */ + { 0x01D733, 0, { 0x0003C8 }}, /* 1D733; 03C8; Additional folding */ + { 0x01D734, 0, { 0x0003C9 }}, /* 1D734; 03C9; Additional folding */ + { 0x01D747, 0, { 0x0003C3 }}, /* 1D747; 03C3; Additional folding */ + { 0x01D756, 0, { 0x0003B1 }}, /* 1D756; 03B1; Additional folding */ + { 0x01D757, 0, { 0x0003B2 }}, /* 1D757; 03B2; Additional folding */ + { 0x01D758, 0, { 0x0003B3 }}, /* 1D758; 03B3; Additional folding */ + { 0x01D759, 0, { 0x0003B4 }}, /* 1D759; 03B4; Additional folding */ + { 0x01D75A, 0, { 0x0003B5 }}, /* 1D75A; 03B5; Additional folding */ + { 0x01D75B, 0, { 0x0003B6 }}, /* 1D75B; 03B6; Additional folding */ + { 0x01D75C, 0, { 0x0003B7 }}, /* 1D75C; 03B7; Additional folding */ + { 0x01D75D, 0, { 0x0003B8 }}, /* 1D75D; 03B8; Additional folding */ + { 0x01D75E, 0, { 0x0003B9 }}, /* 1D75E; 03B9; Additional folding */ + { 0x01D75F, 0, { 0x0003BA }}, /* 1D75F; 03BA; Additional folding */ + { 0x01D760, 0, { 0x0003BB }}, /* 1D760; 03BB; Additional folding */ + { 0x01D761, 0, { 0x0003BC }}, /* 1D761; 03BC; Additional folding */ + { 0x01D762, 0, { 0x0003BD }}, /* 1D762; 03BD; Additional folding */ + { 0x01D763, 0, { 0x0003BE }}, /* 1D763; 03BE; Additional folding */ + { 0x01D764, 0, { 0x0003BF }}, /* 1D764; 03BF; Additional folding */ + { 0x01D765, 0, { 0x0003C0 }}, /* 1D765; 03C0; Additional folding */ + { 0x01D766, 0, { 0x0003C1 }}, /* 1D766; 03C1; Additional folding */ + { 0x01D767, 0, { 0x0003B8 }}, /* 1D767; 03B8; Additional folding */ + { 0x01D768, 0, { 0x0003C3 }}, /* 1D768; 03C3; Additional folding */ + { 0x01D769, 0, { 0x0003C4 }}, /* 1D769; 03C4; Additional folding */ + { 0x01D76A, 0, { 0x0003C5 }}, /* 1D76A; 03C5; Additional folding */ + { 0x01D76B, 0, { 0x0003C6 }}, /* 1D76B; 03C6; Additional folding */ + { 0x01D76C, 0, { 0x0003C7 }}, /* 1D76C; 03C7; Additional folding */ + { 0x01D76D, 0, { 0x0003C8 }}, /* 1D76D; 03C8; Additional folding */ + { 0x01D76E, 0, { 0x0003C9 }}, /* 1D76E; 03C9; Additional folding */ + { 0x01D781, 0, { 0x0003C3 }}, /* 1D781; 03C3; Additional folding */ + { 0x01D790, 0, { 0x0003B1 }}, /* 1D790; 03B1; Additional folding */ + { 0x01D791, 0, { 0x0003B2 }}, /* 1D791; 03B2; Additional folding */ + { 0x01D792, 0, { 0x0003B3 }}, /* 1D792; 03B3; Additional folding */ + { 0x01D793, 0, { 0x0003B4 }}, /* 1D793; 03B4; Additional folding */ + { 0x01D794, 0, { 0x0003B5 }}, /* 1D794; 03B5; Additional folding */ + { 0x01D795, 0, { 0x0003B6 }}, /* 1D795; 03B6; Additional folding */ + { 0x01D796, 0, { 0x0003B7 }}, /* 1D796; 03B7; Additional folding */ + { 0x01D797, 0, { 0x0003B8 }}, /* 1D797; 03B8; Additional folding */ + { 0x01D798, 0, { 0x0003B9 }}, /* 1D798; 03B9; Additional folding */ + { 0x01D799, 0, { 0x0003BA }}, /* 1D799; 03BA; Additional folding */ + { 0x01D79A, 0, { 0x0003BB }}, /* 1D79A; 03BB; Additional folding */ + { 0x01D79B, 0, { 0x0003BC }}, /* 1D79B; 03BC; Additional folding */ + { 0x01D79C, 0, { 0x0003BD }}, /* 1D79C; 03BD; Additional folding */ + { 0x01D79D, 0, { 0x0003BE }}, /* 1D79D; 03BE; Additional folding */ + { 0x01D79E, 0, { 0x0003BF }}, /* 1D79E; 03BF; Additional folding */ + { 0x01D79F, 0, { 0x0003C0 }}, /* 1D79F; 03C0; Additional folding */ + { 0x01D7A0, 0, { 0x0003C1 }}, /* 1D7A0; 03C1; Additional folding */ + { 0x01D7A1, 0, { 0x0003B8 }}, /* 1D7A1; 03B8; Additional folding */ + { 0x01D7A2, 0, { 0x0003C3 }}, /* 1D7A2; 03C3; Additional folding */ + { 0x01D7A3, 0, { 0x0003C4 }}, /* 1D7A3; 03C4; Additional folding */ + { 0x01D7A4, 0, { 0x0003C5 }}, /* 1D7A4; 03C5; Additional folding */ + { 0x01D7A5, 0, { 0x0003C6 }}, /* 1D7A5; 03C6; Additional folding */ + { 0x01D7A6, 0, { 0x0003C7 }}, /* 1D7A6; 03C7; Additional folding */ + { 0x01D7A7, 0, { 0x0003C8 }}, /* 1D7A7; 03C8; Additional folding */ + { 0x01D7A8, 0, { 0x0003C9 }}, /* 1D7A8; 03C9; Additional folding */ + { 0x01D7BB, 0, { 0x0003C3 }}, /* 1D7BB; 03C3; Additional folding */ + { 0 }, +}; + + +/* + * FF3A; FF5A; Case map + * 10400; 10428; Case map +10401; 10429; Case map +10402; 1042A; Case map +10403; 1042B; Case map +10404; 1042C; Case map +10405; 1042D; Case map +10406; 1042E; Case map +10407; 1042F; Case map +10408; 10430; Case map +10409; 10431; Case map +1040A; 10432; Case map +1040B; 10433; Case map +1040C; 10434; Case map +1040D; 10435; Case map +1040E; 10436; Case map +1040F; 10437; Case map +10410; 10438; Case map +10411; 10439; Case map +10412; 1043A; Case map +10413; 1043B; Case map +10414; 1043C; Case map +10415; 1043D; Case map +10416; 1043E; Case map +10417; 1043F; Case map +10418; 10440; Case map +10419; 10441; Case map +1041A; 10442; Case map +1041B; 10443; Case map +1041C; 10444; Case map +1041D; 10445; Case map +1041E; 10446; Case map +1041F; 10447; Case map +10420; 10448; Case map +10421; 10449; Case map +10422; 1044A; Case map +10423; 1044B; Case map +10424; 1044C; Case map +10425; 1044D; Case map +1D400; 0061; Additional folding +1D401; 0062; Additional folding +1D402; 0063; Additional folding +1D403; 0064; Additional folding +1D404; 0065; Additional folding +1D405; 0066; Additional folding +1D406; 0067; Additional folding +1D407; 0068; Additional folding +1D408; 0069; Additional folding +1D409; 006A; Additional folding +1D40A; 006B; Additional folding +1D40B; 006C; Additional folding +1D40C; 006D; Additional folding +1D40D; 006E; Additional folding +1D40E; 006F; Additional folding +1D40F; 0070; Additional folding +1D410; 0071; Additional folding +1D411; 0072; Additional folding +1D412; 0073; Additional folding +1D413; 0074; Additional folding +1D414; 0075; Additional folding +1D415; 0076; Additional folding +1D416; 0077; Additional folding +1D417; 0078; Additional folding +1D418; 0079; Additional folding +1D419; 007A; Additional folding +1D434; 0061; Additional folding +1D435; 0062; Additional folding +1D436; 0063; Additional folding +1D437; 0064; Additional folding +1D438; 0065; Additional folding +1D439; 0066; Additional folding +1D43A; 0067; Additional folding +1D43B; 0068; Additional folding +1D43C; 0069; Additional folding +1D43D; 006A; Additional folding +1D43E; 006B; Additional folding +1D43F; 006C; Additional folding +1D440; 006D; Additional folding +1D441; 006E; Additional folding +1D442; 006F; Additional folding +1D443; 0070; Additional folding +1D444; 0071; Additional folding +1D445; 0072; Additional folding +1D446; 0073; Additional folding +1D447; 0074; Additional folding +1D448; 0075; Additional folding +1D449; 0076; Additional folding +1D44A; 0077; Additional folding +1D44B; 0078; Additional folding +1D44C; 0079; Additional folding +1D44D; 007A; Additional folding +1D468; 0061; Additional folding +1D469; 0062; Additional folding +1D46A; 0063; Additional folding +1D46B; 0064; Additional folding +1D46C; 0065; Additional folding +1D46D; 0066; Additional folding +1D46E; 0067; Additional folding +1D46F; 0068; Additional folding +1D470; 0069; Additional folding +1D471; 006A; Additional folding +1D472; 006B; Additional folding +1D473; 006C; Additional folding +1D474; 006D; Additional folding +1D475; 006E; Additional folding +1D476; 006F; Additional folding +1D477; 0070; Additional folding +1D478; 0071; Additional folding +1D479; 0072; Additional folding +1D47A; 0073; Additional folding +1D47B; 0074; Additional folding +1D47C; 0075; Additional folding +1D47D; 0076; Additional folding +1D47E; 0077; Additional folding +1D47F; 0078; Additional folding +1D480; 0079; Additional folding +1D481; 007A; Additional folding +1D49C; 0061; Additional folding +1D49E; 0063; Additional folding +1D49F; 0064; Additional folding +1D4A2; 0067; Additional folding +1D4A5; 006A; Additional folding +1D4A6; 006B; Additional folding +1D4A9; 006E; Additional folding +1D4AA; 006F; Additional folding +1D4AB; 0070; Additional folding +1D4AC; 0071; Additional folding +1D4AE; 0073; Additional folding +1D4AF; 0074; Additional folding +1D4B0; 0075; Additional folding +1D4B1; 0076; Additional folding +1D4B2; 0077; Additional folding +1D4B3; 0078; Additional folding +1D4B4; 0079; Additional folding +1D4B5; 007A; Additional folding +1D4D0; 0061; Additional folding +1D4D1; 0062; Additional folding +1D4D2; 0063; Additional folding +1D4D3; 0064; Additional folding +1D4D4; 0065; Additional folding +1D4D5; 0066; Additional folding +1D4D6; 0067; Additional folding +1D4D7; 0068; Additional folding +1D4D8; 0069; Additional folding +1D4D9; 006A; Additional folding +1D4DA; 006B; Additional folding +1D4DB; 006C; Additional folding +1D4DC; 006D; Additional folding +1D4DD; 006E; Additional folding +1D4DE; 006F; Additional folding +1D4DF; 0070; Additional folding +1D4E0; 0071; Additional folding +1D4E1; 0072; Additional folding +1D4E2; 0073; Additional folding +1D4E3; 0074; Additional folding +1D4E4; 0075; Additional folding +1D4E5; 0076; Additional folding +1D4E6; 0077; Additional folding +1D4E7; 0078; Additional folding +1D4E8; 0079; Additional folding +1D4E9; 007A; Additional folding +1D504; 0061; Additional folding +1D505; 0062; Additional folding +1D507; 0064; Additional folding +1D508; 0065; Additional folding +1D509; 0066; Additional folding +1D50A; 0067; Additional folding +1D50D; 006A; Additional folding +1D50E; 006B; Additional folding +1D50F; 006C; Additional folding +1D510; 006D; Additional folding +1D511; 006E; Additional folding +1D512; 006F; Additional folding +1D513; 0070; Additional folding +1D514; 0071; Additional folding +1D516; 0073; Additional folding +1D517; 0074; Additional folding +1D518; 0075; Additional folding +1D519; 0076; Additional folding +1D51A; 0077; Additional folding +1D51B; 0078; Additional folding +1D51C; 0079; Additional folding +1D538; 0061; Additional folding +1D539; 0062; Additional folding +1D53B; 0064; Additional folding +1D53C; 0065; Additional folding +1D53D; 0066; Additional folding +1D53E; 0067; Additional folding +1D540; 0069; Additional folding +1D541; 006A; Additional folding +1D542; 006B; Additional folding +1D543; 006C; Additional folding +1D544; 006D; Additional folding +1D546; 006F; Additional folding +1D54A; 0073; Additional folding +1D54B; 0074; Additional folding +1D54C; 0075; Additional folding +1D54D; 0076; Additional folding +1D54E; 0077; Additional folding +1D54F; 0078; Additional folding +1D550; 0079; Additional folding +1D56C; 0061; Additional folding +1D56D; 0062; Additional folding +1D56E; 0063; Additional folding +1D56F; 0064; Additional folding +1D570; 0065; Additional folding +1D571; 0066; Additional folding +1D572; 0067; Additional folding +1D573; 0068; Additional folding +1D574; 0069; Additional folding +1D575; 006A; Additional folding +1D576; 006B; Additional folding +1D577; 006C; Additional folding +1D578; 006D; Additional folding +1D579; 006E; Additional folding +1D57A; 006F; Additional folding +1D57B; 0070; Additional folding +1D57C; 0071; Additional folding +1D57D; 0072; Additional folding +1D57E; 0073; Additional folding +1D57F; 0074; Additional folding +1D580; 0075; Additional folding +1D581; 0076; Additional folding +1D582; 0077; Additional folding +1D583; 0078; Additional folding +1D584; 0079; Additional folding +1D585; 007A; Additional folding +1D5A0; 0061; Additional folding +1D5A1; 0062; Additional folding +1D5A2; 0063; Additional folding +1D5A3; 0064; Additional folding +1D5A4; 0065; Additional folding +1D5A5; 0066; Additional folding +1D5A6; 0067; Additional folding +1D5A7; 0068; Additional folding +1D5A8; 0069; Additional folding +1D5A9; 006A; Additional folding +1D5AA; 006B; Additional folding +1D5AB; 006C; Additional folding +1D5AC; 006D; Additional folding +1D5AD; 006E; Additional folding +1D5AE; 006F; Additional folding +1D5AF; 0070; Additional folding +1D5B0; 0071; Additional folding +1D5B1; 0072; Additional folding +1D5B2; 0073; Additional folding +1D5B3; 0074; Additional folding +1D5B4; 0075; Additional folding +1D5B5; 0076; Additional folding +1D5B6; 0077; Additional folding +1D5B7; 0078; Additional folding +1D5B8; 0079; Additional folding +1D5B9; 007A; Additional folding +1D5D4; 0061; Additional folding +1D5D5; 0062; Additional folding +1D5D6; 0063; Additional folding +1D5D7; 0064; Additional folding +1D5D8; 0065; Additional folding +1D5D9; 0066; Additional folding +1D5DA; 0067; Additional folding +1D5DB; 0068; Additional folding +1D5DC; 0069; Additional folding +1D5DD; 006A; Additional folding +1D5DE; 006B; Additional folding +1D5DF; 006C; Additional folding +1D5E0; 006D; Additional folding +1D5E1; 006E; Additional folding +1D5E2; 006F; Additional folding +1D5E3; 0070; Additional folding +1D5E4; 0071; Additional folding +1D5E5; 0072; Additional folding +1D5E6; 0073; Additional folding +1D5E7; 0074; Additional folding +1D5E8; 0075; Additional folding +1D5E9; 0076; Additional folding +1D5EA; 0077; Additional folding +1D5EB; 0078; Additional folding +1D5EC; 0079; Additional folding +1D5ED; 007A; Additional folding +1D608; 0061; Additional folding +1D609; 0062; Additional folding +1D60A; 0063; Additional folding +1D60B; 0064; Additional folding +1D60C; 0065; Additional folding +1D60D; 0066; Additional folding +1D60E; 0067; Additional folding +1D60F; 0068; Additional folding +1D610; 0069; Additional folding +1D611; 006A; Additional folding +1D612; 006B; Additional folding +1D613; 006C; Additional folding +1D614; 006D; Additional folding +1D615; 006E; Additional folding +1D616; 006F; Additional folding +1D617; 0070; Additional folding +1D618; 0071; Additional folding +1D619; 0072; Additional folding +1D61A; 0073; Additional folding +1D61B; 0074; Additional folding +1D61C; 0075; Additional folding +1D61D; 0076; Additional folding +1D61E; 0077; Additional folding +1D61F; 0078; Additional folding +1D620; 0079; Additional folding +1D621; 007A; Additional folding +1D63C; 0061; Additional folding +1D63D; 0062; Additional folding +1D63E; 0063; Additional folding +1D63F; 0064; Additional folding +1D640; 0065; Additional folding +1D641; 0066; Additional folding +1D642; 0067; Additional folding +1D643; 0068; Additional folding +1D644; 0069; Additional folding +1D645; 006A; Additional folding +1D646; 006B; Additional folding +1D647; 006C; Additional folding +1D648; 006D; Additional folding +1D649; 006E; Additional folding +1D64A; 006F; Additional folding +1D64B; 0070; Additional folding +1D64C; 0071; Additional folding +1D64D; 0072; Additional folding +1D64E; 0073; Additional folding +1D64F; 0074; Additional folding +1D650; 0075; Additional folding +1D651; 0076; Additional folding +1D652; 0077; Additional folding +1D653; 0078; Additional folding +1D654; 0079; Additional folding +1D655; 007A; Additional folding +1D670; 0061; Additional folding +1D671; 0062; Additional folding +1D672; 0063; Additional folding +1D673; 0064; Additional folding +1D674; 0065; Additional folding +1D675; 0066; Additional folding +1D676; 0067; Additional folding +1D677; 0068; Additional folding +1D678; 0069; Additional folding +1D679; 006A; Additional folding +1D67A; 006B; Additional folding +1D67B; 006C; Additional folding +1D67C; 006D; Additional folding +1D67D; 006E; Additional folding +1D67E; 006F; Additional folding +1D67F; 0070; Additional folding +1D680; 0071; Additional folding +1D681; 0072; Additional folding +1D682; 0073; Additional folding +1D683; 0074; Additional folding +1D684; 0075; Additional folding +1D685; 0076; Additional folding +1D686; 0077; Additional folding +1D687; 0078; Additional folding +1D688; 0079; Additional folding +1D689; 007A; Additional folding +1D6A8; 03B1; Additional folding +1D6A9; 03B2; Additional folding +1D6AA; 03B3; Additional folding +1D6AB; 03B4; Additional folding +1D6AC; 03B5; Additional folding +1D6AD; 03B6; Additional folding +1D6AE; 03B7; Additional folding +1D6AF; 03B8; Additional folding +1D6B0; 03B9; Additional folding +1D6B1; 03BA; Additional folding +1D6B2; 03BB; Additional folding +1D6B3; 03BC; Additional folding +1D6B4; 03BD; Additional folding +1D6B5; 03BE; Additional folding +1D6B6; 03BF; Additional folding +1D6B7; 03C0; Additional folding +1D6B8; 03C1; Additional folding +1D6B9; 03B8; Additional folding +1D6BA; 03C3; Additional folding +1D6BB; 03C4; Additional folding +1D6BC; 03C5; Additional folding +1D6BD; 03C6; Additional folding +1D6BE; 03C7; Additional folding +1D6BF; 03C8; Additional folding +1D6C0; 03C9; Additional folding +1D6D3; 03C3; Additional folding +1D6E2; 03B1; Additional folding +1D6E3; 03B2; Additional folding +1D6E4; 03B3; Additional folding +1D6E5; 03B4; Additional folding +1D6E6; 03B5; Additional folding +1D6E7; 03B6; Additional folding +1D6E8; 03B7; Additional folding +1D6E9; 03B8; Additional folding +1D6EA; 03B9; Additional folding +1D6EB; 03BA; Additional folding +1D6EC; 03BB; Additional folding +1D6ED; 03BC; Additional folding +1D6EE; 03BD; Additional folding +1D6EF; 03BE; Additional folding +1D6F0; 03BF; Additional folding +1D6F1; 03C0; Additional folding +1D6F2; 03C1; Additional folding +1D6F3; 03B8; Additional folding +1D6F4; 03C3; Additional folding +1D6F5; 03C4; Additional folding +1D6F6; 03C5; Additional folding +1D6F7; 03C6; Additional folding +1D6F8; 03C7; Additional folding +1D6F9; 03C8; Additional folding +1D6FA; 03C9; Additional folding +1D70D; 03C3; Additional folding +1D71C; 03B1; Additional folding +1D71D; 03B2; Additional folding +1D71E; 03B3; Additional folding +1D71F; 03B4; Additional folding +1D720; 03B5; Additional folding +1D721; 03B6; Additional folding +1D722; 03B7; Additional folding +1D723; 03B8; Additional folding +1D724; 03B9; Additional folding +1D725; 03BA; Additional folding +1D726; 03BB; Additional folding +1D727; 03BC; Additional folding +1D728; 03BD; Additional folding +1D729; 03BE; Additional folding +1D72A; 03BF; Additional folding +1D72B; 03C0; Additional folding +1D72C; 03C1; Additional folding +1D72D; 03B8; Additional folding +1D72E; 03C3; Additional folding +1D72F; 03C4; Additional folding +1D730; 03C5; Additional folding +1D731; 03C6; Additional folding +1D732; 03C7; Additional folding +1D733; 03C8; Additional folding +1D734; 03C9; Additional folding +1D747; 03C3; Additional folding +1D756; 03B1; Additional folding +1D757; 03B2; Additional folding +1D758; 03B3; Additional folding +1D759; 03B4; Additional folding +1D75A; 03B5; Additional folding +1D75B; 03B6; Additional folding +1D75C; 03B7; Additional folding +1D75D; 03B8; Additional folding +1D75E; 03B9; Additional folding +1D75F; 03BA; Additional folding +1D760; 03BB; Additional folding +1D761; 03BC; Additional folding +1D762; 03BD; Additional folding +1D763; 03BE; Additional folding +1D764; 03BF; Additional folding +1D765; 03C0; Additional folding +1D766; 03C1; Additional folding +1D767; 03B8; Additional folding +1D768; 03C3; Additional folding +1D769; 03C4; Additional folding +1D76A; 03C5; Additional folding +1D76B; 03C6; Additional folding +1D76C; 03C7; Additional folding +1D76D; 03C8; Additional folding +1D76E; 03C9; Additional folding +1D781; 03C3; Additional folding +1D790; 03B1; Additional folding +1D791; 03B2; Additional folding +1D792; 03B3; Additional folding +1D793; 03B4; Additional folding +1D794; 03B5; Additional folding +1D795; 03B6; Additional folding +1D796; 03B7; Additional folding +1D797; 03B8; Additional folding +1D798; 03B9; Additional folding +1D799; 03BA; Additional folding +1D79A; 03BB; Additional folding +1D79B; 03BC; Additional folding +1D79C; 03BD; Additional folding +1D79D; 03BE; Additional folding +1D79E; 03BF; Additional folding +1D79F; 03C0; Additional folding +1D7A0; 03C1; Additional folding +1D7A1; 03B8; Additional folding +1D7A2; 03C3; Additional folding +1D7A3; 03C4; Additional folding +1D7A4; 03C5; Additional folding +1D7A5; 03C6; Additional folding +1D7A6; 03C7; Additional folding +1D7A7; 03C8; Additional folding +1D7A8; 03C9; Additional folding +1D7BB; 03C3; Additional folding + + */ + +const Stringprep_table_element stringprep_rfc3454_B_3[] = { + { 0x000041, 0, { 0x000061 }}, /* 0041; 0061; Case map */ + { 0x000042, 0, { 0x000062 }}, /* 0042; 0062; Case map */ + { 0x000043, 0, { 0x000063 }}, /* 0043; 0063; Case map */ + { 0x000044, 0, { 0x000064 }}, /* 0044; 0064; Case map */ + { 0x000045, 0, { 0x000065 }}, /* 0045; 0065; Case map */ + { 0x000046, 0, { 0x000066 }}, /* 0046; 0066; Case map */ + { 0x000047, 0, { 0x000067 }}, /* 0047; 0067; Case map */ + { 0x000048, 0, { 0x000068 }}, /* 0048; 0068; Case map */ + { 0x000049, 0, { 0x000069 }}, /* 0049; 0069; Case map */ + { 0x00004A, 0, { 0x00006A }}, /* 004A; 006A; Case map */ + { 0x00004B, 0, { 0x00006B }}, /* 004B; 006B; Case map */ + { 0x00004C, 0, { 0x00006C }}, /* 004C; 006C; Case map */ + { 0x00004D, 0, { 0x00006D }}, /* 004D; 006D; Case map */ + { 0x00004E, 0, { 0x00006E }}, /* 004E; 006E; Case map */ + { 0x00004F, 0, { 0x00006F }}, /* 004F; 006F; Case map */ + { 0x000050, 0, { 0x000070 }}, /* 0050; 0070; Case map */ + { 0x000051, 0, { 0x000071 }}, /* 0051; 0071; Case map */ + { 0x000052, 0, { 0x000072 }}, /* 0052; 0072; Case map */ + { 0x000053, 0, { 0x000073 }}, /* 0053; 0073; Case map */ + { 0x000054, 0, { 0x000074 }}, /* 0054; 0074; Case map */ + { 0x000055, 0, { 0x000075 }}, /* 0055; 0075; Case map */ + { 0x000056, 0, { 0x000076 }}, /* 0056; 0076; Case map */ + { 0x000057, 0, { 0x000077 }}, /* 0057; 0077; Case map */ + { 0x000058, 0, { 0x000078 }}, /* 0058; 0078; Case map */ + { 0x000059, 0, { 0x000079 }}, /* 0059; 0079; Case map */ + { 0x00005A, 0, { 0x00007A }}, /* 005A; 007A; Case map */ + { 0x0000B5, 0, { 0x0003BC }}, /* 00B5; 03BC; Case map */ + { 0x0000C0, 0, { 0x0000E0 }}, /* 00C0; 00E0; Case map */ + { 0x0000C1, 0, { 0x0000E1 }}, /* 00C1; 00E1; Case map */ + { 0x0000C2, 0, { 0x0000E2 }}, /* 00C2; 00E2; Case map */ + { 0x0000C3, 0, { 0x0000E3 }}, /* 00C3; 00E3; Case map */ + { 0x0000C4, 0, { 0x0000E4 }}, /* 00C4; 00E4; Case map */ + { 0x0000C5, 0, { 0x0000E5 }}, /* 00C5; 00E5; Case map */ + { 0x0000C6, 0, { 0x0000E6 }}, /* 00C6; 00E6; Case map */ + { 0x0000C7, 0, { 0x0000E7 }}, /* 00C7; 00E7; Case map */ + { 0x0000C8, 0, { 0x0000E8 }}, /* 00C8; 00E8; Case map */ + { 0x0000C9, 0, { 0x0000E9 }}, /* 00C9; 00E9; Case map */ + { 0x0000CA, 0, { 0x0000EA }}, /* 00CA; 00EA; Case map */ + { 0x0000CB, 0, { 0x0000EB }}, /* 00CB; 00EB; Case map */ + { 0x0000CC, 0, { 0x0000EC }}, /* 00CC; 00EC; Case map */ + { 0x0000CD, 0, { 0x0000ED }}, /* 00CD; 00ED; Case map */ + { 0x0000CE, 0, { 0x0000EE }}, /* 00CE; 00EE; Case map */ + { 0x0000CF, 0, { 0x0000EF }}, /* 00CF; 00EF; Case map */ + { 0x0000D0, 0, { 0x0000F0 }}, /* 00D0; 00F0; Case map */ + { 0x0000D1, 0, { 0x0000F1 }}, /* 00D1; 00F1; Case map */ + { 0x0000D2, 0, { 0x0000F2 }}, /* 00D2; 00F2; Case map */ + { 0x0000D3, 0, { 0x0000F3 }}, /* 00D3; 00F3; Case map */ + { 0x0000D4, 0, { 0x0000F4 }}, /* 00D4; 00F4; Case map */ + { 0x0000D5, 0, { 0x0000F5 }}, /* 00D5; 00F5; Case map */ + { 0x0000D6, 0, { 0x0000F6 }}, /* 00D6; 00F6; Case map */ + { 0x0000D8, 0, { 0x0000F8 }}, /* 00D8; 00F8; Case map */ + { 0x0000D9, 0, { 0x0000F9 }}, /* 00D9; 00F9; Case map */ + { 0x0000DA, 0, { 0x0000FA }}, /* 00DA; 00FA; Case map */ + { 0x0000DB, 0, { 0x0000FB }}, /* 00DB; 00FB; Case map */ + { 0x0000DC, 0, { 0x0000FC }}, /* 00DC; 00FC; Case map */ + { 0x0000DD, 0, { 0x0000FD }}, /* 00DD; 00FD; Case map */ + { 0x0000DE, 0, { 0x0000FE }}, /* 00DE; 00FE; Case map */ + { 0x0000DF, 0, { 0x000073, /* 00DF; 0073 0073; Case map */ + 0x000073 }}, + { 0x000100, 0, { 0x000101 }}, /* 0100; 0101; Case map */ + { 0x000102, 0, { 0x000103 }}, /* 0102; 0103; Case map */ + { 0x000104, 0, { 0x000105 }}, /* 0104; 0105; Case map */ + { 0x000106, 0, { 0x000107 }}, /* 0106; 0107; Case map */ + { 0x000108, 0, { 0x000109 }}, /* 0108; 0109; Case map */ + { 0x00010A, 0, { 0x00010B }}, /* 010A; 010B; Case map */ + { 0x00010C, 0, { 0x00010D }}, /* 010C; 010D; Case map */ + { 0x00010E, 0, { 0x00010F }}, /* 010E; 010F; Case map */ + { 0x000110, 0, { 0x000111 }}, /* 0110; 0111; Case map */ + { 0x000112, 0, { 0x000113 }}, /* 0112; 0113; Case map */ + { 0x000114, 0, { 0x000115 }}, /* 0114; 0115; Case map */ + { 0x000116, 0, { 0x000117 }}, /* 0116; 0117; Case map */ + { 0x000118, 0, { 0x000119 }}, /* 0118; 0119; Case map */ + { 0x00011A, 0, { 0x00011B }}, /* 011A; 011B; Case map */ + { 0x00011C, 0, { 0x00011D }}, /* 011C; 011D; Case map */ + { 0x00011E, 0, { 0x00011F }}, /* 011E; 011F; Case map */ + { 0x000120, 0, { 0x000121 }}, /* 0120; 0121; Case map */ + { 0x000122, 0, { 0x000123 }}, /* 0122; 0123; Case map */ + { 0x000124, 0, { 0x000125 }}, /* 0124; 0125; Case map */ + { 0x000126, 0, { 0x000127 }}, /* 0126; 0127; Case map */ + { 0x000128, 0, { 0x000129 }}, /* 0128; 0129; Case map */ + { 0x00012A, 0, { 0x00012B }}, /* 012A; 012B; Case map */ + { 0x00012C, 0, { 0x00012D }}, /* 012C; 012D; Case map */ + { 0x00012E, 0, { 0x00012F }}, /* 012E; 012F; Case map */ + { 0x000130, 0, { 0x000069, /* 0130; 0069 0307; Case map */ + 0x000307 }}, + { 0x000132, 0, { 0x000133 }}, /* 0132; 0133; Case map */ + { 0x000134, 0, { 0x000135 }}, /* 0134; 0135; Case map */ + { 0x000136, 0, { 0x000137 }}, /* 0136; 0137; Case map */ + { 0x000139, 0, { 0x00013A }}, /* 0139; 013A; Case map */ + { 0x00013B, 0, { 0x00013C }}, /* 013B; 013C; Case map */ + { 0x00013D, 0, { 0x00013E }}, /* 013D; 013E; Case map */ + { 0x00013F, 0, { 0x000140 }}, /* 013F; 0140; Case map */ + { 0x000141, 0, { 0x000142 }}, /* 0141; 0142; Case map */ + { 0x000143, 0, { 0x000144 }}, /* 0143; 0144; Case map */ + { 0x000145, 0, { 0x000146 }}, /* 0145; 0146; Case map */ + { 0x000147, 0, { 0x000148 }}, /* 0147; 0148; Case map */ + { 0x000149, 0, { 0x0002BC, /* 0149; 02BC 006E; Case map */ + 0x00006E }}, + { 0x00014A, 0, { 0x00014B }}, /* 014A; 014B; Case map */ + { 0x00014C, 0, { 0x00014D }}, /* 014C; 014D; Case map */ + { 0x00014E, 0, { 0x00014F }}, /* 014E; 014F; Case map */ + { 0x000150, 0, { 0x000151 }}, /* 0150; 0151; Case map */ + { 0x000152, 0, { 0x000153 }}, /* 0152; 0153; Case map */ + { 0x000154, 0, { 0x000155 }}, /* 0154; 0155; Case map */ + { 0x000156, 0, { 0x000157 }}, /* 0156; 0157; Case map */ + { 0x000158, 0, { 0x000159 }}, /* 0158; 0159; Case map */ + { 0x00015A, 0, { 0x00015B }}, /* 015A; 015B; Case map */ + { 0x00015C, 0, { 0x00015D }}, /* 015C; 015D; Case map */ + { 0x00015E, 0, { 0x00015F }}, /* 015E; 015F; Case map */ + { 0x000160, 0, { 0x000161 }}, /* 0160; 0161; Case map */ + { 0x000162, 0, { 0x000163 }}, /* 0162; 0163; Case map */ + { 0x000164, 0, { 0x000165 }}, /* 0164; 0165; Case map */ + { 0x000166, 0, { 0x000167 }}, /* 0166; 0167; Case map */ + { 0x000168, 0, { 0x000169 }}, /* 0168; 0169; Case map */ + { 0x00016A, 0, { 0x00016B }}, /* 016A; 016B; Case map */ + { 0x00016C, 0, { 0x00016D }}, /* 016C; 016D; Case map */ + { 0x00016E, 0, { 0x00016F }}, /* 016E; 016F; Case map */ + { 0x000170, 0, { 0x000171 }}, /* 0170; 0171; Case map */ + { 0x000172, 0, { 0x000173 }}, /* 0172; 0173; Case map */ + { 0x000174, 0, { 0x000175 }}, /* 0174; 0175; Case map */ + { 0x000176, 0, { 0x000177 }}, /* 0176; 0177; Case map */ + { 0x000178, 0, { 0x0000FF }}, /* 0178; 00FF; Case map */ + { 0x000179, 0, { 0x00017A }}, /* 0179; 017A; Case map */ + { 0x00017B, 0, { 0x00017C }}, /* 017B; 017C; Case map */ + { 0x00017D, 0, { 0x00017E }}, /* 017D; 017E; Case map */ + { 0x00017F, 0, { 0x000073 }}, /* 017F; 0073; Case map */ + { 0x000181, 0, { 0x000253 }}, /* 0181; 0253; Case map */ + { 0x000182, 0, { 0x000183 }}, /* 0182; 0183; Case map */ + { 0x000184, 0, { 0x000185 }}, /* 0184; 0185; Case map */ + { 0x000186, 0, { 0x000254 }}, /* 0186; 0254; Case map */ + { 0x000187, 0, { 0x000188 }}, /* 0187; 0188; Case map */ + { 0x000189, 0, { 0x000256 }}, /* 0189; 0256; Case map */ + { 0x00018A, 0, { 0x000257 }}, /* 018A; 0257; Case map */ + { 0x00018B, 0, { 0x00018C }}, /* 018B; 018C; Case map */ + { 0x00018E, 0, { 0x0001DD }}, /* 018E; 01DD; Case map */ + { 0x00018F, 0, { 0x000259 }}, /* 018F; 0259; Case map */ + { 0x000190, 0, { 0x00025B }}, /* 0190; 025B; Case map */ + { 0x000191, 0, { 0x000192 }}, /* 0191; 0192; Case map */ + { 0x000193, 0, { 0x000260 }}, /* 0193; 0260; Case map */ + { 0x000194, 0, { 0x000263 }}, /* 0194; 0263; Case map */ + { 0x000196, 0, { 0x000269 }}, /* 0196; 0269; Case map */ + { 0x000197, 0, { 0x000268 }}, /* 0197; 0268; Case map */ + { 0x000198, 0, { 0x000199 }}, /* 0198; 0199; Case map */ + { 0x00019C, 0, { 0x00026F }}, /* 019C; 026F; Case map */ + { 0x00019D, 0, { 0x000272 }}, /* 019D; 0272; Case map */ + { 0x00019F, 0, { 0x000275 }}, /* 019F; 0275; Case map */ + { 0x0001A0, 0, { 0x0001A1 }}, /* 01A0; 01A1; Case map */ + { 0x0001A2, 0, { 0x0001A3 }}, /* 01A2; 01A3; Case map */ + { 0x0001A4, 0, { 0x0001A5 }}, /* 01A4; 01A5; Case map */ + { 0x0001A6, 0, { 0x000280 }}, /* 01A6; 0280; Case map */ + { 0x0001A7, 0, { 0x0001A8 }}, /* 01A7; 01A8; Case map */ + { 0x0001A9, 0, { 0x000283 }}, /* 01A9; 0283; Case map */ + { 0x0001AC, 0, { 0x0001AD }}, /* 01AC; 01AD; Case map */ + { 0x0001AE, 0, { 0x000288 }}, /* 01AE; 0288; Case map */ + { 0x0001AF, 0, { 0x0001B0 }}, /* 01AF; 01B0; Case map */ + { 0x0001B1, 0, { 0x00028A }}, /* 01B1; 028A; Case map */ + { 0x0001B2, 0, { 0x00028B }}, /* 01B2; 028B; Case map */ + { 0x0001B3, 0, { 0x0001B4 }}, /* 01B3; 01B4; Case map */ + { 0x0001B5, 0, { 0x0001B6 }}, /* 01B5; 01B6; Case map */ + { 0x0001B7, 0, { 0x000292 }}, /* 01B7; 0292; Case map */ + { 0x0001B8, 0, { 0x0001B9 }}, /* 01B8; 01B9; Case map */ + { 0x0001BC, 0, { 0x0001BD }}, /* 01BC; 01BD; Case map */ + { 0x0001C4, 0, { 0x0001C6 }}, /* 01C4; 01C6; Case map */ + { 0x0001C5, 0, { 0x0001C6 }}, /* 01C5; 01C6; Case map */ + { 0x0001C7, 0, { 0x0001C9 }}, /* 01C7; 01C9; Case map */ + { 0x0001C8, 0, { 0x0001C9 }}, /* 01C8; 01C9; Case map */ + { 0x0001CA, 0, { 0x0001CC }}, /* 01CA; 01CC; Case map */ + { 0x0001CB, 0, { 0x0001CC }}, /* 01CB; 01CC; Case map */ + { 0x0001CD, 0, { 0x0001CE }}, /* 01CD; 01CE; Case map */ + { 0x0001CF, 0, { 0x0001D0 }}, /* 01CF; 01D0; Case map */ + { 0x0001D1, 0, { 0x0001D2 }}, /* 01D1; 01D2; Case map */ + { 0x0001D3, 0, { 0x0001D4 }}, /* 01D3; 01D4; Case map */ + { 0x0001D5, 0, { 0x0001D6 }}, /* 01D5; 01D6; Case map */ + { 0x0001D7, 0, { 0x0001D8 }}, /* 01D7; 01D8; Case map */ + { 0x0001D9, 0, { 0x0001DA }}, /* 01D9; 01DA; Case map */ + { 0x0001DB, 0, { 0x0001DC }}, /* 01DB; 01DC; Case map */ + { 0x0001DE, 0, { 0x0001DF }}, /* 01DE; 01DF; Case map */ + { 0x0001E0, 0, { 0x0001E1 }}, /* 01E0; 01E1; Case map */ + { 0x0001E2, 0, { 0x0001E3 }}, /* 01E2; 01E3; Case map */ + { 0x0001E4, 0, { 0x0001E5 }}, /* 01E4; 01E5; Case map */ + { 0x0001E6, 0, { 0x0001E7 }}, /* 01E6; 01E7; Case map */ + { 0x0001E8, 0, { 0x0001E9 }}, /* 01E8; 01E9; Case map */ + { 0x0001EA, 0, { 0x0001EB }}, /* 01EA; 01EB; Case map */ + { 0x0001EC, 0, { 0x0001ED }}, /* 01EC; 01ED; Case map */ + { 0x0001EE, 0, { 0x0001EF }}, /* 01EE; 01EF; Case map */ + { 0x0001F0, 0, { 0x00006A, /* 01F0; 006A 030C; Case map */ + 0x00030C }}, + { 0x0001F1, 0, { 0x0001F3 }}, /* 01F1; 01F3; Case map */ + { 0x0001F2, 0, { 0x0001F3 }}, /* 01F2; 01F3; Case map */ + { 0x0001F4, 0, { 0x0001F5 }}, /* 01F4; 01F5; Case map */ + { 0x0001F6, 0, { 0x000195 }}, /* 01F6; 0195; Case map */ + { 0x0001F7, 0, { 0x0001BF }}, /* 01F7; 01BF; Case map */ + { 0x0001F8, 0, { 0x0001F9 }}, /* 01F8; 01F9; Case map */ + { 0x0001FA, 0, { 0x0001FB }}, /* 01FA; 01FB; Case map */ + { 0x0001FC, 0, { 0x0001FD }}, /* 01FC; 01FD; Case map */ + { 0x0001FE, 0, { 0x0001FF }}, /* 01FE; 01FF; Case map */ + { 0x000200, 0, { 0x000201 }}, /* 0200; 0201; Case map */ + { 0x000202, 0, { 0x000203 }}, /* 0202; 0203; Case map */ + { 0x000204, 0, { 0x000205 }}, /* 0204; 0205; Case map */ + { 0x000206, 0, { 0x000207 }}, /* 0206; 0207; Case map */ + { 0x000208, 0, { 0x000209 }}, /* 0208; 0209; Case map */ + { 0x00020A, 0, { 0x00020B }}, /* 020A; 020B; Case map */ + { 0x00020C, 0, { 0x00020D }}, /* 020C; 020D; Case map */ + { 0x00020E, 0, { 0x00020F }}, /* 020E; 020F; Case map */ + { 0x000210, 0, { 0x000211 }}, /* 0210; 0211; Case map */ + { 0x000212, 0, { 0x000213 }}, /* 0212; 0213; Case map */ + { 0x000214, 0, { 0x000215 }}, /* 0214; 0215; Case map */ + { 0x000216, 0, { 0x000217 }}, /* 0216; 0217; Case map */ + { 0x000218, 0, { 0x000219 }}, /* 0218; 0219; Case map */ + { 0x00021A, 0, { 0x00021B }}, /* 021A; 021B; Case map */ + { 0x00021C, 0, { 0x00021D }}, /* 021C; 021D; Case map */ + { 0x00021E, 0, { 0x00021F }}, /* 021E; 021F; Case map */ + { 0x000220, 0, { 0x00019E }}, /* 0220; 019E; Case map */ + { 0x000222, 0, { 0x000223 }}, /* 0222; 0223; Case map */ + { 0x000224, 0, { 0x000225 }}, /* 0224; 0225; Case map */ + { 0x000226, 0, { 0x000227 }}, /* 0226; 0227; Case map */ + { 0x000228, 0, { 0x000229 }}, /* 0228; 0229; Case map */ + { 0x00022A, 0, { 0x00022B }}, /* 022A; 022B; Case map */ + { 0x00022C, 0, { 0x00022D }}, /* 022C; 022D; Case map */ + { 0x00022E, 0, { 0x00022F }}, /* 022E; 022F; Case map */ + { 0x000230, 0, { 0x000231 }}, /* 0230; 0231; Case map */ + { 0x000232, 0, { 0x000233 }}, /* 0232; 0233; Case map */ + { 0x000345, 0, { 0x0003B9 }}, /* 0345; 03B9; Case map */ + { 0x000386, 0, { 0x0003AC }}, /* 0386; 03AC; Case map */ + { 0x000388, 0, { 0x0003AD }}, /* 0388; 03AD; Case map */ + { 0x000389, 0, { 0x0003AE }}, /* 0389; 03AE; Case map */ + { 0x00038A, 0, { 0x0003AF }}, /* 038A; 03AF; Case map */ + { 0x00038C, 0, { 0x0003CC }}, /* 038C; 03CC; Case map */ + { 0x00038E, 0, { 0x0003CD }}, /* 038E; 03CD; Case map */ + { 0x00038F, 0, { 0x0003CE }}, /* 038F; 03CE; Case map */ + { 0x000390, 0, { 0x0003B9, /* 0390; 03B9 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x000391, 0, { 0x0003B1 }}, /* 0391; 03B1; Case map */ + { 0x000392, 0, { 0x0003B2 }}, /* 0392; 03B2; Case map */ + { 0x000393, 0, { 0x0003B3 }}, /* 0393; 03B3; Case map */ + { 0x000394, 0, { 0x0003B4 }}, /* 0394; 03B4; Case map */ + { 0x000395, 0, { 0x0003B5 }}, /* 0395; 03B5; Case map */ + { 0x000396, 0, { 0x0003B6 }}, /* 0396; 03B6; Case map */ + { 0x000397, 0, { 0x0003B7 }}, /* 0397; 03B7; Case map */ + { 0x000398, 0, { 0x0003B8 }}, /* 0398; 03B8; Case map */ + { 0x000399, 0, { 0x0003B9 }}, /* 0399; 03B9; Case map */ + { 0x00039A, 0, { 0x0003BA }}, /* 039A; 03BA; Case map */ + { 0x00039B, 0, { 0x0003BB }}, /* 039B; 03BB; Case map */ + { 0x00039C, 0, { 0x0003BC }}, /* 039C; 03BC; Case map */ + { 0x00039D, 0, { 0x0003BD }}, /* 039D; 03BD; Case map */ + { 0x00039E, 0, { 0x0003BE }}, /* 039E; 03BE; Case map */ + { 0x00039F, 0, { 0x0003BF }}, /* 039F; 03BF; Case map */ + { 0x0003A0, 0, { 0x0003C0 }}, /* 03A0; 03C0; Case map */ + { 0x0003A1, 0, { 0x0003C1 }}, /* 03A1; 03C1; Case map */ + { 0x0003A3, 0, { 0x0003C3 }}, /* 03A3; 03C3; Case map */ + { 0x0003A4, 0, { 0x0003C4 }}, /* 03A4; 03C4; Case map */ + { 0x0003A5, 0, { 0x0003C5 }}, /* 03A5; 03C5; Case map */ + { 0x0003A6, 0, { 0x0003C6 }}, /* 03A6; 03C6; Case map */ + { 0x0003A7, 0, { 0x0003C7 }}, /* 03A7; 03C7; Case map */ + { 0x0003A8, 0, { 0x0003C8 }}, /* 03A8; 03C8; Case map */ + { 0x0003A9, 0, { 0x0003C9 }}, /* 03A9; 03C9; Case map */ + { 0x0003AA, 0, { 0x0003CA }}, /* 03AA; 03CA; Case map */ + { 0x0003AB, 0, { 0x0003CB }}, /* 03AB; 03CB; Case map */ + { 0x0003B0, 0, { 0x0003C5, /* 03B0; 03C5 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x0003C2, 0, { 0x0003C3 }}, /* 03C2; 03C3; Case map */ + { 0x0003D0, 0, { 0x0003B2 }}, /* 03D0; 03B2; Case map */ + { 0x0003D1, 0, { 0x0003B8 }}, /* 03D1; 03B8; Case map */ + { 0x0003D5, 0, { 0x0003C6 }}, /* 03D5; 03C6; Case map */ + { 0x0003D6, 0, { 0x0003C0 }}, /* 03D6; 03C0; Case map */ + { 0x0003D8, 0, { 0x0003D9 }}, /* 03D8; 03D9; Case map */ + { 0x0003DA, 0, { 0x0003DB }}, /* 03DA; 03DB; Case map */ + { 0x0003DC, 0, { 0x0003DD }}, /* 03DC; 03DD; Case map */ + { 0x0003DE, 0, { 0x0003DF }}, /* 03DE; 03DF; Case map */ + { 0x0003E0, 0, { 0x0003E1 }}, /* 03E0; 03E1; Case map */ + { 0x0003E2, 0, { 0x0003E3 }}, /* 03E2; 03E3; Case map */ + { 0x0003E4, 0, { 0x0003E5 }}, /* 03E4; 03E5; Case map */ + { 0x0003E6, 0, { 0x0003E7 }}, /* 03E6; 03E7; Case map */ + { 0x0003E8, 0, { 0x0003E9 }}, /* 03E8; 03E9; Case map */ + { 0x0003EA, 0, { 0x0003EB }}, /* 03EA; 03EB; Case map */ + { 0x0003EC, 0, { 0x0003ED }}, /* 03EC; 03ED; Case map */ + { 0x0003EE, 0, { 0x0003EF }}, /* 03EE; 03EF; Case map */ + { 0x0003F0, 0, { 0x0003BA }}, /* 03F0; 03BA; Case map */ + { 0x0003F1, 0, { 0x0003C1 }}, /* 03F1; 03C1; Case map */ + { 0x0003F2, 0, { 0x0003C3 }}, /* 03F2; 03C3; Case map */ + { 0x0003F4, 0, { 0x0003B8 }}, /* 03F4; 03B8; Case map */ + { 0x0003F5, 0, { 0x0003B5 }}, /* 03F5; 03B5; Case map */ + { 0x000400, 0, { 0x000450 }}, /* 0400; 0450; Case map */ + { 0x000401, 0, { 0x000451 }}, /* 0401; 0451; Case map */ + { 0x000402, 0, { 0x000452 }}, /* 0402; 0452; Case map */ + { 0x000403, 0, { 0x000453 }}, /* 0403; 0453; Case map */ + { 0x000404, 0, { 0x000454 }}, /* 0404; 0454; Case map */ + { 0x000405, 0, { 0x000455 }}, /* 0405; 0455; Case map */ + { 0x000406, 0, { 0x000456 }}, /* 0406; 0456; Case map */ + { 0x000407, 0, { 0x000457 }}, /* 0407; 0457; Case map */ + { 0x000408, 0, { 0x000458 }}, /* 0408; 0458; Case map */ + { 0x000409, 0, { 0x000459 }}, /* 0409; 0459; Case map */ + { 0x00040A, 0, { 0x00045A }}, /* 040A; 045A; Case map */ + { 0x00040B, 0, { 0x00045B }}, /* 040B; 045B; Case map */ + { 0x00040C, 0, { 0x00045C }}, /* 040C; 045C; Case map */ + { 0x00040D, 0, { 0x00045D }}, /* 040D; 045D; Case map */ + { 0x00040E, 0, { 0x00045E }}, /* 040E; 045E; Case map */ + { 0x00040F, 0, { 0x00045F }}, /* 040F; 045F; Case map */ + { 0x000410, 0, { 0x000430 }}, /* 0410; 0430; Case map */ + { 0x000411, 0, { 0x000431 }}, /* 0411; 0431; Case map */ + { 0x000412, 0, { 0x000432 }}, /* 0412; 0432; Case map */ + { 0x000413, 0, { 0x000433 }}, /* 0413; 0433; Case map */ + { 0x000414, 0, { 0x000434 }}, /* 0414; 0434; Case map */ + { 0x000415, 0, { 0x000435 }}, /* 0415; 0435; Case map */ + { 0x000416, 0, { 0x000436 }}, /* 0416; 0436; Case map */ + { 0x000417, 0, { 0x000437 }}, /* 0417; 0437; Case map */ + { 0x000418, 0, { 0x000438 }}, /* 0418; 0438; Case map */ + { 0x000419, 0, { 0x000439 }}, /* 0419; 0439; Case map */ + { 0x00041A, 0, { 0x00043A }}, /* 041A; 043A; Case map */ + { 0x00041B, 0, { 0x00043B }}, /* 041B; 043B; Case map */ + { 0x00041C, 0, { 0x00043C }}, /* 041C; 043C; Case map */ + { 0x00041D, 0, { 0x00043D }}, /* 041D; 043D; Case map */ + { 0x00041E, 0, { 0x00043E }}, /* 041E; 043E; Case map */ + { 0x00041F, 0, { 0x00043F }}, /* 041F; 043F; Case map */ + { 0x000420, 0, { 0x000440 }}, /* 0420; 0440; Case map */ + { 0x000421, 0, { 0x000441 }}, /* 0421; 0441; Case map */ + { 0x000422, 0, { 0x000442 }}, /* 0422; 0442; Case map */ + { 0x000423, 0, { 0x000443 }}, /* 0423; 0443; Case map */ + { 0x000424, 0, { 0x000444 }}, /* 0424; 0444; Case map */ + { 0x000425, 0, { 0x000445 }}, /* 0425; 0445; Case map */ + { 0x000426, 0, { 0x000446 }}, /* 0426; 0446; Case map */ + { 0x000427, 0, { 0x000447 }}, /* 0427; 0447; Case map */ + { 0x000428, 0, { 0x000448 }}, /* 0428; 0448; Case map */ + { 0x000429, 0, { 0x000449 }}, /* 0429; 0449; Case map */ + { 0x00042A, 0, { 0x00044A }}, /* 042A; 044A; Case map */ + { 0x00042B, 0, { 0x00044B }}, /* 042B; 044B; Case map */ + { 0x00042C, 0, { 0x00044C }}, /* 042C; 044C; Case map */ + { 0x00042D, 0, { 0x00044D }}, /* 042D; 044D; Case map */ + { 0x00042E, 0, { 0x00044E }}, /* 042E; 044E; Case map */ + { 0x00042F, 0, { 0x00044F }}, /* 042F; 044F; Case map */ + { 0x000460, 0, { 0x000461 }}, /* 0460; 0461; Case map */ + { 0x000462, 0, { 0x000463 }}, /* 0462; 0463; Case map */ + { 0x000464, 0, { 0x000465 }}, /* 0464; 0465; Case map */ + { 0x000466, 0, { 0x000467 }}, /* 0466; 0467; Case map */ + { 0x000468, 0, { 0x000469 }}, /* 0468; 0469; Case map */ + { 0x00046A, 0, { 0x00046B }}, /* 046A; 046B; Case map */ + { 0x00046C, 0, { 0x00046D }}, /* 046C; 046D; Case map */ + { 0x00046E, 0, { 0x00046F }}, /* 046E; 046F; Case map */ + { 0x000470, 0, { 0x000471 }}, /* 0470; 0471; Case map */ + { 0x000472, 0, { 0x000473 }}, /* 0472; 0473; Case map */ + { 0x000474, 0, { 0x000475 }}, /* 0474; 0475; Case map */ + { 0x000476, 0, { 0x000477 }}, /* 0476; 0477; Case map */ + { 0x000478, 0, { 0x000479 }}, /* 0478; 0479; Case map */ + { 0x00047A, 0, { 0x00047B }}, /* 047A; 047B; Case map */ + { 0x00047C, 0, { 0x00047D }}, /* 047C; 047D; Case map */ + { 0x00047E, 0, { 0x00047F }}, /* 047E; 047F; Case map */ + { 0x000480, 0, { 0x000481 }}, /* 0480; 0481; Case map */ + { 0x00048A, 0, { 0x00048B }}, /* 048A; 048B; Case map */ + { 0x00048C, 0, { 0x00048D }}, /* 048C; 048D; Case map */ + { 0x00048E, 0, { 0x00048F }}, /* 048E; 048F; Case map */ + { 0x000490, 0, { 0x000491 }}, /* 0490; 0491; Case map */ + { 0x000492, 0, { 0x000493 }}, /* 0492; 0493; Case map */ + { 0x000494, 0, { 0x000495 }}, /* 0494; 0495; Case map */ + { 0x000496, 0, { 0x000497 }}, /* 0496; 0497; Case map */ + { 0x000498, 0, { 0x000499 }}, /* 0498; 0499; Case map */ + { 0x00049A, 0, { 0x00049B }}, /* 049A; 049B; Case map */ + { 0x00049C, 0, { 0x00049D }}, /* 049C; 049D; Case map */ + { 0x00049E, 0, { 0x00049F }}, /* 049E; 049F; Case map */ + { 0x0004A0, 0, { 0x0004A1 }}, /* 04A0; 04A1; Case map */ + { 0x0004A2, 0, { 0x0004A3 }}, /* 04A2; 04A3; Case map */ + { 0x0004A4, 0, { 0x0004A5 }}, /* 04A4; 04A5; Case map */ + { 0x0004A6, 0, { 0x0004A7 }}, /* 04A6; 04A7; Case map */ + { 0x0004A8, 0, { 0x0004A9 }}, /* 04A8; 04A9; Case map */ + { 0x0004AA, 0, { 0x0004AB }}, /* 04AA; 04AB; Case map */ + { 0x0004AC, 0, { 0x0004AD }}, /* 04AC; 04AD; Case map */ + { 0x0004AE, 0, { 0x0004AF }}, /* 04AE; 04AF; Case map */ + { 0x0004B0, 0, { 0x0004B1 }}, /* 04B0; 04B1; Case map */ + { 0x0004B2, 0, { 0x0004B3 }}, /* 04B2; 04B3; Case map */ + { 0x0004B4, 0, { 0x0004B5 }}, /* 04B4; 04B5; Case map */ + { 0x0004B6, 0, { 0x0004B7 }}, /* 04B6; 04B7; Case map */ + { 0x0004B8, 0, { 0x0004B9 }}, /* 04B8; 04B9; Case map */ + { 0x0004BA, 0, { 0x0004BB }}, /* 04BA; 04BB; Case map */ + { 0x0004BC, 0, { 0x0004BD }}, /* 04BC; 04BD; Case map */ + { 0x0004BE, 0, { 0x0004BF }}, /* 04BE; 04BF; Case map */ + { 0x0004C1, 0, { 0x0004C2 }}, /* 04C1; 04C2; Case map */ + { 0x0004C3, 0, { 0x0004C4 }}, /* 04C3; 04C4; Case map */ + { 0x0004C5, 0, { 0x0004C6 }}, /* 04C5; 04C6; Case map */ + { 0x0004C7, 0, { 0x0004C8 }}, /* 04C7; 04C8; Case map */ + { 0x0004C9, 0, { 0x0004CA }}, /* 04C9; 04CA; Case map */ + { 0x0004CB, 0, { 0x0004CC }}, /* 04CB; 04CC; Case map */ + { 0x0004CD, 0, { 0x0004CE }}, /* 04CD; 04CE; Case map */ + { 0x0004D0, 0, { 0x0004D1 }}, /* 04D0; 04D1; Case map */ + { 0x0004D2, 0, { 0x0004D3 }}, /* 04D2; 04D3; Case map */ + { 0x0004D4, 0, { 0x0004D5 }}, /* 04D4; 04D5; Case map */ + { 0x0004D6, 0, { 0x0004D7 }}, /* 04D6; 04D7; Case map */ + { 0x0004D8, 0, { 0x0004D9 }}, /* 04D8; 04D9; Case map */ + { 0x0004DA, 0, { 0x0004DB }}, /* 04DA; 04DB; Case map */ + { 0x0004DC, 0, { 0x0004DD }}, /* 04DC; 04DD; Case map */ + { 0x0004DE, 0, { 0x0004DF }}, /* 04DE; 04DF; Case map */ + { 0x0004E0, 0, { 0x0004E1 }}, /* 04E0; 04E1; Case map */ + { 0x0004E2, 0, { 0x0004E3 }}, /* 04E2; 04E3; Case map */ + { 0x0004E4, 0, { 0x0004E5 }}, /* 04E4; 04E5; Case map */ + { 0x0004E6, 0, { 0x0004E7 }}, /* 04E6; 04E7; Case map */ + { 0x0004E8, 0, { 0x0004E9 }}, /* 04E8; 04E9; Case map */ + { 0x0004EA, 0, { 0x0004EB }}, /* 04EA; 04EB; Case map */ + { 0x0004EC, 0, { 0x0004ED }}, /* 04EC; 04ED; Case map */ + { 0x0004EE, 0, { 0x0004EF }}, /* 04EE; 04EF; Case map */ + { 0x0004F0, 0, { 0x0004F1 }}, /* 04F0; 04F1; Case map */ + { 0x0004F2, 0, { 0x0004F3 }}, /* 04F2; 04F3; Case map */ + { 0x0004F4, 0, { 0x0004F5 }}, /* 04F4; 04F5; Case map */ + { 0x0004F8, 0, { 0x0004F9 }}, /* 04F8; 04F9; Case map */ + { 0x000500, 0, { 0x000501 }}, /* 0500; 0501; Case map */ + { 0x000502, 0, { 0x000503 }}, /* 0502; 0503; Case map */ + { 0x000504, 0, { 0x000505 }}, /* 0504; 0505; Case map */ + { 0x000506, 0, { 0x000507 }}, /* 0506; 0507; Case map */ + { 0x000508, 0, { 0x000509 }}, /* 0508; 0509; Case map */ + { 0x00050A, 0, { 0x00050B }}, /* 050A; 050B; Case map */ + { 0x00050C, 0, { 0x00050D }}, /* 050C; 050D; Case map */ + { 0x00050E, 0, { 0x00050F }}, /* 050E; 050F; Case map */ + { 0x000531, 0, { 0x000561 }}, /* 0531; 0561; Case map */ + { 0x000532, 0, { 0x000562 }}, /* 0532; 0562; Case map */ + { 0x000533, 0, { 0x000563 }}, /* 0533; 0563; Case map */ + { 0x000534, 0, { 0x000564 }}, /* 0534; 0564; Case map */ + { 0x000535, 0, { 0x000565 }}, /* 0535; 0565; Case map */ + { 0x000536, 0, { 0x000566 }}, /* 0536; 0566; Case map */ + { 0x000537, 0, { 0x000567 }}, /* 0537; 0567; Case map */ + { 0x000538, 0, { 0x000568 }}, /* 0538; 0568; Case map */ + { 0x000539, 0, { 0x000569 }}, /* 0539; 0569; Case map */ + { 0x00053A, 0, { 0x00056A }}, /* 053A; 056A; Case map */ + { 0x00053B, 0, { 0x00056B }}, /* 053B; 056B; Case map */ + { 0x00053C, 0, { 0x00056C }}, /* 053C; 056C; Case map */ + { 0x00053D, 0, { 0x00056D }}, /* 053D; 056D; Case map */ + { 0x00053E, 0, { 0x00056E }}, /* 053E; 056E; Case map */ + { 0x00053F, 0, { 0x00056F }}, /* 053F; 056F; Case map */ + { 0x000540, 0, { 0x000570 }}, /* 0540; 0570; Case map */ + { 0x000541, 0, { 0x000571 }}, /* 0541; 0571; Case map */ + { 0x000542, 0, { 0x000572 }}, /* 0542; 0572; Case map */ + { 0x000543, 0, { 0x000573 }}, /* 0543; 0573; Case map */ + { 0x000544, 0, { 0x000574 }}, /* 0544; 0574; Case map */ + { 0x000545, 0, { 0x000575 }}, /* 0545; 0575; Case map */ + { 0x000546, 0, { 0x000576 }}, /* 0546; 0576; Case map */ + { 0x000547, 0, { 0x000577 }}, /* 0547; 0577; Case map */ + { 0x000548, 0, { 0x000578 }}, /* 0548; 0578; Case map */ + { 0x000549, 0, { 0x000579 }}, /* 0549; 0579; Case map */ + { 0x00054A, 0, { 0x00057A }}, /* 054A; 057A; Case map */ + { 0x00054B, 0, { 0x00057B }}, /* 054B; 057B; Case map */ + { 0x00054C, 0, { 0x00057C }}, /* 054C; 057C; Case map */ + { 0x00054D, 0, { 0x00057D }}, /* 054D; 057D; Case map */ + { 0x00054E, 0, { 0x00057E }}, /* 054E; 057E; Case map */ + { 0x00054F, 0, { 0x00057F }}, /* 054F; 057F; Case map */ + { 0x000550, 0, { 0x000580 }}, /* 0550; 0580; Case map */ + { 0x000551, 0, { 0x000581 }}, /* 0551; 0581; Case map */ + { 0x000552, 0, { 0x000582 }}, /* 0552; 0582; Case map */ + { 0x000553, 0, { 0x000583 }}, /* 0553; 0583; Case map */ + { 0x000554, 0, { 0x000584 }}, /* 0554; 0584; Case map */ + { 0x000555, 0, { 0x000585 }}, /* 0555; 0585; Case map */ + { 0x000556, 0, { 0x000586 }}, /* 0556; 0586; Case map */ + { 0x000587, 0, { 0x000565, /* 0587; 0565 0582; Case map */ + 0x000582 }}, + { 0x001E00, 0, { 0x001E01 }}, /* 1E00; 1E01; Case map */ + { 0x001E02, 0, { 0x001E03 }}, /* 1E02; 1E03; Case map */ + { 0x001E04, 0, { 0x001E05 }}, /* 1E04; 1E05; Case map */ + { 0x001E06, 0, { 0x001E07 }}, /* 1E06; 1E07; Case map */ + { 0x001E08, 0, { 0x001E09 }}, /* 1E08; 1E09; Case map */ + { 0x001E0A, 0, { 0x001E0B }}, /* 1E0A; 1E0B; Case map */ + { 0x001E0C, 0, { 0x001E0D }}, /* 1E0C; 1E0D; Case map */ + { 0x001E0E, 0, { 0x001E0F }}, /* 1E0E; 1E0F; Case map */ + { 0x001E10, 0, { 0x001E11 }}, /* 1E10; 1E11; Case map */ + { 0x001E12, 0, { 0x001E13 }}, /* 1E12; 1E13; Case map */ + { 0x001E14, 0, { 0x001E15 }}, /* 1E14; 1E15; Case map */ + { 0x001E16, 0, { 0x001E17 }}, /* 1E16; 1E17; Case map */ + { 0x001E18, 0, { 0x001E19 }}, /* 1E18; 1E19; Case map */ + { 0x001E1A, 0, { 0x001E1B }}, /* 1E1A; 1E1B; Case map */ + { 0x001E1C, 0, { 0x001E1D }}, /* 1E1C; 1E1D; Case map */ + { 0x001E1E, 0, { 0x001E1F }}, /* 1E1E; 1E1F; Case map */ + { 0x001E20, 0, { 0x001E21 }}, /* 1E20; 1E21; Case map */ + { 0x001E22, 0, { 0x001E23 }}, /* 1E22; 1E23; Case map */ + { 0x001E24, 0, { 0x001E25 }}, /* 1E24; 1E25; Case map */ + { 0x001E26, 0, { 0x001E27 }}, /* 1E26; 1E27; Case map */ + { 0x001E28, 0, { 0x001E29 }}, /* 1E28; 1E29; Case map */ + { 0x001E2A, 0, { 0x001E2B }}, /* 1E2A; 1E2B; Case map */ + { 0x001E2C, 0, { 0x001E2D }}, /* 1E2C; 1E2D; Case map */ + { 0x001E2E, 0, { 0x001E2F }}, /* 1E2E; 1E2F; Case map */ + { 0x001E30, 0, { 0x001E31 }}, /* 1E30; 1E31; Case map */ + { 0x001E32, 0, { 0x001E33 }}, /* 1E32; 1E33; Case map */ + { 0x001E34, 0, { 0x001E35 }}, /* 1E34; 1E35; Case map */ + { 0x001E36, 0, { 0x001E37 }}, /* 1E36; 1E37; Case map */ + { 0x001E38, 0, { 0x001E39 }}, /* 1E38; 1E39; Case map */ + { 0x001E3A, 0, { 0x001E3B }}, /* 1E3A; 1E3B; Case map */ + { 0x001E3C, 0, { 0x001E3D }}, /* 1E3C; 1E3D; Case map */ + { 0x001E3E, 0, { 0x001E3F }}, /* 1E3E; 1E3F; Case map */ + { 0x001E40, 0, { 0x001E41 }}, /* 1E40; 1E41; Case map */ + { 0x001E42, 0, { 0x001E43 }}, /* 1E42; 1E43; Case map */ + { 0x001E44, 0, { 0x001E45 }}, /* 1E44; 1E45; Case map */ + { 0x001E46, 0, { 0x001E47 }}, /* 1E46; 1E47; Case map */ + { 0x001E48, 0, { 0x001E49 }}, /* 1E48; 1E49; Case map */ + { 0x001E4A, 0, { 0x001E4B }}, /* 1E4A; 1E4B; Case map */ + { 0x001E4C, 0, { 0x001E4D }}, /* 1E4C; 1E4D; Case map */ + { 0x001E4E, 0, { 0x001E4F }}, /* 1E4E; 1E4F; Case map */ + { 0x001E50, 0, { 0x001E51 }}, /* 1E50; 1E51; Case map */ + { 0x001E52, 0, { 0x001E53 }}, /* 1E52; 1E53; Case map */ + { 0x001E54, 0, { 0x001E55 }}, /* 1E54; 1E55; Case map */ + { 0x001E56, 0, { 0x001E57 }}, /* 1E56; 1E57; Case map */ + { 0x001E58, 0, { 0x001E59 }}, /* 1E58; 1E59; Case map */ + { 0x001E5A, 0, { 0x001E5B }}, /* 1E5A; 1E5B; Case map */ + { 0x001E5C, 0, { 0x001E5D }}, /* 1E5C; 1E5D; Case map */ + { 0x001E5E, 0, { 0x001E5F }}, /* 1E5E; 1E5F; Case map */ + { 0x001E60, 0, { 0x001E61 }}, /* 1E60; 1E61; Case map */ + { 0x001E62, 0, { 0x001E63 }}, /* 1E62; 1E63; Case map */ + { 0x001E64, 0, { 0x001E65 }}, /* 1E64; 1E65; Case map */ + { 0x001E66, 0, { 0x001E67 }}, /* 1E66; 1E67; Case map */ + { 0x001E68, 0, { 0x001E69 }}, /* 1E68; 1E69; Case map */ + { 0x001E6A, 0, { 0x001E6B }}, /* 1E6A; 1E6B; Case map */ + { 0x001E6C, 0, { 0x001E6D }}, /* 1E6C; 1E6D; Case map */ + { 0x001E6E, 0, { 0x001E6F }}, /* 1E6E; 1E6F; Case map */ + { 0x001E70, 0, { 0x001E71 }}, /* 1E70; 1E71; Case map */ + { 0x001E72, 0, { 0x001E73 }}, /* 1E72; 1E73; Case map */ + { 0x001E74, 0, { 0x001E75 }}, /* 1E74; 1E75; Case map */ + { 0x001E76, 0, { 0x001E77 }}, /* 1E76; 1E77; Case map */ + { 0x001E78, 0, { 0x001E79 }}, /* 1E78; 1E79; Case map */ + { 0x001E7A, 0, { 0x001E7B }}, /* 1E7A; 1E7B; Case map */ + { 0x001E7C, 0, { 0x001E7D }}, /* 1E7C; 1E7D; Case map */ + { 0x001E7E, 0, { 0x001E7F }}, /* 1E7E; 1E7F; Case map */ + { 0x001E80, 0, { 0x001E81 }}, /* 1E80; 1E81; Case map */ + { 0x001E82, 0, { 0x001E83 }}, /* 1E82; 1E83; Case map */ + { 0x001E84, 0, { 0x001E85 }}, /* 1E84; 1E85; Case map */ + { 0x001E86, 0, { 0x001E87 }}, /* 1E86; 1E87; Case map */ + { 0x001E88, 0, { 0x001E89 }}, /* 1E88; 1E89; Case map */ + { 0x001E8A, 0, { 0x001E8B }}, /* 1E8A; 1E8B; Case map */ + { 0x001E8C, 0, { 0x001E8D }}, /* 1E8C; 1E8D; Case map */ + { 0x001E8E, 0, { 0x001E8F }}, /* 1E8E; 1E8F; Case map */ + { 0x001E90, 0, { 0x001E91 }}, /* 1E90; 1E91; Case map */ + { 0x001E92, 0, { 0x001E93 }}, /* 1E92; 1E93; Case map */ + { 0x001E94, 0, { 0x001E95 }}, /* 1E94; 1E95; Case map */ + { 0x001E96, 0, { 0x000068, /* 1E96; 0068 0331; Case map */ + 0x000331 }}, + { 0x001E97, 0, { 0x000074, /* 1E97; 0074 0308; Case map */ + 0x000308 }}, + { 0x001E98, 0, { 0x000077, /* 1E98; 0077 030A; Case map */ + 0x00030A }}, + { 0x001E99, 0, { 0x000079, /* 1E99; 0079 030A; Case map */ + 0x00030A }}, + { 0x001E9A, 0, { 0x000061, /* 1E9A; 0061 02BE; Case map */ + 0x0002BE }}, + { 0x001E9B, 0, { 0x001E61 }}, /* 1E9B; 1E61; Case map */ + { 0x001EA0, 0, { 0x001EA1 }}, /* 1EA0; 1EA1; Case map */ + { 0x001EA2, 0, { 0x001EA3 }}, /* 1EA2; 1EA3; Case map */ + { 0x001EA4, 0, { 0x001EA5 }}, /* 1EA4; 1EA5; Case map */ + { 0x001EA6, 0, { 0x001EA7 }}, /* 1EA6; 1EA7; Case map */ + { 0x001EA8, 0, { 0x001EA9 }}, /* 1EA8; 1EA9; Case map */ + { 0x001EAA, 0, { 0x001EAB }}, /* 1EAA; 1EAB; Case map */ + { 0x001EAC, 0, { 0x001EAD }}, /* 1EAC; 1EAD; Case map */ + { 0x001EAE, 0, { 0x001EAF }}, /* 1EAE; 1EAF; Case map */ + { 0x001EB0, 0, { 0x001EB1 }}, /* 1EB0; 1EB1; Case map */ + { 0x001EB2, 0, { 0x001EB3 }}, /* 1EB2; 1EB3; Case map */ + { 0x001EB4, 0, { 0x001EB5 }}, /* 1EB4; 1EB5; Case map */ + { 0x001EB6, 0, { 0x001EB7 }}, /* 1EB6; 1EB7; Case map */ + { 0x001EB8, 0, { 0x001EB9 }}, /* 1EB8; 1EB9; Case map */ + { 0x001EBA, 0, { 0x001EBB }}, /* 1EBA; 1EBB; Case map */ + { 0x001EBC, 0, { 0x001EBD }}, /* 1EBC; 1EBD; Case map */ + { 0x001EBE, 0, { 0x001EBF }}, /* 1EBE; 1EBF; Case map */ + { 0x001EC0, 0, { 0x001EC1 }}, /* 1EC0; 1EC1; Case map */ + { 0x001EC2, 0, { 0x001EC3 }}, /* 1EC2; 1EC3; Case map */ + { 0x001EC4, 0, { 0x001EC5 }}, /* 1EC4; 1EC5; Case map */ + { 0x001EC6, 0, { 0x001EC7 }}, /* 1EC6; 1EC7; Case map */ + { 0x001EC8, 0, { 0x001EC9 }}, /* 1EC8; 1EC9; Case map */ + { 0x001ECA, 0, { 0x001ECB }}, /* 1ECA; 1ECB; Case map */ + { 0x001ECC, 0, { 0x001ECD }}, /* 1ECC; 1ECD; Case map */ + { 0x001ECE, 0, { 0x001ECF }}, /* 1ECE; 1ECF; Case map */ + { 0x001ED0, 0, { 0x001ED1 }}, /* 1ED0; 1ED1; Case map */ + { 0x001ED2, 0, { 0x001ED3 }}, /* 1ED2; 1ED3; Case map */ + { 0x001ED4, 0, { 0x001ED5 }}, /* 1ED4; 1ED5; Case map */ + { 0x001ED6, 0, { 0x001ED7 }}, /* 1ED6; 1ED7; Case map */ + { 0x001ED8, 0, { 0x001ED9 }}, /* 1ED8; 1ED9; Case map */ + { 0x001EDA, 0, { 0x001EDB }}, /* 1EDA; 1EDB; Case map */ + { 0x001EDC, 0, { 0x001EDD }}, /* 1EDC; 1EDD; Case map */ + { 0x001EDE, 0, { 0x001EDF }}, /* 1EDE; 1EDF; Case map */ + { 0x001EE0, 0, { 0x001EE1 }}, /* 1EE0; 1EE1; Case map */ + { 0x001EE2, 0, { 0x001EE3 }}, /* 1EE2; 1EE3; Case map */ + { 0x001EE4, 0, { 0x001EE5 }}, /* 1EE4; 1EE5; Case map */ + { 0x001EE6, 0, { 0x001EE7 }}, /* 1EE6; 1EE7; Case map */ + { 0x001EE8, 0, { 0x001EE9 }}, /* 1EE8; 1EE9; Case map */ + { 0x001EEA, 0, { 0x001EEB }}, /* 1EEA; 1EEB; Case map */ + { 0x001EEC, 0, { 0x001EED }}, /* 1EEC; 1EED; Case map */ + { 0x001EEE, 0, { 0x001EEF }}, /* 1EEE; 1EEF; Case map */ + { 0x001EF0, 0, { 0x001EF1 }}, /* 1EF0; 1EF1; Case map */ + { 0x001EF2, 0, { 0x001EF3 }}, /* 1EF2; 1EF3; Case map */ + { 0x001EF4, 0, { 0x001EF5 }}, /* 1EF4; 1EF5; Case map */ + { 0x001EF6, 0, { 0x001EF7 }}, /* 1EF6; 1EF7; Case map */ + { 0x001EF8, 0, { 0x001EF9 }}, /* 1EF8; 1EF9; Case map */ + { 0x001F08, 0, { 0x001F00 }}, /* 1F08; 1F00; Case map */ + { 0x001F09, 0, { 0x001F01 }}, /* 1F09; 1F01; Case map */ + { 0x001F0A, 0, { 0x001F02 }}, /* 1F0A; 1F02; Case map */ + { 0x001F0B, 0, { 0x001F03 }}, /* 1F0B; 1F03; Case map */ + { 0x001F0C, 0, { 0x001F04 }}, /* 1F0C; 1F04; Case map */ + { 0x001F0D, 0, { 0x001F05 }}, /* 1F0D; 1F05; Case map */ + { 0x001F0E, 0, { 0x001F06 }}, /* 1F0E; 1F06; Case map */ + { 0x001F0F, 0, { 0x001F07 }}, /* 1F0F; 1F07; Case map */ + { 0x001F18, 0, { 0x001F10 }}, /* 1F18; 1F10; Case map */ + { 0x001F19, 0, { 0x001F11 }}, /* 1F19; 1F11; Case map */ + { 0x001F1A, 0, { 0x001F12 }}, /* 1F1A; 1F12; Case map */ + { 0x001F1B, 0, { 0x001F13 }}, /* 1F1B; 1F13; Case map */ + { 0x001F1C, 0, { 0x001F14 }}, /* 1F1C; 1F14; Case map */ + { 0x001F1D, 0, { 0x001F15 }}, /* 1F1D; 1F15; Case map */ + { 0x001F28, 0, { 0x001F20 }}, /* 1F28; 1F20; Case map */ + { 0x001F29, 0, { 0x001F21 }}, /* 1F29; 1F21; Case map */ + { 0x001F2A, 0, { 0x001F22 }}, /* 1F2A; 1F22; Case map */ + { 0x001F2B, 0, { 0x001F23 }}, /* 1F2B; 1F23; Case map */ + { 0x001F2C, 0, { 0x001F24 }}, /* 1F2C; 1F24; Case map */ + { 0x001F2D, 0, { 0x001F25 }}, /* 1F2D; 1F25; Case map */ + { 0x001F2E, 0, { 0x001F26 }}, /* 1F2E; 1F26; Case map */ + { 0x001F2F, 0, { 0x001F27 }}, /* 1F2F; 1F27; Case map */ + { 0x001F38, 0, { 0x001F30 }}, /* 1F38; 1F30; Case map */ + { 0x001F39, 0, { 0x001F31 }}, /* 1F39; 1F31; Case map */ + { 0x001F3A, 0, { 0x001F32 }}, /* 1F3A; 1F32; Case map */ + { 0x001F3B, 0, { 0x001F33 }}, /* 1F3B; 1F33; Case map */ + { 0x001F3C, 0, { 0x001F34 }}, /* 1F3C; 1F34; Case map */ + { 0x001F3D, 0, { 0x001F35 }}, /* 1F3D; 1F35; Case map */ + { 0x001F3E, 0, { 0x001F36 }}, /* 1F3E; 1F36; Case map */ + { 0x001F3F, 0, { 0x001F37 }}, /* 1F3F; 1F37; Case map */ + { 0x001F48, 0, { 0x001F40 }}, /* 1F48; 1F40; Case map */ + { 0x001F49, 0, { 0x001F41 }}, /* 1F49; 1F41; Case map */ + { 0x001F4A, 0, { 0x001F42 }}, /* 1F4A; 1F42; Case map */ + { 0x001F4B, 0, { 0x001F43 }}, /* 1F4B; 1F43; Case map */ + { 0x001F4C, 0, { 0x001F44 }}, /* 1F4C; 1F44; Case map */ + { 0x001F4D, 0, { 0x001F45 }}, /* 1F4D; 1F45; Case map */ + { 0x001F50, 0, { 0x0003C5, /* 1F50; 03C5 0313; Case map */ + 0x000313 }}, + { 0x001F52, 0, { 0x0003C5, /* 1F52; 03C5 0313 0300; Case map */ + 0x000313, 0x000300 }}, + { 0x001F54, 0, { 0x0003C5, /* 1F54; 03C5 0313 0301; Case map */ + 0x000313, 0x000301 }}, + { 0x001F56, 0, { 0x0003C5, /* 1F56; 03C5 0313 0342; Case map */ + 0x000313, 0x000342 }}, + { 0x001F59, 0, { 0x001F51 }}, /* 1F59; 1F51; Case map */ + { 0x001F5B, 0, { 0x001F53 }}, /* 1F5B; 1F53; Case map */ + { 0x001F5D, 0, { 0x001F55 }}, /* 1F5D; 1F55; Case map */ + { 0x001F5F, 0, { 0x001F57 }}, /* 1F5F; 1F57; Case map */ + { 0x001F68, 0, { 0x001F60 }}, /* 1F68; 1F60; Case map */ + { 0x001F69, 0, { 0x001F61 }}, /* 1F69; 1F61; Case map */ + { 0x001F6A, 0, { 0x001F62 }}, /* 1F6A; 1F62; Case map */ + { 0x001F6B, 0, { 0x001F63 }}, /* 1F6B; 1F63; Case map */ + { 0x001F6C, 0, { 0x001F64 }}, /* 1F6C; 1F64; Case map */ + { 0x001F6D, 0, { 0x001F65 }}, /* 1F6D; 1F65; Case map */ + { 0x001F6E, 0, { 0x001F66 }}, /* 1F6E; 1F66; Case map */ + { 0x001F6F, 0, { 0x001F67 }}, /* 1F6F; 1F67; Case map */ + { 0x001F80, 0, { 0x001F00, /* 1F80; 1F00 03B9; Case map */ + 0x0003B9 }}, + { 0x001F81, 0, { 0x001F01, /* 1F81; 1F01 03B9; Case map */ + 0x0003B9 }}, + { 0x001F82, 0, { 0x001F02, /* 1F82; 1F02 03B9; Case map */ + 0x0003B9 }}, + { 0x001F83, 0, { 0x001F03, /* 1F83; 1F03 03B9; Case map */ + 0x0003B9 }}, + { 0x001F84, 0, { 0x001F04, /* 1F84; 1F04 03B9; Case map */ + 0x0003B9 }}, + { 0x001F85, 0, { 0x001F05, /* 1F85; 1F05 03B9; Case map */ + 0x0003B9 }}, + { 0x001F86, 0, { 0x001F06, /* 1F86; 1F06 03B9; Case map */ + 0x0003B9 }}, + { 0x001F87, 0, { 0x001F07, /* 1F87; 1F07 03B9; Case map */ + 0x0003B9 }}, + { 0x001F88, 0, { 0x001F00, /* 1F88; 1F00 03B9; Case map */ + 0x0003B9 }}, + { 0x001F89, 0, { 0x001F01, /* 1F89; 1F01 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8A, 0, { 0x001F02, /* 1F8A; 1F02 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8B, 0, { 0x001F03, /* 1F8B; 1F03 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8C, 0, { 0x001F04, /* 1F8C; 1F04 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8D, 0, { 0x001F05, /* 1F8D; 1F05 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8E, 0, { 0x001F06, /* 1F8E; 1F06 03B9; Case map */ + 0x0003B9 }}, + { 0x001F8F, 0, { 0x001F07, /* 1F8F; 1F07 03B9; Case map */ + 0x0003B9 }}, + { 0x001F90, 0, { 0x001F20, /* 1F90; 1F20 03B9; Case map */ + 0x0003B9 }}, + { 0x001F91, 0, { 0x001F21, /* 1F91; 1F21 03B9; Case map */ + 0x0003B9 }}, + { 0x001F92, 0, { 0x001F22, /* 1F92; 1F22 03B9; Case map */ + 0x0003B9 }}, + { 0x001F93, 0, { 0x001F23, /* 1F93; 1F23 03B9; Case map */ + 0x0003B9 }}, + { 0x001F94, 0, { 0x001F24, /* 1F94; 1F24 03B9; Case map */ + 0x0003B9 }}, + { 0x001F95, 0, { 0x001F25, /* 1F95; 1F25 03B9; Case map */ + 0x0003B9 }}, + { 0x001F96, 0, { 0x001F26, /* 1F96; 1F26 03B9; Case map */ + 0x0003B9 }}, + { 0x001F97, 0, { 0x001F27, /* 1F97; 1F27 03B9; Case map */ + 0x0003B9 }}, + { 0x001F98, 0, { 0x001F20, /* 1F98; 1F20 03B9; Case map */ + 0x0003B9 }}, + { 0x001F99, 0, { 0x001F21, /* 1F99; 1F21 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9A, 0, { 0x001F22, /* 1F9A; 1F22 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9B, 0, { 0x001F23, /* 1F9B; 1F23 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9C, 0, { 0x001F24, /* 1F9C; 1F24 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9D, 0, { 0x001F25, /* 1F9D; 1F25 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9E, 0, { 0x001F26, /* 1F9E; 1F26 03B9; Case map */ + 0x0003B9 }}, + { 0x001F9F, 0, { 0x001F27, /* 1F9F; 1F27 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA0, 0, { 0x001F60, /* 1FA0; 1F60 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA1, 0, { 0x001F61, /* 1FA1; 1F61 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA2, 0, { 0x001F62, /* 1FA2; 1F62 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA3, 0, { 0x001F63, /* 1FA3; 1F63 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA4, 0, { 0x001F64, /* 1FA4; 1F64 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA5, 0, { 0x001F65, /* 1FA5; 1F65 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA6, 0, { 0x001F66, /* 1FA6; 1F66 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA7, 0, { 0x001F67, /* 1FA7; 1F67 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA8, 0, { 0x001F60, /* 1FA8; 1F60 03B9; Case map */ + 0x0003B9 }}, + { 0x001FA9, 0, { 0x001F61, /* 1FA9; 1F61 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAA, 0, { 0x001F62, /* 1FAA; 1F62 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAB, 0, { 0x001F63, /* 1FAB; 1F63 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAC, 0, { 0x001F64, /* 1FAC; 1F64 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAD, 0, { 0x001F65, /* 1FAD; 1F65 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAE, 0, { 0x001F66, /* 1FAE; 1F66 03B9; Case map */ + 0x0003B9 }}, + { 0x001FAF, 0, { 0x001F67, /* 1FAF; 1F67 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB2, 0, { 0x001F70, /* 1FB2; 1F70 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB3, 0, { 0x0003B1, /* 1FB3; 03B1 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB4, 0, { 0x0003AC, /* 1FB4; 03AC 03B9; Case map */ + 0x0003B9 }}, + { 0x001FB6, 0, { 0x0003B1, /* 1FB6; 03B1 0342; Case map */ + 0x000342 }}, + { 0x001FB7, 0, { 0x0003B1, /* 1FB7; 03B1 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FB8, 0, { 0x001FB0 }}, /* 1FB8; 1FB0; Case map */ + { 0x001FB9, 0, { 0x001FB1 }}, /* 1FB9; 1FB1; Case map */ + { 0x001FBA, 0, { 0x001F70 }}, /* 1FBA; 1F70; Case map */ + { 0x001FBB, 0, { 0x001F71 }}, /* 1FBB; 1F71; Case map */ + { 0x001FBC, 0, { 0x0003B1, /* 1FBC; 03B1 03B9; Case map */ + 0x0003B9 }}, + { 0x001FBE, 0, { 0x0003B9 }}, /* 1FBE; 03B9; Case map */ + { 0x001FC2, 0, { 0x001F74, /* 1FC2; 1F74 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC3, 0, { 0x0003B7, /* 1FC3; 03B7 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC4, 0, { 0x0003AE, /* 1FC4; 03AE 03B9; Case map */ + 0x0003B9 }}, + { 0x001FC6, 0, { 0x0003B7, /* 1FC6; 03B7 0342; Case map */ + 0x000342 }}, + { 0x001FC7, 0, { 0x0003B7, /* 1FC7; 03B7 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FC8, 0, { 0x001F72 }}, /* 1FC8; 1F72; Case map */ + { 0x001FC9, 0, { 0x001F73 }}, /* 1FC9; 1F73; Case map */ + { 0x001FCA, 0, { 0x001F74 }}, /* 1FCA; 1F74; Case map */ + { 0x001FCB, 0, { 0x001F75 }}, /* 1FCB; 1F75; Case map */ + { 0x001FCC, 0, { 0x0003B7, /* 1FCC; 03B7 03B9; Case map */ + 0x0003B9 }}, + { 0x001FD2, 0, { 0x0003B9, /* 1FD2; 03B9 0308 0300; Case map */ + 0x000308, 0x000300 }}, + { 0x001FD3, 0, { 0x0003B9, /* 1FD3; 03B9 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x001FD6, 0, { 0x0003B9, /* 1FD6; 03B9 0342; Case map */ + 0x000342 }}, + { 0x001FD7, 0, { 0x0003B9, /* 1FD7; 03B9 0308 0342; Case map */ + 0x000308, 0x000342 }}, + { 0x001FD8, 0, { 0x001FD0 }}, /* 1FD8; 1FD0; Case map */ + { 0x001FD9, 0, { 0x001FD1 }}, /* 1FD9; 1FD1; Case map */ + { 0x001FDA, 0, { 0x001F76 }}, /* 1FDA; 1F76; Case map */ + { 0x001FDB, 0, { 0x001F77 }}, /* 1FDB; 1F77; Case map */ + { 0x001FE2, 0, { 0x0003C5, /* 1FE2; 03C5 0308 0300; Case map */ + 0x000308, 0x000300 }}, + { 0x001FE3, 0, { 0x0003C5, /* 1FE3; 03C5 0308 0301; Case map */ + 0x000308, 0x000301 }}, + { 0x001FE4, 0, { 0x0003C1, /* 1FE4; 03C1 0313; Case map */ + 0x000313 }}, + { 0x001FE6, 0, { 0x0003C5, /* 1FE6; 03C5 0342; Case map */ + 0x000342 }}, + { 0x001FE7, 0, { 0x0003C5, /* 1FE7; 03C5 0308 0342; Case map */ + 0x000308, 0x000342 }}, + { 0x001FE8, 0, { 0x001FE0 }}, /* 1FE8; 1FE0; Case map */ + { 0x001FE9, 0, { 0x001FE1 }}, /* 1FE9; 1FE1; Case map */ + { 0x001FEA, 0, { 0x001F7A }}, /* 1FEA; 1F7A; Case map */ + { 0x001FEB, 0, { 0x001F7B }}, /* 1FEB; 1F7B; Case map */ + { 0x001FEC, 0, { 0x001FE5 }}, /* 1FEC; 1FE5; Case map */ + { 0x001FF2, 0, { 0x001F7C, /* 1FF2; 1F7C 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF3, 0, { 0x0003C9, /* 1FF3; 03C9 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF4, 0, { 0x0003CE, /* 1FF4; 03CE 03B9; Case map */ + 0x0003B9 }}, + { 0x001FF6, 0, { 0x0003C9, /* 1FF6; 03C9 0342; Case map */ + 0x000342 }}, + { 0x001FF7, 0, { 0x0003C9, /* 1FF7; 03C9 0342 03B9; Case map */ + 0x000342, 0x0003B9 }}, + { 0x001FF8, 0, { 0x001F78 }}, /* 1FF8; 1F78; Case map */ + { 0x001FF9, 0, { 0x001F79 }}, /* 1FF9; 1F79; Case map */ + { 0x001FFA, 0, { 0x001F7C }}, /* 1FFA; 1F7C; Case map */ + { 0x001FFB, 0, { 0x001F7D }}, /* 1FFB; 1F7D; Case map */ + { 0x001FFC, 0, { 0x0003C9, /* 1FFC; 03C9 03B9; Case map */ + 0x0003B9 }}, + { 0x002126, 0, { 0x0003C9 }}, /* 2126; 03C9; Case map */ + { 0x00212A, 0, { 0x00006B }}, /* 212A; 006B; Case map */ + { 0x00212B, 0, { 0x0000E5 }}, /* 212B; 00E5; Case map */ + { 0x002160, 0, { 0x002170 }}, /* 2160; 2170; Case map */ + { 0x002161, 0, { 0x002171 }}, /* 2161; 2171; Case map */ + { 0x002162, 0, { 0x002172 }}, /* 2162; 2172; Case map */ + { 0x002163, 0, { 0x002173 }}, /* 2163; 2173; Case map */ + { 0x002164, 0, { 0x002174 }}, /* 2164; 2174; Case map */ + { 0x002165, 0, { 0x002175 }}, /* 2165; 2175; Case map */ + { 0x002166, 0, { 0x002176 }}, /* 2166; 2176; Case map */ + { 0x002167, 0, { 0x002177 }}, /* 2167; 2177; Case map */ + { 0x002168, 0, { 0x002178 }}, /* 2168; 2178; Case map */ + { 0x002169, 0, { 0x002179 }}, /* 2169; 2179; Case map */ + { 0x00216A, 0, { 0x00217A }}, /* 216A; 217A; Case map */ + { 0x00216B, 0, { 0x00217B }}, /* 216B; 217B; Case map */ + { 0x00216C, 0, { 0x00217C }}, /* 216C; 217C; Case map */ + { 0x00216D, 0, { 0x00217D }}, /* 216D; 217D; Case map */ + { 0x00216E, 0, { 0x00217E }}, /* 216E; 217E; Case map */ + { 0x00216F, 0, { 0x00217F }}, /* 216F; 217F; Case map */ + { 0x0024B6, 0, { 0x0024D0 }}, /* 24B6; 24D0; Case map */ + { 0x0024B7, 0, { 0x0024D1 }}, /* 24B7; 24D1; Case map */ + { 0x0024B8, 0, { 0x0024D2 }}, /* 24B8; 24D2; Case map */ + { 0x0024B9, 0, { 0x0024D3 }}, /* 24B9; 24D3; Case map */ + { 0x0024BA, 0, { 0x0024D4 }}, /* 24BA; 24D4; Case map */ + { 0x0024BB, 0, { 0x0024D5 }}, /* 24BB; 24D5; Case map */ + { 0x0024BC, 0, { 0x0024D6 }}, /* 24BC; 24D6; Case map */ + { 0x0024BD, 0, { 0x0024D7 }}, /* 24BD; 24D7; Case map */ + { 0x0024BE, 0, { 0x0024D8 }}, /* 24BE; 24D8; Case map */ + { 0x0024BF, 0, { 0x0024D9 }}, /* 24BF; 24D9; Case map */ + { 0x0024C0, 0, { 0x0024DA }}, /* 24C0; 24DA; Case map */ + { 0x0024C1, 0, { 0x0024DB }}, /* 24C1; 24DB; Case map */ + { 0x0024C2, 0, { 0x0024DC }}, /* 24C2; 24DC; Case map */ + { 0x0024C3, 0, { 0x0024DD }}, /* 24C3; 24DD; Case map */ + { 0x0024C4, 0, { 0x0024DE }}, /* 24C4; 24DE; Case map */ + { 0x0024C5, 0, { 0x0024DF }}, /* 24C5; 24DF; Case map */ + { 0x0024C6, 0, { 0x0024E0 }}, /* 24C6; 24E0; Case map */ + { 0x0024C7, 0, { 0x0024E1 }}, /* 24C7; 24E1; Case map */ + { 0x0024C8, 0, { 0x0024E2 }}, /* 24C8; 24E2; Case map */ + { 0x0024C9, 0, { 0x0024E3 }}, /* 24C9; 24E3; Case map */ + { 0x0024CA, 0, { 0x0024E4 }}, /* 24CA; 24E4; Case map */ + { 0x0024CB, 0, { 0x0024E5 }}, /* 24CB; 24E5; Case map */ + { 0x0024CC, 0, { 0x0024E6 }}, /* 24CC; 24E6; Case map */ + { 0x0024CD, 0, { 0x0024E7 }}, /* 24CD; 24E7; Case map */ + { 0x0024CE, 0, { 0x0024E8 }}, /* 24CE; 24E8; Case map */ + { 0x0024CF, 0, { 0x0024E9 }}, /* 24CF; 24E9; Case map */ + { 0x00FB00, 0, { 0x000066, /* FB00; 0066 0066; Case map */ + 0x000066 }}, + { 0x00FB01, 0, { 0x000066, /* FB01; 0066 0069; Case map */ + 0x000069 }}, + { 0x00FB02, 0, { 0x000066, /* FB02; 0066 006C; Case map */ + 0x00006C }}, + { 0x00FB03, 0, { 0x000066, /* FB03; 0066 0066 0069; Case map */ + 0x000066, 0x000069 }}, + { 0x00FB04, 0, { 0x000066, /* FB04; 0066 0066 006C; Case map */ + 0x000066, 0x00006C }}, + { 0x00FB05, 0, { 0x000073, /* FB05; 0073 0074; Case map */ + 0x000074 }}, + { 0x00FB06, 0, { 0x000073, /* FB06; 0073 0074; Case map */ + 0x000074 }}, + { 0x00FB13, 0, { 0x000574, /* FB13; 0574 0576; Case map */ + 0x000576 }}, + { 0x00FB14, 0, { 0x000574, /* FB14; 0574 0565; Case map */ + 0x000565 }}, + { 0x00FB15, 0, { 0x000574, /* FB15; 0574 056B; Case map */ + 0x00056B }}, + { 0x00FB16, 0, { 0x00057E, /* FB16; 057E 0576; Case map */ + 0x000576 }}, + { 0x00FB17, 0, { 0x000574, /* FB17; 0574 056D; Case map */ + 0x00056D }}, + { 0x00FF21, 0, { 0x00FF41 }}, /* FF21; FF41; Case map */ + { 0x00FF22, 0, { 0x00FF42 }}, /* FF22; FF42; Case map */ + { 0x00FF23, 0, { 0x00FF43 }}, /* FF23; FF43; Case map */ + { 0x00FF24, 0, { 0x00FF44 }}, /* FF24; FF44; Case map */ + { 0x00FF25, 0, { 0x00FF45 }}, /* FF25; FF45; Case map */ + { 0x00FF26, 0, { 0x00FF46 }}, /* FF26; FF46; Case map */ + { 0x00FF27, 0, { 0x00FF47 }}, /* FF27; FF47; Case map */ + { 0x00FF28, 0, { 0x00FF48 }}, /* FF28; FF48; Case map */ + { 0x00FF29, 0, { 0x00FF49 }}, /* FF29; FF49; Case map */ + { 0x00FF2A, 0, { 0x00FF4A }}, /* FF2A; FF4A; Case map */ + { 0x00FF2B, 0, { 0x00FF4B }}, /* FF2B; FF4B; Case map */ + { 0x00FF2C, 0, { 0x00FF4C }}, /* FF2C; FF4C; Case map */ + { 0x00FF2D, 0, { 0x00FF4D }}, /* FF2D; FF4D; Case map */ + { 0x00FF2E, 0, { 0x00FF4E }}, /* FF2E; FF4E; Case map */ + { 0x00FF2F, 0, { 0x00FF4F }}, /* FF2F; FF4F; Case map */ + { 0x00FF30, 0, { 0x00FF50 }}, /* FF30; FF50; Case map */ + { 0x00FF31, 0, { 0x00FF51 }}, /* FF31; FF51; Case map */ + { 0x00FF32, 0, { 0x00FF52 }}, /* FF32; FF52; Case map */ + { 0x00FF33, 0, { 0x00FF53 }}, /* FF33; FF53; Case map */ + { 0x00FF34, 0, { 0x00FF54 }}, /* FF34; FF54; Case map */ + { 0x00FF35, 0, { 0x00FF55 }}, /* FF35; FF55; Case map */ + { 0x00FF36, 0, { 0x00FF56 }}, /* FF36; FF56; Case map */ + { 0x00FF37, 0, { 0x00FF57 }}, /* FF37; FF57; Case map */ + { 0x00FF38, 0, { 0x00FF58 }}, /* FF38; FF58; Case map */ + { 0x00FF39, 0, { 0x00FF59 }}, /* FF39; FF59; Case map */ + { 0x00FF3A, 0, { 0x00FF5A }}, /* FF3A; FF5A; Case map */ + { 0x010400, 0, { 0x010428 }}, /* 10400; 10428; Case map */ + { 0x010401, 0, { 0x010429 }}, /* 10401; 10429; Case map */ + { 0x010402, 0, { 0x01042A }}, /* 10402; 1042A; Case map */ + { 0x010403, 0, { 0x01042B }}, /* 10403; 1042B; Case map */ + { 0x010404, 0, { 0x01042C }}, /* 10404; 1042C; Case map */ + { 0x010405, 0, { 0x01042D }}, /* 10405; 1042D; Case map */ + { 0x010406, 0, { 0x01042E }}, /* 10406; 1042E; Case map */ + { 0x010407, 0, { 0x01042F }}, /* 10407; 1042F; Case map */ + { 0x010408, 0, { 0x010430 }}, /* 10408; 10430; Case map */ + { 0x010409, 0, { 0x010431 }}, /* 10409; 10431; Case map */ + { 0x01040A, 0, { 0x010432 }}, /* 1040A; 10432; Case map */ + { 0x01040B, 0, { 0x010433 }}, /* 1040B; 10433; Case map */ + { 0x01040C, 0, { 0x010434 }}, /* 1040C; 10434; Case map */ + { 0x01040D, 0, { 0x010435 }}, /* 1040D; 10435; Case map */ + { 0x01040E, 0, { 0x010436 }}, /* 1040E; 10436; Case map */ + { 0x01040F, 0, { 0x010437 }}, /* 1040F; 10437; Case map */ + { 0x010410, 0, { 0x010438 }}, /* 10410; 10438; Case map */ + { 0x010411, 0, { 0x010439 }}, /* 10411; 10439; Case map */ + { 0x010412, 0, { 0x01043A }}, /* 10412; 1043A; Case map */ + { 0x010413, 0, { 0x01043B }}, /* 10413; 1043B; Case map */ + { 0x010414, 0, { 0x01043C }}, /* 10414; 1043C; Case map */ + { 0x010415, 0, { 0x01043D }}, /* 10415; 1043D; Case map */ + { 0x010416, 0, { 0x01043E }}, /* 10416; 1043E; Case map */ + { 0x010417, 0, { 0x01043F }}, /* 10417; 1043F; Case map */ + { 0x010418, 0, { 0x010440 }}, /* 10418; 10440; Case map */ + { 0x010419, 0, { 0x010441 }}, /* 10419; 10441; Case map */ + { 0x01041A, 0, { 0x010442 }}, /* 1041A; 10442; Case map */ + { 0x01041B, 0, { 0x010443 }}, /* 1041B; 10443; Case map */ + { 0x01041C, 0, { 0x010444 }}, /* 1041C; 10444; Case map */ + { 0x01041D, 0, { 0x010445 }}, /* 1041D; 10445; Case map */ + { 0x01041E, 0, { 0x010446 }}, /* 1041E; 10446; Case map */ + { 0x01041F, 0, { 0x010447 }}, /* 1041F; 10447; Case map */ + { 0x010420, 0, { 0x010448 }}, /* 10420; 10448; Case map */ + { 0x010421, 0, { 0x010449 }}, /* 10421; 10449; Case map */ + { 0x010422, 0, { 0x01044A }}, /* 10422; 1044A; Case map */ + { 0x010423, 0, { 0x01044B }}, /* 10423; 1044B; Case map */ + { 0x010424, 0, { 0x01044C }}, /* 10424; 1044C; Case map */ + { 0x010425, 0, { 0x01044D }}, /* 10425; 1044D; Case map */ + { 0 }, +}; + + +/* + * FF3A; FF5A; Case map + * 10400; 10428; Case map +10401; 10429; Case map +10402; 1042A; Case map +10403; 1042B; Case map +10404; 1042C; Case map +10405; 1042D; Case map +10406; 1042E; Case map +10407; 1042F; Case map +10408; 10430; Case map +10409; 10431; Case map +1040A; 10432; Case map +1040B; 10433; Case map +1040C; 10434; Case map +1040D; 10435; Case map +1040E; 10436; Case map +1040F; 10437; Case map +10410; 10438; Case map +10411; 10439; Case map +10412; 1043A; Case map +10413; 1043B; Case map +10414; 1043C; Case map +10415; 1043D; Case map +10416; 1043E; Case map +10417; 1043F; Case map +10418; 10440; Case map +10419; 10441; Case map +1041A; 10442; Case map +1041B; 10443; Case map +1041C; 10444; Case map +1041D; 10445; Case map +1041E; 10446; Case map +1041F; 10447; Case map +10420; 10448; Case map +10421; 10449; Case map +10422; 1044A; Case map +10423; 1044B; Case map +10424; 1044C; Case map +10425; 1044D; Case map + + */ + +const Stringprep_table_element stringprep_rfc3454_C_1_1[] = { + { 0x000020 }, /* 0020; SPACE */ + { 0 }, +}; + + +/* + * FF3A; FF5A; Case map + * * 10400; 10428; Case map +10401; 10429; Case map +10402; 1042A; Case map +10403; 1042B; Case map +10404; 1042C; Case map +10405; 1042D; Case map +10406; 1042E; Case map +10407; 1042F; Case map +10408; 10430; Case map +10409; 10431; Case map +1040A; 10432; Case map +1040B; 10433; Case map +1040C; 10434; Case map +1040D; 10435; Case map +1040E; 10436; Case map +1040F; 10437; Case map +10410; 10438; Case map +10411; 10439; Case map +10412; 1043A; Case map +10413; 1043B; Case map +10414; 1043C; Case map +10415; 1043D; Case map +10416; 1043E; Case map +10417; 1043F; Case map +10418; 10440; Case map +10419; 10441; Case map +1041A; 10442; Case map +1041B; 10443; Case map +1041C; 10444; Case map +1041D; 10445; Case map +1041E; 10446; Case map +1041F; 10447; Case map +10420; 10448; Case map +10421; 10449; Case map +10422; 1044A; Case map +10423; 1044B; Case map +10424; 1044C; Case map +10425; 1044D; Case map + +0020; SPACE + + */ + +const Stringprep_table_element stringprep_rfc3454_C_1_2[] = { + { 0x0000A0 }, /* 00A0; NO-BREAK SPACE */ + { 0x001680 }, /* 1680; OGHAM SPACE MARK */ + { 0x002000 }, /* 2000; EN QUAD */ + { 0x002001 }, /* 2001; EM QUAD */ + { 0x002002 }, /* 2002; EN SPACE */ + { 0x002003 }, /* 2003; EM SPACE */ + { 0x002004 }, /* 2004; THREE-PER-EM SPACE */ + { 0x002005 }, /* 2005; FOUR-PER-EM SPACE */ + { 0x002006 }, /* 2006; SIX-PER-EM SPACE */ + { 0x002007 }, /* 2007; FIGURE SPACE */ + { 0x002008 }, /* 2008; PUNCTUATION SPACE */ + { 0x002009 }, /* 2009; THIN SPACE */ + { 0x00200A }, /* 200A; HAIR SPACE */ + { 0x00200B }, /* 200B; ZERO WIDTH SPACE */ + { 0x00202F }, /* 202F; NARROW NO-BREAK SPACE */ + { 0x00205F }, /* 205F; MEDIUM MATHEMATICAL SPACE */ + { 0x003000 }, /* 3000; IDEOGRAPHIC SPACE */ + { 0 }, +}; + + +/* + * FF3A; FF5A; Case map + * * * 10400; 10428; Case map +10401; 10429; Case map +10402; 1042A; Case map +10403; 1042B; Case map +10404; 1042C; Case map +10405; 1042D; Case map +10406; 1042E; Case map +10407; 1042F; Case map +10408; 10430; Case map +10409; 10431; Case map +1040A; 10432; Case map +1040B; 10433; Case map +1040C; 10434; Case map +1040D; 10435; Case map +1040E; 10436; Case map +1040F; 10437; Case map +10410; 10438; Case map +10411; 10439; Case map +10412; 1043A; Case map +10413; 1043B; Case map +10414; 1043C; Case map +10415; 1043D; Case map +10416; 1043E; Case map +10417; 1043F; Case map +10418; 10440; Case map +10419; 10441; Case map +1041A; 10442; Case map +1041B; 10443; Case map +1041C; 10444; Case map +1041D; 10445; Case map +1041E; 10446; Case map +1041F; 10447; Case map +10420; 10448; Case map +10421; 10449; Case map +10422; 1044A; Case map +10423; 1044B; Case map +10424; 1044C; Case map +10425; 1044D; Case map + +0020; SPACE + +00A0; NO-BREAK SPACE +1680; OGHAM SPACE MARK +2000; EN QUAD +2001; EM QUAD +2002; EN SPACE +2003; EM SPACE +2004; THREE-PER-EM SPACE +2005; FOUR-PER-EM SPACE +2006; SIX-PER-EM SPACE +2007; FIGURE SPACE +2008; PUNCTUATION SPACE +2009; THIN SPACE +200A; HAIR SPACE +200B; ZERO WIDTH SPACE +202F; NARROW NO-BREAK SPACE +205F; MEDIUM MATHEMATICAL SPACE +3000; IDEOGRAPHIC SPACE + + */ + +const Stringprep_table_element stringprep_rfc3454_C_2_1[] = { + { 0x000000, 0x00001F }, /* 0000-001F; [CONTROL CHARACTERS] */ + { 0x00007F }, /* 007F; DELETE */ + { 0 }, +}; + + +/* + * FF3A; FF5A; Case map + * * * * 10400; 10428; Case map +10401; 10429; Case map +10402; 1042A; Case map +10403; 1042B; Case map +10404; 1042C; Case map +10405; 1042D; Case map +10406; 1042E; Case map +10407; 1042F; Case map +10408; 10430; Case map +10409; 10431; Case map +1040A; 10432; Case map +1040B; 10433; Case map +1040C; 10434; Case map +1040D; 10435; Case map +1040E; 10436; Case map +1040F; 10437; Case map +10410; 10438; Case map +10411; 10439; Case map +10412; 1043A; Case map +10413; 1043B; Case map +10414; 1043C; Case map +10415; 1043D; Case map +10416; 1043E; Case map +10417; 1043F; Case map +10418; 10440; Case map +10419; 10441; Case map +1041A; 10442; Case map +1041B; 10443; Case map +1041C; 10444; Case map +1041D; 10445; Case map +1041E; 10446; Case map +1041F; 10447; Case map +10420; 10448; Case map +10421; 10449; Case map +10422; 1044A; Case map +10423; 1044B; Case map +10424; 1044C; Case map +10425; 1044D; Case map + +0020; SPACE + +00A0; NO-BREAK SPACE +1680; OGHAM SPACE MARK +2000; EN QUAD +2001; EM QUAD +2002; EN SPACE +2003; EM SPACE +2004; THREE-PER-EM SPACE +2005; FOUR-PER-EM SPACE +2006; SIX-PER-EM SPACE +2007; FIGURE SPACE +2008; PUNCTUATION SPACE +2009; THIN SPACE +200A; HAIR SPACE +200B; ZERO WIDTH SPACE +202F; NARROW NO-BREAK SPACE +205F; MEDIUM MATHEMATICAL SPACE +3000; IDEOGRAPHIC SPACE + +0000-001F; [CONTROL CHARACTERS] +007F; DELETE + + */ + +const Stringprep_table_element stringprep_rfc3454_C_2_2[] = { + { 0x000080, 0x00009F }, /* 0080-009F; [CONTROL CHARACTERS] */ + { 0x0006DD }, /* 06DD; ARABIC END OF AYAH */ + { 0x00070F }, /* 070F; SYRIAC ABBREVIATION MARK */ + { 0x00180E }, /* 180E; MONGOLIAN VOWEL SEPARATOR */ + { 0x00200C }, /* 200C; ZERO WIDTH NON-JOINER */ + { 0x00200D }, /* 200D; ZERO WIDTH JOINER */ + { 0x002028 }, /* 2028; LINE SEPARATOR */ + { 0x002029 }, /* 2029; PARAGRAPH SEPARATOR */ + { 0x002060 }, /* 2060; WORD JOINER */ + { 0x002061 }, /* 2061; FUNCTION APPLICATION */ + { 0x002062 }, /* 2062; INVISIBLE TIMES */ + { 0x002063 }, /* 2063; INVISIBLE SEPARATOR */ + { 0x00206A, 0x00206F }, /* 206A-206F; [CONTROL CHARACTERS] */ + { 0x00FEFF }, /* FEFF; ZERO WIDTH NO-BREAK SPACE */ + { 0x00FFF9, 0x00FFFC }, /* FFF9-FFFC; [CONTROL CHARACTERS] */ + { 0x01D173, 0x01D17A }, /* 1D173-1D17A; [MUSICAL CONTROL CHARACTERS] */ + { 0 }, +}; + + +/* + * FFF9-FFFC; [CONTROL CHARACTERS] + * 1D173-1D17A; [MUSICAL CONTROL CHARACTERS] + + */ + +const Stringprep_table_element stringprep_rfc3454_C_3[] = { + { 0x00E000, 0x00F8FF }, /* E000-F8FF; [PRIVATE USE, PLANE 0] */ + { 0x0F0000, 0x0FFFFD }, /* F0000-FFFFD; [PRIVATE USE, PLANE 15] */ + { 0x100000, 0x10FFFD }, /* 100000-10FFFD; [PRIVATE USE, PLANE 16] */ + { 0 }, +}; + + +/* + * F0000-FFFFD; [PRIVATE USE, PLANE 15] + * 100000-10FFFD; [PRIVATE USE, PLANE 16] + + */ + +const Stringprep_table_element stringprep_rfc3454_C_4[] = { + { 0x00FDD0, 0x00FDEF }, /* FDD0-FDEF; [NONCHARACTER CODE POINTS] */ + { 0x00FFFE, 0x00FFFF }, /* FFFE-FFFF; [NONCHARACTER CODE POINTS] */ + { 0x01FFFE, 0x01FFFF }, /* 1FFFE-1FFFF; [NONCHARACTER CODE POINTS] */ + { 0x02FFFE, 0x02FFFF }, /* 2FFFE-2FFFF; [NONCHARACTER CODE POINTS] */ + { 0x03FFFE, 0x03FFFF }, /* 3FFFE-3FFFF; [NONCHARACTER CODE POINTS] */ + { 0x04FFFE, 0x04FFFF }, /* 4FFFE-4FFFF; [NONCHARACTER CODE POINTS] */ + { 0x05FFFE, 0x05FFFF }, /* 5FFFE-5FFFF; [NONCHARACTER CODE POINTS] */ + { 0x06FFFE, 0x06FFFF }, /* 6FFFE-6FFFF; [NONCHARACTER CODE POINTS] */ + { 0x07FFFE, 0x07FFFF }, /* 7FFFE-7FFFF; [NONCHARACTER CODE POINTS] */ + { 0x08FFFE, 0x08FFFF }, /* 8FFFE-8FFFF; [NONCHARACTER CODE POINTS] */ + { 0x09FFFE, 0x09FFFF }, /* 9FFFE-9FFFF; [NONCHARACTER CODE POINTS] */ + { 0x0AFFFE, 0x0AFFFF }, /* AFFFE-AFFFF; [NONCHARACTER CODE POINTS] */ + { 0x0BFFFE, 0x0BFFFF }, /* BFFFE-BFFFF; [NONCHARACTER CODE POINTS] */ + { 0x0CFFFE, 0x0CFFFF }, /* CFFFE-CFFFF; [NONCHARACTER CODE POINTS] */ + { 0x0DFFFE, 0x0DFFFF }, /* DFFFE-DFFFF; [NONCHARACTER CODE POINTS] */ + { 0x0EFFFE, 0x0EFFFF }, /* EFFFE-EFFFF; [NONCHARACTER CODE POINTS] */ + { 0x0FFFFE, 0x0FFFFF }, /* FFFFE-FFFFF; [NONCHARACTER CODE POINTS] */ + { 0x10FFFE, 0x10FFFF }, /* 10FFFE-10FFFF; [NONCHARACTER CODE POINTS] */ + { 0 }, +}; + + +/* + * FFFFE-FFFFF; [NONCHARACTER CODE POINTS] + * 10FFFE-10FFFF; [NONCHARACTER CODE POINTS] + + */ + +const Stringprep_table_element stringprep_rfc3454_C_5[] = { + { 0x00D800, 0x00DFFF }, /* D800-DFFF; [SURROGATE CODES] */ + { 0 }, +}; + + +/* + * D800-DFFF; [SURROGATE CODES] + * + */ + +const Stringprep_table_element stringprep_rfc3454_C_6[] = { + { 0x00FFF9 }, /* FFF9; INTERLINEAR ANNOTATION ANCHOR */ + { 0x00FFFA }, /* FFFA; INTERLINEAR ANNOTATION SEPARATOR */ + { 0x00FFFB }, /* FFFB; INTERLINEAR ANNOTATION TERMINATOR */ + { 0x00FFFC }, /* FFFC; OBJECT REPLACEMENT CHARACTER */ + { 0x00FFFD }, /* FFFD; REPLACEMENT CHARACTER */ + { 0 }, +}; + + +/* + * FFFD; REPLACEMENT CHARACTER + * + */ + +const Stringprep_table_element stringprep_rfc3454_C_7[] = { + { 0x002FF0, 0x002FFB }, /* 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] */ + { 0 }, +}; + + +/* + * FFFD; REPLACEMENT CHARACTER + * * +2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] + + */ + +const Stringprep_table_element stringprep_rfc3454_C_8[] = { + { 0x000340 }, /* 0340; COMBINING GRAVE TONE MARK */ + { 0x000341 }, /* 0341; COMBINING ACUTE TONE MARK */ + { 0x00200E }, /* 200E; LEFT-TO-RIGHT MARK */ + { 0x00200F }, /* 200F; RIGHT-TO-LEFT MARK */ + { 0x00202A }, /* 202A; LEFT-TO-RIGHT EMBEDDING */ + { 0x00202B }, /* 202B; RIGHT-TO-LEFT EMBEDDING */ + { 0x00202C }, /* 202C; POP DIRECTIONAL FORMATTING */ + { 0x00202D }, /* 202D; LEFT-TO-RIGHT OVERRIDE */ + { 0x00202E }, /* 202E; RIGHT-TO-LEFT OVERRIDE */ + { 0x00206A }, /* 206A; INHIBIT SYMMETRIC SWAPPING */ + { 0x00206B }, /* 206B; ACTIVATE SYMMETRIC SWAPPING */ + { 0x00206C }, /* 206C; INHIBIT ARABIC FORM SHAPING */ + { 0x00206D }, /* 206D; ACTIVATE ARABIC FORM SHAPING */ + { 0x00206E }, /* 206E; NATIONAL DIGIT SHAPES */ + { 0x00206F }, /* 206F; NOMINAL DIGIT SHAPES */ + { 0 }, +}; + + +/* + * FFFD; REPLACEMENT CHARACTER + * * * +2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] + +0340; COMBINING GRAVE TONE MARK +0341; COMBINING ACUTE TONE MARK +200E; LEFT-TO-RIGHT MARK +200F; RIGHT-TO-LEFT MARK +202A; LEFT-TO-RIGHT EMBEDDING +202B; RIGHT-TO-LEFT EMBEDDING +202C; POP DIRECTIONAL FORMATTING +202D; LEFT-TO-RIGHT OVERRIDE +202E; RIGHT-TO-LEFT OVERRIDE +206A; INHIBIT SYMMETRIC SWAPPING +206B; ACTIVATE SYMMETRIC SWAPPING +206C; INHIBIT ARABIC FORM SHAPING +206D; ACTIVATE ARABIC FORM SHAPING +206E; NATIONAL DIGIT SHAPES +206F; NOMINAL DIGIT SHAPES + + */ + +const Stringprep_table_element stringprep_rfc3454_C_9[] = { + { 0x0E0001 }, /* E0001; LANGUAGE TAG */ + { 0x0E0020, 0x0E007F }, /* E0020-E007F; [TAGGING CHARACTERS] */ + { 0 }, +}; + + +/* + * E0020-E007F; [TAGGING CHARACTERS] + * + */ + +const Stringprep_table_element stringprep_rfc3454_D_1[] = { + { 0x0005BE }, /* 05BE */ + { 0x0005C0 }, /* 05C0 */ + { 0x0005C3 }, /* 05C3 */ + { 0x0005D0, 0x0005EA }, /* 05D0-05EA */ + { 0x0005F0, 0x0005F4 }, /* 05F0-05F4 */ + { 0x00061B }, /* 061B */ + { 0x00061F }, /* 061F */ + { 0x000621, 0x00063A }, /* 0621-063A */ + { 0x000640, 0x00064A }, /* 0640-064A */ + { 0x00066D, 0x00066F }, /* 066D-066F */ + { 0x000671, 0x0006D5 }, /* 0671-06D5 */ + { 0x0006DD }, /* 06DD */ + { 0x0006E5, 0x0006E6 }, /* 06E5-06E6 */ + { 0x0006FA, 0x0006FE }, /* 06FA-06FE */ + { 0x000700, 0x00070D }, /* 0700-070D */ + { 0x000710 }, /* 0710 */ + { 0x000712, 0x00072C }, /* 0712-072C */ + { 0x000780, 0x0007A5 }, /* 0780-07A5 */ + { 0x0007B1 }, /* 07B1 */ + { 0x00200F }, /* 200F */ + { 0x00FB1D }, /* FB1D */ + { 0x00FB1F, 0x00FB28 }, /* FB1F-FB28 */ + { 0x00FB2A, 0x00FB36 }, /* FB2A-FB36 */ + { 0x00FB38, 0x00FB3C }, /* FB38-FB3C */ + { 0x00FB3E }, /* FB3E */ + { 0x00FB40, 0x00FB41 }, /* FB40-FB41 */ + { 0x00FB43, 0x00FB44 }, /* FB43-FB44 */ + { 0x00FB46, 0x00FBB1 }, /* FB46-FBB1 */ + { 0x00FBD3, 0x00FD3D }, /* FBD3-FD3D */ + { 0x00FD50, 0x00FD8F }, /* FD50-FD8F */ + { 0x00FD92, 0x00FDC7 }, /* FD92-FDC7 */ + { 0x00FDF0, 0x00FDFC }, /* FDF0-FDFC */ + { 0x00FE70, 0x00FE74 }, /* FE70-FE74 */ + { 0x00FE76, 0x00FEFC }, /* FE76-FEFC */ + { 0 }, +}; + + +/* + * FE76-FEFC + * + */ + +const Stringprep_table_element stringprep_rfc3454_D_2[] = { + { 0x000041, 0x00005A }, /* 0041-005A */ + { 0x000061, 0x00007A }, /* 0061-007A */ + { 0x0000AA }, /* 00AA */ + { 0x0000B5 }, /* 00B5 */ + { 0x0000BA }, /* 00BA */ + { 0x0000C0, 0x0000D6 }, /* 00C0-00D6 */ + { 0x0000D8, 0x0000F6 }, /* 00D8-00F6 */ + { 0x0000F8, 0x000220 }, /* 00F8-0220 */ + { 0x000222, 0x000233 }, /* 0222-0233 */ + { 0x000250, 0x0002AD }, /* 0250-02AD */ + { 0x0002B0, 0x0002B8 }, /* 02B0-02B8 */ + { 0x0002BB, 0x0002C1 }, /* 02BB-02C1 */ + { 0x0002D0, 0x0002D1 }, /* 02D0-02D1 */ + { 0x0002E0, 0x0002E4 }, /* 02E0-02E4 */ + { 0x0002EE }, /* 02EE */ + { 0x00037A }, /* 037A */ + { 0x000386 }, /* 0386 */ + { 0x000388, 0x00038A }, /* 0388-038A */ + { 0x00038C }, /* 038C */ + { 0x00038E, 0x0003A1 }, /* 038E-03A1 */ + { 0x0003A3, 0x0003CE }, /* 03A3-03CE */ + { 0x0003D0, 0x0003F5 }, /* 03D0-03F5 */ + { 0x000400, 0x000482 }, /* 0400-0482 */ + { 0x00048A, 0x0004CE }, /* 048A-04CE */ + { 0x0004D0, 0x0004F5 }, /* 04D0-04F5 */ + { 0x0004F8, 0x0004F9 }, /* 04F8-04F9 */ + { 0x000500, 0x00050F }, /* 0500-050F */ + { 0x000531, 0x000556 }, /* 0531-0556 */ + { 0x000559, 0x00055F }, /* 0559-055F */ + { 0x000561, 0x000587 }, /* 0561-0587 */ + { 0x000589 }, /* 0589 */ + { 0x000903 }, /* 0903 */ + { 0x000905, 0x000939 }, /* 0905-0939 */ + { 0x00093D, 0x000940 }, /* 093D-0940 */ + { 0x000949, 0x00094C }, /* 0949-094C */ + { 0x000950 }, /* 0950 */ + { 0x000958, 0x000961 }, /* 0958-0961 */ + { 0x000964, 0x000970 }, /* 0964-0970 */ + { 0x000982, 0x000983 }, /* 0982-0983 */ + { 0x000985, 0x00098C }, /* 0985-098C */ + { 0x00098F, 0x000990 }, /* 098F-0990 */ + { 0x000993, 0x0009A8 }, /* 0993-09A8 */ + { 0x0009AA, 0x0009B0 }, /* 09AA-09B0 */ + { 0x0009B2 }, /* 09B2 */ + { 0x0009B6, 0x0009B9 }, /* 09B6-09B9 */ + { 0x0009BE, 0x0009C0 }, /* 09BE-09C0 */ + { 0x0009C7, 0x0009C8 }, /* 09C7-09C8 */ + { 0x0009CB, 0x0009CC }, /* 09CB-09CC */ + { 0x0009D7 }, /* 09D7 */ + { 0x0009DC, 0x0009DD }, /* 09DC-09DD */ + { 0x0009DF, 0x0009E1 }, /* 09DF-09E1 */ + { 0x0009E6, 0x0009F1 }, /* 09E6-09F1 */ + { 0x0009F4, 0x0009FA }, /* 09F4-09FA */ + { 0x000A05, 0x000A0A }, /* 0A05-0A0A */ + { 0x000A0F, 0x000A10 }, /* 0A0F-0A10 */ + { 0x000A13, 0x000A28 }, /* 0A13-0A28 */ + { 0x000A2A, 0x000A30 }, /* 0A2A-0A30 */ + { 0x000A32, 0x000A33 }, /* 0A32-0A33 */ + { 0x000A35, 0x000A36 }, /* 0A35-0A36 */ + { 0x000A38, 0x000A39 }, /* 0A38-0A39 */ + { 0x000A3E, 0x000A40 }, /* 0A3E-0A40 */ + { 0x000A59, 0x000A5C }, /* 0A59-0A5C */ + { 0x000A5E }, /* 0A5E */ + { 0x000A66, 0x000A6F }, /* 0A66-0A6F */ + { 0x000A72, 0x000A74 }, /* 0A72-0A74 */ + { 0x000A83 }, /* 0A83 */ + { 0x000A85, 0x000A8B }, /* 0A85-0A8B */ + { 0x000A8D }, /* 0A8D */ + { 0x000A8F, 0x000A91 }, /* 0A8F-0A91 */ + { 0x000A93, 0x000AA8 }, /* 0A93-0AA8 */ + { 0x000AAA, 0x000AB0 }, /* 0AAA-0AB0 */ + { 0x000AB2, 0x000AB3 }, /* 0AB2-0AB3 */ + { 0x000AB5, 0x000AB9 }, /* 0AB5-0AB9 */ + { 0x000ABD, 0x000AC0 }, /* 0ABD-0AC0 */ + { 0x000AC9 }, /* 0AC9 */ + { 0x000ACB, 0x000ACC }, /* 0ACB-0ACC */ + { 0x000AD0 }, /* 0AD0 */ + { 0x000AE0 }, /* 0AE0 */ + { 0x000AE6, 0x000AEF }, /* 0AE6-0AEF */ + { 0x000B02, 0x000B03 }, /* 0B02-0B03 */ + { 0x000B05, 0x000B0C }, /* 0B05-0B0C */ + { 0x000B0F, 0x000B10 }, /* 0B0F-0B10 */ + { 0x000B13, 0x000B28 }, /* 0B13-0B28 */ + { 0x000B2A, 0x000B30 }, /* 0B2A-0B30 */ + { 0x000B32, 0x000B33 }, /* 0B32-0B33 */ + { 0x000B36, 0x000B39 }, /* 0B36-0B39 */ + { 0x000B3D, 0x000B3E }, /* 0B3D-0B3E */ + { 0x000B40 }, /* 0B40 */ + { 0x000B47, 0x000B48 }, /* 0B47-0B48 */ + { 0x000B4B, 0x000B4C }, /* 0B4B-0B4C */ + { 0x000B57 }, /* 0B57 */ + { 0x000B5C, 0x000B5D }, /* 0B5C-0B5D */ + { 0x000B5F, 0x000B61 }, /* 0B5F-0B61 */ + { 0x000B66, 0x000B70 }, /* 0B66-0B70 */ + { 0x000B83 }, /* 0B83 */ + { 0x000B85, 0x000B8A }, /* 0B85-0B8A */ + { 0x000B8E, 0x000B90 }, /* 0B8E-0B90 */ + { 0x000B92, 0x000B95 }, /* 0B92-0B95 */ + { 0x000B99, 0x000B9A }, /* 0B99-0B9A */ + { 0x000B9C }, /* 0B9C */ + { 0x000B9E, 0x000B9F }, /* 0B9E-0B9F */ + { 0x000BA3, 0x000BA4 }, /* 0BA3-0BA4 */ + { 0x000BA8, 0x000BAA }, /* 0BA8-0BAA */ + { 0x000BAE, 0x000BB5 }, /* 0BAE-0BB5 */ + { 0x000BB7, 0x000BB9 }, /* 0BB7-0BB9 */ + { 0x000BBE, 0x000BBF }, /* 0BBE-0BBF */ + { 0x000BC1, 0x000BC2 }, /* 0BC1-0BC2 */ + { 0x000BC6, 0x000BC8 }, /* 0BC6-0BC8 */ + { 0x000BCA, 0x000BCC }, /* 0BCA-0BCC */ + { 0x000BD7 }, /* 0BD7 */ + { 0x000BE7, 0x000BF2 }, /* 0BE7-0BF2 */ + { 0x000C01, 0x000C03 }, /* 0C01-0C03 */ + { 0x000C05, 0x000C0C }, /* 0C05-0C0C */ + { 0x000C0E, 0x000C10 }, /* 0C0E-0C10 */ + { 0x000C12, 0x000C28 }, /* 0C12-0C28 */ + { 0x000C2A, 0x000C33 }, /* 0C2A-0C33 */ + { 0x000C35, 0x000C39 }, /* 0C35-0C39 */ + { 0x000C41, 0x000C44 }, /* 0C41-0C44 */ + { 0x000C60, 0x000C61 }, /* 0C60-0C61 */ + { 0x000C66, 0x000C6F }, /* 0C66-0C6F */ + { 0x000C82, 0x000C83 }, /* 0C82-0C83 */ + { 0x000C85, 0x000C8C }, /* 0C85-0C8C */ + { 0x000C8E, 0x000C90 }, /* 0C8E-0C90 */ + { 0x000C92, 0x000CA8 }, /* 0C92-0CA8 */ + { 0x000CAA, 0x000CB3 }, /* 0CAA-0CB3 */ + { 0x000CB5, 0x000CB9 }, /* 0CB5-0CB9 */ + { 0x000CBE }, /* 0CBE */ + { 0x000CC0, 0x000CC4 }, /* 0CC0-0CC4 */ + { 0x000CC7, 0x000CC8 }, /* 0CC7-0CC8 */ + { 0x000CCA, 0x000CCB }, /* 0CCA-0CCB */ + { 0x000CD5, 0x000CD6 }, /* 0CD5-0CD6 */ + { 0x000CDE }, /* 0CDE */ + { 0x000CE0, 0x000CE1 }, /* 0CE0-0CE1 */ + { 0x000CE6, 0x000CEF }, /* 0CE6-0CEF */ + { 0x000D02, 0x000D03 }, /* 0D02-0D03 */ + { 0x000D05, 0x000D0C }, /* 0D05-0D0C */ + { 0x000D0E, 0x000D10 }, /* 0D0E-0D10 */ + { 0x000D12, 0x000D28 }, /* 0D12-0D28 */ + { 0x000D2A, 0x000D39 }, /* 0D2A-0D39 */ + { 0x000D3E, 0x000D40 }, /* 0D3E-0D40 */ + { 0x000D46, 0x000D48 }, /* 0D46-0D48 */ + { 0x000D4A, 0x000D4C }, /* 0D4A-0D4C */ + { 0x000D57 }, /* 0D57 */ + { 0x000D60, 0x000D61 }, /* 0D60-0D61 */ + { 0x000D66, 0x000D6F }, /* 0D66-0D6F */ + { 0x000D82, 0x000D83 }, /* 0D82-0D83 */ + { 0x000D85, 0x000D96 }, /* 0D85-0D96 */ + { 0x000D9A, 0x000DB1 }, /* 0D9A-0DB1 */ + { 0x000DB3, 0x000DBB }, /* 0DB3-0DBB */ + { 0x000DBD }, /* 0DBD */ + { 0x000DC0, 0x000DC6 }, /* 0DC0-0DC6 */ + { 0x000DCF, 0x000DD1 }, /* 0DCF-0DD1 */ + { 0x000DD8, 0x000DDF }, /* 0DD8-0DDF */ + { 0x000DF2, 0x000DF4 }, /* 0DF2-0DF4 */ + { 0x000E01, 0x000E30 }, /* 0E01-0E30 */ + { 0x000E32, 0x000E33 }, /* 0E32-0E33 */ + { 0x000E40, 0x000E46 }, /* 0E40-0E46 */ + { 0x000E4F, 0x000E5B }, /* 0E4F-0E5B */ + { 0x000E81, 0x000E82 }, /* 0E81-0E82 */ + { 0x000E84 }, /* 0E84 */ + { 0x000E87, 0x000E88 }, /* 0E87-0E88 */ + { 0x000E8A }, /* 0E8A */ + { 0x000E8D }, /* 0E8D */ + { 0x000E94, 0x000E97 }, /* 0E94-0E97 */ + { 0x000E99, 0x000E9F }, /* 0E99-0E9F */ + { 0x000EA1, 0x000EA3 }, /* 0EA1-0EA3 */ + { 0x000EA5 }, /* 0EA5 */ + { 0x000EA7 }, /* 0EA7 */ + { 0x000EAA, 0x000EAB }, /* 0EAA-0EAB */ + { 0x000EAD, 0x000EB0 }, /* 0EAD-0EB0 */ + { 0x000EB2, 0x000EB3 }, /* 0EB2-0EB3 */ + { 0x000EBD }, /* 0EBD */ + { 0x000EC0, 0x000EC4 }, /* 0EC0-0EC4 */ + { 0x000EC6 }, /* 0EC6 */ + { 0x000ED0, 0x000ED9 }, /* 0ED0-0ED9 */ + { 0x000EDC, 0x000EDD }, /* 0EDC-0EDD */ + { 0x000F00, 0x000F17 }, /* 0F00-0F17 */ + { 0x000F1A, 0x000F34 }, /* 0F1A-0F34 */ + { 0x000F36 }, /* 0F36 */ + { 0x000F38 }, /* 0F38 */ + { 0x000F3E, 0x000F47 }, /* 0F3E-0F47 */ + { 0x000F49, 0x000F6A }, /* 0F49-0F6A */ + { 0x000F7F }, /* 0F7F */ + { 0x000F85 }, /* 0F85 */ + { 0x000F88, 0x000F8B }, /* 0F88-0F8B */ + { 0x000FBE, 0x000FC5 }, /* 0FBE-0FC5 */ + { 0x000FC7, 0x000FCC }, /* 0FC7-0FCC */ + { 0x000FCF }, /* 0FCF */ + { 0x001000, 0x001021 }, /* 1000-1021 */ + { 0x001023, 0x001027 }, /* 1023-1027 */ + { 0x001029, 0x00102A }, /* 1029-102A */ + { 0x00102C }, /* 102C */ + { 0x001031 }, /* 1031 */ + { 0x001038 }, /* 1038 */ + { 0x001040, 0x001057 }, /* 1040-1057 */ + { 0x0010A0, 0x0010C5 }, /* 10A0-10C5 */ + { 0x0010D0, 0x0010F8 }, /* 10D0-10F8 */ + { 0x0010FB }, /* 10FB */ + { 0x001100, 0x001159 }, /* 1100-1159 */ + { 0x00115F, 0x0011A2 }, /* 115F-11A2 */ + { 0x0011A8, 0x0011F9 }, /* 11A8-11F9 */ + { 0x001200, 0x001206 }, /* 1200-1206 */ + { 0x001208, 0x001246 }, /* 1208-1246 */ + { 0x001248 }, /* 1248 */ + { 0x00124A, 0x00124D }, /* 124A-124D */ + { 0x001250, 0x001256 }, /* 1250-1256 */ + { 0x001258 }, /* 1258 */ + { 0x00125A, 0x00125D }, /* 125A-125D */ + { 0x001260, 0x001286 }, /* 1260-1286 */ + { 0x001288 }, /* 1288 */ + { 0x00128A, 0x00128D }, /* 128A-128D */ + { 0x001290, 0x0012AE }, /* 1290-12AE */ + { 0x0012B0 }, /* 12B0 */ + { 0x0012B2, 0x0012B5 }, /* 12B2-12B5 */ + { 0x0012B8, 0x0012BE }, /* 12B8-12BE */ + { 0x0012C0 }, /* 12C0 */ + { 0x0012C2, 0x0012C5 }, /* 12C2-12C5 */ + { 0x0012C8, 0x0012CE }, /* 12C8-12CE */ + { 0x0012D0, 0x0012D6 }, /* 12D0-12D6 */ + { 0x0012D8, 0x0012EE }, /* 12D8-12EE */ + { 0x0012F0, 0x00130E }, /* 12F0-130E */ + { 0x001310 }, /* 1310 */ + { 0x001312, 0x001315 }, /* 1312-1315 */ + { 0x001318, 0x00131E }, /* 1318-131E */ + { 0x001320, 0x001346 }, /* 1320-1346 */ + { 0x001348, 0x00135A }, /* 1348-135A */ + { 0x001361, 0x00137C }, /* 1361-137C */ + { 0x0013A0, 0x0013F4 }, /* 13A0-13F4 */ + { 0x001401, 0x001676 }, /* 1401-1676 */ + { 0x001681, 0x00169A }, /* 1681-169A */ + { 0x0016A0, 0x0016F0 }, /* 16A0-16F0 */ + { 0x001700, 0x00170C }, /* 1700-170C */ + { 0x00170E, 0x001711 }, /* 170E-1711 */ + { 0x001720, 0x001731 }, /* 1720-1731 */ + { 0x001735, 0x001736 }, /* 1735-1736 */ + { 0x001740, 0x001751 }, /* 1740-1751 */ + { 0x001760, 0x00176C }, /* 1760-176C */ + { 0x00176E, 0x001770 }, /* 176E-1770 */ + { 0x001780, 0x0017B6 }, /* 1780-17B6 */ + { 0x0017BE, 0x0017C5 }, /* 17BE-17C5 */ + { 0x0017C7, 0x0017C8 }, /* 17C7-17C8 */ + { 0x0017D4, 0x0017DA }, /* 17D4-17DA */ + { 0x0017DC }, /* 17DC */ + { 0x0017E0, 0x0017E9 }, /* 17E0-17E9 */ + { 0x001810, 0x001819 }, /* 1810-1819 */ + { 0x001820, 0x001877 }, /* 1820-1877 */ + { 0x001880, 0x0018A8 }, /* 1880-18A8 */ + { 0x001E00, 0x001E9B }, /* 1E00-1E9B */ + { 0x001EA0, 0x001EF9 }, /* 1EA0-1EF9 */ + { 0x001F00, 0x001F15 }, /* 1F00-1F15 */ + { 0x001F18, 0x001F1D }, /* 1F18-1F1D */ + { 0x001F20, 0x001F45 }, /* 1F20-1F45 */ + { 0x001F48, 0x001F4D }, /* 1F48-1F4D */ + { 0x001F50, 0x001F57 }, /* 1F50-1F57 */ + { 0x001F59 }, /* 1F59 */ + { 0x001F5B }, /* 1F5B */ + { 0x001F5D }, /* 1F5D */ + { 0x001F5F, 0x001F7D }, /* 1F5F-1F7D */ + { 0x001F80, 0x001FB4 }, /* 1F80-1FB4 */ + { 0x001FB6, 0x001FBC }, /* 1FB6-1FBC */ + { 0x001FBE }, /* 1FBE */ + { 0x001FC2, 0x001FC4 }, /* 1FC2-1FC4 */ + { 0x001FC6, 0x001FCC }, /* 1FC6-1FCC */ + { 0x001FD0, 0x001FD3 }, /* 1FD0-1FD3 */ + { 0x001FD6, 0x001FDB }, /* 1FD6-1FDB */ + { 0x001FE0, 0x001FEC }, /* 1FE0-1FEC */ + { 0x001FF2, 0x001FF4 }, /* 1FF2-1FF4 */ + { 0x001FF6, 0x001FFC }, /* 1FF6-1FFC */ + { 0x00200E }, /* 200E */ + { 0x002071 }, /* 2071 */ + { 0x00207F }, /* 207F */ + { 0x002102 }, /* 2102 */ + { 0x002107 }, /* 2107 */ + { 0x00210A, 0x002113 }, /* 210A-2113 */ + { 0x002115 }, /* 2115 */ + { 0x002119, 0x00211D }, /* 2119-211D */ + { 0x002124 }, /* 2124 */ + { 0x002126 }, /* 2126 */ + { 0x002128 }, /* 2128 */ + { 0x00212A, 0x00212D }, /* 212A-212D */ + { 0x00212F, 0x002131 }, /* 212F-2131 */ + { 0x002133, 0x002139 }, /* 2133-2139 */ + { 0x00213D, 0x00213F }, /* 213D-213F */ + { 0x002145, 0x002149 }, /* 2145-2149 */ + { 0x002160, 0x002183 }, /* 2160-2183 */ + { 0x002336, 0x00237A }, /* 2336-237A */ + { 0x002395 }, /* 2395 */ + { 0x00249C, 0x0024E9 }, /* 249C-24E9 */ + { 0x003005, 0x003007 }, /* 3005-3007 */ + { 0x003021, 0x003029 }, /* 3021-3029 */ + { 0x003031, 0x003035 }, /* 3031-3035 */ + { 0x003038, 0x00303C }, /* 3038-303C */ + { 0x003041, 0x003096 }, /* 3041-3096 */ + { 0x00309D, 0x00309F }, /* 309D-309F */ + { 0x0030A1, 0x0030FA }, /* 30A1-30FA */ + { 0x0030FC, 0x0030FF }, /* 30FC-30FF */ + { 0x003105, 0x00312C }, /* 3105-312C */ + { 0x003131, 0x00318E }, /* 3131-318E */ + { 0x003190, 0x0031B7 }, /* 3190-31B7 */ + { 0x0031F0, 0x00321C }, /* 31F0-321C */ + { 0x003220, 0x003243 }, /* 3220-3243 */ + { 0x003260, 0x00327B }, /* 3260-327B */ + { 0x00327F, 0x0032B0 }, /* 327F-32B0 */ + { 0x0032C0, 0x0032CB }, /* 32C0-32CB */ + { 0x0032D0, 0x0032FE }, /* 32D0-32FE */ + { 0x003300, 0x003376 }, /* 3300-3376 */ + { 0x00337B, 0x0033DD }, /* 337B-33DD */ + { 0x0033E0, 0x0033FE }, /* 33E0-33FE */ + { 0x003400, 0x004DB5 }, /* 3400-4DB5 */ + { 0x004E00, 0x009FA5 }, /* 4E00-9FA5 */ + { 0x00A000, 0x00A48C }, /* A000-A48C */ + { 0x00AC00, 0x00D7A3 }, /* AC00-D7A3 */ + { 0x00D800, 0x00FA2D }, /* D800-FA2D */ + { 0x00FA30, 0x00FA6A }, /* FA30-FA6A */ + { 0x00FB00, 0x00FB06 }, /* FB00-FB06 */ + { 0x00FB13, 0x00FB17 }, /* FB13-FB17 */ + { 0x00FF21, 0x00FF3A }, /* FF21-FF3A */ + { 0x00FF41, 0x00FF5A }, /* FF41-FF5A */ + { 0x00FF66, 0x00FFBE }, /* FF66-FFBE */ + { 0x00FFC2, 0x00FFC7 }, /* FFC2-FFC7 */ + { 0x00FFCA, 0x00FFCF }, /* FFCA-FFCF */ + { 0x00FFD2, 0x00FFD7 }, /* FFD2-FFD7 */ + { 0x00FFDA, 0x00FFDC }, /* FFDA-FFDC */ + { 0x010300, 0x01031E }, /* 10300-1031E */ + { 0x010320, 0x010323 }, /* 10320-10323 */ + { 0x010330, 0x01034A }, /* 10330-1034A */ + { 0x010400, 0x010425 }, /* 10400-10425 */ + { 0x010428, 0x01044D }, /* 10428-1044D */ + { 0x01D000, 0x01D0F5 }, /* 1D000-1D0F5 */ + { 0x01D100, 0x01D126 }, /* 1D100-1D126 */ + { 0x01D12A, 0x01D166 }, /* 1D12A-1D166 */ + { 0x01D16A, 0x01D172 }, /* 1D16A-1D172 */ + { 0x01D183, 0x01D184 }, /* 1D183-1D184 */ + { 0x01D18C, 0x01D1A9 }, /* 1D18C-1D1A9 */ + { 0x01D1AE, 0x01D1DD }, /* 1D1AE-1D1DD */ + { 0x01D400, 0x01D454 }, /* 1D400-1D454 */ + { 0x01D456, 0x01D49C }, /* 1D456-1D49C */ + { 0x01D49E, 0x01D49F }, /* 1D49E-1D49F */ + { 0x01D4A2 }, /* 1D4A2 */ + { 0x01D4A5, 0x01D4A6 }, /* 1D4A5-1D4A6 */ + { 0x01D4A9, 0x01D4AC }, /* 1D4A9-1D4AC */ + { 0x01D4AE, 0x01D4B9 }, /* 1D4AE-1D4B9 */ + { 0x01D4BB }, /* 1D4BB */ + { 0x01D4BD, 0x01D4C0 }, /* 1D4BD-1D4C0 */ + { 0x01D4C2, 0x01D4C3 }, /* 1D4C2-1D4C3 */ + { 0x01D4C5, 0x01D505 }, /* 1D4C5-1D505 */ + { 0x01D507, 0x01D50A }, /* 1D507-1D50A */ + { 0x01D50D, 0x01D514 }, /* 1D50D-1D514 */ + { 0x01D516, 0x01D51C }, /* 1D516-1D51C */ + { 0x01D51E, 0x01D539 }, /* 1D51E-1D539 */ + { 0x01D53B, 0x01D53E }, /* 1D53B-1D53E */ + { 0x01D540, 0x01D544 }, /* 1D540-1D544 */ + { 0x01D546 }, /* 1D546 */ + { 0x01D54A, 0x01D550 }, /* 1D54A-1D550 */ + { 0x01D552, 0x01D6A3 }, /* 1D552-1D6A3 */ + { 0x01D6A8, 0x01D7C9 }, /* 1D6A8-1D7C9 */ + { 0x020000, 0x02A6D6 }, /* 20000-2A6D6 */ + { 0x02F800, 0x02FA1D }, /* 2F800-2FA1D */ + { 0x0F0000, 0x0FFFFD }, /* F0000-FFFFD */ + { 0x100000, 0x10FFFD }, /* 100000-10FFFD */ + { 0 }, +}; + diff --git a/lib/strerror-idna.c b/lib/strerror-idna.c new file mode 100644 index 0000000..a54b41f --- /dev/null +++ b/lib/strerror-idna.c @@ -0,0 +1,127 @@ +/* strerror-idna.c --- Convert IDNA errors into text. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "idna.h" + +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) + +/** + * idna_strerror - return string describing idna error code + * @rc: an #Idna_rc return code. + * + * Convert a return code integer to a text string. This string can be + * used to output a diagnostic message to the user. + * + * IDNA_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * IDNA_STRINGPREP_ERROR: Error during string preparation. + * IDNA_PUNYCODE_ERROR: Error during punycode operation. + * IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that + * the string contains non-LDH ASCII characters. + * IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that + * the string contains a leading or trailing hyphen-minus (U+002D). + * IDNA_INVALID_LENGTH: The final output string is not within the + * (inclusive) range 1 to 63 characters. + * IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix + * (for ToUnicode). + * IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output + * string does not equal the input. + * IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for + * ToASCII). + * IDNA_ICONV_ERROR: Could not convert string in locale encoding. + * IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a + * fatal error). + * IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used + * internally in libc). + * + * Return value: Returns a pointer to a statically allocated string + * containing a description of the error with the return code @rc. + **/ +const char * +idna_strerror (Idna_rc rc) +{ + const char *p; + + bindtextdomain (PACKAGE, LOCALEDIR); + + switch (rc) + { + case IDNA_SUCCESS: + p = _("Success"); + break; + + case IDNA_STRINGPREP_ERROR: + p = _("String preparation failed"); + break; + + case IDNA_PUNYCODE_ERROR: + p = _("Punycode failed"); + break; + + case IDNA_CONTAINS_NON_LDH: + p = _("Non-digit/letter/hyphen in input"); + break; + + case IDNA_CONTAINS_MINUS: + p = _("Forbidden leading or trailing minus sign (`-')"); + break; + + case IDNA_INVALID_LENGTH: + p = _("Output would be too large or too small"); + break; + + case IDNA_NO_ACE_PREFIX: + p = _("Input does not start with ACE prefix (`xn--')"); + break; + + case IDNA_ROUNDTRIP_VERIFY_ERROR: + p = _("String not idempotent under ToASCII"); + break; + + case IDNA_CONTAINS_ACE_PREFIX: + p = _("Input already contain ACE prefix (`xn--')"); + break; + + case IDNA_ICONV_ERROR: + p = _("System iconv failed"); + break; + + case IDNA_MALLOC_ERROR: + p = _("Cannot allocate memory"); + break; + + case IDNA_DLOPEN_ERROR: + p = _("System dlopen failed"); + break; + + default: + p = _("Unknown error"); + break; + } + + return p; +} diff --git a/lib/strerror-pr29.c b/lib/strerror-pr29.c new file mode 100644 index 0000000..d977572 --- /dev/null +++ b/lib/strerror-pr29.c @@ -0,0 +1,75 @@ +/* strerror-pr29.c --- Convert PR29 errors into text. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "pr29.h" + +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) + +/** + * pr29_strerror - return string describing pr29 error code + * @rc: an #Pr29_rc return code. + * + * Convert a return code integer to a text string. This string can be + * used to output a diagnostic message to the user. + * + * PR29_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * PR29_PROBLEM: A problem sequence was encountered. + * PR29_STRINGPREP_ERROR: The character set conversion failed (only + * for pr29_8() and pr29_8z()). + * + * Return value: Returns a pointer to a statically allocated string + * containing a description of the error with the return code @rc. + **/ +const char * +pr29_strerror (Pr29_rc rc) +{ + const char *p; + + bindtextdomain (PACKAGE, LOCALEDIR); + + switch (rc) + { + case PR29_SUCCESS: + p = _("Success"); + break; + + case PR29_PROBLEM: + p = _("String not idempotent under Unicode NFKC normalization"); + break; + + case PR29_STRINGPREP_ERROR: + p = _("String preparation failed"); + break; + + default: + p = _("Unknown error"); + break; + } + + return p; +} diff --git a/lib/strerror-punycode.c b/lib/strerror-punycode.c new file mode 100644 index 0000000..df5d25f --- /dev/null +++ b/lib/strerror-punycode.c @@ -0,0 +1,79 @@ +/* strerror-punycode.c --- Convert punycode errors into text. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "punycode.h" + +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) + +/** + * punycode_strerror - return string describing punycode error code + * @rc: an #Punycode_status return code. + * + * Convert a return code integer to a text string. This string can be + * used to output a diagnostic message to the user. + * + * PUNYCODE_SUCCESS: Successful operation. This value is guaranteed + * to always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * PUNYCODE_BAD_INPUT: Input is invalid. + * PUNYCODE_BIG_OUTPUT: Output would exceed the space provided. + * PUNYCODE_OVERFLOW: Input needs wider integers to process. + * + * Return value: Returns a pointer to a statically allocated string + * containing a description of the error with the return code @rc. + **/ +const char * +punycode_strerror (Punycode_status rc) +{ + const char *p; + + bindtextdomain (PACKAGE, LOCALEDIR); + + switch (rc) + { + case PUNYCODE_SUCCESS: + p = _("Success"); + break; + + case PUNYCODE_BAD_INPUT: + p = _("Invalid input"); + break; + + case PUNYCODE_BIG_OUTPUT: + p = _("Output would exceed the buffer space provided"); + break; + + case PUNYCODE_OVERFLOW: + p = _("String size limit exceeded"); + break; + + default: + p = _("Unknown error"); + break; + } + + return p; +} diff --git a/lib/strerror-stringprep.c b/lib/strerror-stringprep.c new file mode 100644 index 0000000..d0b3a58 --- /dev/null +++ b/lib/strerror-stringprep.c @@ -0,0 +1,131 @@ +/* strerror-stringprep.c --- Convert stringprep errors into text. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "stringprep.h" + +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) + +/** + * stringprep_strerror - return string describing stringprep error code + * @rc: a #Stringprep_rc return code. + * + * Convert a return code integer to a text string. This string can be + * used to output a diagnostic message to the user. + * + * STRINGPREP_OK: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode + * code points, which is forbidden by the profile. + * STRINGPREP_CONTAINS_PROHIBITED: String contain code points + * prohibited by the profile. + * STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with + * conflicting bidirection category. + * STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character + * in string not of proper bidirectional category. + * STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code + * points detected by bidirectional code. + * STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too + * small. This usually indicate a problem in the calling + * application. + * STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent. + * This usually indicate an internal error in the library. + * STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile. + * This usually indicate a problem in the calling application. + * STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not + * known to the library. + * STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed. This + * usually indicate an internal error in the library. + * STRINGPREP_MALLOC_ERROR: The malloc() was out of memory. This is + * usually a fatal error. + * + * Return value: Returns a pointer to a statically allocated string + * containing a description of the error with the return code @rc. + **/ +const char * +stringprep_strerror (Stringprep_rc rc) +{ + const char *p; + + bindtextdomain (PACKAGE, LOCALEDIR); + + switch (rc) + { + case STRINGPREP_OK: + p = _("Success"); + break; + + case STRINGPREP_CONTAINS_UNASSIGNED: + p = _("Forbidden unassigned code points in input"); + break; + + case STRINGPREP_CONTAINS_PROHIBITED: + p = _("Prohibited code points in input"); + break; + + case STRINGPREP_BIDI_BOTH_L_AND_RAL: + p = _("Conflicting bidirectional properties in input"); + break; + + case STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: + p = _("Malformed bidirectional string"); + break; + + case STRINGPREP_BIDI_CONTAINS_PROHIBITED: + p = _("Prohibited bidirectional code points in input"); + break; + + case STRINGPREP_TOO_SMALL_BUFFER: + p = _("Output would exceed the buffer space provided"); + break; + + case STRINGPREP_PROFILE_ERROR: + p = _("Error in stringprep profile definition"); + break; + + case STRINGPREP_FLAG_ERROR: + p = _("Flag conflict with profile"); + break; + + case STRINGPREP_UNKNOWN_PROFILE: + p = _("Unknown profile"); + break; + + case STRINGPREP_NFKC_FAILED: + p = _("Unicode normalization failed (internal error)"); + break; + + case STRINGPREP_MALLOC_ERROR: + p = _("Cannot allocate memory"); + break; + + default: + p = _("Unknown error"); + break; + } + + return p; +} diff --git a/lib/strerror-tld.c b/lib/strerror-tld.c new file mode 100644 index 0000000..b74c0ae --- /dev/null +++ b/lib/strerror-tld.c @@ -0,0 +1,89 @@ +/* strerror-tld.c --- Convert TLD errors into text. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "tld.h" + +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) + +/** + * tld_strerror - return string describing tld error code + * @rc: tld return code + * + * Convert a return code integer to a text string. This string can be + * used to output a diagnostic message to the user. + * + * TLD_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * TLD_INVALID: Invalid character found. + * TLD_NODATA: No input data was provided. + * TLD_MALLOC_ERROR: Error during memory allocation. + * TLD_ICONV_ERROR: Error during iconv string conversion. + * TLD_NO_TLD: No top-level domain found in domain string. + * + * Return value: Returns a pointer to a statically allocated string + * containing a description of the error with the return code @rc. + **/ +const char * +tld_strerror (Tld_rc rc) +{ + const char *p; + + bindtextdomain (PACKAGE, LOCALEDIR); + + switch (rc) + { + case TLD_SUCCESS: + p = _("Success"); + break; + + case TLD_INVALID: + p = _("Code points prohibited by top-level domain"); + break; + + case TLD_NODATA: + p = _("Missing input"); + break; + + case TLD_MALLOC_ERROR: + p = _("Cannot allocate memory"); + break; + + case TLD_ICONV_ERROR: + p = _("System iconv failed"); + break; + + case TLD_NO_TLD: + p = _("No top-level domain found in input"); + break; + + default: + p = _("Unknown error"); + break; + } + + return p; +} diff --git a/lib/stringprep.c b/lib/stringprep.c new file mode 100644 index 0000000..c57f630 --- /dev/null +++ b/lib/stringprep.c @@ -0,0 +1,673 @@ +/* stringprep.c --- Core stringprep implementation. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdlib.h> +#include <string.h> + +#include "stringprep.h" + +static ssize_t +stringprep_find_character_in_table (uint32_t ucs4, + const Stringprep_table_element * table) +{ + ssize_t i; + + /* This is where typical uses of Libidn spends very close to all CPU + time and causes most cache misses. One could easily do a binary + search instead. Before rewriting this, I want hard evidence this + slowness is at all relevant in typical applications. (I don't + dispute optimization may improve matters significantly, I'm + mostly interested in having someone give real-world benchmark on + the impact of libidn.) */ + + for (i = 0; table[i].start || table[i].end; i++) + if (ucs4 >= table[i].start && + ucs4 <= (table[i].end ? table[i].end : table[i].start)) + return i; + + return -1; +} + +static ssize_t +stringprep_find_string_in_table (uint32_t * ucs4, + size_t ucs4len, + size_t * tablepos, + const Stringprep_table_element * table) +{ + size_t j; + ssize_t pos; + + for (j = 0; j < ucs4len; j++) + if ((pos = stringprep_find_character_in_table (ucs4[j], table)) != -1) + { + if (tablepos) + *tablepos = pos; + return j; + } + + return -1; +} + +static int +stringprep_apply_table_to_string (uint32_t * ucs4, + size_t * ucs4len, + size_t maxucs4len, + const Stringprep_table_element * table) +{ + ssize_t pos; + size_t i, maplen; + + while ((pos = stringprep_find_string_in_table (ucs4, *ucs4len, + &i, table)) != -1) + { + for (maplen = STRINGPREP_MAX_MAP_CHARS; + maplen > 0 && table[i].map[maplen - 1] == 0; maplen--) + ; + + if (*ucs4len - 1 + maplen >= maxucs4len) + return STRINGPREP_TOO_SMALL_BUFFER; + + memmove (&ucs4[pos + maplen], &ucs4[pos + 1], + sizeof (uint32_t) * (*ucs4len - pos - 1)); + memcpy (&ucs4[pos], table[i].map, sizeof (uint32_t) * maplen); + *ucs4len = *ucs4len - 1 + maplen; + } + + return STRINGPREP_OK; +} + +#define INVERTED(x) ((x) & ((~0UL) >> 1)) +#define UNAPPLICAPLEFLAGS(flags, profileflags) \ + ((!INVERTED(profileflags) && !(profileflags & flags) && profileflags) || \ + ( INVERTED(profileflags) && (profileflags & flags))) + +/** + * stringprep_4i - prepare internationalized string + * @ucs4: input/output array with string to prepare. + * @len: on input, length of input array with Unicode code points, + * on exit, length of output array with Unicode code points. + * @maxucs4len: maximum length of input/output array. + * @flags: a #Stringprep_profile_flags value, or 0. + * @profile: pointer to #Stringprep_profile to use. + * + * Prepare the input UCS-4 string according to the stringprep profile, + * and write back the result to the input string. + * + * The input is not required to be zero terminated (@ucs4[@len] = 0). + * The output will not be zero terminated unless @ucs4[@len] = 0. + * Instead, see stringprep_4zi() if your input is zero terminated or + * if you want the output to be. + * + * Since the stringprep operation can expand the string, @maxucs4len + * indicate how large the buffer holding the string is. This function + * will not read or write to code points outside that size. + * + * The @flags are one of #Stringprep_profile_flags values, or 0. + * + * The @profile contain the #Stringprep_profile instructions to + * perform. Your application can define new profiles, possibly + * re-using the generic stringprep tables that always will be part of + * the library, or use one of the currently supported profiles. + * + * Return value: Returns %STRINGPREP_OK iff successful, or an + * #Stringprep_rc error code. + **/ +int +stringprep_4i (uint32_t * ucs4, size_t * len, size_t maxucs4len, + Stringprep_profile_flags flags, + const Stringprep_profile * profile) +{ + size_t i, j; + ssize_t k; + size_t ucs4len = *len; + int rc; + + for (i = 0; profile[i].operation; i++) + { + switch (profile[i].operation) + { + case STRINGPREP_NFKC: + { + uint32_t *q = 0; + + if (UNAPPLICAPLEFLAGS (flags, profile[i].flags)) + break; + + if (flags & STRINGPREP_NO_NFKC && !profile[i].flags) + /* Profile requires NFKC, but callee asked for no NFKC. */ + return STRINGPREP_FLAG_ERROR; + + q = stringprep_ucs4_nfkc_normalize (ucs4, ucs4len); + if (!q) + return STRINGPREP_NFKC_FAILED; + + for (ucs4len = 0; q[ucs4len]; ucs4len++) + ; + + if (ucs4len >= maxucs4len) + { + free (q); + return STRINGPREP_TOO_SMALL_BUFFER; + } + + memcpy (ucs4, q, ucs4len * sizeof (ucs4[0])); + + free (q); + } + break; + + case STRINGPREP_PROHIBIT_TABLE: + k = stringprep_find_string_in_table (ucs4, ucs4len, + NULL, profile[i].table); + if (k != -1) + return STRINGPREP_CONTAINS_PROHIBITED; + break; + + case STRINGPREP_UNASSIGNED_TABLE: + if (UNAPPLICAPLEFLAGS (flags, profile[i].flags)) + break; + if (flags & STRINGPREP_NO_UNASSIGNED) + { + k = stringprep_find_string_in_table + (ucs4, ucs4len, NULL, profile[i].table); + if (k != -1) + return STRINGPREP_CONTAINS_UNASSIGNED; + } + break; + + case STRINGPREP_MAP_TABLE: + if (UNAPPLICAPLEFLAGS (flags, profile[i].flags)) + break; + rc = stringprep_apply_table_to_string + (ucs4, &ucs4len, maxucs4len, profile[i].table); + if (rc != STRINGPREP_OK) + return rc; + break; + + case STRINGPREP_BIDI_PROHIBIT_TABLE: + case STRINGPREP_BIDI_RAL_TABLE: + case STRINGPREP_BIDI_L_TABLE: + break; + + case STRINGPREP_BIDI: + { + int done_prohibited = 0; + int done_ral = 0; + int done_l = 0; + size_t contains_ral = SIZE_MAX; + size_t contains_l = SIZE_MAX; + + for (j = 0; profile[j].operation; j++) + if (profile[j].operation == STRINGPREP_BIDI_PROHIBIT_TABLE) + { + done_prohibited = 1; + k = stringprep_find_string_in_table (ucs4, ucs4len, + NULL, + profile[j].table); + if (k != -1) + return STRINGPREP_BIDI_CONTAINS_PROHIBITED; + } + else if (profile[j].operation == STRINGPREP_BIDI_RAL_TABLE) + { + done_ral = 1; + if (stringprep_find_string_in_table + (ucs4, ucs4len, NULL, profile[j].table) != -1) + contains_ral = j; + } + else if (profile[j].operation == STRINGPREP_BIDI_L_TABLE) + { + done_l = 1; + if (stringprep_find_string_in_table + (ucs4, ucs4len, NULL, profile[j].table) != -1) + contains_l = j; + } + + if (!done_prohibited || !done_ral || !done_l) + return STRINGPREP_PROFILE_ERROR; + + if (contains_ral != SIZE_MAX && contains_l != SIZE_MAX) + return STRINGPREP_BIDI_BOTH_L_AND_RAL; + + if (contains_ral != SIZE_MAX) + { + if (!(stringprep_find_character_in_table + (ucs4[0], profile[contains_ral].table) != -1 && + stringprep_find_character_in_table + (ucs4[ucs4len - 1], profile[contains_ral].table) != -1)) + return STRINGPREP_BIDI_LEADTRAIL_NOT_RAL; + } + } + break; + + default: + return STRINGPREP_PROFILE_ERROR; + break; + } + } + + *len = ucs4len; + + return STRINGPREP_OK; +} + +static int +stringprep_4zi_1 (uint32_t * ucs4, size_t ucs4len, size_t maxucs4len, + Stringprep_profile_flags flags, + const Stringprep_profile * profile) +{ + int rc; + + rc = stringprep_4i (ucs4, &ucs4len, maxucs4len, flags, profile); + if (rc != STRINGPREP_OK) + return rc; + + if (ucs4len >= maxucs4len) + return STRINGPREP_TOO_SMALL_BUFFER; + + ucs4[ucs4len] = 0; + + return STRINGPREP_OK; +} + +/** + * stringprep_4zi - prepare internationalized string + * @ucs4: input/output array with zero terminated string to prepare. + * @maxucs4len: maximum length of input/output array. + * @flags: a #Stringprep_profile_flags value, or 0. + * @profile: pointer to #Stringprep_profile to use. + * + * Prepare the input zero terminated UCS-4 string according to the + * stringprep profile, and write back the result to the input string. + * + * Since the stringprep operation can expand the string, @maxucs4len + * indicate how large the buffer holding the string is. This function + * will not read or write to code points outside that size. + * + * The @flags are one of #Stringprep_profile_flags values, or 0. + * + * The @profile contain the #Stringprep_profile instructions to + * perform. Your application can define new profiles, possibly + * re-using the generic stringprep tables that always will be part of + * the library, or use one of the currently supported profiles. + * + * Return value: Returns %STRINGPREP_OK iff successful, or an + * #Stringprep_rc error code. + **/ +int +stringprep_4zi (uint32_t * ucs4, size_t maxucs4len, + Stringprep_profile_flags flags, + const Stringprep_profile * profile) +{ + size_t ucs4len; + + for (ucs4len = 0; ucs4len < maxucs4len && ucs4[ucs4len] != 0; ucs4len++) + ; + + return stringprep_4zi_1 (ucs4, ucs4len, maxucs4len, flags, profile); +} + +/** + * stringprep - prepare internationalized string + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * @flags: a #Stringprep_profile_flags value, or 0. + * @profile: pointer to #Stringprep_profile to use. + * + * Prepare the input zero terminated UTF-8 string according to the + * stringprep profile, and write back the result to the input string. + * + * Note that you must convert strings entered in the systems locale + * into UTF-8 before using this function, see + * stringprep_locale_to_utf8(). + * + * Since the stringprep operation can expand the string, @maxlen + * indicate how large the buffer holding the string is. This function + * will not read or write to characters outside that size. + * + * The @flags are one of #Stringprep_profile_flags values, or 0. + * + * The @profile contain the #Stringprep_profile instructions to + * perform. Your application can define new profiles, possibly + * re-using the generic stringprep tables that always will be part of + * the library, or use one of the currently supported profiles. + * + * Return value: Returns %STRINGPREP_OK iff successful, or an error code. + **/ +int +stringprep (char *in, + size_t maxlen, + Stringprep_profile_flags flags, + const Stringprep_profile * profile) +{ + int rc; + char *utf8 = NULL; + uint32_t *ucs4 = NULL; + size_t ucs4len, maxucs4len, adducs4len = 50; + + do + { + uint32_t *newp; + + free (ucs4); + ucs4 = stringprep_utf8_to_ucs4 (in, -1, &ucs4len); + maxucs4len = ucs4len + adducs4len; + newp = realloc (ucs4, maxucs4len * sizeof (uint32_t)); + if (!newp) + { + free (ucs4); + return STRINGPREP_MALLOC_ERROR; + } + ucs4 = newp; + + rc = stringprep_4i (ucs4, &ucs4len, maxucs4len, flags, profile); + adducs4len += 50; + } + while (rc == STRINGPREP_TOO_SMALL_BUFFER); + if (rc != STRINGPREP_OK) + { + free (ucs4); + return rc; + } + + utf8 = stringprep_ucs4_to_utf8 (ucs4, ucs4len, 0, 0); + free (ucs4); + if (!utf8) + return STRINGPREP_MALLOC_ERROR; + + if (strlen (utf8) >= maxlen) + { + free (utf8); + return STRINGPREP_TOO_SMALL_BUFFER; + } + + strcpy (in, utf8); /* flawfinder: ignore */ + + free (utf8); + + return STRINGPREP_OK; +} + +/** + * stringprep_profile - prepare internationalized string + * @in: input array with UTF-8 string to prepare. + * @out: output variable with pointer to newly allocate string. + * @profile: name of stringprep profile to use. + * @flags: a #Stringprep_profile_flags value, or 0. + * + * Prepare the input zero terminated UTF-8 string according to the + * stringprep profile, and return the result in a newly allocated + * variable. + * + * Note that you must convert strings entered in the systems locale + * into UTF-8 before using this function, see + * stringprep_locale_to_utf8(). + * + * The output @out variable must be deallocated by the caller. + * + * The @flags are one of #Stringprep_profile_flags values, or 0. + * + * The @profile specifies the name of the stringprep profile to use. + * It must be one of the internally supported stringprep profiles. + * + * Return value: Returns %STRINGPREP_OK iff successful, or an error code. + **/ +int +stringprep_profile (const char *in, + char **out, + const char *profile, Stringprep_profile_flags flags) +{ + const Stringprep_profiles *p; + char *str = NULL; + size_t len = strlen (in) + 1; + int rc; + + for (p = &stringprep_profiles[0]; p->name; p++) + if (strcmp (p->name, profile) == 0) + break; + + if (!p || !p->name || !p->tables) + return STRINGPREP_UNKNOWN_PROFILE; + + do + { + free (str); + str = (char *) malloc (len); + if (str == NULL) + return STRINGPREP_MALLOC_ERROR; + + strcpy (str, in); + + rc = stringprep (str, len, flags, p->tables); + len += 50; + } + while (rc == STRINGPREP_TOO_SMALL_BUFFER); + + if (rc == STRINGPREP_OK) + *out = str; + else + free (str); + + return rc; +} + +/*! \mainpage GNU Internationalized Domain Name Library + * + * \section intro Introduction + * + * GNU Libidn is an implementation of the Stringprep, Punycode and IDNA + * specifications defined by the IETF Internationalized Domain Names + * (IDN) working group, used for internationalized domain names. The + * package is available under the GNU Lesser General Public License. + * + * The library contains a generic Stringprep implementation that does + * Unicode 3.2 NFKC normalization, mapping and prohibitation of + * characters, and bidirectional character handling. Profiles for + * Nameprep, iSCSI, SASL and XMPP are included. Punycode and ASCII + * Compatible Encoding (ACE) via IDNA are supported. A mechanism to + * define Top-Level Domain (TLD) specific validation tables, and to + * compare strings against those tables, is included. Default tables + * for some TLDs are also included. + * + * The Stringprep API consists of two main functions, one for + * converting data from the system's native representation into UTF-8, + * and one function to perform the Stringprep processing. Adding a + * new Stringprep profile for your application within the API is + * straightforward. The Punycode API consists of one encoding + * function and one decoding function. The IDNA API consists of the + * ToASCII and ToUnicode functions, as well as an high-level interface + * for converting entire domain names to and from the ACE encoded + * form. The TLD API consists of one set of functions to extract the + * TLD name from a domain string, one set of functions to locate the + * proper TLD table to use based on the TLD name, and core functions + * to validate a string against a TLD table, and some utility wrappers + * to perform all the steps in one call. + * + * The library is used by, e.g., GNU SASL and Shishi to process user + * names and passwords. Libidn can be built into GNU Libc to enable a + * new system-wide getaddrinfo() flag for IDN processing. + * + * Libidn is developed for the GNU/Linux system, but runs on over 20 Unix + * platforms (including Solaris, IRIX, AIX, and Tru64) and Windows. + * Libidn is written in C and (parts of) the API is accessible from C, + * C++, Emacs Lisp, Python and Java. + * + * The project web page:\n + * http://www.gnu.org/software/libidn/ + * + * The software archive:\n + * ftp://alpha.gnu.org/pub/gnu/libidn/ + * + * For more information see:\n + * http://www.ietf.org/html.charters/idn-charter.html\n + * http://www.ietf.org/rfc/rfc3454.txt (stringprep specification)\n + * http://www.ietf.org/rfc/rfc3490.txt (idna specification)\n + * http://www.ietf.org/rfc/rfc3491.txt (nameprep specification)\n + * http://www.ietf.org/rfc/rfc3492.txt (punycode specification)\n + * http://www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-string-prep-04.txt\n + * http://www.ietf.org/internet-drafts/draft-ietf-krb-wg-utf8-profile-01.txt\n + * http://www.ietf.org/internet-drafts/draft-ietf-sasl-anon-00.txt\n + * http://www.ietf.org/internet-drafts/draft-ietf-sasl-saslprep-00.txt\n + * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-nodeprep-01.txt\n + * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-resourceprep-01.txt\n + * + * Further information and paid contract development:\n + * Simon Josefsson <simon@josefsson.org> + * + * \section examples Examples + * + * \include example.c + * \include example3.c + * \include example4.c + * \include example5.c + */ + +/** + * STRINGPREP_VERSION + * + * String defined via CPP denoting the header file version number. + * Used together with stringprep_check_version() to verify header file + * and run-time library consistency. + */ + +/** + * STRINGPREP_MAX_MAP_CHARS + * + * Maximum number of code points that can replace a single code point, + * during stringprep mapping. + */ + +/** + * Stringprep_rc: + * @STRINGPREP_OK: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * @STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode + * code points, which is forbidden by the profile. + * @STRINGPREP_CONTAINS_PROHIBITED: String contain code points + * prohibited by the profile. + * @STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with + * conflicting bidirection category. + * @STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character + * in string not of proper bidirectional category. + * @STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code + * points detected by bidirectional code. + * @STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too + * small. This usually indicate a problem in the calling + * application. + * @STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent. + * This usually indicate an internal error in the library. + * @STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile. + * This usually indicate a problem in the calling application. + * @STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not + * known to the library. + * @STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed. This + * usually indicate an internal error in the library. + * @STRINGPREP_MALLOC_ERROR: The malloc() was out of memory. This is + * usually a fatal error. + * + * Enumerated return codes of stringprep(), stringprep_profile() + * functions (and macros using those functions). The value 0 is + * guaranteed to always correspond to success. + */ + +/** + * Stringprep_profile_flags: + * @STRINGPREP_NO_NFKC: Disable the NFKC normalization, as well as + * selecting the non-NFKC case folding tables. Usually the profile + * specifies BIDI and NFKC settings, and applications should not + * override it unless in special situations. + * @STRINGPREP_NO_BIDI: Disable the BIDI step. Usually the profile + * specifies BIDI and NFKC settings, and applications should not + * override it unless in special situations. + * @STRINGPREP_NO_UNASSIGNED: Make the library return with an error if + * string contains unassigned characters according to profile. + * + * Stringprep profile flags. + */ + +/** + * Stringprep_profile_steps: + * + * Various steps in the stringprep algorithm. You really want to + * study the source code to understand this one. Only useful if you + * want to add another profile. + */ + +/** + * stringprep_nameprep: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the nameprep profile. + * The AllowUnassigned flag is true, use + * stringprep_nameprep_no_unassigned() if you want a false + * AllowUnassigned. Returns 0 iff successful, or an error code. + **/ + +/** + * stringprep_nameprep_no_unassigned: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the nameprep profile. + * The AllowUnassigned flag is false, use stringprep_nameprep() for + * true AllowUnassigned. Returns 0 iff successful, or an error code. + **/ + +/** + * stringprep_iscsi: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the draft iSCSI + * stringprep profile. Returns 0 iff successful, or an error code. + **/ + +/** + * stringprep_plain: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the draft SASL + * ANONYMOUS profile. Returns 0 iff successful, or an error code. + **/ + +/** + * stringprep_xmpp_nodeprep: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the draft XMPP node + * identifier profile. Returns 0 iff successful, or an error code. + **/ + +/** + * stringprep_xmpp_resourceprep: + * @in: input/ouput array with string to prepare. + * @maxlen: maximum length of input/output array. + * + * Prepare the input UTF-8 string according to the draft XMPP resource + * identifier profile. Returns 0 iff successful, or an error code. + **/ diff --git a/lib/stringprep.h b/lib/stringprep.h new file mode 100644 index 0000000..bb3c71f --- /dev/null +++ b/lib/stringprep.h @@ -0,0 +1,231 @@ +/* stringprep.h --- Header file for stringprep functions. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef STRINGPREP_H +# define STRINGPREP_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +# include <stddef.h> /* size_t */ +# include <unistd.h> /* ssize_t */ +# include <idn-int.h> /* uint32_t */ + +# ifdef __cplusplus +extern "C" +{ +# endif + +# define STRINGPREP_VERSION "1.15" + +/* Error codes. */ + typedef enum + { + STRINGPREP_OK = 0, + /* Stringprep errors. */ + STRINGPREP_CONTAINS_UNASSIGNED = 1, + STRINGPREP_CONTAINS_PROHIBITED = 2, + STRINGPREP_BIDI_BOTH_L_AND_RAL = 3, + STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4, + STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5, + /* Error in calling application. */ + STRINGPREP_TOO_SMALL_BUFFER = 100, + STRINGPREP_PROFILE_ERROR = 101, + STRINGPREP_FLAG_ERROR = 102, + STRINGPREP_UNKNOWN_PROFILE = 103, + /* Internal errors. */ + STRINGPREP_NFKC_FAILED = 200, + STRINGPREP_MALLOC_ERROR = 201 + } Stringprep_rc; + +/* Flags used when calling stringprep(). */ + typedef enum + { + STRINGPREP_NO_NFKC = 1, + STRINGPREP_NO_BIDI = 2, + STRINGPREP_NO_UNASSIGNED = 4 + } Stringprep_profile_flags; + +/* Steps in a stringprep profile. */ + typedef enum + { + STRINGPREP_NFKC = 1, + STRINGPREP_BIDI = 2, + STRINGPREP_MAP_TABLE = 3, + STRINGPREP_UNASSIGNED_TABLE = 4, + STRINGPREP_PROHIBIT_TABLE = 5, + STRINGPREP_BIDI_PROHIBIT_TABLE = 6, + STRINGPREP_BIDI_RAL_TABLE = 7, + STRINGPREP_BIDI_L_TABLE = 8 + } Stringprep_profile_steps; + +# define STRINGPREP_MAX_MAP_CHARS 4 + + struct Stringprep_table_element + { + uint32_t start; + uint32_t end; /* 0 if only one character */ + uint32_t map[STRINGPREP_MAX_MAP_CHARS]; /* NULL if end is not 0 */ + }; + typedef struct Stringprep_table_element Stringprep_table_element; + + struct Stringprep_table + { + Stringprep_profile_steps operation; + Stringprep_profile_flags flags; + const Stringprep_table_element *table; + }; + typedef struct Stringprep_table Stringprep_profile; + + struct Stringprep_profiles + { + const char *name; + const Stringprep_profile *tables; + }; + typedef struct Stringprep_profiles Stringprep_profiles; + + extern IDNAPI const Stringprep_profiles stringprep_profiles[]; + +/* Profiles */ + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_A_1[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_1[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_2[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_3[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_1_1[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_1_2[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_2_1[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_2_2[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_3[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_4[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_5[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_6[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_7[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_8[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_9[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_D_1[]; + extern IDNAPI const Stringprep_table_element stringprep_rfc3454_D_2[]; + + /* Nameprep */ + + extern IDNAPI const Stringprep_profile stringprep_nameprep[]; + +# define stringprep_nameprep(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_nameprep) + +# define stringprep_nameprep_no_unassigned(in, maxlen) \ + stringprep(in, maxlen, STRINGPREP_NO_UNASSIGNED, stringprep_nameprep) + + /* SASL */ + + extern IDNAPI const Stringprep_profile stringprep_saslprep[]; + extern IDNAPI const Stringprep_profile stringprep_plain[]; + extern IDNAPI const Stringprep_profile stringprep_trace[]; + +# define stringprep_plain(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_plain) + + /* Kerberos */ + + extern IDNAPI const Stringprep_profile stringprep_kerberos5[]; + +# define stringprep_kerberos5(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_kerberos5) + + /* XMPP */ + + extern IDNAPI const Stringprep_profile stringprep_xmpp_nodeprep[]; + extern IDNAPI const Stringprep_profile stringprep_xmpp_resourceprep[]; + extern IDNAPI const Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[]; + +# define stringprep_xmpp_nodeprep(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_xmpp_nodeprep) +# define stringprep_xmpp_resourceprep(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_xmpp_resourceprep) + + /* iSCSI */ + + extern IDNAPI const Stringprep_profile stringprep_iscsi[]; + +# define stringprep_iscsi(in, maxlen) \ + stringprep(in, maxlen, 0, stringprep_iscsi) + + /* API */ + + extern IDNAPI int stringprep_4i (uint32_t * ucs4, size_t * len, + size_t maxucs4len, + Stringprep_profile_flags flags, + const Stringprep_profile * profile); + extern IDNAPI int stringprep_4zi (uint32_t * ucs4, size_t maxucs4len, + Stringprep_profile_flags flags, + const Stringprep_profile * profile); + extern IDNAPI int stringprep (char *in, size_t maxlen, + Stringprep_profile_flags flags, + const Stringprep_profile * profile); + + extern IDNAPI int stringprep_profile (const char *in, + char **out, + const char *profile, + Stringprep_profile_flags flags); + + extern IDNAPI const char *stringprep_strerror (Stringprep_rc rc); + + extern IDNAPI const char *stringprep_check_version (const char + *req_version); + +/* Utility */ + + extern IDNAPI int stringprep_unichar_to_utf8 (uint32_t c, char *outbuf); + extern IDNAPI uint32_t stringprep_utf8_to_unichar (const char *p); + + extern IDNAPI uint32_t *stringprep_utf8_to_ucs4 (const char *str, + ssize_t len, + size_t * items_written); + extern IDNAPI char *stringprep_ucs4_to_utf8 (const uint32_t * str, + ssize_t len, + size_t * items_read, + size_t * items_written); + + extern IDNAPI char *stringprep_utf8_nfkc_normalize (const char *str, + ssize_t len); + extern IDNAPI uint32_t *stringprep_ucs4_nfkc_normalize (uint32_t * str, + ssize_t len); + + extern IDNAPI const char *stringprep_locale_charset (void); + extern IDNAPI char *stringprep_convert (const char *str, + const char *to_codeset, + const char *from_codeset); + extern IDNAPI char *stringprep_locale_to_utf8 (const char *str); + extern IDNAPI char *stringprep_utf8_to_locale (const char *str); + +# ifdef __cplusplus +} +# endif + +#endif /* STRINGPREP_H */ diff --git a/lib/tld.c b/lib/tld.c new file mode 100644 index 0000000..d10a28e --- /dev/null +++ b/lib/tld.c @@ -0,0 +1,516 @@ +/* tld.c --- Handle TLD restriction checking. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. + * Copyright (C) 2003, 2004 Free Software Foundation, Inc. + * + * Author: Thomas Jacob, Internet24.de + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include <config.h> + +/* Get stringprep_utf8_to_ucs4, stringprep_locale_to_utf8. */ +#include <stringprep.h> + +/* Get strcmp(). */ +#include <string.h> + +/* Get specifications. */ +#include <tld.h> + +/* Array of built-in domain restriction structures. See tlds.c. */ +extern const Tld_table *_tld_tables[]; + +/** + * tld_get_table - get table for a TLD name in table + * @tld: TLD name (e.g. "com") as zero terminated ASCII byte string. + * @tables: Zero terminated array of #Tld_table info-structures for + * TLDs. + * + * Get the TLD table for a named TLD by searching through the given + * TLD table array. + * + * Return value: Return structure corresponding to TLD @tld by going + * thru @tables, or return %NULL if no such structure is found. + */ +const Tld_table * +tld_get_table (const char *tld, const Tld_table ** tables) +{ + const Tld_table **tldtable = NULL; + + if (!tld || !tables) + return NULL; + + for (tldtable = tables; *tldtable; tldtable++) + if (!strcmp ((*tldtable)->name, tld)) + return *tldtable; + + return NULL; +} + +/** + * tld_default_table - get table for a TLD name + * @tld: TLD name (e.g. "com") as zero terminated ASCII byte string. + * @overrides: Additional zero terminated array of #Tld_table + * info-structures for TLDs, or %NULL to only use library deault + * tables. + * + * Get the TLD table for a named TLD, using the internal defaults, + * possibly overrided by the (optional) supplied tables. + * + * Return value: Return structure corresponding to TLD @tld_str, first + * looking through @overrides then thru built-in list, or %NULL if + * no such structure found. + */ +const Tld_table * +tld_default_table (const char *tld, const Tld_table ** overrides) +{ + const Tld_table *tldtable = NULL; + + if (!tld) + return NULL; + + if (overrides) + tldtable = tld_get_table (tld, overrides); + + if (!tldtable) + tldtable = tld_get_table (tld, _tld_tables); + + return tldtable; +} + +#define DOTP(c) ((c) == 0x002E || (c) == 0x3002 || \ + (c) == 0xFF0E || (c) == 0xFF61) + +/** + * tld_get_4 - extract top level domain part in input Unicode string + * @in: Array of unicode code points to process. Does not need to be + * zero terminated. + * @inlen: Number of unicode code points. + * @out: Zero terminated ascii result string pointer. + * + * Isolate the top-level domain of @in and return it as an ASCII + * string in @out. + * + * Return value: Return %TLD_SUCCESS on success, or the corresponding + * #Tld_rc error code otherwise. + */ +int +tld_get_4 (const uint32_t * in, size_t inlen, char **out) +{ + const uint32_t *ipos; + size_t olen; + + *out = NULL; + if (!in || inlen == 0) + return TLD_NODATA; + + ipos = &in[inlen - 1]; + olen = 0; + /* Scan backwards for non(latin)letters. */ + while (ipos >= in && ((*ipos >= 0x41 && *ipos <= 0x5A) || + (*ipos >= 0x61 && *ipos <= 0x7A))) + ipos--, olen++; + + if (olen > 0 && DOTP (*ipos)) /* Found something that appears a TLD. */ + { + char *out_s = malloc (sizeof (char) * (olen + 1)); + char *opos = out_s; + + if (!opos) + return TLD_MALLOC_ERROR; + + ipos++; + /* Transcribe to lowercase ascii string. */ + for (; ipos < &in[inlen]; ipos++, opos++) + *opos = *ipos > 0x5A ? *ipos : *ipos + 0x20; + *opos = 0; + *out = out_s; + return TLD_SUCCESS; + } + + return TLD_NO_TLD; +} + +/** + * tld_get_4z - extract top level domain part in input Unicode string + * @in: Zero terminated array of unicode code points to process. + * @out: Zero terminated ascii result string pointer. + * + * Isolate the top-level domain of @in and return it as an ASCII + * string in @out. + * + * Return value: Return %TLD_SUCCESS on success, or the corresponding + * #Tld_rc error code otherwise. + */ +int +tld_get_4z (const uint32_t * in, char **out) +{ + const uint32_t *ipos = in; + + if (!in) + return TLD_NODATA; + + while (*ipos) + ipos++; + + return tld_get_4 (in, ipos - in, out); +} + +/** + * tld_get_z - extract top level domain part in input string + * @in: Zero terminated character array to process. + * @out: Zero terminated ascii result string pointer. + * + * Isolate the top-level domain of @in and return it as an ASCII + * string in @out. The input string @in may be UTF-8, ISO-8859-1 or + * any ASCII compatible character encoding. + * + * Return value: Return %TLD_SUCCESS on success, or the corresponding + * #Tld_rc error code otherwise. + */ +int +tld_get_z (const char *in, char **out) +{ + uint32_t *iucs; + size_t i, ilen; + int rc; + + ilen = strlen (in); + iucs = calloc (ilen, sizeof (*iucs)); + + if (!iucs) + return TLD_MALLOC_ERROR; + + for (i = 0; i < ilen; i++) + iucs[i] = in[i]; + + rc = tld_get_4 (iucs, ilen, out); + + free (iucs); + + return rc; +} + +/* + * tld_checkchar - verify that character is permitted + * @ch: 32 bit unicode character to check. + * @tld: A #Tld_table data structure to check @ch against. + * + * Verify if @ch is either in [a-z0-9-.] or mentioned as a valid + * character in @tld. + * + * Return value: Return the #Tld_rc value %TLD_SUCCESS if @ch is a + * valid character for the TLD @tld or if @tld is %NULL, + * %TLD_INVALID if @ch is invalid as defined by @tld. + */ +static int +_tld_checkchar (uint32_t ch, const Tld_table * tld) +{ + const Tld_table_element *s, *e, *m; + + if (!tld) + return TLD_SUCCESS; + + /* Check for [-a-z0-9.]. */ + if ((ch >= 0x61 && ch <= 0x7A) || + (ch >= 0x30 && ch <= 0x39) || ch == 0x2D || DOTP (ch)) + return TLD_SUCCESS; + + s = tld->valid; + e = s + tld->nvalid; + while (s < e) + { + m = s + ((e - s) >> 1); + if (ch < m->start) + e = m; + else if (ch > m->end) + s = m + 1; + else + return TLD_SUCCESS; + } + + return TLD_INVALID; +} + +/** + * tld_check_4t - verify that characters are permitted + * @in: Array of unicode code points to process. Does not need to be + * zero terminated. + * @inlen: Number of unicode code points. + * @errpos: Position of offending character is returned here. + * @tld: A #Tld_table data structure representing the restrictions for + * which the input should be tested. + * + * Test each of the code points in @in for whether or not + * they are allowed by the data structure in @tld, return + * the position of the first character for which this is not + * the case in @errpos. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code + * points are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_4t (const uint32_t * in, size_t inlen, size_t * errpos, + const Tld_table * tld) +{ + const uint32_t *ipos; + int rc; + + if (!tld) /* No data for TLD so everything is valid. */ + return TLD_SUCCESS; + + ipos = in; + while (ipos < &in[inlen]) + { + rc = _tld_checkchar (*ipos, tld); + if (rc != TLD_SUCCESS) + { + if (errpos) + *errpos = ipos - in; + return rc; + } + ipos++; + } + return TLD_SUCCESS; +} + +/** + * tld_check_4tz - verify that characters are permitted + * @in: Zero terminated array of unicode code points to process. + * @errpos: Position of offending character is returned here. + * @tld: A #Tld_table data structure representing the restrictions for + * which the input should be tested. + * + * Test each of the code points in @in for whether or not + * they are allowed by the data structure in @tld, return + * the position of the first character for which this is not + * the case in @errpos. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code + * points are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_4tz (const uint32_t * in, size_t * errpos, const Tld_table * tld) +{ + const uint32_t *ipos = in; + + if (!ipos) + return TLD_NODATA; + + while (*ipos) + ipos++; + + return tld_check_4t (in, ipos - in, errpos, tld); +} + +/** + * tld_check_4 - verify that characters are permitted + * @in: Array of unicode code points to process. Does not need to be + * zero terminated. + * @inlen: Number of unicode code points. + * @errpos: Position of offending character is returned here. + * @overrides: A #Tld_table array of additional domain restriction + * structures that complement and supersede the built-in information. + * + * Test each of the code points in @in for whether or not they are + * allowed by the information in @overrides or by the built-in TLD + * restriction data. When data for the same TLD is available both + * internally and in @overrides, the information in @overrides takes + * precedence. If several entries for a specific TLD are found, the + * first one is used. If @overrides is %NULL, only the built-in + * information is used. The position of the first offending character + * is returned in @errpos. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code + * points are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_4 (const uint32_t * in, size_t inlen, size_t * errpos, + const Tld_table ** overrides) +{ + const Tld_table *tld; + char *domain; + int rc; + + if (errpos) + *errpos = 0; + + /* Get TLD name. */ + rc = tld_get_4 (in, inlen, &domain); + + if (rc != TLD_SUCCESS) + { + if (rc == TLD_NO_TLD) /* No TLD, say OK */ + return TLD_SUCCESS; + else + return rc; + } + + /* Retrieve appropriate data structure. */ + tld = tld_default_table (domain, overrides); + free (domain); + + return tld_check_4t (in, inlen, errpos, tld); +} + +/** + * tld_check_4z - verify that characters are permitted + * @in: Zero-terminated array of unicode code points to process. + * @errpos: Position of offending character is returned here. + * @overrides: A #Tld_table array of additional domain restriction + * structures that complement and supersede the built-in information. + * + * Test each of the code points in @in for whether or not they are + * allowed by the information in @overrides or by the built-in TLD + * restriction data. When data for the same TLD is available both + * internally and in @overrides, the information in @overrides takes + * precedence. If several entries for a specific TLD are found, the + * first one is used. If @overrides is %NULL, only the built-in + * information is used. The position of the first offending character + * is returned in @errpos. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code + * points are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_4z (const uint32_t * in, size_t * errpos, + const Tld_table ** overrides) +{ + const uint32_t *ipos = in; + + if (!ipos) + return TLD_NODATA; + + while (*ipos) + ipos++; + + return tld_check_4 (in, ipos - in, errpos, overrides); +} + +/** + * tld_check_8z - verify that characters are permitted + * @in: Zero-terminated UTF8 string to process. + * @errpos: Position of offending character is returned here. + * @overrides: A #Tld_table array of additional domain restriction + * structures that complement and supersede the built-in information. + * + * Test each of the characters in @in for whether or not they are + * allowed by the information in @overrides or by the built-in TLD + * restriction data. When data for the same TLD is available both + * internally and in @overrides, the information in @overrides takes + * precedence. If several entries for a specific TLD are found, the + * first one is used. If @overrides is %NULL, only the built-in + * information is used. The position of the first offending character + * is returned in @errpos. Note that the error position refers to the + * decoded character offset rather than the byte position in the + * string. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all + * characters are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_8z (const char *in, size_t * errpos, const Tld_table ** overrides) +{ + uint32_t *iucs; + size_t ilen; + int rc; + + if (!in) + return TLD_NODATA; + + iucs = stringprep_utf8_to_ucs4 (in, -1, &ilen); + + if (!iucs) + return TLD_MALLOC_ERROR; + + rc = tld_check_4 (iucs, ilen, errpos, overrides); + + free (iucs); + + return rc; +} + +/** + * tld_check_lz - verify that characters are permitted + * @in: Zero-terminated string in the current locales encoding to process. + * @errpos: Position of offending character is returned here. + * @overrides: A #Tld_table array of additional domain restriction + * structures that complement and supersede the built-in information. + * + * Test each of the characters in @in for whether or not they are + * allowed by the information in @overrides or by the built-in TLD + * restriction data. When data for the same TLD is available both + * internally and in @overrides, the information in @overrides takes + * precedence. If several entries for a specific TLD are found, the + * first one is used. If @overrides is %NULL, only the built-in + * information is used. The position of the first offending character + * is returned in @errpos. Note that the error position refers to the + * decoded character offset rather than the byte position in the + * string. + * + * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all + * characters are valid or when @tld is null, %TLD_INVALID if a + * character is not allowed, or additional error codes on general + * failure conditions. + */ +int +tld_check_lz (const char *in, size_t * errpos, const Tld_table ** overrides) +{ + char *utf8; + int rc; + + if (!in) + return TLD_NODATA; + + utf8 = stringprep_locale_to_utf8 (in); + if (!utf8) + return TLD_ICONV_ERROR; + + + rc = tld_check_8z (utf8, errpos, overrides); + + free (utf8); + + return rc; +} + +/** + * Tld_rc: + * @TLD_SUCCESS: Successful operation. This value is guaranteed to + * always be zero, the remaining ones are only guaranteed to hold + * non-zero values, for logical comparison purposes. + * @TLD_INVALID: Invalid character found. + * @TLD_NODATA: No input data was provided. + * @TLD_MALLOC_ERROR: Error during memory allocation. + * @TLD_ICONV_ERROR: Error during iconv string conversion. + * @TLD_NO_TLD: No top-level domain found in domain string. + * + * Enumerated return codes of the TLD checking functions. + * The value 0 is guaranteed to always correspond to success. + */ diff --git a/lib/tld.h b/lib/tld.h new file mode 100644 index 0000000..beaad8f --- /dev/null +++ b/lib/tld.h @@ -0,0 +1,127 @@ +/* tld.h --- Declarations for TLD restriction checking. + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. + * Copyright (C) 2003, 2004 Free Software Foundation, Inc. + * + * Author: Thomas Jacob, Internet24.de + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef TLD_H +# define TLD_H + +# ifndef IDNAPI +# if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY +# define IDNAPI __attribute__((__visibility__("default"))) +# elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllexport) +# elif defined _MSC_VER && ! defined LIBIDN_STATIC +# define IDNAPI __declspec(dllimport) +# else +# define IDNAPI +# endif +# endif + +# ifdef __cplusplus +extern "C" +{ +# endif + + /* Get size_t. */ +# include <stdlib.h> + + /* Get uint32_t. */ +# include <idn-int.h> + + /* Interval of valid code points in the TLD. */ + struct Tld_table_element + { + uint32_t start; /* Start of range. */ + uint32_t end; /* End of range, end == start if single. */ + }; + typedef struct Tld_table_element Tld_table_element; + + /* List valid code points in a TLD. */ + struct Tld_table + { + const char *name; /* TLD name, e.g., "no". */ + const char *version; /* Version string from TLD file. */ + size_t nvalid; /* Number of entries in data. */ + const Tld_table_element *valid; /* Sorted array of valid code points. */ + }; + typedef struct Tld_table Tld_table; + + /* Error codes. */ + typedef enum + { + TLD_SUCCESS = 0, + TLD_INVALID = 1, /* Invalid character found. */ + TLD_NODATA = 2, /* Char, domain or inlen = 0. */ + TLD_MALLOC_ERROR = 3, + TLD_ICONV_ERROR = 4, + TLD_NO_TLD = 5, + /* Workaround typo in earlier versions. */ + TLD_NOTLD = TLD_NO_TLD + } Tld_rc; + + extern IDNAPI const char *tld_strerror (Tld_rc rc); + + /* Extract TLD, as ASCII string, of UCS4 domain name into "out". */ + extern IDNAPI int tld_get_4 (const uint32_t * in, size_t inlen, + char **out); + extern IDNAPI int tld_get_4z (const uint32_t * in, char **out); + extern IDNAPI int tld_get_z (const char *in, char **out); + + /* Return structure corresponding to the named TLD from specified + * list of TLD tables, or return NULL if no matching TLD can be + * found. */ + extern IDNAPI const Tld_table *tld_get_table (const char *tld, + const Tld_table ** tables); + + /* Return structure corresponding to the named TLD, first looking + * thru overrides then thru built-in list, or return NULL if no + * matching TLD can be found. */ + extern IDNAPI const Tld_table * tld_default_table (const char *tld, + const Tld_table ** overrides); + + /* Check NAMEPREPPED domain name for valid characters as defined by + * the relevant registering body (plus [a-z0-9.-]). If error is + * TLD_INVALID, set errpos to position of offending character. */ + extern IDNAPI int tld_check_4t (const uint32_t * in, size_t inlen, + size_t * errpos, const Tld_table * tld); + extern IDNAPI int tld_check_4tz (const uint32_t * in, size_t * errpos, + const Tld_table * tld); + + /* Utility interfaces that uses tld_get_4* to find TLD of string, + then tld_default_table (with overrides) to find proper TLD table + for the string, and then hands over to tld_check_4t*. */ + extern IDNAPI int tld_check_4 (const uint32_t * in, size_t inlen, + size_t * errpos, + const Tld_table ** overrides); + extern IDNAPI int tld_check_4z (const uint32_t * in, size_t * errpos, + const Tld_table ** overrides); + extern IDNAPI int tld_check_8z (const char *in, size_t * errpos, + const Tld_table ** overrides); + extern IDNAPI int tld_check_lz (const char *in, size_t * errpos, + const Tld_table ** overrides); + +# ifdef __cplusplus +} +# endif + +#endif /* TLD_H */ diff --git a/lib/tlds.c b/lib/tlds.c new file mode 100644 index 0000000..14263a4 --- /dev/null +++ b/lib/tlds.c @@ -0,0 +1,63 @@ +/* This file is automatically generated. DO NOT EDIT! + Instead, edit gen-tld-tables.pl and re-run. */ + +#include "tld.h" + +/* TLD fr */ +static const Tld_table_element _tld_fr_valid[] = +{ + { 0x2d, 0x2d }, + { 0x30, 0x39 }, + { 0x61, 0x7a }, + { 0xe0, 0xe0 }, + { 0xe2, 0xe2 }, + { 0xe6, 0xeb }, + { 0xee, 0xef }, + { 0xf4, 0xf4 }, + { 0xf9, 0xf9 }, + { 0xfb, 0xfc }, + { 0xff, 0xff }, + { 0x153, 0x153 } +}; + +static const Tld_table _tld_fr = +{ + "fr", + "1.0", + 12, + &_tld_fr_valid[0] +}; + +/* TLD no */ +static const Tld_table_element _tld_no_valid[] = +{ + { 0xe0, 0xe1 }, + { 0xe4, 0xea }, + { 0xf1, 0xf4 }, + { 0xf6, 0xf6 }, + { 0xf8, 0xf8 }, + { 0xfc, 0xfc }, + { 0x10d, 0x10d }, + { 0x111, 0x111 }, + { 0x144, 0x144 }, + { 0x14b, 0x14b }, + { 0x161, 0x161 }, + { 0x167, 0x167 }, + { 0x17e, 0x17e } +}; + +static const Tld_table _tld_no = +{ + "no", + "1.0", + 13, + &_tld_no_valid[0] +}; + +/* Main array */ +const Tld_table * _tld_tables[] = +{ + &_tld_fr, + &_tld_no, + NULL +}; diff --git a/lib/toutf8.c b/lib/toutf8.c new file mode 100644 index 0000000..ee47005 --- /dev/null +++ b/lib/toutf8.c @@ -0,0 +1,154 @@ +/* toutf8.c --- Convert strings from system locale into UTF-8. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +/* Get prototypes. */ +#include "stringprep.h" + +/* Get fprintf. */ +#include <stdio.h> + +/* Get getenv. */ +#include <stdlib.h> + +/* Get strlen. */ +#include <string.h> + +/* Get iconv_string. */ +#include "striconv.h" + +#ifdef _LIBC +# define HAVE_ICONV 1 +# define HAVE_LOCALE_H 1 +# define HAVE_LANGINFO_CODESET 1 +#endif + +#include <locale.h> + +#ifdef HAVE_LANGINFO_CODESET +# include <langinfo.h> +#endif + +#ifdef _LIBC +# define stringprep_locale_charset() nl_langinfo (CODESET) +#else +/** + * stringprep_locale_charset - return charset used in current locale + * + * Find out current locale charset. The function respect the CHARSET + * environment variable, but typically uses nl_langinfo(CODESET) when + * it is supported. It fall back on "ASCII" if CHARSET isn't set and + * nl_langinfo isn't supported or return anything. + * + * Note that this function return the application's locale's preferred + * charset (or thread's locale's preffered charset, if your system + * support thread-specific locales). It does not return what the + * system may be using. Thus, if you receive data from external + * sources you cannot in general use this function to guess what + * charset it is encoded in. Use stringprep_convert from the external + * representation into the charset returned by this function, to have + * data in the locale encoding. + * + * Return value: Return the character set used by the current locale. + * It will never return NULL, but use "ASCII" as a fallback. + **/ +const char * +stringprep_locale_charset (void) +{ + const char *charset = getenv ("CHARSET"); /* flawfinder: ignore */ + + if (charset && *charset) + return charset; + +# ifdef HAVE_LANGINFO_CODESET + charset = nl_langinfo (CODESET); + + if (charset && *charset) + return charset; +# endif + + return "ASCII"; +} +#endif + +/** + * stringprep_convert - encode string using new character set + * @str: input zero-terminated string. + * @to_codeset: name of destination character set. + * @from_codeset: name of origin character set, as used by @str. + * + * Convert the string from one character set to another using the + * system's iconv() function. + * + * Return value: Returns newly allocated zero-terminated string which + * is @str transcoded into to_codeset. + **/ +char * +stringprep_convert (const char *str, + const char *to_codeset, const char *from_codeset) +{ +#if HAVE_ICONV + return str_iconv (str, from_codeset, to_codeset); +#else + char *p; + fprintf (stderr, "libidn: warning: libiconv not installed, cannot " + "convert data to UTF-8\n"); + p = malloc (strlen (str) + 1); + if (!p) + return NULL; + return strcpy (p, str); +#endif +} + +/** + * stringprep_locale_to_utf8 - convert locale encoded string to UTF-8 + * @str: input zero terminated string. + * + * Convert string encoded in the locale's character set into UTF-8 by + * using stringprep_convert(). + * + * Return value: Returns newly allocated zero-terminated string which + * is @str transcoded into UTF-8. + **/ +char * +stringprep_locale_to_utf8 (const char *str) +{ + return stringprep_convert (str, "UTF-8", stringprep_locale_charset ()); +} + +/** + * stringprep_utf8_to_locale - encode UTF-8 string to locale encoding + * @str: input zero terminated string. + * + * Convert string encoded in UTF-8 into the locale's character set by + * using stringprep_convert(). + * + * Return value: Returns newly allocated zero-terminated string which + * is @str transcoded into the locale's character set. + **/ +char * +stringprep_utf8_to_locale (const char *str) +{ + return stringprep_convert (str, stringprep_locale_charset (), "UTF-8"); +} diff --git a/lib/version.c b/lib/version.c new file mode 100644 index 0000000..999d7d0 --- /dev/null +++ b/lib/version.c @@ -0,0 +1,49 @@ +/* version.c --- Version handling. + * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file 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 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "stringprep.h" + +#include <string.h> /* for strverscmp */ + +/** + * stringprep_check_version - check for library version + * @req_version: Required version number, or NULL. + * + * Check that the version of the library is at minimum the requested one + * and return the version string; return NULL if the condition is not + * satisfied. If a NULL is passed to this function, no check is done, + * but the version string is simply returned. + * + * See %STRINGPREP_VERSION for a suitable @req_version string. + * + * Return value: Version string of run-time library, or NULL if the + * run-time library does not meet the required version number. + */ +const char * +stringprep_check_version (const char *req_version) +{ + if (!req_version || strverscmp (req_version, STRINGPREP_VERSION) <= 0) + return STRINGPREP_VERSION; + + return NULL; +} diff --git a/libc/README b/libc/README new file mode 100644 index 0000000..d57412e --- /dev/null +++ b/libc/README @@ -0,0 +1,31 @@ +Libidn libc/README -- Instructions for building as a GNU Libc add-on. +Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +See the end for copying conditions. + +GNU Libidn is now part of GNU Libc, so the stand-alone patch and +instructions that were distributed here before has been removed. + +See getaddrinfo-idn.txt for the write-up of the API that is used in +Libc. + +Simply build Libc as you would normally, but specify "libidn" as an +add-on, as in --enable-add-ons=libidn to configure. + +Once installed, you may build and run the sample still distributed in +this directory, perhaps as follows: + +$ gcc -o example example.c -L/usr/local/glibc/lib -Wl,-rpath,/usr/local/glibc/lib -nostdinc -I/usr/local/glibc/include -I/usr/include -I/usr/lib/gcc-lib/i386-linux/2.95.4/include +$ CHARSET=iso-8859-1 ./example +locale charset `iso-8859-1' +gettaddrinfo(räksmörgås.josefsson.org): +address `217.13.230.178' +canonical name `178.230.13.217.in-addr.dgcsystems.net' +$ + +Internally the domain name xn--rksmrgs-5wao1o.josefsson.org is looked +up in DNS. + +---------------------------------------------------------------------- +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/libc/example.c b/libc/example.c new file mode 100644 index 0000000..02c9bcb --- /dev/null +++ b/libc/example.c @@ -0,0 +1,75 @@ +/* example.c --- Example code showing how to use IDN enabled getaddrinfo(). + * Copyright (C) 2003, 2004 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * GNU Libidn 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. + * + * GNU Libidn 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 GNU Libidn; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#define _GNU_SOURCE 1 +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <locale.h> /* setlocale() */ + +/* + * Compiling against IDN enabled Libc: + * + * $ gcc -o example example.c -L/usr/local/glibc/lib -Wl,-rpath,/usr/local/glibc/lib -nostdinc -I/usr/local/glibc/include -I/usr/include -I/usr/lib/gcc-lib/i486-linux/3.3.3/include + * $ CHARSET=iso-8859-1 ./example + * locale charset `iso-8859-1' + * gettaddrinfo(räksmörgås.josefsson.org): + * address `217.13.230.178' + * canonical name `178.230.13.217.in-addr.dgcsystems.net' + * $ + * + * Internally the name iesg--rksmrgsa-0zap8p.josefsson.org is looked + * up in DNS. + */ + +int +main(int argc, char *argv[]) +{ + char *in = argc > 1 ? argv[1] : "räksmörgås.josefsson.org"; + struct addrinfo hints; + struct addrinfo *res = NULL; + int rc; + + setlocale (LC_ALL, ""); + + //printf("locale charset `%s'\n", stringprep_locale_charset()); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME|AI_IDN; + + printf("gettaddrinfo(%s):\n", in); + rc = getaddrinfo(in, NULL, &hints, &res); + if (rc) + printf("gai err %d: %s\n", rc, gai_strerror(rc)); + else if (res) + printf("address `%s'\ncanonical name `%s'\n", + res->ai_addr ? + /* FIXME: Use inet_ntop, so it works for IPv6 too. */ + inet_ntoa(((struct sockaddr_in*)res->ai_addr)->sin_addr) : "ERROR", + res->ai_canonname ? res->ai_canonname : "ERROR"); + else + printf("Bad magic\n"); + + return 0; +} diff --git a/libc/getaddrinfo-idn.txt b/libc/getaddrinfo-idn.txt new file mode 100644 index 0000000..73705d6 --- /dev/null +++ b/libc/getaddrinfo-idn.txt @@ -0,0 +1,117 @@ +Libidn getaddrinfo-idn.txt -- Proposal for IDN support in POSIX getaddrinfo. +Copyright (C) 2003, 2004 Simon Josefsson +See the end for copying conditions. + +Background +---------- + +Libidn is a package for internationalized string handling based on the +Stringprep, Punycode and Internationalized Domain Names in +Applications (IDNA) specifications. It can be used by applications +directly by linking to it, as is done by, e.g., Gnus, KDE, and Mutt. + +Having each and every application link with and perform its own IDN +handling is not a good idea. It bloats the code and makes things +unnecessarily complex. Only few applications, such as web browsers +and mail clients, will need to do this in the future, to provide good +user interfaces for internationalization. + +See http://josefsson.org/libidn/ for more information. + +Alternative Approaches +---------------------- + +There are implementation that modify gethostbyname() to accept UTF-8 +strings and perform the IDNA ToASCII operation within gethostbyname(). + +There are even implementations that assume gethostbyname (on the +client host) perform no validation of the string and will send UTF-8 +strings out to the DNS server, and perform the IDN-conversion on the +DNS server. + +Some doubts can be raised whether this is an approach that is likely +to be standardized. It also lack in functionality: it only provide +black-box ToASCII functionality. The application cannot extract the +output from the ToASCII operation. More important, there is no way to +perform a ToUnicode operation that applications may want to use for +display purposes. Furthermore, while the first can support locale +specific character sets (e.g., ISO-8859-1), the second approach is +bound to either guess the character set, or always use UTF-8. + +See also the thread rooted in <iluel7n6bmu.fsf@latte.josefsson.org> +posted to libc-alpha@sources.redhat.com on 08 Jan 2003. + +What I propose +-------------- + +The getaddrinfo() API should have two new flags, AI_IDN and +AI_CANONIDN. Roughly they correspond to IDNA ToASCII and IDNA +ToUnicode, but there are several details. Note that strings are still +'char*', i.e. it does not use the "wide" character type, and that the +encoding of non-ASCII strings are the current locale's character set +(i.e., nl_langinfo(CODESET)). + +An application that uses AI_IDN signal to the getaddrinfo() +implementation that the input host name may be non-ASCII and that the +appropriate IDNA ToASCII steps should be carried out on the input, and +the output from the ToASCII operation (if any) should be used in the +lookup using the current resolver processing. + +An application that uses AI_CANONIDN signal to the getaddrinfo() +implementation that the input host name should be put through the IDNA +ToUnicode steps, and the output of that placed in the 'ai_canonname' +field of the resulting structure. Normal resolver processing applies +to the input string, of course. + +Consequently, an application that uses AI_IDN|AI_CANONIDN signal to +the getaddrinfo() implementation that the input host name may be +non-ASCII and should be put through the IDNA ToASCII steps before run +through the resolver, and that the input string should also be run +through the IDNA ToUnicode steps and the output of that placed in the +'ai_canonname' field. + +The semantics of AI_CANONNAME|AI_CANONIDN is that instead of running +the ToUnicode IDNA steps on the input string, the canonical host name +as returned by the resolver for the input string should be used in the +ToUnicode IDNA step. + +Details +------- + +Four new flags has been proposed; AI_IDN_ALLOW_UNASSIGNED, +AI_IDN_USE_STD3_ASCII_RULES for getaddrinfo, and +NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES for getnameinfo. +The implementation is simple, if specified those flag will set the +appropriate flag in the call to the IDNA functions. See the RFC for +the meaning of those flags. + +Status +------ + +The AI_IDN flag has been implemented and shipped as a proof-of-concept +patch for GNU Libc with GNU Libidn since January 2003. Binary libc +packages with the patch exists for (at least) two GNU/Linux +distributions. The AI_CANONIDN flag is not yet implemented. + +As of March 2004, Libidn has been integrated as an add-on in the GNU +Libc CVS repository. The AI_CANONIDN flag has been implemented. The +AllowUnassigned and UseSTD3ASCIIRules flags were added. + +Future +------ + +Allow non-ASCII in gethostname (and similar functions), if +administrator has supplied, e.g., 'option idn' in /etc/resolv.conf? + +Feedback +-------- + +This document is a work-in-progress and the details may change. +Contact me at simon@josefsson.org to discuss changes. + +---------------------------------------------------------------------- +Permission is granted to anyone to make or distribute verbatim copies +of this document, in any medium, provided that the copyright notice +and permission notice are preserved, and that the distributor grants +the recipient permission for further redistribution as permitted by +this notice. Modified versions may not be made. diff --git a/libidn.pc.in b/libidn.pc.in new file mode 100644 index 0000000..7cf0022 --- /dev/null +++ b/libidn.pc.in @@ -0,0 +1,22 @@ +# Process this file with autoconf to produce a pkg-config metadata file. +# Copyright 2002, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This file 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. + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Libidn +Description: IETF stringprep, nameprep, punycode, IDNA text processing. +URL: http://www.gnu.org/software/libidn/ +Version: @VERSION@ +Libs: -L${libdir} -lidn +Cflags: -I${includedir} diff --git a/m4/ac_prog_jar.m4 b/m4/ac_prog_jar.m4 new file mode 100644 index 0000000..7d5df71 --- /dev/null +++ b/m4/ac_prog_jar.m4 @@ -0,0 +1,13 @@ +dnl Available from the GNU Autoconf Macro Archive at: +dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_prog_jar.html +dnl +AC_DEFUN([AC_PROG_JAR],[ +AC_REQUIRE([AC_EXEEXT])dnl +if test "x$JAVAPREFIX" = x; then + test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar$EXEEXT) +else + test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar, $JAVAPREFIX) +fi +test "x$JAR" = x && AC_MSG_ERROR([no acceptable jar program found in \$PATH]) +AC_PROVIDE([$0])dnl +]) diff --git a/m4/codeset.m4 b/m4/codeset.m4 new file mode 100644 index 0000000..223955b --- /dev/null +++ b/m4/codeset.m4 @@ -0,0 +1,21 @@ +# codeset.m4 serial 2 (gettext-0.16) +dnl Copyright (C) 2000-2002, 2006 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 From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include <langinfo.h>], + [char* cs = nl_langinfo(CODESET); return !cs;], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 new file mode 100644 index 0000000..c9ae1f7 --- /dev/null +++ b/m4/gettext.m4 @@ -0,0 +1,381 @@ +# gettext.m4 serial 60 (gettext-0.17) +dnl Copyright (C) 1995-2007 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/gtk-doc.m4 b/m4/gtk-doc.m4 new file mode 100644 index 0000000..ef01a82 --- /dev/null +++ b/m4/gtk-doc.m4 @@ -0,0 +1,61 @@ +dnl -*- mode: autoconf -*- + +# serial 1 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + dnl check for tools we added during development + AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + if test x$enable_gtk_doc = xyes; then + ifelse([$1],[], + [PKG_CHECK_EXISTS([gtk-doc],, + AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], + [PKG_CHECK_EXISTS([gtk-doc >= $1],, + AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) + fi + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -n "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/m4/iconv.m4 b/m4/iconv.m4 new file mode 100644 index 0000000..66bc76f --- /dev/null +++ b/m4/iconv.m4 @@ -0,0 +1,180 @@ +# iconv.m4 serial AM6 (gettext-0.17) +dnl Copyright (C) 2000-2002, 2007 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 From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ + dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include <iconv.h> +#include <string.h> +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <iconv.h> +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 new file mode 100644 index 0000000..d3f0d90 --- /dev/null +++ b/m4/intlmacosx.m4 @@ -0,0 +1,51 @@ +# intlmacosx.m4 serial 1 (gettext-0.17) +dnl Copyright (C) 2004-2007 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 0000000..96c4e2c --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 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 Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + acl_cv_prog_gnu_ld=yes ;; +*) + acl_cv_prog_gnu_ld=no ;; +esac]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_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 +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + 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 + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_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 + acl_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. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_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_LIB_PROG_LD_GNU +]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 new file mode 100644 index 0000000..e3d26fc --- /dev/null +++ b/m4/lib-link.m4 @@ -0,0 +1,709 @@ +# lib-link.m4 serial 13 (gettext-0.17) +dnl Copyright (C) 2001-2007 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 From Bruno Haible. + +AC_PREREQ(2.54) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl Autoconf >= 2.61 supports dots in --with options. + define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], +[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + LIB[]NAME[]_PREFIX="$basedir" + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 0000000..a8684e1 --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,185 @@ +# lib-prefix.m4 serial 5 (gettext-0.15) +dnl Copyright (C) 2001-2005 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 From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing +dnl the basename of the libdir, either "lib" or "lib64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. The current + dnl practice is that on a system supporting 32-bit and 64-bit instruction + dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit + dnl libraries go under $prefix/lib. We determine the compiler's default + dnl mode by looking at the compiler's library search path. If at least + dnl of its elements ends in /lib64 or points to a directory whose absolute + dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the + dnl default, namely "lib". + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi +]) diff --git a/m4/libtool.m4 b/m4/libtool.m4 new file mode 100644 index 0000000..39ba996 --- /dev/null +++ b/m4/libtool.m4 @@ -0,0 +1,7357 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl +_LT_PROG_ECHO_BACKSLASH + +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 + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +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' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\[$]0 --fallback-echo"')dnl " + lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` + ;; +esac + +_LT_OUTPUT_LIBTOOL_INIT +]) + + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +cat >"$CONFIG_LT" <<_LTEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. + +lt_cl_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AS_SHELL_SANITIZE +_AS_PREPARE + +exec AS_MESSAGE_FD>&1 +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to <bug-libtool@gnu.org>." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +if test "$no_create" != yes; then + lt_cl_success=: + test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" + exec AS_MESSAGE_LOG_FD>/dev/null + $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false + exec AS_MESSAGE_LOG_FD>>config.log + $lt_cl_success || AS_EXIT(1) +fi +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# 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 +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # 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? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_SHELL_INIT + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[_LT_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +ECHO=${lt_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 <<_LT_EOF +[$]* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + 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 && + { 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' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # 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. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_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' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "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 configure 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' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "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 echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "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-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(lt_ECHO) +]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], + [An echo program that does not interpret backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + 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_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + 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 + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + 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 +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + 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 + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != 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 "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; 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 +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +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" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) 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. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + 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' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + 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" + # 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* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + 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}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + 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" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$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.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[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]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&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 + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname 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(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_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]) +_LT_PATH_LD_GNU +AC_SUBST([LD]) + +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) +])# LT_PATH_LD + +# Old names: +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_LD], []) +dnl AC_DEFUN([AC_PROG_LD], []) + + +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_DECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_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 extended 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. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_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]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_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 + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# 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]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && 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 $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp 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'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # 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. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&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. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=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 + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # 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. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=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*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='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 $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + 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 + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_PROG_CXX +# ------------ +# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +# compiler, we have our own version here. +m4_defun([_LT_PROG_CXX], +[ +pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +AC_PROG_CXX +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_CXX + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_CXX], []) + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[AC_REQUIRE([_LT_PROG_CXX])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=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 + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_PROG_F77 +# ------------ +# Since AC_PROG_F77 is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_F77], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +AC_PROG_F77 +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_F77 + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_F77], []) + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_REQUIRE([_LT_PROG_F77])dnl +AC_LANG_PUSH(Fortran 77) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + 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 + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_PROG_FC +# ----------- +# Since AC_PROG_FC is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_FC], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +AC_PROG_FC +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_FC + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_FC], []) + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_REQUIRE([_LT_PROG_FC])dnl +AC_LANG_PUSH(Fortran) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + 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 + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) diff --git a/m4/longlong.m4 b/m4/longlong.m4 new file mode 100644 index 0000000..a72e53b --- /dev/null +++ b/m4/longlong.m4 @@ -0,0 +1,109 @@ +# longlong.m4 serial 13 +dnl Copyright (C) 1999-2007 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 From Paul Eggert. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug isn't important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include <limits.h> + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [ac_cv_type_long_long_int=yes], + [ac_cv_type_long_long_int=no], + [ac_cv_type_long_long_int=yes])], + [ac_cv_type_long_long_int=no])]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], 1, + [Define to 1 if the system has the type `long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [ac_cv_type_unsigned_long_long_int=yes], + [ac_cv_type_unsigned_long_long_int=no])]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], 1, + [Define to 1 if the system has the type `unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* Test preprocessor. */ + #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + error in preprocessor; + #endif + #if ! (18446744073709551615ULL <= -1ull) + error in preprocessor; + #endif + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 new file mode 100644 index 0000000..34151a3 --- /dev/null +++ b/m4/ltoptions.m4 @@ -0,0 +1,368 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file 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. + +# serial 6 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [0], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [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. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file 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. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 new file mode 100644 index 0000000..b8e154f --- /dev/null +++ b/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file 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. + +# Generated from ltversion.in. + +# serial 3012 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.6]) +m4_define([LT_PACKAGE_REVISION], [1.3012]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.6' +macro_revision='1.3012' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 new file mode 100644 index 0000000..637bb20 --- /dev/null +++ b/m4/lt~obsolete.m4 @@ -0,0 +1,92 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file 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. + +# serial 4 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 0000000..7967cc2 --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,31 @@ +# nls.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 1995-2003, 2005-2006 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) diff --git a/m4/pkg.m4 b/m4/pkg.m4 new file mode 100644 index 0000000..0048a3f --- /dev/null +++ b/m4/pkg.m4 @@ -0,0 +1,157 @@ +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +# +# 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. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to PKG_CHECK_MODULES, make sure that the first instance of +# this or PKG_CHECK_MODULES is called, or make sure to call +# PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_ifval([$2], [$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$PKG_CONFIG"; then + if test -n "$$1"; then + pkg_cv_[]$1="$$1" + else + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + fi +else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$4], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT +])], + [AC_MSG_RESULT([no]) + $4]) +elif test $pkg_failed = untried; then + ifelse([$4], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])], + [$4]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$3], , :, [$3]) +fi[]dnl +])# PKG_CHECK_MODULES diff --git a/m4/po.m4 b/m4/po.m4 new file mode 100644 index 0000000..0734762 --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,449 @@ +# po.m4 serial 15 (gettext-0.17) +dnl Copyright (C) 1995-2007 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat <<EOT +$* +EOT + } + gt_echo='echo_func' + fi + fi + + # A sed script that extracts the value of VARIABLE from a Makefile. + sed_x_variable=' +# Test if the hold space is empty. +x +s/P/P/ +x +ta +# Yes it was empty. Look if we have the expected variable definition. +/^[ ]*VARIABLE[ ]*=/{ + # Seen the first line of the variable definition. + s/^[ ]*VARIABLE[ ]*=// + ba +} +bd +:a +# Here we are processing a line from the variable definition. +# Remove comment, more precisely replace it with a space. +s/#.*$/ / +# See if the line ends in a backslash. +tb +:b +s/\\$// +# Print the line, without the trailing backslash. +p +tc +# There was no trailing backslash. The end of the variable definition is +# reached. Clear the hold space. +s/^.*$// +x +bd +:c +# A trailing backslash means that the variable definition continues in the +# next line. Put a nonempty string into the hold space to indicate this. +s/^.*$/P/ +x +:d +' +changequote([,])dnl + + # Set POTFILES to the value of the Makefile variable POTFILES. + sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'` + POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` + # Compute POTFILES_DEPS as + # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) + POTFILES_DEPS= + for file in $POTFILES; do + POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" + done + POMAKEFILEDEPS="" + + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. + sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'` + ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` + fi + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + # Compute PROPERTIESFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) + # Compute CLASSFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) + # Compute QMFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) + # Compute MSGFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) + # Compute RESOURCESDLLFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + PROPERTIESFILES= + CLASSFILES= + QMFILES= + MSGFILES= + RESOURCESDLLFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" + CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" + QMFILES="$QMFILES $srcdirpre$lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + JAVACATALOGS= + QTCATALOGS= + TCLCATALOGS= + CSHARPCATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" + QTCATALOGS="$QTCATALOGS $lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" + done + fi + + sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang.msg: $lang.po + @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ + \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang/\$(DOMAIN).resources.dll: $lang.po + @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ + \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if test -n "$POMAKEFILEDEPS"; then + cat >> "$ac_file.tmp" <<EOF +Makefile: $POMAKEFILEDEPS +EOF + fi + mv "$ac_file.tmp" "$ac_file" +]) + +dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. +AC_DEFUN([AM_XGETTEXT_OPTION_INIT], +[ + XGETTEXT_EXTRA_OPTIONS= +]) + +dnl Registers an option to be passed to xgettext in the po subdirectory. +AC_DEFUN([AM_XGETTEXT_OPTION], +[ + AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" +]) diff --git a/m4/progtest.m4 b/m4/progtest.m4 new file mode 100644 index 0000000..a56365c --- /dev/null +++ b/m4/progtest.m4 @@ -0,0 +1,92 @@ +# progtest.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1996-2003, 2005 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 +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/m4/update-header-version.m4 b/m4/update-header-version.m4 new file mode 100644 index 0000000..5a370dd --- /dev/null +++ b/m4/update-header-version.m4 @@ -0,0 +1,24 @@ +# update-header-version.m4 serial 1 +dnl Copyright (C) 2008 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 From Simon Josefsson + +# sj_UPDATE_HEADER_VERSION(HEADER-FILE) +# ------------- +# Update version number in HEADER-FILE. It searches for '_VERSION ".*"' +# and replaces the .* part with the $PACKAGE_VERSION. +AC_DEFUN([sj_UPDATE_HEADER_VERSION], +[ + # Update version number in lib/libtasn1.h. + if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $1 > fixhdr.tmp; then + AC_MSG_ERROR([[*** Failed to update version number in $1...]]) + fi + if cmp -s $1 fixhdr.tmp 2>/dev/null; then + rm -f fixhdr.tmp + elif ! mv fixhdr.tmp $1; then + AC_MSG_ERROR([[*** Failed to move fixhdr.tmp to $1...]]) + fi +]) diff --git a/m4/valgrind.m4 b/m4/valgrind.m4 new file mode 100644 index 0000000..5a8006a --- /dev/null +++ b/m4/valgrind.m4 @@ -0,0 +1,30 @@ +# valgrind.m4 serial 1 +dnl Copyright (C) 2008, 2009 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 From Simon Josefsson + +# sj_VALGRIND() +# ------------- +# Check if valgrind is available, and set VALGRIND to it if available. +AC_DEFUN([sj_VALGRIND], +[ + # Run self-tests under valgrind? + if test "$cross_compiling" = no; then + AC_CHECK_PROGS(VALGRIND, valgrind) + fi + if test -n "$VALGRIND" && $VALGRIND true > /dev/null 2>&1; then + opt_valgrind_tests=yes + else + opt_valgrind_tests=no + VALGRIND= + fi + AC_MSG_CHECKING([whether self tests are run under valgrind]) + AC_ARG_ENABLE(valgrind-tests, + AS_HELP_STRING([--enable-valgrind-tests], + [run self tests under valgrind]), + opt_valgrind_tests=$enableval) + AC_MSG_RESULT($opt_valgrind_tests) +]) diff --git a/m4/visibility.m4 b/m4/visibility.m4 new file mode 100644 index 0000000..2ff6330 --- /dev/null +++ b/m4/visibility.m4 @@ -0,0 +1,52 @@ +# visibility.m4 serial 1 (gettext-0.15) +dnl Copyright (C) 2005 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 From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl MacOS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL(gl_cv_cc_visibility, [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + AC_TRY_COMPILE( + [extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void);], + [], + gl_cv_cc_visibility=yes, + gl_cv_cc_visibility=no) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4 new file mode 100644 index 0000000..cde2129 --- /dev/null +++ b/m4/wchar_t.m4 @@ -0,0 +1,20 @@ +# wchar_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 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 From Bruno Haible. +dnl Test whether <stddef.h> has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, + [AC_TRY_COMPILE([#include <stddef.h> + wchar_t foo = (wchar_t)'\0';], , + gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) + fi +]) diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 new file mode 100644 index 0000000..af5ed93 --- /dev/null +++ b/m4/wint_t.m4 @@ -0,0 +1,28 @@ +# wint_t.m4 serial 2 (gettext-0.17) +dnl Copyright (C) 2003, 2007 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 From Bruno Haible. +dnl Test whether <wchar.h> has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, + [AC_TRY_COMPILE([ +/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before + <wchar.h>. + BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included + before <wchar.h>. */ +#include <stddef.h> +#include <stdio.h> +#include <time.h> +#include <wchar.h> + wint_t foo = (wchar_t)'\0';], , + gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) + fi +]) diff --git a/maint.mk b/maint.mk new file mode 100644 index 0000000..ed9c1aa --- /dev/null +++ b/maint.mk @@ -0,0 +1,767 @@ +# -*-Makefile-*- +# This Makefile fragment tries to be general-purpose enough to be +# used by many projects via the gnulib maintainer-makefile module. + +## Copyright (C) 2001-2009 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 3 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, see <http://www.gnu.org/licenses/>. + +# This is reported not to work with make-3.79.1 +# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) +ME := maint.mk + +# Override this in cfg.mk if you use a non-standard build-aux directory. +build_aux ?= $(srcdir)/build-aux + +# Do not save the original name or timestamp in the .tar.gz file. +# Use --rsyncable if available. +gzip_rsyncable := \ + $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable) +GZIP_ENV = '--no-name --best $(gzip_rsyncable)' + +# cfg.mk must define the gpg_key_ID used by this package. +GIT = git +VC = $(GIT) +VC-tag = git tag -s -m '$(VERSION)' -u '$(gpg_key_ID)' + +VC_LIST = $(build_aux)/vc-list-files -C $(srcdir) + +VC_LIST_EXCEPT = \ + $(VC_LIST) | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; else grep -v ChangeLog; fi + +ifeq ($(origin prev_version_file), undefined) + prev_version_file = $(srcdir)/.prev-version +endif + +PREV_VERSION := $(shell cat $(prev_version_file)) +VERSION_REGEXP = $(subst .,\.,$(VERSION)) +PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION)) + +ifeq ($(VC),$(GIT)) +this-vc-tag = v$(VERSION) +this-vc-tag-regexp = v$(VERSION_REGEXP) +else +tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') +tag-this-version = $(subst .,_,$(VERSION)) +this-vc-tag = $(tag-package)-$(tag-this-version) +this-vc-tag-regexp = $(this-vc-tag) +endif +my_distdir = $(PACKAGE)-$(VERSION) + +# Old releases are stored here. +release_archive_dir ?= ../release + +# Prevent programs like 'sort' from considering distinct strings to be equal. +# Doing it here saves us from having to set LC_ALL elsewhere in this file. +export LC_ALL = C + +## --------------- ## +## Sanity checks. ## +## --------------- ## + +# Collect the names of rules starting with `sc_'. +syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ + $(srcdir)/$(ME) $(srcdir)/cfg.mk) +.PHONY: $(syntax-check-rules) + +local-checks-available = \ + $(syntax-check-rules) +.PHONY: $(local-checks-available) + +# Arrange to print the name of each syntax-checking rule just before running it. +$(syntax-check-rules): %: %.m +$(patsubst %, %.m, $(syntax-check-rules)): + @echo $(patsubst sc_%.m, %, $@) + +local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available)) + +syntax-check: $(local-check) +# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \ +# $$(find -type f -name '*.[chly]') && \ +# { echo '$(ME): found conditional include' 1>&2; \ +# exit 1; } || : + +# grep -nE '^# *include <(string|stdlib)\.h>' \ +# $(srcdir)/{lib,src}/*.[chy] && \ +# { echo '$(ME): FIXME' 1>&2; \ +# exit 1; } || : +# FIXME: don't allow `#include .strings\.h' anywhere + +# By default, _prohibit_regexp does not ignore case. +export ignore_case = +_ignore_case = $$(test -n "$$ignore_case" && echo -i || :) + +# There are many rules below that prohibit constructs in this package. +# If the offending construct can be matched with a grep-E-style regexp, +# use this macro. The shell variables "re" and "msg" must be defined. +define _prohibit_regexp + dummy=; : so we do not need a semicolon before each use; \ + test "x$$re" != x || { echo '$(ME): re not defined' 1>&2; exit 1; }; \ + test "x$$msg" != x || { echo '$(ME): msg not defined' 1>&2; exit 1; };\ + grep $(_ignore_case) -nE "$$re" $$($(VC_LIST_EXCEPT)) && \ + { echo '$(ME): '"$$msg" 1>&2; exit 1; } || : +endef + +sc_avoid_if_before_free: + @$(build_aux)/useless-if-before-free \ + $(useless_free_options) \ + $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \ + { echo '$(ME): found useless "if" before "free" above' 1>&2; \ + exit 1; } || : + +sc_cast_of_argument_to_free: + @re='\<free *\( *\(' msg='don'\''t cast free argument' \ + $(_prohibit_regexp) + +sc_cast_of_x_alloc_return_value: + @re='\*\) *x(m|c|re)alloc\>' \ + msg='don'\''t cast x*alloc return value' \ + $(_prohibit_regexp) + +sc_cast_of_alloca_return_value: + @re='\*\) *alloca\>' msg='don'\''t cast alloca return value' \ + $(_prohibit_regexp) + +sc_space_tab: + @re='[ ] ' msg='found SPACE-TAB sequence; remove the SPACE' \ + $(_prohibit_regexp) + +# Don't use *scanf or the old ato* functions in `real' code. +# They provide no error checking mechanism. +# Instead, use strto* functions. +sc_prohibit_atoi_atof: + @re='\<([fs]?scanf|ato([filq]|ll)) *\(' \ + msg='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \ + $(_prohibit_regexp) + +# Use STREQ rather than comparing strcmp == 0, or != 0. +sc_prohibit_strcmp: + @grep -nE '! *str''cmp *\(|\<str''cmp *\([^)]+\) *==' \ + $$($(VC_LIST_EXCEPT)) \ + | grep -vE ':# *define STREQ\(' && \ + { echo '$(ME): use STREQ in place of the above uses of str''cmp' \ + 1>&2; exit 1; } || : + +# Using EXIT_SUCCESS as the first argument to error is misleading, +# since when that parameter is 0, error does not exit. Use `0' instead. +sc_error_exit_success: + @grep -nE 'error \(EXIT_SUCCESS,' \ + $$($(VC_LIST_EXCEPT) | grep -E '\.[chly]$$') && \ + { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; exit 1; } || : + +# `FATAL:' should be fully upper-cased in error messages +# `WARNING:' should be fully upper-cased, or fully lower-cased +sc_error_message_warn_fatal: + @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT)) \ + | grep -E '"Warning|"Fatal|"fatal' && \ + { echo '$(ME): use FATAL, WARNING or warning' 1>&2; \ + exit 1; } || : + +# Error messages should not start with a capital letter +sc_error_message_uppercase: + @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT)) \ + | grep -E '"[A-Z]' \ + | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \ + { echo '$(ME): found capitalized error message' 1>&2; \ + exit 1; } || : + +# Error messages should not end with a period +sc_error_message_period: + @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT)) \ + | grep -E '[^."]\."' && \ + { echo '$(ME): found error message ending in period' 1>&2; \ + exit 1; } || : + +sc_file_system: + @re=file''system ignore_case=1 \ + msg='found use of "file''system"; spell it "file system"' \ + $(_prohibit_regexp) + +# Don't use cpp tests of this symbol. All code assumes config.h is included. +sc_prohibit_have_config_h: + @grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) && \ + { echo '$(ME): found use of HAVE''_CONFIG_H; remove' \ + 1>&2; exit 1; } || : + +# Nearly all .c files must include <config.h>. However, we also permit this +# via inclusion of a package-specific header, if cfg.mk specified one. +# config_h_header must be suitable for grep -E. +config_h_header ?= <config\.h> +sc_require_config_h: + @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ + grep -EL '^# *include $(config_h_header)' \ + $$($(VC_LIST_EXCEPT) | grep '\.c$$') \ + | grep . && \ + { echo '$(ME): the above files do not include <config.h>' \ + 1>&2; exit 1; } || :; \ + else :; \ + fi + +# You must include <config.h> before including any other header file. +# This can possibly be via a package-specific header, if given by cfg.mk. +sc_require_config_h_first: + @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ + fail=0; \ + for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \ + grep '^# *include\>' $$i | sed 1q \ + | grep -E '^# *include $(config_h_header)' > /dev/null \ + || { echo $$i; fail=1; }; \ + done; \ + test $$fail = 1 && \ + { echo '$(ME): the above files include some other header' \ + 'before <config.h>' 1>&2; exit 1; } || :; \ + else :; \ + fi + +sc_prohibit_HAVE_MBRTOWC: + @re='\bHAVE_MBRTOWC\b' msg="do not use $$re; it is always defined" \ + $(_prohibit_regexp) + +# To use this "command" macro, you must first define two shell variables: +# h: the header, enclosed in <> or "" +# re: a regular expression that matches IFF something provided by $h is used. +define _header_without_use + h_esc=`echo "$$h"|sed 's/\./\\./g'`; \ + if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ + files=$$(grep -l '^# *include '"$$h_esc" \ + $$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \ + grep -LE "$$re" $$files | grep . && \ + { echo "$(ME): the above files include $$h but don't use it" \ + 1>&2; exit 1; } || :; \ + else :; \ + fi +endef + +# Prohibit the inclusion of assert.h without an actual use of assert. +sc_prohibit_assert_without_use: + @h='<assert.h>' re='\<assert *\(' $(_header_without_use) + +# Prohibit the inclusion of getopt.h without an actual use. +sc_prohibit_getopt_without_use: + @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use) + +# Don't include quotearg.h unless you use one of its functions. +sc_prohibit_quotearg_without_use: + @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use) + +# Don't include quote.h unless you use one of its functions. +sc_prohibit_quote_without_use: + @h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use) + +# Don't include this header unless you use one of its functions. +sc_prohibit_long_options_without_use: + @h='"long-options.h"' re='\<parse_long_options *\(' \ + $(_header_without_use) + +# Don't include this header unless you use one of its functions. +sc_prohibit_inttostr_without_use: + @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \ + $(_header_without_use) + +# Don't include this header unless you use one of its functions. +sc_prohibit_error_without_use: + @h='"error.h"' \ + re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\ + $(_header_without_use) + +sc_prohibit_safe_read_without_use: + @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \ + $(_header_without_use) + +sc_prohibit_argmatch_without_use: + @h='"argmatch.h"' \ + re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \ + $(_header_without_use) + +sc_prohibit_root_dev_ino_without_use: + @h='"root-dev-ino.h"' \ + re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \ + $(_header_without_use) + +# Prohibit the inclusion of c-ctype.h without an actual use. +ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\ +|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper +sc_prohibit_c_ctype_without_use: + @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' $(_header_without_use) + +_empty = +_sp = $(_empty) $(_empty) +# The following list was generated by running: +# man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \ +# | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt +_sig_functions = \ + bsd_signal kill killpg pthread_kill pthread_sigmask raise sigaction \ + sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \ + siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \ + sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo +_sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions))) +# The following were extracted from "man signal.h" manually. +_sig_types_and_consts = \ + MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK \ + SA_RESETHAND SA_RESTART SA_SIGINFO SIGEV_NONE SIGEV_SIGNAL \ + SIGEV_THREAD SIGSTKSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SS_DISABLE \ + SS_ONSTACK mcontext_t pid_t sig_atomic_t sigevent siginfo_t sigset_t \ + sigstack sigval stack_t ucontext_t +# generated via this: +# perl -lne '/^#ifdef (SIG\w+)/ and print $1' lib/sig2str.c|sort -u|fmt -70 +_sig_names = \ + SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT \ + SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL \ + SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \ + SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR \ + SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS \ + SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1 \ + SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW \ + SIGXCPU SIGXFSZ +_sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts))) + +# Prohibit the inclusion of signal.h without an actual use. +sc_prohibit_signal_without_use: + @h='<signal.h>' \ + re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>' \ + $(_header_without_use) + +sc_obsolete_symbols: + @re='\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \ + msg='do not use HAVE''_FCNTL_H or O'_NDELAY \ + $(_prohibit_regexp) + +# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ + +# Each nonempty ChangeLog line must start with a year number, or a TAB. +sc_changelog: + @if $(VC_LIST_EXCEPT) | grep -l '^ChangeLog$$' >/dev/null; then \ + grep -n '^[^12 ]' \ + $$($(VC_LIST_EXCEPT) | grep '^ChangeLog$$') && \ + { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \ + exit 1; } || :; \ + fi + +# Ensure that each .c file containing a "main" function also +# calls set_program_name. +sc_program_name: + @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ + files=$$(grep -l '^main *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$')); \ + grep -LE 'set_program_name *\(m?argv\[0\]\);' $$files \ + | grep . && \ + { echo '$(ME): the above files do not call set_program_name' \ + 1>&2; exit 1; } || :; \ + else :; \ + fi + +# Require that the final line of each test-lib.sh-using test be this one: +# Exit $fail +# Note: this test requires GNU grep's --label= option. +sc_require_test_exit_idiom: + @if test -f $(srcdir)/tests/test-lib.sh; then \ + die=0; \ + for i in $$(grep -l -F /../test-lib.sh $$($(VC_LIST) tests)); do \ + tail -n1 $$i | grep '^Exit \$$fail$$' > /dev/null \ + && : || { die=1; echo $$i; } \ + done; \ + test $$die = 1 && \ + { echo 1>&2 '$(ME): the final line in each of the above is not:'; \ + echo 1>&2 'Exit $$fail'; \ + exit 1; } || :; \ + fi + +sc_the_the: + @re='\<the ''the\>' \ + ignore_case=1 msg='found use of "the ''the";' \ + $(_prohibit_regexp) + +sc_trailing_blank: + @re='[ ]$$' \ + msg='found trailing blank(s)' \ + $(_prohibit_regexp) + +# Match lines like the following, but where there is only one space +# between the options and the description: +# -D, --all-repeated[=delimit-method] print all duplicate lines\n +longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)? +sc_two_space_separator_in_usage: + @grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \ + $$($(VC_LIST_EXCEPT)) && \ + { echo "$(ME): help2man requires at least two spaces between"; \ + echo "$(ME): an option and its description"; \ + 1>&2; exit 1; } || : + +# Look for diagnostics that aren't marked for translation. +# This won't find any for which error's format string is on a separate line. +sc_unmarked_diagnostics: + @grep -nE \ + '\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \ + | grep -v '_''(' && \ + { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \ + exit 1; } || : + +# Avoid useless parentheses like those in this example: +# #if defined (SYMBOL) || defined (SYM2) +sc_useless_cpp_parens: + @grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) && \ + { echo '$(ME): found useless parentheses in cpp directive' \ + 1>&2; exit 1; } || : + +# Require the latest GPL. +sc_GPL_version: + @re='either ''version [^3]' msg='GPL vN, N!=3' \ + $(_prohibit_regexp) + +cvs_keywords = \ + Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State + +sc_prohibit_cvs_keyword: + @re='\$$($(cvs_keywords))\$$' \ + msg='do not use CVS keyword expansion' \ + $(_prohibit_regexp) + +# Make sure we don't use st_blocks. Use ST_NBLOCKS instead. +# This is a bit of a kludge, since it prevents use of the string +# even in comments, but for now it does the job with no false positives. +sc_prohibit_stat_st_blocks: + @re='[.>]st_blocks' msg='do not use st_blocks; use ST_NBLOCKS' \ + $(_prohibit_regexp) + +# Make sure we don't define any S_IS* macros in src/*.c files. +# They're already defined via gnulib's sys/stat.h replacement. +sc_prohibit_S_IS_definition: + @re='^ *# *define *S_IS' \ + msg='do not define S_IS* macros; include <sys/stat.h>' \ + $(_prohibit_regexp) + +# Each program that uses proper_name_utf8 must link with +# one of the ICONV libraries. +sc_proper_name_utf8_requires_ICONV: + @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\ + if test "x$$progs" != x; then \ + fail=0; \ + for p in $$progs; do \ + dir=$$(dirname "$$p"); \ + base=$$(basename "$$p" .c); \ + grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \ + || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \ + done; \ + test $$fail = 1 && \ + { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \ + exit 1; } || :; \ + fi + +# Warn about "c0nst struct Foo const foo[]", +# but not about "char const *const foo" or "#define const const". +sc_redundant_const: + @re='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b' \ + msg='redundant "const" in declarations' \ + $(_prohibit_regexp) + +sc_const_long_option: + @grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT)) \ + | grep -Ev 'const struct option|struct option const' && { \ + echo 1>&2 '$(ME): add "const" to the above declarations'; \ + exit 1; } || : + +NEWS_hash = \ + $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \ + $(srcdir)/NEWS \ + | grep -v '^Copyright .*Free Software' \ + | md5sum - \ + | sed 's/ .*//') + +# Ensure that we don't accidentally insert an entry into an old NEWS block. +sc_immutable_NEWS: + @if test -f $(srcdir)/NEWS; then \ + test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \ + { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \ + fi + +# Update the hash stored above. Do this after each release and +# for any corrections to old entries. +update-NEWS-hash: NEWS + perl -pi -e 's/^(old_NEWS_hash = ).*/$${1}'"$(NEWS_hash)/" \ + $(srcdir)/cfg.mk + +# Ensure that we use only the standard $(VAR) notation, +# not @...@ in Makefile.am, now that we can rely on automake +# to emit a definition for each substituted variable. +# We use perl rather than "grep -nE ..." to exempt a single +# use of an @...@-delimited variable name in src/Makefile.am. +sc_makefile_check: + @perl -ne '/\@[A-Z_0-9]+\@/ && !/^cu_install_program =/' \ + -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}' \ + $$($(VC_LIST_EXCEPT) | grep -E '(^|/)Makefile\.am$$') \ + && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || : + +news-date-check: NEWS + today=`date +%Y-%m-%d`; \ + if head $(srcdir)/NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \ + >/dev/null; then \ + :; \ + else \ + echo "version or today's date is not in NEWS" 1>&2; \ + exit 1; \ + fi + +sc_makefile_TAB_only_indentation: + @grep -nE '^ [ ]{8}' \ + $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$') \ + && { echo '$(ME): found TAB-8-space indentation' 1>&2; \ + exit 1; } || : + +sc_m4_quote_check: + @grep -nE '(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]' \ + $$($(VC_LIST_EXCEPT) | grep -E '(^configure\.ac|\.m4)$$') \ + && { echo '$(ME): quote the first arg to AC_DEF*' 1>&2; \ + exit 1; } || : + +fix_po_file_diag = \ +'you have changed the set of files with translatable diagnostics;\n\ +apply the above patch\n' + +# Verify that all source files using _() are listed in po/POTFILES.in. +po_file = po/POTFILES.in +sc_po_check: + @if test -f $(po_file); then \ + grep -E -v '^(#|$$)' $(po_file) \ + | grep -v '^src/false\.c$$' | sort > $@-1; \ + files=; \ + for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do \ + test -r $$file || continue; \ + case $$file in \ + *.?|*.??) ;; \ + *) continue;; \ + esac; \ + case $$file in \ + *.[ch]) \ + base=`expr " $$file" : ' \(.*\)\..'`; \ + { test -f $$base.l || test -f $$base.y; } && continue;; \ + esac; \ + files="$$files $$file"; \ + done; \ + grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \ + | sort -u > $@-2; \ + diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \ + || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \ + rm -f $@-1 $@-2; \ + fi + +# Sometimes it is useful to change the PATH environment variable +# in Makefiles. When doing so, it's better not to use the Unix-centric +# path separator of `:', but rather the automake-provided `$(PATH_SEPARATOR)'. +msg = '$(ME): Do not use `:'\'' above; use $$(PATH_SEPARATOR) instead' +sc_makefile_path_separator_check: + @grep -nE 'PATH[=].*:' \ + $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$') \ + && { echo $(msg) 1>&2; exit 1; } || : + +# Check that `make alpha' will not fail at the end of the process. +writable-files: + if test -d $(release_archive_dir); then :; else \ + for file in $(distdir).tar.gz \ + $(release_archive_dir)/$(distdir).tar.gz; do \ + test -e $$file || continue; \ + test -w $$file \ + || { echo ERROR: $$file is not writable; fail=1; }; \ + done; \ + test "$$fail" && exit 1 || : ; \ + fi + +v_etc_file = lib/version-etc.c +sample-test = tests/sample-test +texi = doc/$(PACKAGE).texi +# Make sure that the copyright date in $(v_etc_file) is up to date. +# Do the same for the $(sample-test) and the main doc/.texi file. +sc_copyright_check: + @if test -f $(v_etc_file); then \ + grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \ + >/dev/null \ + || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \ + exit 1; }; \ + fi + @if test -f $(sample-test); then \ + grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test) \ + >/dev/null \ + || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \ + exit 1; }; \ + fi + @if test -f $(texi); then \ + grep 'Copyright @copyright{} .*'$$(date +%Y)' Free' $(texi) \ + >/dev/null \ + || { echo 'out of date copyright in $(texi); update it' 1>&2; \ + exit 1; }; \ + fi + +vc-diff-check: + (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || : + if test -s vc-diffs; then \ + cat vc-diffs; \ + echo "Some files are locally modified:" 1>&2; \ + exit 1; \ + else \ + rm vc-diffs; \ + fi + +cvs-check: vc-diff-check + +ALL_RECURSIVE_TARGETS += maintainer-distcheck +maintainer-distcheck: + $(MAKE) distcheck + $(MAKE) taint-distcheck + $(MAKE) my-distcheck + + +# Don't make a distribution if checks fail. +# Also, make sure the NEWS file is up-to-date. +ALL_RECURSIVE_TARGETS += vc-dist +vc-dist: $(local-check) cvs-check maintainer-distcheck + XZ_OPT=-9ev $(MAKE) dist + +# Use this to make sure we don't run these programs when building +# from a virgin tgz file, below. +null_AM_MAKEFLAGS = \ + ACLOCAL=false \ + AUTOCONF=false \ + AUTOMAKE=false \ + AUTOHEADER=false \ + MAKEINFO=false + +built_programs = $$(cd src && MAKEFLAGS= $(MAKE) -s built_programs.list) + +rel-files = $(DIST_ARCHIVES) + +gnulib_dir ?= $(srcdir)/gnulib +gnulib-version = $$(cd $(gnulib_dir) && git describe) +bootstrap-tools ?= autoconf,automake,gnulib + +announcement: NEWS ChangeLog $(rel-files) + @$(build_aux)/announce-gen \ + --release-type=$(RELEASE_TYPE) \ + --package=$(PACKAGE) \ + --prev=$(PREV_VERSION) \ + --curr=$(VERSION) \ + --gpg-key-id=$(gpg_key_ID) \ + --news=NEWS \ + --bootstrap-tools=$(bootstrap-tools) \ + --gnulib-version=$(gnulib-version) \ + --no-print-checksums \ + $(addprefix --url-dir=, $(url_dir_list)) + +## ---------------- ## +## Updating files. ## +## ---------------- ## + +ftp-gnu = ftp://ftp.gnu.org/gnu +www-gnu = http://www.gnu.org + +emit_upload_commands: + @echo ===================================== + @echo ===================================== + @echo "$(build_aux)/gnupload $(GNUPLOADFLAGS) \\" + @echo " --to $(gnu_rel_host):$(PACKAGE) \\" + @echo " $(rel-files)" + @echo '# send the /tmp/announcement e-mail' + @echo ===================================== + @echo ===================================== + +noteworthy = * Noteworthy changes in release ?.? (????-??-??) [?] +define emit-commit-log + printf '%s\n' 'post-release administrivia' '' \ + '* NEWS: Add header line for next release.' \ + '* .prev-version: Record previous version.' \ + '* cfg.mk (old_NEWS_hash): Auto-update.' +endef + +.PHONY: no-submodule-changes +no-submodule-changes: + if test -d $(srcdir)/.git; then \ + diff=$$(cd $(srcdir) && git submodule -q foreach \ + git diff-index --name-only HEAD) \ + || exit 1; \ + case $$diff in '') ;; \ + *) echo '$(ME): submodule files are locally modified:'; \ + echo "$$diff"; exit 1;; esac; \ + else \ + : ; \ + fi + +.PHONY: alpha beta major +ALL_RECURSIVE_TARGETS += alpha beta major +alpha beta major: $(local-check) writable-files no-submodule-changes + test $@ = major \ + && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \ + || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\ + || : + $(MAKE) vc-dist + $(MAKE) news-date-check + $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir) + if test -d $(release_archive_dir); then \ + ln $(rel-files) $(release_archive_dir); \ + chmod a-w $(rel-files); \ + fi + $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ + echo $(VERSION) > $(prev_version_file) + $(MAKE) update-NEWS-hash + perl -pi -e '$$. == 3 and print "$(noteworthy)\n\n\n"' NEWS + $(emit-commit-log) > .ci-msg + $(VC) commit -F .ci-msg -a + +.PHONY: web-manual +web-manual: + @test -z "$(manual_title)" \ + && { echo define manual_title in cfg.mk 1>&2; exit 1; } || : + @cd '$(srcdir)/doc'; \ + $(SHELL) ../build-aux/gendocs.sh -o '$(abs_builddir)/doc/manual' \ + --email $(PACKAGE_BUGREPORT) $(PACKAGE) \ + "$(PACKAGE_NAME) - $(manual_title)" + @echo " *** Upload the doc/manual directory to web-cvs." + +# Code Coverage + +init-coverage: + $(MAKE) $(AM_MAKEFLAGS) clean + lcov --directory . --zerocounters + +COVERAGE_CCOPTS ?= "-g --coverage" +COVERAGE_OUT ?= doc/coverage + +build-coverage: + $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) + $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check + mkdir -p $(COVERAGE_OUT) + lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \ + --capture + +gen-coverage: + genhtml --output-directory $(COVERAGE_OUT) \ + $(COVERAGE_OUT)/$(PACKAGE).info \ + --highlight --frames --legend \ + --title "$(PACKAGE_NAME)" + +coverage: init-coverage build-coverage gen-coverage + +# Update gettext files. +PACKAGE ?= $(shell basename $(PWD)) +PO_DOMAIN ?= $(PACKAGE) +POURL = http://translationproject.org/latest/$(PO_DOMAIN)/ +PODIR ?= po +refresh-po: + rm -f $(PODIR)/*.po && \ + echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \ + wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \ + echo 'en@boldquot' > $(PODIR)/LINGUAS && \ + echo 'en@quot' >> $(PODIR)/LINGUAS && \ + ls $(PODIR)/*.po | sed 's/\.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS + +INDENT_SOURCES ?= $(C_SOURCES) +.PHONY: indent +indent: + indent $(INDENT_SOURCES) diff --git a/packaging/libidn.manifest b/packaging/libidn.manifest new file mode 100644 index 0000000..017d22d --- /dev/null +++ b/packaging/libidn.manifest @@ -0,0 +1,5 @@ +<manifest> + <request> + <domain name="_"/> + </request> +</manifest> diff --git a/packaging/libidn.spec b/packaging/libidn.spec new file mode 100644 index 0000000..00b6b13 --- /dev/null +++ b/packaging/libidn.spec @@ -0,0 +1,82 @@ +Name: libidn +Summary: Internationalized Domain Name support library +Version: 1.15 +Release: 6 +Group: System/Libraries +License: LGPLv2.1+ +URL: http://www.gnu.org/software/libidn/ +Source0: http://ftp.gnu.org/gnu/libidn/%{name}-%{version}.tar.gz +Source1001: packaging/libidn.manifest +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig +BuildRequires: pkgconfig +BuildRequires: gettext-tools +BuildRequires: libtool +BuildRequires: autoconf + +%description +GNU Libidn is an implementation of the Stringprep, Punycode and +IDNA specifications defined by the IETF Internationalized Domain +Names (IDN) working group, used for internationalized domain +names. + + + +%package devel +Summary: Development files for the libidn library +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: glibc-devel + +%description devel +This package includes header files and libraries necessary for +developing programs which use the GNU libidn library. + + + +%prep +%setup -q -n %{name}-%{version} + + +%build +cp %{SOURCE1001} . + +%configure --disable-static \ + --disable-csharp \ + --disable-java \ + --with-pic + +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install + +rm -f $RPM_BUILD_ROOT/%_infodir/dir +rm -f %{buildroot}%{_libdir}/libidn.la +rm -f $RPM_BUILD_ROOT%_infodir/libidn-components.png +rm -f %{buildroot}%{_bindir}/idn +%find_lang libidn + +%remove_docs + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files -f libidn.lang +%manifest libidn.manifest +%defattr(-,root,root,-) +%dir %{_datadir}/emacs +%dir %{_datadir}/emacs/site-lisp +%{_datadir}/emacs/site-lisp/idna.el +%{_datadir}/emacs/site-lisp/punycode.el +%{_libdir}/libidn.so.* + +%files devel +%manifest libidn.manifest +%defattr(-,root,root,-) +%{_libdir}/libidn.so +%{_includedir}/*.h +%{_libdir}/pkgconfig/libidn.pc + diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..7d6b991 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,17 @@ +en@boldquot +en@quot +cs +da +de +eo +fi +fr +id +it +ja +nl +pl +ro +sr +vi +zh_CN diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..fecf500 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,429 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..7bd29b2 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Simon Josefsson + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = bug-libidn@gnu.org + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..8328bf6 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,8 @@ +# List of source files containing translatable strings for GNU Libidn. +# Copyright (C) 2004, 2005, 2006, 2007 by Simon Josefsson +lib/strerror-idna.c +lib/strerror-pr29.c +lib/strerror-punycode.c +lib/strerror-stringprep.c +lib/strerror-tld.c +src/idn.c diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000..9c2a995 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“/g +s/”/”/g +s/‘/‘/g +s/’/’/g diff --git a/po/cs.gmo b/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e2896762646cfd6551d7650f33aad2be4a259c78 GIT binary patch literal 7408 zcmchbU2GiJb;oZ$-E2PEIBApSt2a$ml8$CY$$>31wqb>mW7-zA5Gf+H97w~N%iSSo z=Wgd?rQL@_NB|=b5e%dV8bv`M!ift3B^)#f5CoCYYPm(95)=jUQq%<u6eyav0DTM4 z{?475<x--QJY~S;e`n_0bI(2Jf6hI3-+1ut-&9=3_<W4d-@iqvMey;r@sI17w<{HZ zOP~+#fX{({_ztCh1D*$G81sd9D)lGaUwJ^O_kn*4J_NoB{)+ei3VPh%dY4jv3H}QF z2>4(_sV3-wbKr{=z66T=55Ohx4e-6-?7Nlv1o#Lj_vgSr2Ln)pFM*=}??4&<^9p|h z{u%cVy$9RDXTeW_FMyALUjqLW{4pqY{Q|^f^*`VT!C!+P03Tpd(f?8K4EQ-v=J^K5 zpZZ7siT<C1qW=w0#=jM(h}|CoKMXzs;xcsx6uoN|Zi3>+FM(q3H^Dywe++Km$A1QW z?mZq_@MTc^^MBxjykC01Qis47A1w8J1?4i|HBe&w58#crD)nEW$Nfu8HVgg;6np;z z{4DsE4=MF1_yjl)7T^)^Rq#ddm!PckVU$bU7D1*~T~PFV8GICc1w0P^J1BZTh?AcL zTcFJQGAMd}0*ao0sowt@6h0m$7!QHV;2(ekP=j9qQK?=5MgPx0vFm?9vG?ppOTAwO zagF*LunB$-lz99bDDn7jQ1m>&WD*Yzirfr%6kG#E|JT5egZ~7IzW)Sqv%;0m9$5n> zPcG3V_SP5fa+h#b{D_(AkNKcRL2dOeK7`g?P)$Ks#|wGzN%>b@Vzcm1xG8qa#S+vZ zK4S0mHN%bA3>6e<>--I<zu+T2eH$O>sXoo8z9a_1JMn?=P<%;>JMIALFdyNK_(1$9 zv6i?i?Jmy?&3e%;Z|eW8G)i*qUbLg6t)pbard>aeY|^NQ{dEzUydF^EN)#K$*`7&D zS*5ktIjlXeW8&U^SzXTIUie9<&E+UZx3?zZeUoO)H9evfuU||?$P9@LNjA2EX?eac zi_LK~G&;*!P+R*!VAD{(<yN0dqQHhm_aAN^)5}jkx7ZL}J<-)m?FLJEVrBL0((>n> z)^izJdM1cAA`@2nda3E@N){Jox$(owJ$G1A->zZKL8G$;eR0|E8qqj&`2IRBMk|Xe zOEZTVf%)YKeetZxY>@`_{cll`r+#2W#mb45=bZ|-_)HdG`pT`XHoJvcetNJQlgjMc z5fa1DIk89v;$ZmY{EV`b<+oP#Mnug%QIpi7r^;{BqP~bmVd8ta_53V|qSC%an?Q?P zVtQin)cznZom@VlXG62$7jdq;m@_A{7SpPViU??{Rc)lUd$6*GTJ)2|=Gu>A8~C}= zUDLJcKrMFsG$SD{9?E8#NC~ximNd%5Go5HX$|27B05f}DZ2BhFq3!xnf@rrZe2$~U zK%?BG8$?HzlXt2IiAyKP<**v2#qo?;PyKYzY&1^9aYf5aORUUg*eX+^XPsN;&k+4i zE8*QRY0B%Mvb)Gk*ucC2G}5xP*fg~k+Fz_n#Ehugh_KWaxxUo#ad{`oCK{rQ0e@wS zM&Kvf5|T8+2eO9gIm89{DVHoXNk2+$(v_mo_tVH<kBwe@=ET{RQ>!d#)r#u^ld+;Y zg>#uU%l#C;UW)P#*1=<{6ASjcJ;q=3Hmv0t3lh_38d#l0?Zl6rEk^9$(C``m;cGbW zXX2KNPz!>UWzF;Xs+}ebIZb%{oG9bjb|L0w;)~d_2HTUWSo&PTSjve(S;xZ4`h9M# zqeZe2M}b@YdK5+}F=9Bju~N!r9vNp$l=O;Rok~;mVB1tq*7XKXM@b}u)zh)x)`2ZG zmtLu))YCR)n$RRVrZ|buQAqYjkgct|QBq{iIeHd9&P|CIiJytrgdtN@#+K5wB{7gB zNKreG$#baeQbwp1T}I*M1n<wOQZlqGO!CIXt~64z^=@fmvXAa3U6yDmk9wATo|D;J z!k6WF<*=*?wfH_2f@2slW8S{2wxzwN{aCgzNx^+?FFmVHN30f)l)}rT-W^#A#R`}+ zS^u(4yfA7<`H>hhoAgL$(CgsliNKj67Y|*sMa-O%&JYIr7#9I<GWMoe?GrPX10xwr z%B&X~Bq&>slmepJCznFinyMuGmT_Q=rlb#kU)5o~0Uyx5QtpxxC1&gPY%Yn(vN2@U zo>*C2TDq@Hy`#!zO03Jx*Hx~17}1u*6V~1_X(ror9Cf3dL>4cIJw+hNuT}<Ztz8|) zWXRsQ@*#V8(yw)`lA+XJQdioF8CMo4&Qe4r_-<a3aCOk5Ao@Y440n}X8k_vG2vee> zJTvjeVNGbs66(CG-M&uDC0D1Vr1{j>6n*u&_bs`yNzb~9E*VZiwCNnuTZz4tl(&<+ zI$_Uce%mZ)7IFSeYjx?&@)w)UraoU$U2Ymm_P`6dz2Nr13!fQ^_~c==n_W0Q{LE0# zu0DTq?w+sR3t^!RRIlQ~g>tucuO`pR&BHz0t3($nlilMy4le{96Kr9Qp6%JpRVIBX zF3Rbr-@5^DbCcTVErs4%+3YRIW+pZGX!EhgS<|C<dZ)8?6ndX4+L^a%7f6b>R|-AV zPKu^Y+l|(lRd10ZB$V<_5~l@yY<~VRZ~hT){<uDRY~kU@K0VJ91iiDSA4yxeCwJVN zf7F|QSkE6{ICi|0d*07-Z#DIkES6Hfpj#$Sbt}sJR6pM1d$T9spYrqA&ziyT$;R`3 z(k_Uaw`%<Ef?gaNnDsbC)~S&BXbihvkUbSgS)Mh^Mh!x?O*1k1la13$r%&y9;b?Qd zu}D27_dH?h0vx=YAL+#u*w5Bm=@aKxpZ1RL$;o8Y3(vJp6tV?<oQ6Z1I=K$)@z(~u z(aw0AtYc#cMmu$q1g2^p>%FklQT=bh`eIXBn>-3Sg=-t{)!|QONJiT|+uyw&7P66V z*<|<XXh-_6do}x$k<|HNG(AW$>bLd#V&C|h$#<_43M>uj3hEraPq#n*)~VIqZ@+MA zQI^`W#rX9IMMFRIlhLiax8P>wrpht<p#^!8(apO@4fH1QU(jz}`EK3tzj@_5_igzR zbuGWhxpC~rQb_Cj>DIq~<{Er%aNYgPM0I@vK=}S=fbq4cm->B(a;I<aI06(B*?S)W zwnje;B|_7!{k={B&sDOa-6wvplRyj0`fMGv$Ym?yLSLQ%BAUY}h=|ILP7Sf`-uEOh zQ8m1M!}Tc>RSmUlVm7P(pp%k0Ijv-O_xkwz>V?GLvi;Gv&Y+A0>QIJLsn=)Z%sJXl zWoltQl?7UDjkbp{Yg_lzpkrg(w}rI!qnn8>)LA=3yA0SedMk-Kwx8@?Cq-R%6i`&; zFkt&aO{&docKe3RU_*v<BR#~F!CbAbFEWiy`c~;A<dfxiDnxs4d~LL|<)dkIvtx<u zXgl00XrI=o3_&Lu)WN0;5#nmQd(~h$%j8|3^e7h%)BO+w3ly3#kqN%$th-5LKi<Zu z#-4rC7Id5XIo4ErjjnnVG7LAVl%pL^SE7$PmH5ot6{l9UOgyWfjqp{YGy&T%q0rs& zYvb2x>~%jWa-u^YoBMquevx?zRU(Nw?S#D($Fqk0MT>LReMJ0#HPEu&zQGeICjmAL zF+~j89PLQel-VoGB;RHeACsHTQqCbfnmbGha>XP!4YvT1lR#L;vMd*6o8aNTb9#L? zNyo2Et2_93A`=j<77e0XSA9SkNV`;Y96P3bh)Nem8cO&yejU@QfrK{XX0#JlD}ypy z#3kRlTL+w8_H{qYi(a8qJ7lkRKCQ?!aI4F3HD?X>u7bny0EhN(-zZNlK_n9V#8Q-! zuJ4qRrdpyxTuP&r#l`MbPR+3^ztsrSRWH=3b4!nY+IN&kdfn<Fykt(Zd)1BT*-cgn zz4ffPT|6~q_EZ8U1`kE!YyOZ}Y}23Lm9A<{)~YunJZ9H3zvH$*p?c3Ih18liue>I+ z$eG7YR1Qc?#TL{`6hs`N9w1MVnzV}h(tCR^i?{Wrlm~y#=^_OsgU98r#Zk)npgso) zsa$~MD70+o9;ke`%1167QcjAzZ?Q^V*mYaDh{+Al%FR=?$Ye+mj<&ni*fnTc20kFD zGD}sySYlbed{+r^mZ(Z7wN=rJ0&|2^&ZtB7NVXT9q^6Qu8{Kk#rvF|aa3mHo#L*bV zC6~)3?me#gIX#e5f5Ij}Cdm&h@H^WY<dgz(zCRG!LlR#S*Ol!&I+zj%aKKS@pPPi+ zzw>Za?|1zA5qJDpjlWfQD2XcpJ$w5`b;_DLei6q5BsrAHkC#%l-A|XWZ*uq`x%N(P zGQ1^jl&#yZ152qXjquf(t`XMn=x}s1-kL7=L;&|e1^P9ry;Y-cXT9C)K}W5)1z6p; zF)tXKaTXih?6QBkBU&X;KgP;i+MUzXNk5j&V6W9AXLmC8ld{sgt;o1CKRLybO_ZA! zED#yl9@t(gGBS5}vZjbqU%zF=vX99wE6t`boWfmJ>g3M7t~$T*czf^Ey5}N2+vj(d z@ikefP~NACm?19dBJUnd?r&8^inNh}&kiPM9eut<lD0-ymrv||{flp2c~zh1zHBw+ z_V;q2lOI8)^O9A{N-8#TJcBzNAMZHp=~=0dd*XWy*kr`rCqWK=uBy9Caak&?D<%;# Qcb^62tT?1F+~=hD|8)F>RsaA1 literal 0 HcmV?d00001 diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..d4e45cc --- /dev/null +++ b/po/cs.po @@ -0,0 +1,360 @@ +# Czech translation for libidn. +# Copyright (C) 2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Petr Pisar <petr.pisar@atlas.cz>, 2007, 2008 +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-03 08:28+0200\n" +"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n" +"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Úspěch" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Příprava řetězce selhala" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode selhal" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Znak jiný než číslice/písmeno/spojovník na vstupu" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Zakázaný úvodní nebo závěrečný spojovník („-“)" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Výstup by byl příliÅ¡ dlouhý nebo příliÅ¡ krátký" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Vstup nezačíná předponou ACE („xn--“)" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Řetězec není po ToASCII idempotentní" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Vstup již obsahuje předponu ACE („xn--“)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Selhal systémový iconv" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Nelze vyhradit paměť" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Selhalo volání systému dlopen" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Neznámá chyba" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Řetězec není po unicodové NFKC normalizaci idempotentní" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Neplatný vstup" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Výstup by se neveÅ¡el do poskytnuté vyrovnávací paměti" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Omezení délky řetězce bylo překonáno" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Na vstupu zakázaná nepřiřazená ordinární čísla" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Na vstupu zakázaná ordinární čísla" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Na vstupu rozporné příkazy pro směr textu" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Chybně utvořený obousměrný řetězec" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Na vstupu zakázaná ordinární čísla pro obousměrný text" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Chyba v definici profilu pro stringprep" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Příznak neslučitelný s profilem" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Neznámý profil" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unicodová normalizace selhala (vnitřní chyba)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Ordinární čísla zakázaná vrcholovou doménou" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Postrádám vstup" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Ve vstupu chybí vrcholová doména" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Další informace získáte příkazem „%s --help“.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Použití: %s [PŘEPÍNAČ]… [ŘETĚZEC]…\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"IDN (internacionalizovaná doménová jména) převádí ŘETĚZCE nebo standardní " +"vstup.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Rozhraní ke knihovně internacionalizovaných (s národními znaky) doménových\n" +"jmen pro prostředí příkazového řádku.\n" +"\n" +"VÅ¡echny řetězce jsou očekávány ve znakové sadě upřednostňované vaším\n" +"národním prostředím. Která sada to je, zjistíte přepínačem „--debug“. Jinou\n" +"znakovou sadu můžete vnutit nastavením proměnné prostředí CHARSET.\n" +"\n" +"Je-li třeba pracovat s řetězcem začínající znakem „-“ (např. „-foo“), " +"použijte\n" +"„--“ pro označení konce vÅ¡ech parametrů (např. „idn --quiet -a -- -foo“).\n" +"\n" +"Povinné argumenty dlouhých přepínačů jsou rovněž povinné u odpovídajících\n" +"krátkých přepínačů.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Vypíše nápovědu a skončí\n" +" -V, --version Vypíše verzi a skončí\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Připraví řetězec podle nameprep profilu\n" +" -d, --punycode-decode Dekóduje Punycode\n" +" -e, --punycode-encode Kóduje do Punycode\n" +" -a, --idna-to-ascii Převede do ACE podle IDNA (implicitní režim)\n" +" -u, --idna-to-unicode Převede z ACE podle IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Přepne příznak IDNA AllowUnassigned\n" +" --usestd3asciirules Přepne příznak IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Zkontroluje řetězec podle pravidel pro TLD.\n" +" Jen u --idna-to-ascii a --idna-to-unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalizuje řetězec podle Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=ŘETĚZEC Použije zadaný stringprep profil.\n" +" Platné stringprep profily jsou: „Nameprep“,\n" +" „iSCSI“, „Nodeprep“, „Resourceprep“, „trace“ a \n" +" „SASLprep“\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Vypíše ladicí informace\n" +" --quiet Pracuje potichu\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Pouze jeden přepínač z -s, -e, -d, -a, -u nebo -n smí být zadán." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Znaková sada „%s“.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"PiÅ¡te po jednom vstupním řetězci na jednom řádku zakončeným znakem nového " +"řádku.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Chyba na vstupu" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Nelze převést z %s do UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Nelze převést z UTF-8 do UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile (profil pro přípravu řetězce): %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Z UTF-8 do %s nelze převést." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode (zakódování do Punycodu): %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode (dekódování Punycodu): %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Nelze převést z UCS-4 do UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (pozice %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Normalizaci do NFKC nebylo možné provézt" + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Chyby programu hlaste na <%s> (pouze anglicky),\n" +#~ "chyby překladu na <translation-team-cs@lists.sourceforge.net> (česky).\n" + +#~ msgid "input[%lu] = U+%04x\n" +#~ msgstr "vstup[%lu] = U+%04x\n" + +#~ msgid "output[%lu] = U+%04x\n" +#~ msgstr "výstup[%lu] = U+%04x\n" + +#~ msgid "tld[%lu] = U+%04x\n" +#~ msgstr "vrcholová_doména[%lu] = U+%04x\n" + +#~ msgid "nfkc: %s" +#~ msgstr "nfkc: %s" diff --git a/po/da.gmo b/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ee3c5f47a6f6c049477df1ea0152b285f3df0b99 GIT binary patch literal 3810 zcmdT`&yO5O6)uuEkPU<o@(U6|g~ax5Nbk;WY->HXBRlKeXtBq(vSSX2Xj3y?(^K2k zRZUg(*t0oDNeHJ%hzr-O!~qVGA`nsn%1Ye1aNxiNks~7f1$?i%XLcqy2yvsey<b=N zt5@%R_0@axmxu28DZ{mh`$^nC`~qXAfj_?s|8SLeGxjL(N5BVwZvmeJ{tTD^KL(xv z{sZ_;;A8hNwhUYYE&)Y@?*PgE1K?MHe+51T{InTAc#N^{VEh!211|x|Zx2ZG-fr;M zz;9#xH{e%+$L?k98Q>$pGr+UJZvaam#q(p}7lH2q9|rys_;ujN!0W(20m=Uf7*SkZ zAo=Y9$=(4e&NqRN0}p_h!hQ!NKYwWO&p_ho@4yFv$G*ha>)`TH;1d|XdtdGMSHP1P ze*~m;KLMTqKD<z`a}KzQ@ehD4;7@?3fFA<afd2%N|Ks=9`*jBRHH>$F#DfIVUcL={ z0r)=fJn$3X67ZQX*F1NClwS#K1K$8{0)G!AKlg$RTJJd^QedwFp9T(q9QYRSW#BJ> zWcMi$OR#4l5<IdNko><0B>r}Q#GeBafA0W^zjqrv01|({1yX*01cE;H2yVJ4hDMTc z|M59qwAUQ>w{VkwCKqUp7wC#{(OSd{X`J#S&LF+%b-a0^7$3q-F+bb9qx}Ibao?I( z5g@_1x1<+}o$|dKHzW{qBpyhEln-(D7;d&9jIn_Wt!-Zf$qQLnH)b0{;k*p|wd4Ne z@&enispO?qCU{;tJ5)UtWXgME9&DLtIg*;Ewh+p|)C{!h2W2weQ>k(i&(;V{6HDoW zlAbGrzp@H!(>d#C=!3(I(#ewS21-kw%7HS9CbKOqGTv`I^IIwmCsu6BIxLe)!?hGC ztqO<138m?|P^R+StIY7l*OHS<Gv<{Mo<1Ot{!Dt)(6%W+5aZx>Op6Dk$1iPcVrfKn z8xC)qgnZVPsYPPMr4Pb|I><X)kAzlfLqJF9fprCuIY(B_2kR)rh&*bxuGxR%n-6Sd z$l27yB&o_&SkW>B=~jm0atLy!2G^@VdEK&=#+niiE!V<jGV+FjFCYdsXC`m=B_a$% z$$QmcARYIm=tB|Cj#MgBc4I~pb7|a>*%|9Qf3M6qei&dE;e97+BXWz?iqZyY0!P{i zq-!tjY;14;N1K~QMR(V>u57@ILxO5wL}4|qNq54<SA2d^ul6O^s!)N~EKodEzc0OK zJ7XVY!BY)go9VpzB~~<}$-C~jlw6Abu->Fb?A#hI;M;)JF;~G$J$RmD&mdYH#dy2~ zH}Y0A>ElF-KEC2OP7<2SrCE$G;*?592Ts!AT7q?M>@8Cdr=#YSF_jvz8|<#|eWi9! z?YH@HKYdx%%<Zo4pW5e(-K&?EKKFC{K+>^&RyG^Bn@S=+ewx0MX8P{v(C;?kMAM+t z-TqMa^GP@m%pS@}vYjU1m(HUiw80w=jNz^2)61)87G9C1bs_2aOr^<7RpyhfZ9}YC zQrlh3OtoxXws7NmH`&0Errl32gXT70YqicMtusk$ov*I7UpV{S7T&-xc}0#CEp}vg zI$3QcYp40@db_n=+g%ktBwZ(r*CJTg<{bnAIlN@~_v{d_@qE6pd-h_{+cPpOr}>Ku zSB1$ck;$YhMbYM$g;9RU&!;fYFXpHY(W<lE**r>kb-A^G;!4_2NKkD^<#t#pHOkUC zPVzv(zHqa<m8>7xQCv8$$tIDGLel2zDBTM;bmfFjP&*6X=BA88e_`z$uOBZg8vgVJ zzPhx)t_T#5JV&8WI+ZBP!z#B$A+?vRD>LH{52kJ63N{=2oI`)pIa;KsqJvnt&>{{G zjAU10C68usq;ZCV9mze<WhTLZ=+S(fl{6JWur0Z#F+6Gq<nBm1NiChJQ?#(?azH)9 zW=*4Dox}I)n0hiBqjYexLLt)?$|UBbb*~6Wi7%dvWgS^3b=I)RXLFmxHkT#(Kn$2Z z%Ao~Yj{2%}l2!}UIuPsO!9e96OH7+bJ*f$+A&%nt+$lG+u||!TlPIW5KspfDgvTIr zA3%{b8S6l6T2jVSLWRMe#7&J;%B0zt8Pc~Y`M#oJztXcAdfI5EM~RVF^rNY>4t6x7 z_KQua>QqJwS@WJ&BZ>9|j&Uv;x;1@5u|E8bb0i^NVq4~>K?u$V%C4avk`yU^GBmA+ zb!(~o7yB_M$4S8RTXtj8Y6|7`7&#+B$a=~iisnQ$J|9CVffqLAkZHj2r3B{N(El)% zx>C|qaxdvu5JNpM(K(%)nP6svd>KkYacKyi<8yXOq%$W826lClVBNTKfnNY1dD6gU zy?@4{?q;(F(0V}S<3ns09Y!cE?j?kPir{>%bfDh0C!dEh>Qe^pNY;j%as3Ic>{{K9 i>%^mmnr1z-*rcWL0V)CdSq?RaIG8*)CE)*|m;DQEYgWSm literal 0 HcmV?d00001 diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..d9b2607 --- /dev/null +++ b/po/da.po @@ -0,0 +1,310 @@ +# Danish translation of the libidn gettext message catalogue +# Copyright (C) 2005 Free Software Foundation, Inc. +# Morten Bo Johansen <mojo@mbjnet.dk>, 2004, 2005 +msgid "" +msgstr "" +"Project-Id-Version: libidn 0.5.16\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2005-10-25 18:08+0200\n" +"Last-Translator: Morten Bo Johansen <mojo@mbjnet.dk>\n" +"Language-Team: Danish <dansk@klid.dk>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Lykkedes" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Dannelse af tekststreng mislykkedes" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode mislykkedes" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Ikke-ciffer/bogstav/bindestreg i inddata" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "MÃ¥ ikke begynde eller slutte med minustegn ('-')" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Mængden af uddata ville blive for stor eller lille" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Inddata begynder ikke med et ACE-præfiks ('xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Tekststreng er ikke beskyttet mod gentagelse under ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Inddata indeholder allerede et ACE-præfiks ('xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Systemkald til iconv mislykkedes" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Kan ikke tildele hukommelse" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Systemkald til dlopen mislykkedes" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Ukendt fejl" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Tekststreng er ikke beskyttet mod gentagelse under NFKC-normalisering" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Ugyldige inddata" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Størrelse pÃ¥ uddata ville overstige tildelt plads i buffer" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Grænse for størrelse pÃ¥ tekststreng overskredet" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Ikke-tildelte kodepunkter i inddata ikke tilladt" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Kodepunkter i inddata ikke tilladt" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Konflikter mellem tovejs egenskaber i inddata" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Misdannet tovejs tekststreng" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Tovejs kodepunkter i inddata ikke tilladt" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Fejl i definition af stringprep-profil" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Konflikt mellem flag og profil" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Ukendt profil" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Normalisering af unicode mislykkedes (intern fejl)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Kodepunkter ikke tilladt af top-domæne" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Manglende inddata" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Fandt ikke et top-domæne i inddata" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Kun et af argumenterne -s, -e, -d, -a eller -u kan angives." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Tegnsæt `%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "Indtast hver streng pÃ¥ en særskilt linje, afsluttet med en ny linje.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Fejl i inddata" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Kunne ikke omdanne fra %s til UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Kunne ikke omdanne fra UTF-8 til UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Kunne ikke omdanne fra UTF-8 til %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Kunne ikke omdanne fra UCS-4 til UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, fuzzy, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (position %d): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Tekststreng er ikke beskyttet mod gentagelse under NFKC-normalisering" + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "inddata[%d] = U+%04x\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "uddata[%d] = U+%04x\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" diff --git a/po/de.gmo b/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..943aa21ded6cbd8ab11d6c83fb776900ebafe360 GIT binary patch literal 650 zcmYLGO>fgc5H(*H3voakIShx2L%YWL5K2v{B1%+6G-?$h4xGBSCz~zKY_z+Ew*P}) z!B60V`a}3FJf}z*>3Mc%-@aMD`TP9w&jj%ZcnJ)FC%_rd#U=0z(7-vc0X{uQl0V2V zfTs_WWQF_+8RczYxs6UUIaz5RIMU@_c%7xm;%39dx>}KyO&cjhZ^e)k($rXCDsRZf zz|Hc2BKx%!9l7qRnuLFBDHSAjg;VHVcz4BBRMT30VIQoM0y?Fwh4O5e_0l<SoR4Z2 zjIGs&)&#Y11(mH)_q4H*Hgn#j7v~Fg;#o&%sE_DcP(RNPRsL4xBkJ{w!Qp<63W#dX z-)+}x#~Z4Ap!y?RDF*p|-UIJUho}}_OK5a-zM#2lwA3_h8f)mtZ+DsPc4M=?&T2l! z9WkvotQM@-1)ahHEp$}#xUt<UkJH(7Hrf4ZFU!*tCy@oMU~K`@uH&0cqpiH7&M0{Q zzKu&Y+VQ$4E!nGyRIY~m1&vA@)8s4LYQ++CyrsL}d*SXE3_j(Og+5!RE3TO);Omla x@2TH7M#dzGF*=X0VF4RL4W?}6fa=y`*4^>{vb5{cx2WmTaHv*|3xNfV{sBbBzfk}H literal 0 HcmV?d00001 diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..7a52ab6 --- /dev/null +++ b/po/de.po @@ -0,0 +1,341 @@ +# German translation of libidn. +# Copyright (C) 2004 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Roland Illig <roland.illig@gmx.de>, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 0.4.1\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2004-03-28 20:30+0100\n" +"Last-Translator: Roland Illig <roland.illig@gmx.de>\n" +"Language-Team: German <de@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "%s: Nur eins von »-s«, »-e«, »-d«, »-a« oder »-u« kann angegeben werden.\n" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Zeichensatz »%s«.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Geben Sie jede Eingabezeichenkette in einer eigenen Zeile ein, durch einen " +"Zeilenumbruch abgeschlossen.\n" + +#: src/idn.c:199 +#, c-format +msgid "input error" +msgstr "" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "%s: Konnte nicht von %s nach UTF-8 konvertieren.\n" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "%s: Konnte nicht von UTF-8 nach UCS-4 konvertieren.\n" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "%s: Konnte nicht von UTF-8 nach %s konvertieren.\n" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "%s: Konnte nicht von UCS-4 nach UTF-8 konvertieren.\n" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "" + +#: src/idn.c:392 +#, fuzzy, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "%s: idna_to_unicode_8z4z() mit Fehler %d fehlgeschlagen.\n" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "" + +#: src/idn.c:458 +#, fuzzy, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "%s: idna_to_unicode_8z4z() mit Fehler %d fehlgeschlagen.\n" + +#: src/idn.c:537 +#, c-format +msgid "could not do NFKC normalization" +msgstr "" + +#~ msgid "%s: fgets() failed: " +#~ msgstr "%s: fgets() fehlgeschlagen: " + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "input[%d] = U+%04x\n" + +#~ msgid "%s: stringprep_profile() failed with error %d.\n" +#~ msgstr "%s: stringprep_profile() mit Fehler %d fehlgeschlagen.\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "output[%d] = U+%04x\n" + +#~ msgid "%s: punycode_encode() failed with error %d.\n" +#~ msgstr "%s: punycode_encode() mit Fehler %d fehlgeschlagen.\n" + +#~ msgid "%s: malloc() failed: " +#~ msgstr "%s: malloc() fehlgeschlagen: " + +#~ msgid "%s: punycode_decode() failed with error %d.\n" +#~ msgstr "%s: punycode_decode() mit Fehler %d fehlgeschlagen.\n" + +#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n" +#~ msgstr "%s: idna_to_ascii_4z() mit Fehler %d fehlgeschlagen.\n" + +#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n" +#~ msgstr "%s: TLD idna_to_unicode_8z8z() mit Fehler %d fehlgeschlagen.\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" + +#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n" +#~ msgstr "" +#~ "%s: Zeichenkette beim TLD-Test zurückgewiesen (Unicode position %d)\n" + +#~ msgid "%s: tld_check_4z failed with error %d.\n" +#~ msgstr "%s: tld_check_4z mit Fehler %d fehlgeschlagen.\n" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..13d0fb0ca23a3c2c404ac5a0e0af4f106afb57d6 GIT binary patch literal 8282 zcmeHKTWnlM86Mgcngs$)p+Ez43IyB4XJf~1aBKx()=pU^zR0@{LI&B#=gjU7IXknQ zi!VV`5f6wLM2keBLPcC81P=%aAr&D6PpA^&1;GOXsSlBOppk$F1V{zM_suzHy$()N zsYu*>v~#|lGynYa-)H8z<3~Ox@XVmS8SRfR6JiPY)4TD)bMHMuJPAAs41iw-J^?)P zav^-+lfa9>zX1OVoO^{3L*OxcuMiKQua63G40sLrF5qW?H!%Kvpojj~Un#^pfxiGg z2z&up1wQa9Ax41n1zI5Kp90o_&jMc!ybrIp0v`gh{~o;F2D}86Kno=Q$AKR3nF4<U zd<gyfA>3<#6Tr6vYrwO>Ht<crF99jn_kd7M{2cf?;ID!A1OEUd|07^RyPX1ZosR*r zg!m>9Kk*D+<o_&?^4$QQ1Ri^B-k$`r{{bN7`Z$p5JPo9N-vPc6_%k3(B%TMt<l;}j zM}U6=Ql5$Xa(om>`>z4XF9w1{d=~g2*#B!l`jwOD*Utl=0KNe9fuF|W7lFSA&VhdB z^|@cKfhqZZ;|;l8egvdne+3-6ONe_QB=z@TG}>hiNc(*PuW8`ZK>GEUK+1jB2_en_ zr-1Zp45ZzD0HoeODf+(!(r$kSO5lSCR`Q<#a=pz09|uz39|CFj=YX{P?|^54$KR6s zwGM;`A^_5_j{#}#PXcMjF9Od1zYSahUI%iWGZ2dMZ2-yN0LlL`Am#fikbeAe(Z5mj zk3lHPHHjD3X#z1MG?0G%6p()X3Xp#N7LfM&E|Bs(U*O+?wEuCL^BV!uuXP~YB;Jii zJ!xaO%*jkUl@HhA!#Trf^xYI1pCdUq`||HN+6)@)M46~x1&t5VTfD>l%U|^2WYI@z zI^Ad=KGc^F<(@!;Dcy4lZ`v3txrh3e56X-<jRtqS`f)c9A?tFI{+dR67>zbV*!3T{ zS&X64C-lQnG=!!YMH@onLwnMP$I+^2?vd{CJU@!;wwD<{Np#z&5TBd2-Hw#3&n?c% zSq`u6jkY4cEr&zZ^0O$Fw$&P`l$^3eC22U}CxO;+7O7-Er`1F?nsXDgjat3F;)W04 zB}!(Y+RWN{r+hER+N9DAw6$qVZCW<&`l+_2FT+POt<rKrjtw0t%(Fce=d>dK?s>*~ zX+(who;hoVQW<nqa78957Hmr_BAb`yWYSZCZs|Ze-HH|WX72m9WTIU+(erd@d@r@0 zGmG?1DEGc)Mh7-j6(Ob98O1<HMZJBDq|CK;1DvdObc(gT%Ou}YaRTiJXXNDNKz{~T zFq~pqSAs!${9mLMBYjns8v8+D<B+<iR<7nU%B_j&8M%1jV$Dh0Bd=a;TQKhVMsuaU z_^9IwCzpmoDCHLH#i}O@S~x99l^@>Te3v24L9>%-xv}VX6*&%#-k!&XZqyp}p;63$ ziSrq9V?`x4i-WR%2Nr4U2Z}5jvyDrRg;PGE@&me+_FRToetfVQO(Aw^2>LK|M$F7E zgTM<FfxPDOf6K)PN!315WlGZd{NEs{PtyHS=LD=-gRn^H)7jd*+~;JM>iw+lLJp?2 zmkqKif|a~VR;}1}4`x;oHQyMUN|u+vPnGPdu8ns^t>ecDQgq{FGE@Z>Rqk0Nc0$W^ z^rlV`IGei=v*$%>OGPrYU0)lJcDsz{NE?MPN>$u~cc@O<DLxpN;4YTKVw$AkF=sRO z<K1edf_hejWg_V-wS%<glHjw6uCr$d{*Ehr-coUl;h>NkMJ}vByj_Hmq-v3>O3AR_ z@Zdrets$~%X-I0bRBm^Cn7pHtJ_ns(!Ut_u349|hToP;8fI1AWK@-4EDYH<SEgf6a zWf|M@W9@IEI@jJmyV96%LZzmq=>nBNqcVk4E}Nu&47+aYv;*l7$1G)P$M5zqf5U58 zi*Hbfq7PLdHFp3%a<VAO-;#)D*blZw%=-z=vVqV-faQhO^YK?YP7q`P?(tK28J2Bl z6gQzQA`2aCk99h?Io+7kQJ|z_5tZe5YOM<k(~5N9wBOXBj^QIrhiuRkg*?^RT_B7$ zy(|^;aST4_4&-E6Z?IEoqd8ez;MNt`oO5oKf=XPlF_sCHkr9d$Z4QRWevM#j%dR$A z;*2AQVaJgH@_~KRrDPGxebMR^5J?b&?JgHj5y~!Q7+QJ<40jByKO%C<&_Xfhjq_bD zB(wFOso|4-;XdcGM6x`}VdV1&S91xUm*>VPbpl)1K4ySJF!&7XZn<ikn{vUA;FB&> zaG%+8%Zde!QvxiK6E7n5Zpu=GScb^y>%VA?7wWc7Pe%x56`$_x_Bt?gpI|9VX`yYK zVJAic!v8Wt_$cQAbQ0`Mk=RG3b^^tWMapbuEhH$m9F_uja|^i?isgYyvQLczeKbIQ z@OV*&Wef2D?v4ChKrdmnZqKGnOsEY(n%13fZc9_{sN789>wNQdm8+ZvZ!_^2wKpxA zaGQ>FSEop1T7mLp0h3=ecCoc~Wf&nt_U7duan3MXC9ftj6!jOW%VWimD+?&jETVM2 zTNg>#-0h(t`avgmcadEZGWmHCMv2mCqN3KQglmx{sPnFN`_iawSEpIheAL$%{7Sv| zsa(h;hh0TyhNB?bcm&i}jNLYQx8Exhb~W+aYFa{xwWZ}|eQEK-)oN9)6`{^fMFcLU z=%z9g+<t{QC`zl%3*OYNNLFhNZ}QGmWI?Kv$t@X`B#z?%RcPH=>L&Md*IrNUx;rbb zPhO>hqWoCwzw1+1C$Gw3oJdD*Ih+r;(&MZtm_s%Ymd8?y?Gu&V<0*#63Z6oEX2_Uv zo{`*^kch=`7xC3A;(t9qp*ZIKZ~2DlzU@`t^}<c=GmhBn?m!KN<Z#a>t{TgeQI;z( zIPNAOA3uV6@6|)^a(=*_<_6AvXS_Q8NM%L!uw!@&Nn3~B`?7Z8HSIJiLEFoz-rF`= z)yD10@>0{Qq4F}1yg3Btv^+C5cFr3+>y1sx@iWsC=T42`3kbaxwWWEMzAfD)KS{l2 z?3*Ow{xvOUvlL}F)i?&gvTbE}$G`#Ml5g4>BGhXtzdH>t8&z4TFU;>LG+rI6)UX|( zba+g(X{69jdb$^3f0!vx0_R<n?$L2&lsnIz`cQ|b<rL0KmE|al{m8>6*2M|g^jtSN ze`ZGJf6osa`S5u;J~G4OE1$z_-{H0Izv|j|{n{5!tc`ce%ioE$vF`P2Pu<}PSWI#k z!E%NyIpN~LZT9BxgBQg9*zK>01xI&T>`y5^mKVq3`{DJG)dzLY9ZX-s^|3JT$)qr> zyEFXHTqO(biVJ0-B2OCsao5UH(th0I0NKA{mV>xx_Q!eMEWdlj*B5*BEan}20WEm_ zpIk#r6Bb(kYp<jQb6!mQ{9oMl^x&C?SJlI->Pxt)7D3g&uof|Scx}D;W_x&T{dZnl F{{hN$d$a%m literal 0 HcmV?d00001 diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@boldquot.po b/po/en@boldquot.po new file mode 100644 index 0000000..64214b7 --- /dev/null +++ b/po/en@boldquot.po @@ -0,0 +1,362 @@ +# English translations for GNU Libidn package. +# Copyright (C) 2009 Simon Josefsson +# This file is distributed under the same license as the GNU Libidn package. +# Automatically generated, 2009. +# +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.15\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2009-06-08 12:39+0200\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Success" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "String preparation failed" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode failed" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Non-digit/letter/hyphen in input" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Forbidden leading or trailing minus sign (‘-’)" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Output would be too large or too small" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Input does not start with ACE prefix (‘xn--’)" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "String not idempotent under ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Input already contain ACE prefix (‘xn--’)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "System iconv failed" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Cannot allocate memory" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "System dlopen failed" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Unknown error" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "String not idempotent under Unicode NFKC normalization" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Invalid input" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Output would exceed the buffer space provided" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "String size limit exceeded" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Forbidden unassigned code points in input" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Prohibited code points in input" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Conflicting bidirectional properties in input" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Malformed bidirectional string" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Prohibited bidirectional code points in input" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Error in stringprep profile definition" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Flag conflict with profile" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Unknown profile" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unicode normalization failed (internal error)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Code points prohibited by top-level domain" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Missing input" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "No top-level domain found in input" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Try ‘%s --help’ for more information.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Usage: %s [OPTION]... [STRINGS]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use ‘--debug’ to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with ‘-’, for example ‘-foo’, " +"use ‘--’\n" +"to signal the end of parameters, as in ‘idn --quiet -a -- -foo’.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: ‘Nameprep’,\n" +" ‘iSCSI’, ‘Nodeprep’, " +"‘Resourceprep’, \n" +" ‘trace’, ‘SASLprep’\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" + +#: src/idn.c:173 +#, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "only one of -s, -e, -d, -a, -u or -n can be specified" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Charset ‘%s’.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" + +#: src/idn.c:199 +#, c-format +msgid "input error" +msgstr "input error" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, c-format +msgid "could not convert from %s to UTF-8" +msgstr "could not convert from %s to UTF-8" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "could not convert from UTF-8 to UCS-4" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "could not convert from UTF-8 to %s" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "could not convert from UCS-4 to UTF-8" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (position %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, c-format +msgid "could not do NFKC normalization" +msgstr "could not do NFKC normalization" diff --git a/po/en@quot.gmo b/po/en@quot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c212463a06512d0788eba8253cd206d0cfaeff41 GIT binary patch literal 8154 zcmeHK+izS)9Uf>X$pVF5DCOEoO0Z3QHg@c$i7g|{+9_7zi@fU~6p(#<&g||qXJ@wO z;!6;ae*j7=wa`i+R3xOnR!Bv>@=%cILq*?^5URujjRZU(gb26qn{&>3H#kY9B60I* z=X^Wo{N^{m`^^0Eo<mOyv}yE@p#R}*LM#J+b_X74hu<N@Gr%Lj0Qg<tlfXlF3gH8v z0iFl`3HTS_+&hIB0*~3lLfntBJ|e_jz^lMd0-pe0!}lKnJ&eEqE+IYvd=2;^;B{aX zc>lYF7y-@~Xn~}E7PtU>8TcOH-FSQq_#lwuPvLP4cmXJZ7D)cz0D8ce3j8(jL5%N( zaPI|903QO@fTw{i;0J-<0aC6X0->7tIq*K<FM#&~e-9-8LtsL?od9y3F9ETHcmar? zcnJ^ke;G*mt^tn&?|NT8o&<9IIUwcwGLY+h8%X_L1U>+K6$lfFH-Ip?_#^OP;9r51 zXX5T09|h9>mw@CK13@C50)7GZ{~nNj<s|y`o4_Z5*MUCpYgqg|@OQxbKtKKd+^;KO zO1?WE5aJ%-6F~a)dEnnc_X?2uzXIdYF4uvy-!VK+0cU{pYZpkm=YZqDp8)CCKLcsE zxew=huL3!K97wx;6)1tv1Iho#K=OH`zy}b-)b|{ac5eb{_buRQ;B!Fw^;IC264!wA z>zyCX?R^)Jc6<m(y&eHB12=(O=S3jp`4y1-e+wl4zX2)VF*u8UoCk7zxfp*PNV$Fh zq+eeH;wOHC2mN{&AL-YlK>F1K(yx<1%JW!(UjfqoPXX~0FW^DH{uBuFi$~C@Cv6Ou zIhkpvvT-do&KX9hj%U!>4&~tN%fIx?G&=1>nW#?%oek+NKJNbIkF$WuVvN*uy3syt z)R&ENPoTq8uARV>F+n}psBhU&X2eN!xYgB<JAepT=R5jq3jHWLZT5Ebvca8V44poq zAC90SB*iHD5IP&}NgpzPtLUyt*F4XUBD?Kn#!nL6GAhLDhHbSXB^TzFX5}nDukC$p zMt(~UhpOpkQ7Ub-IZ`P(Wr<4CaKcXlt>Y|G$snh-MAaK}6SMW&!osTiybmu?G7Hsa z*2)Lvb0yX$mF`1Jo0in3Y2%KcYHNBjJf3NlmJ@QU>qudq?W#DZ75RJ5GuBHZD!kX` ztQksW&{n}^nWR{-C9#NXT$qzdR|UGM1L<@tR@|F8@Nd~fyKbWA>CpIIYCUHb>6=jQ zy~~UaY^W+iO0PYN4{a572N+42YwbR8vf9xp*7h!vd`ra%wC|shlb0WQGq{4`6w|yM z^wZ=260I2NE2`Ak4+0y9)IGIwEtgSlO;k_GrE}+NPTDScbz|FvacAm{)rF-;9alKH zG!#N9w_rC`U0Kk=X-TU5@Yd$L2yynColMD%CBLJ{acK0`JT`Q_R$mwz#SEA@pCLC^ zRbsO^D95*9k;Z<Y$f7=5zu;In<r6C3r(0>y6^P}>`<u}eVwZ-X4?}0f%<M7<yigIy zYcBt{QhXt)8X#4sB%ROy^^^J}9gI3BV9gqYMM|H}*5>7alU=I!vbqB~nATp_&#DMk z@+w(1W82xESw+-*V{9r}UIIT=vZFdS-W9dBA16rBjpNBs6;xEYYmwLqEz{PUIz`}Y z?n2D27pW~3$<TIuZ9v-TFrFiA6v8M~aTDI5I%&IjVO)Z{SPqM6l7`2e&Df83tCb4s zSrL|rq_5Nt(wa+x&nAY>o+0=<uJCzN#W6kyh1@7|VFlvtB8((ei&RxghW&;I7ounl zkyTSeQk$i6yY0i|ZJqQu=mZl!Z?j6^8)@N^Si=U?p??jU0Cq~5h01K{*qRQ@*p?q_ ze-qWY_SxCh`g{W_H7rdRs0137DV%cIB=uw1bz7%xNQXFPDN{Rsr;GU;Uej8<gF+O2 zr~;|E1Nf1XMN$5yL_EWOur*@dPiU46gcbrUFSMSIztVAnAd7I1pTf(qY%8O<32hNs z=wQ37)49#*#+;4<C2fnSEWfALy09?KNC!^)O&#hOKEia!22D}OQ;ppP!f4aYQZXOL z;DcdbPL}lsJC!z?lf^l1U4hLx=T<4G#5o&dnNS%Sp*YdzV2JG32)35&Xp<$*IC2<v z9O)zP+c#ZG7NOh|ZGi$J31YC_<>Dzq*`*9aOYeZ;j)C<@L{1r6D8{^TzRQJVw*E6U zd@>O3b1q9H%cC4dK96uUm+*Ocu8&eDu!Zeo1~>$R&#>;6tG2l*7ySr6=`aNc%${3T zENYw*V3C}738{BOmLkM5L{3ltC2PD;w{&_kLNKfNWP7*UhM9W=%UMbbZQBexF%l5| zml488IS*ivU~h`V0GZke6f+hnvzaxKpxAO)3gFEx<WeYB`YOqQ8vFXFk9z;_MIDw+ z!~?k3^K${cgw;A-n=&z>HUw!{cfPqLO}V3TGlj47&DT|~avHqN#ADRnuxP?<I?^4T zB9UnY%9905eo^1W*4mL_gbdl6m%qe0!)%qj8pu%8U!*RN6+^Bppg6OL()n&(Bw=H> zi-PC}?cCi(c1g(O=S3JLN~ej6nxhh~MV6q>yV~tbqqbe0W=Zo=Ut{nq^&U{UkVy`^ zip~s2LA3D*s4pA4ZSrAnR3_|N;<wb4gc6sQR~ie;OJA&3tMXD2>Ks%=;9`nyDl@_D zSD1sMwAMK1ow*swTCMI)-kypqNOe59DWj6aaqOcCtvgHI;C}Af>#1FLXT|l&D^yUF zFN^(m{mhlgD{>eo(vh2f&Of-)<E$x|LpBhW$5M;!6P4ZLDTc=io<ewL$e3}Sk=&M$ zh{bUi@zpKje?32;IOe@~`G)D<?N#6P!cFcqj@aw&Kn;cDaMvcT8q4ERmMhTz-AzC~ zK8AYlErj01{D3>f4V?SVcy;{Y%Bt#O$M6=DmJYqoWUa(&*eO(kmX}j~x@EGeja!wK z<%U;7<z*gua|q5Ud1`FztT%Sr8#^P%PfbmnJu!wiAoNz%mgZUdmUI{VB=s7xZ<2`n z*OZ*iQk30P;}`(Twv^!=0|$f)zG-EMP_Lo<&J?_CRAq5taehys@#<KmhV1~Q!(*aN zA%%9*lidjW!*qEPm~m0MN5_>>?mTzuLmi%yXK-GstVCJtM;<n@4o=9X>xRk9scD)2 zof$Ur=!_g6ndb48?cmyXaP9lAy7s+(^;_k|@Aa$C-sb8DVt4r?rQ}RpGPtFd<Niya zdw1(=AUL>-U^%_K3}Sq69b`2@9difGw{RVVjgKcVs5|@r&s+(iRdFeVYCI|Y$6X64 zp^IxA{CZbIzQpCwz327Nse#d(y&{5s|4Slx{GVJC3%mYnuZm#G%Ob4!X0MBbGY+nd e2Uo_oaAia=^)8Kw!Gmk#jW^4KYvaH3+V~FxZCQi> literal 0 HcmV?d00001 diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/en@quot.po b/po/en@quot.po new file mode 100644 index 0000000..4b428f3 --- /dev/null +++ b/po/en@quot.po @@ -0,0 +1,357 @@ +# English translations for GNU Libidn package. +# Copyright (C) 2009 Simon Josefsson +# This file is distributed under the same license as the GNU Libidn package. +# Automatically generated, 2009. +# +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.15\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2009-06-08 12:39+0200\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Success" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "String preparation failed" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode failed" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Non-digit/letter/hyphen in input" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Forbidden leading or trailing minus sign (‘-’)" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Output would be too large or too small" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Input does not start with ACE prefix (‘xn--’)" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "String not idempotent under ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Input already contain ACE prefix (‘xn--’)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "System iconv failed" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Cannot allocate memory" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "System dlopen failed" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Unknown error" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "String not idempotent under Unicode NFKC normalization" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Invalid input" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Output would exceed the buffer space provided" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "String size limit exceeded" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Forbidden unassigned code points in input" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Prohibited code points in input" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Conflicting bidirectional properties in input" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Malformed bidirectional string" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Prohibited bidirectional code points in input" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Error in stringprep profile definition" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Flag conflict with profile" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Unknown profile" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unicode normalization failed (internal error)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Code points prohibited by top-level domain" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Missing input" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "No top-level domain found in input" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Try ‘%s --help’ for more information.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Usage: %s [OPTION]... [STRINGS]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use ‘--debug’ to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with ‘-’, for example ‘-foo’, use ‘--’\n" +"to signal the end of parameters, as in ‘idn --quiet -a -- -foo’.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: ‘Nameprep’,\n" +" ‘iSCSI’, ‘Nodeprep’, ‘Resourceprep’, \n" +" ‘trace’, ‘SASLprep’\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" + +#: src/idn.c:173 +#, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "only one of -s, -e, -d, -a, -u or -n can be specified" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Charset ‘%s’.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" + +#: src/idn.c:199 +#, c-format +msgid "input error" +msgstr "input error" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, c-format +msgid "could not convert from %s to UTF-8" +msgstr "could not convert from %s to UTF-8" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "could not convert from UTF-8 to UCS-4" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "could not convert from UTF-8 to %s" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "could not convert from UCS-4 to UTF-8" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (position %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, c-format +msgid "could not do NFKC normalization" +msgstr "could not do NFKC normalization" diff --git a/po/eo.gmo b/po/eo.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d3d4812d6436ad895c399bed04043fcedd760170 GIT binary patch literal 6833 zcmdUzPi!1l9mj{Zw6Nt*DbN-Q^zkRG-DEaST7}fKRa3`l-6Xb&?La6fdER-ue%{%6 z+xg?fMyimCs`f~wic=-T0VLE44)nmGh=a?q6)HERa;GPd;6e|4e(%lLYu5?AvdZ|o zGxK}D_xu08n|JTL<>iRaajq|Mz50<TngJianLm7<yd{dd;2fyI*TA#jr#~7+?}JZ+ zZPtA6)+oA*`ybyHMV|tH2Hp?;5`2&Me+Faj-}rbGeG_~S{33W~D~dW`3{HYSsPTDF z<bMm!f$xH!1Sf8fqOX7_K)GK5zXo<e1wIdo{$GKz{;e9{2k+zl{!d^#_!Rhc@cZBi z@LBK+;On5+^)`sf(ci((f&T<Q3*N@2qW@lS0el>keO?0j7yXexqW>*W^uG(r`kM%f z*nKy64|oD3WYGdBdN0<v4oV!K1;yT%!8^d$!Doo$pFqp~NgnpWUw~)8)@P#VX5N1X zybD~pGw4ZC&XVXk@P6<m@EzX20k*mS>F1;95cqpg^8Yum1HKPVfQK<g{9Oj+`H#S- zz+Z!+_g|pI>z2F2{e7UU>wt&B@7DLvfwJGLpy>MxDEs{fl=$33P((fkPlA`guYxau z61U%hl8<*l+3&BQ<m=y{=(~fPv*5Qt(eoTA_WcHw`27JCeQ$%Z-#<Xndn?LN5gh_= z1s??oO*C8MB@h>*A$TwN6HxU193+g<O<amga*oQKkLdc?&K-HLze}wi<zjh6h<yww z?TB{p_5u;57TwMzcF0HUZa!kO_$#pxyX7NxNe++6&Dclc{bepnA);-4UV!KuTv7|t z;!?8`ujV5?D0L^f7Qd&sXmLLufanNU%q209I7*FEas<JD;y5v@RX^M`e;0F`mCC>9 z+pMo_)^qt#m)2#iX4x~9HD$9P;F3)Z>)goXK{iq<UOS@Vc+I4vy|OCo;a})1QRbR0 z(H&nD@ePv~>@~h3h&L~GR>%&SEXjI<?zlYP=f&pKZW&dSIMi3V+jV&&-%6)eGTU{D zQ5z3*j;r}IXJ=ZXYb3fxx$EJ|BTLH{=H{R9T2~6Rj7-<|tVwEpquh*CElY@s(&(fP z&pu0<+l!cU(CT7ZU76QIBO2RBZmi>qU7A^%Yad|+=7$yP$^}!nD(^P;|3gKY>#h+M zOQ)93c@^IILYxn=^1d}@FJhL?4-R8io81ILa+vraR@tTmnELW@M%n4`ZLxkMqGpe% z$r{nw@NHaFi>OU99hWZFMc3M3-;B#Bi&AoWYG!tClIKp(pHdTv>FFvh)ev(gW!Gw4 zRaF-P+8R~8+zk&_){16ymbp^tG<98F8Z|USmv2ThYdSAzh%1MRb_Xdbt&yXR3W>~` zU9}~Jv$~0yqc}AiCRK?WYMUWC97;W>HZzn_Y4RS~5qHY9`a$N~$=7mHFH;hD)~x0_ z-|Vznr_!`8%R))6%r&Z2wnWb=w?3W;`n^`t+cSC2>uzm#RhXoOd7G4x64z4GQA*1G zN<AXlqN-=H)K#Urx~2*Fnk{xT*n$O@T-EC8OgU1LTVfzSjPD^KAWo%pp~*IE?y{i_ zjSZb!y_y;|^W>=uOS8+kwCp5wT~pvu)54`}Ta-E{u2*fjhIQ02(+P+5aK!p6anCuP z;gFc#Zeev{`<YI?Ek^9`De9T{5o>B*7ZR2$lokaR##*fTs=Ou)IZt|YNtTIhzY=o` ziAC!0!Hr}phL}qlgPa&ttU0Q(d0#r`%OdNgw(GrLwTaEi5zDa+PZ^t~HQpGTjjA%5 z&2#i%+gMLF^M;zXnU%%SnN;^x*9FZXDz#K}#^r32m`tS%Cy6-<>3&PG_0`a3RpEo9 zCWzzYn0S@xLZT)WGFHmi5=@&D18IUBwVSeeNh$l5k<zl)P<SmP`jb(ROdO6$-}u}G zBc)qEC{0fGl>2GlB}&GlnxLO2WjEjOVLUG#5uZ>?>~kq_3?pakyWyv8u=l)9<p`4& z+!OW?+338*TOtyK=V`rtT}p{nRL+k7^Dc`M+qdP>lwvmd(Y4Ld8e!fMSg1;g&{bEZ z>?!R`!B9TNXMmf6vnh@Ch?#3$BOOc2tX4f5lp{w*0omN3my&34Y?AD8<G>t^Ngw>a zp2Mm~J)nIloRX3yb{mddDUFHS7_#h6EzQi$-B6}EQROft*WvK>ldD-qwx#i;YWHng z$T6MTp)F}-iGtWub*1^ErA?03p-NIZWOrS7$Qhn(G`g1QQ06bKE3~5R#{$DyhNvXp z?@JRdZ;lv<y1N$AU3ZtlCLM+_Bg&SANqa{WsijMp^L}<~m6@x4PRmHs%-0-!jo*7* zu5D5iexgf<GZ0-qiS!_ISF>=tbJsNNN}>B^TH(ag3yaHh3-dqhbUNzky42;S70DTR zxpbHP8F=}@EfL>&Sf6H>Pi{T9r6!ioou0hzYyU#3&~>9xT??1PY3*O_JPU`1f3`b` zF4rde$7Pya?yi~c0CUvD$Q6DvsY7WMwjY1*7f_q)%)WRoi7y7SH!X*m%;004hguiR zh~XKZFZwo#AFujFyzHiFihdk~9_wdS$L0Oj;=*z~!w`~^icgcLX?1*R>Y;e*L_Bp; z9Xme#z(a?pc!FSj!E9KemAi5$V-Y>3rXHGpaO&{XG33taqKubwofWB!@@X}j45jm* zxG;DA-0USad-2r#l6u(qr|vNXofz^c3$uPj^5SKqhb)6F@{(iXVdkyZCR@W1hp};w zrM4)GPT*|RX5Vx&Q$E@{KX-n1Hz3D4Q>__BD{UA{(N0s2*UF=#lv(@j=2U&8DtqzC zT{+o|(GhzF#Y~%4C*dB#@8okJ-9OJBxvjgzt!EGy&Qpj*F{*N%xSCBihhxxG{|%g9 zt6r52x>kfEcDWwuuXmF6q}>L3U76J8Ryf)9h=09=iSK_B?5>f0Zbbc=&i-t3+b^1o z-BSJLYr^^mE^#+v{o60h&M(y7t!$wq(0&e>v2(cojUY1v;;&0|n>tMO(*5AMKMwD9 zP@`jgTD3nc`)@bwzdgqO+k4snjqPYR<iGu)$$u%K9FJnE<xJu?lJhi_?;}a!^>{yr zFG06zoXua4_@CV`cs<&GHn0E-3Guwcr#J9@3lX$kTWXb??N{v3-H`O}D1xmDCD~Eb zispsGZ@>@rfGQ1CAHuaHbTW6U9k@Ow8^)Ppl+yD<!|)@|Xe%n20T@x{rcd{~=qzL= zOE^KSrrkI`p!!ZcAfl^wHMN|%18A?OeZ0;zKXYIi=tE29hHf2hv;Bgt)<Z&QprWjl zgja;vPgDhZPgMryi>X+%VRb8Y1HJt^ws+LZR;AiI)ZTY|S_;uPq6W57#7$IdNc~0I z3Q?##0eh`9Lx=*?B5Vq|!mFCcyD=WW7&zykY>FuCFmN#GuHAlx_=<|QFnKfBf_XsW z+YOBmX0|awsBmHjRy>6K(tCI%-UcpD3PiEtq|H?Ox@`V5r$C=jHB_F&iE1J9Jawb4 z<%#zk^|fd=kl7(({<sv$R*>X4_SK#B^NQt3C7gaBsi4i)OHsv9pV_{H%}dR2oA93q znNP_FXMrd4TDBQrP+mDTsEBZAHra|ug$fJo-Kh!UHYvqG5lBEOCv24+_KIg5lDS>2 zq%9~HDt62?F;K1Rp<2^Y?z92J2_8Qvi1I|crt-61j9;nyQ#UTZD?TR$en17+G#&?q z##0nBaGzq7i{a!m@F*(G$1M{wKW{vl*L5hN>q6+nm7R!(e!ypv#jlZCavmLY!Tv@h zJ5;)tss*K|nPw*Dzj%nv(UjloKw@Fuq)EDRH<PJ^OB#>gfyA-TnVV>DzTA?$@Fbc& zSWpTnar}Ct=_~%PVQ->#J=&k9J?Y>7vKg+jeNhcy&bElQU*PCdZ@!{4`q_7y6iQNI zEF%)1=%9w$e;8TVCHrds|7Ee{NeX+B(If$pi6>F?C&eB!d~oHl4zY4DeSQH+RtN$_ zU(9vPRU!K1G%)>fN19iG?~lKMNp3L7#%RBU7w_o7!24xpM$3AA#8i9H(oRxWl$W<t z?xep)3~HInjv0c8e5HrN0Cm2-Qr(iS3WVQBp$@>ft2=z(^Cve+<x=M|iG@$O-P@+6 fSGM3xLWza&&&(|ZzQ65T;{Sy1bEvo*Q2qY`!Z_G^ literal 0 HcmV?d00001 diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..093835a --- /dev/null +++ b/po/eo.po @@ -0,0 +1,354 @@ +# Translation of 'libidn' messages to Esperanto. +# Esperantaj mesaĝoj por libidn. +# Copyright (C) 2004 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Edmund GRIMLEY EVANS <edmundo@rano.org>, 2004-2005, 2007-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-09-01 09:40+0100\n" +"Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n" +"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Sukceso" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Pretigo de signoĉeno malsukcesis" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode malsukcesis" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Signo ne-cifero/litero/dividstreko en enigo" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Malpermesita minuso ('-') ĉe komenco aÅ­ fino" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Eligo estus tro granda aÅ­ tro malgranda" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Enigo ne komenciĝas per ACE-prefikso ('xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Ĉeno ŝanĝiĝas ĉe dua apliko de ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Enigo jam havas ACE-prefikson ('xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Sistema iconv malsukcesis" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Ne povas akiri memoron" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Sistema dlopen malsukcesis" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Nekonata eraro" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Ĉeno ŝanĝiĝas ĉe dua apliko de unikoda NFKC-normigo" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Nevalida enigo" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Eligo estus tro granda por donita bufro" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Signoĉena grandolimo superita" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Malpermesita neatribuita kodero en enigo" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Malpermesita kodero en enigo" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Malkongruaj dudirektaj trajtoj en enigo" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Misformita dudirekta ĉeno" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Malpermesita dudirekta kodero en enigo" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Eraro en difino de stringprep-profilo" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Flaga malkongruo kun profilo" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Nekonata profilo" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unikoda normigo malsukcesis (interna eraro)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Koderoj malpermesitaj de supera retregiono" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Mankanta enigo" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Nenia supera retregiono trovita en enigo" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Provu '%s --help' por pliaj informoj.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Uzado: %s [OPCIO]... [ĈENOJ]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Internaciigitaj retnomoj (IDN) konverti ĈENOJn, aÅ­ la normalan enigon.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Komandlinia interfaco al la biblioteko por internaciigitaj retnomoj.\n" +"\n" +"Ĉiuj ĉenoj estu koditaj per la preferata signaro de via\n" +"lokaĵaro. Uzu '--debug' por eltrovi, kiu ĝi estas. Vi\n" +"povas specifi alian signaron per la media variablo CHARSET.\n" +"\n" +"Por trakti ĉenon, kiu komenciĝas per '-', ekzemple '-foo', uzu '--'\n" +"por indiki la finon de la parametroj, kiel en 'idn --quiet -a -- -foo'.\n" +"Devigaj argumentoj por longaj opcioj estas devigaj ankaÅ­ por mallongaj\n" +"opcioj.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Montri helpon kaj eliri\n" +" -V, --version Montri version kaj eliri\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Pretigi ĉenon laÅ­ la profilo nameprop\n" +" -d, --punycode-decode Malkodi Punycode\n" +" -e, --punycode-encode Kodi Punycode\n" +" -a, --idna-to-ascii Konverti al ACE laÅ­ IDNA (implicita reĝimo)\n" +" -u, --idna-to-unicode Konverti de ACE laÅ­ IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Ŝanĝi la flagon IDNA AllowUnassigned\n" +" --usestd3asciirules Ŝanĝi la flagon IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Kontroli ĉeno pri TLD-specifaj reguloj\n" +" Nur por --idna-to-ascii kaj --idna-to-unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr " -n, --nfkc Normigi signoĉenon laÅ­ Unikodo v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=ĈENO Uzi specifitan stringprep-profilon anstataÅ­e\n" +" Validaj stringprep-profiloj: 'Nameprep',\n" +" 'iSCSI', 'Nodeprep', 'Resourceprep',\n" +" 'trace', 'SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Montri informojn por erarspurado\n" +" --quiet Silenta funkciado\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Nur unu el -s, -e, -d, -a, -u aÅ­ -n povas esti donita." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Signaro '%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Tajpu ĉiun enigan ĉenon en propra linio, kun linifina signo ĉe la\n" +"fino.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Enig-eraro" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Ne povis konverti de %s al UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Ne povis konverti de UTF-8 al UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Ne povis konverti de UTF-8 al %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Ne povis konverti de UCS-4 al UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (loko %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Ne povis fari NFKC-normigon." + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Raportu cimojn al <%s>.\n" +#~ "Raportu erarojn en la traduko al <translation-team-eo@lists.sourceforge." +#~ "net>.\n" + +#~ msgid "input[%lu] = U+%04x\n" +#~ msgstr "enigo[%lu] = U+%04x\n" + +#~ msgid "output[%lu] = U+%04x\n" +#~ msgstr "eligo[%lu] = U+%04x\n" + +#~ msgid "tld[%lu] = U+%04x\n" +#~ msgstr "tld[%lu] = U+%04x\n" diff --git a/po/fi.gmo b/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..75a2edb82c9bf7b0c754f1d5934c735a397c2914 GIT binary patch literal 7256 zcmcJTO^h5z6~`MANHRbO0RjOMiV(BA&h~iMIKf^g$j*A5toKviu@x(dytOkuGquy* zHT1{WV>qDP5aQzkw@83iT)1$-2RI<K+(1Z(TMk6xfRK=o5L}2N;P<M#cV?VjCkJS$ z=ik-+>ec(MSM$e*@BN;~HP8JS?!EVT-Xb`A4?kR|@AbSUcm~wqYv5bpf50hd-+G_t zJ;M0O`#kSK@GN*7yafK0?>Xo*)(?2z7r^g;p8{`#b@2D#4CvJgJPrzd16&4Q1wRD- z7JM9hy&V4we1h?PAMiW{9tVa03MliF5`O@Gmhtbv4}*ULKM(#Jd<J~tgP!*&cnuV} zQV@~7Z-XBLzYl&C{0S)he+h1Ye+FfpXAn;0Yw;ue6HxfS3d;N+gCh4Yz)ym&gYO6b z0SezYOMDRHi5;H+Mcy;uL*O;=8`yCd>@xl*i?qR4`1myMe+@2yZ+^t{KEeBQFcrQp z@$+Rc1f%yNKX``mqbxEFZh=pNUjxPWKLjs<e*ove$6@vqxB-g3Uj>ElZ@@bE28c-B zgD55RkAcsE>!A4an<f4XyukPk@D%tY#uj^A1HS~`1kZs#1x22}gP#T;!5R01C&A<3 zSy1@4OZ+al#`x#pN$`FqVG8doC~~fXv*0!;e)twB>;4Et6z^9cruSY4h5j!kz6D|e z?;(;w{4fOy-xom4>|sjxUUU~e)kPY(xT(g%L$1$pi@khqkpuSL1KgsUtS=X#DB<rt zECVj(ev6;SfMeVeGnm|6sO)Sdb|1eaJ`vL+6kJSCl^-P@#dh~_6SmHtfV(6X#4d7u zocjbfsqJC{a4{ful-L$KNzREqJmoImZv{Jfrx;Yfn~8}t<vw&w+)*ZO+a%JNv2m@M z_LbZOSv8@+EfWUJv;80`Xg#I;?yU0tZV>h-X;ra?`=H~N3T~PV-u_h~9|TFtTH`Yc z^6JCE3|XNsQ~HT*v;1>gjmyjHFSwak(m<vCplRABXsI+qsZKu$`l_TwtuzaCt5j)x zwXx@`Iy8sPP8Zbnx{d<jI5m5B9@}PXacg;MmKnBH&QRNzgVg3pvl_nxi!9O2Kv-;@ z-&%Ex)<pSKlpoWrl6(`fbb<k#+DbQ@Hff13GppiK?8*>g_m(qa9uJ#HNK6O_uM5S~ zX8A=(g9*|gu1J@Pr*Tp(q^1>XKeN70o5mFKE!r4YW+Ke_#idE<mM^TISJSPat@AKb z5pvAPs`)spJT}#;6{~h)qr;iiyhR<yHd8tbZBu7~ih{@{LvOLGlawIdK9)|^p%Rt* zme5bdGF`J{G6H93h?spp3<g1{S~k)qhBS&K2164Egi#hGZM-AuWZm*b>{5W>xdo46 znln6eb`qTo>$TeXFf9F(D)CitlW3JC;j_cg*|P<I#}%KqgCyZ|vy?kegH{dkhJ=w4 z)xw~zl!X0unbuRns%?<e=9#+D)tJ0%(gO}AWx_R^*P1$37MCOj8;B0$YlsQ3QzqdP z!~>JqIFdvk=)~xqFi?vxp1-`c)Ig<%71K3?6pgCb%VgO!(+PIHVX`jL5yw;%6xLCn z`P+WmTHc|Mh(1+A>eO^%9XeS8k-x2oX95>n6Z1M1vuqPu1Xxjue9fbBoDgIU_vj2S zW7$qF;-+GY(4vFwOC>98E^aL7M4+^5iOTAGW~~d0xE-3N(|*UaOoES?j%;X3smn~@ zgfVeH&%C81fe*5c<z!WFh-niWne1H*bw@RA!MU(XN#$L%3CpyCScMcPu{jLMenYTz zRAk~jb;eQC*l}izJdbrMR+9)B3uR;}L|YaCNrD8nLs>i{lwHb5XqlTZycuKt8Lyyh zSrn7JalR{rlx%%FH9naL_X{pdl$1v`O+L@aYA)f6^1L-GI>8p(ClcTYhR;}c;HqsQ z@0t!}+d-X4vlo{2)(qNWk%D-g)Vm`~39+2WInaOI#(v9mOm-q9n1kd*ci8V@<^zI_ zJQEAuuzARulFkGS;S)FyFi0axh&MqN+-wGtv82pS-X=lWa-<aC%>lX8@;1jR$wc%V z>Z390!@rkxSha}<xNjBZUA)9<QQu~gn5c~)4SRlTae4W!G*`+(x_)tG5nr>(Q?Oj+ zs;1#>Nj!<#I~GkTZB(<!WF)d!LFCDslKkG*kgYXRt&j{E%`09~y5m8`t3ifRe@R_w z1*TkCpg2nr73aHkNy5gkPeIhpZsG1SyA(3%q6kx>OqK>=dsg9EvV=PCYPVK#aKqJU zDQTMen!vBpdqU+>CN=FUx@0&7(Izuc_hNe^E`|rADq*jrx)UrYlz4e#v$4Ff{z|=G zS1*^LE`ypUd*JoVUUz%o^;5Tm{NQD|n_WMB>(nhZ-B`UabL40DL88z$y?z-B*NffS zeL8qoY##32s1jW-MRu>VuywuJ4Vpc~QPX{!y2_-Eg?X|3_;)vf*xaS|`O7W;YSExA z$Yv%rc)otBb~)%%JpHw_V_N?6c_;N7c7dem_yy6qPMp_m(y483H2g)1kc5<f0Y5FM zlXG)t{JCfRxzlR?<iZ!vJT=D~2>r{!z(^}NqC4%+&HM9DtNGIlCr=i1t2)j6Mxx_1 zlv2K+E=lC56`c%hO!z(9<7t<7=h$G9w4S!>agcqvwyNV!j_>?NprZwK(ZsPyyXskr ztz#wY(jZ2D+nftcnlaNgYy@T}C|Im5uPu$NF<+mnEmBv>L0=+vfmpnmo#=-Y+OyS` z`rMVqMgR1OP8OqX_^y4Tpe?A=G#<5={1<{)8fj5z<$1kB_c33e7fX9Z6Lo0o-pE5s zVO8wX-5`i}_xHkGlaYAzz*ahJxvDL*7?r;-ns666u~%kEYIX<LU>?=KR}0zhZlHFx zG)`%jOQ&{J3t!D(BfzC&b37(ZH1TUomseJnFKw)EsFnS_VYa`gqW!)7y@ZA=42QA$ z)7M`cMKyz>{g)k*t#Oxd(50pm8jc26(U8qjD@$8PcXA}ZY(c(NeLj!x(CI_rdVQgE zGueoxf>z`4p5MK@yPS}?zQ3AY_5O_S+Wm8AiEu|iZxsbeuV;2`Y(<``_2+TSW>MbL zCJhJ@@!wHLfz3S8s_O3jp0zEVr!wKF1Hp=rylqO4DjkY{{G(0>Yk3~WS~?TAis_|B z$*G_iNpw%+w=75AP~Y`%a3?33JK_Z2nzv-sz?v2rBfFedQI6q^_SUc)Py4sUY{yb( z@v#$vpZ0X9r2(eMWU6OSimqZv!l_}nznAHh&B<kw4)cILQF|*^`cRt~l2h;MzT}wd zk^ZFJfJ7CK!GicEMS4A(VTL^InM5Mm+L#t;MH{?1=2W^>I`>TX(mcy@<-Ec?X_mX% zM174R`?LnxFhnXh(P<^4+1f5M%aa4gGfaweFm_Lpj;!0?s}~8#GYRN8NQaiucrj6e zsQCMUCzWcQ)$r}WV2N28Rk)1S;{buAbw%c3Et`;a=q~FZT0Ej-Lzkn5mOW0_hEZR# zUfdAnqTnv)l+kI!`N&BnqKFVW?CAkcJP7((g+elPQ6yv>HGo;^&`>rN-@~+0xm2?z zl)}+>tO9XsaUzk*0eyKGNeuOpCa0fEz7f#9oa!&!(%vvl_xFU+;inWn;LuIovmu`6 z7+M`vFi_uQJuxFe>8u^Oft6C#FDDqZ9PZyvRXFSp<#TPEmX_l(0-3}Zy8IO49wA~< zGOHY0>5=3GuQ{s0ik=vI?C*J3W$%y{tN6d<piopbn7ZP0^HvRtEAfvk)N&QowHU4v zOJo!EBp9LLJfjth7v@5GBS#tM8t1}ku{QUNw=$kg#iA06JQ0+)BZDu-n&XK~WFwkT zWlQv8f0FYgs)a77U1f2n7<7-7EG!2fw{|%pFbG_fpo;K7$OGDyx25hx;+97r0vDTW zHQLk~&I|+HGqw^|a=WlQb;NDL?n~fZb^G4_9x0Mr%8BgH<F1tPDB9_}oxXjSEO{{$ zx5^fZPT~ITA?Y^E4y#dQ-Dm>FlFCxBp2dJYEexo;D&{zy*b}ZUnfOGe2l>F5f%b|G zo;)X>S<4vmgaAuS;dVFflQ8Cha!7O|nvlElD}{@S#}sNO#XX*kg>l6tYTs=XOa#=s zopk3;=hT-Dk@Ctxf9;^eRCXC1z%o-EzWCoudZ}0rDu#q8_LXu!F6}unuR55>fy|fF zNk9)MW%&>W>=V^KpC2h5;bMChf73hh7Y=`3Z4^ov?-I3jm)HnGQY$VGYkpC??%;O^ zsXM|QPPr<1Mz@(+a<Sl5Rp^6b9+^ggT47^jH_$G)Twsp^S@92o)IZrPL9~aP93~-` zckYLO3rx2~`P8Em-N<I?qzY=<RRFh+YmR4#LRxi>m^jD18GligF>j^V3vbI2NWFaZ h{OWRJYq>n)jivPe?U+|u`G0%blO~xh+}!1~_g@oc^ico+ literal 0 HcmV?d00001 diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..3ba3ad9 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,366 @@ +# translation of libidn-1.4.pot to Finnish +# Copyright © 2008 Free Software Foundation, Inc. +# Copyright © 2007 Simon Josefsson +# This file is distributed under the same license as the libidn package. +# +# Jorma Karvonen <karvjorm@users.sf.net>, 2008. +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.4\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-01-15 18:22+0200\n" +"Last-Translator: Jorma Karvonen <karvjorm@users.sf.net>\n" +"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Onnistui" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Merkkijonon valmistelu ei onnistunut" + +# Wikipedia: Punycode is a computer programming encoding syntax by which a Unicode string of characters can be translated into the more-limited character set permitted in network host names. +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode-koodaus ei onnistunut" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Syötteessä on merkki, joka ei ole numero/kirjain/tavuviiva" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Ei saa alkaa tai loppua miinusmerkillä (”-”)" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Tuloste olisi liian suuri tai liian pieni" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Syöte ei ala ACE-prefiksillä (”xn--”)" + +# Yksinkertaisesti selitettynä idempotentti on matemaattinen termi, joka tarkoittaa, että jonkun toiminnon tulos on aina sama kun toiminto toistetaan kahdesti (tai useammin). +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Merkkijono ei ole idempotentti ToASCII-toiminnon aikana" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Syöte jo sisältää ACE-prefiksin (”xn--”)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Järjestelmän iconv-käsky ei onnistunut" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Ei voida varata muistia" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Järjestelmän dlopen-käsky ei onnistunut" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Tuntematon virhe" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Merkkijono ei ole idempotentti Unicode NFKC-normeerauksen aikana" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Virheellinen syöte" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Tuloste ylittäisi varatun puskurin tilan" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Merkkijonon koko ylitettiin" + +# Code point is any value in the Unicode codespace; that is, the range of integers from 0 to hexadecimal 10FFFF. +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Kiellettyjä määräämättömiä code points-skalaariarvoja syötteessä" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Kiellettyjä code points-skalaariarvoja syötteessä" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Ristiriitaisia kaksisuuntaisia ominaisuuksia syötteessä" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Väärän muotoinen kaksisuuntainen merkkijono" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Kiellettyjä kaksisuuntaisia code points-skalaariarvoja syötteessä" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Virhe strngprep-profiilimäärittelyssä" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Lippu ristiriidassa profiilin kanssa" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Tuntematon profiili" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unicode-normeeraus ei onnistunut (sisäinen virhe)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Code points-skalaariarvot kiellettyjä ylätason toimialueessa" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Syöte puuttuu" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Syötteestä ei löytynyt ylätason toimialuetta" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Lisätietoja käskyllä ”%s --help”.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Käyttö: %s [VALITSIN]... [MERKKIJONOT]...\n" + +# convert -> converts ? +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Kansainvälistetty verkkotunnus (IDN) muuntaa MERKKIJONOT tai vakiosyötteen.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Komentorivirajapinta kansainvälistettyyn verkkotunnuskirjastoon.\n" +"\n" +"Kaikki merkkijonot on otaksuttu koodatun parhaimpana pidetyllä merkistöllä,\n" +"jota locale-asetuksesi käyttää. Käyttämällä valitsinta ”--debug” saat\n" +"selville, mikä merkistö se on. Voit korvata käytetyn merkistön asettamalla\n" +"ympäristömuuttujan CHARSET.\n" +"\n" +"Merkillä ”-” alkava merkkijono, esimerkiksi ”-foo”, prosessoidaan " +"käyttämällä\n" +"”--”-merkkejä signaloimaan parametrien loppumista, kuten käskyssä\n" +"”idn --quiet -a -- -foo”.\n" +"\n" +"Pakolliset argumentit pitkille valitsimille ovat pakollisia myös lyhyille\n" +"valitsimille.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Tulosta ohje ja poistu\n" +" -V, --version Tulosta versio ja poistu\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Valmistele merkkijono ”nameprep”-profiilin " +"mukaisesti\n" +" -d, --punycode-decode Pura Punycode-koodaus\n" +" -e, --punycode-encode Koodaa Punycode-koodauksella\n" +" -a, --idna-to-ascii Muunna ACE-koodiksi IDNA-koodista (oletustila)\n" +" -u, --idna-to-unicode Muunna ACE-koodista IDNA-koodiksi\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Vaihda ”IDNA AllowUnassigned”-lipun tilaa\n" +" --usestd3asciirules Vaihda ”IDNA UseSTD3ASCIIRules”-lipun tilaa\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Etsi merkkijonosta TLD-kohtaisia sääntöjä\n" +" Vain valitsimille ”--idna-to-ascii” ja ”--idna-" +"to-unicode”\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=MERKKIJONO Käytä määritellyn ”stringprep”-profiilin sijasta\n" +" Voimassa olevat ”stringprep”-profiilit: " +"”Nameprep”,\n" +" ”iSCSI”, ”Nodeprep”, ”Resourceprep”, \n" +" ”trace”, ”SASLprep”\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Tulosta virheenjäljitystiedot\n" +" --quiet Hiljainen toiminta\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Vain yksi valitsimista -s, -e, -d, -a or -u voidaan määritellä" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Merkistö ”%s”\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Kirjoita jokainen merkkijono omalle rivilleen ja lopeta rivi " +"rivinvaihdolla.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Syötevirhe" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Ei voitu muuntaa %s-merkistöstä UTF-8-merkistöön" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Ei voitu muuntaa UTF-8-merkistöstä UCS-4-merkistöön" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Ei voitu muuntaa UTF-8-merkistöstä %s-merkistöön." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc-käsky" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Ei voitu muuntaa UCS-4-merkistöstä UTF-8-merkistöön." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (sijainti %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Merkkijono ei ole idempotentti Unicode NFKC-normeerauksen aikana" + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Ilmoita virheistä osoitteeseen <%s>.\n" +#~ "Ilmoita käännösvirheistä osoitteeseen <translation-team-fi@lists." +#~ "sourceforge.net>.\n" + +#~ msgid "input[%lu] = U+%04x\n" +#~ msgstr "syöte[%lu] = U+%04x\n" + +#~ msgid "output[%lu] = U+%04x\n" +#~ msgstr "tuloste[%lu] = U+%04x\n" + +#~ msgid "tld[%lu] = U+%04x\n" +#~ msgstr "tld[%lu] = U+%04x\n" diff --git a/po/fr.gmo b/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3cb6b49b986ceeb8a313c911216d1b2b40a7c772 GIT binary patch literal 7328 zcmd6rOKcri8OIN8p>TPZM}a~)l%}@ZjN>Ftl(<cm#7SDWv14K<>QnJ}=G=QvJ9p-G z9*&(wg#>hiRH2H(whIIs5D%#m8zh7(mIWkspsLH<RziXen<DZ1&Y8In*G|ihtK9tW znfcClzVp35zj@m&uP8o;_<oh|&p)Kp0{Gy~{Kw~!Ta=2xMKA<^0X_zP`ol`S3qA!- zvFGuRDD_3w-@a9;Pk}!M?*)GfzQg;!fC1~@eN3r)z<0o}fVZ`jngs)J27J247eS%_ z6}Sk#34Ris{<u<if=5AFUjpv}BT$1cg2Ml2pzMF6#&^N5v%dEe$PPXVeiM8WJPN)5 zei?iX6uJHcBC>iL{5<$C@N?j;94h?p055>2K{@ATkbmm;{3rb10EPdXpzOa1rHI_O zgI@xVf~ZVg0EO@68lMG4k1v2C?<?SEz}LX<pvOOgZPt(SFaduJeha+wvr7F3?1M+3 zOK(%^Ypj0)b2;x1;9>A@;CF9AMua-f`iC5L5PSpt2B>cL&+h_{v3wew1z!QhM_vaX z2mcMqJy&3UH@FUpoZkb5?~g#?`)BYz@FtWiI17p#PlBSKmq0{TzXA7yuY;$-e}cmI zevBb}o&ZH(-v{@BFN3oGw_pJN9lQv(?(lLx1B!e<08yEG6%>BI1it|O6%_rx4RVxf z;rzn?ZcyxXUyUb0uBtA98tj20?@J(RR;bcFm$QUV^ATPjZ5E*LkdOH40ltXq<baLB zwH4vu<OCG1rf^s17qWJCkso}-hwkAkzKLqxhbuUph@QqjQ!K;>a0Nx!s%gIR5k1_? z_h!Dhr?U&-J`#hX7qPkc;T&H=+}R#*HWGb{twm2_1JQ@l?h^#D*{C{x(fq%X+qBf~ zMaQNcZPRv^_rlU<X{*`xd}U49Z1A{h6T`l&Z*otov<|xabr5t-(x0T&{tWjbOk-`f zYzgn+vXF0@yx^?y9iF^-G29_1q_QP#KNpSD^LtrjPV6<Ki;@d<bQnch9?P#X)0a{k zWwFtlhi4Dz<#UfMw1ih*c=hwF%~ejUu3cPQe%NunRKTTgBHOkmuKD$I)7LdEDk@47 z#<hBONYX4XBhGHSi+R1i9QKTGoZ5e59_w~>VRdn8KRXcL@6hWPO_5c3)U4l!MVW_@ z5f-bbR?j;Y?(&6P-s{TUtr2?#vBG?JHKw)LjUvQ`u~TA|Zi|BPFQ;dio$<d`>Ni4a zCP+=%ke>Cw#z{jVwQ(8-Wfp`*WUZHPAxm+KQfzu^;q0W57tbu8($leNhgDMQ9^%Z% zsns~Es&)jpHLTis*4v#~OD%+Hnw2_Ck}L{KqkE>8<=bkZ8|DQ8vA(aEnuSVStDg}@ zg=nU0H*AUHY-}TDKS<1`Npzg`LYqR`>xn-nHZ{0WY4SGKk?WM*`a$Z#$@y|zZ_}c9 z_H5)~zCGJ&ol270EekESGFy1790{KdmQJ5B{2f=!+ctU5>!_ByDoor$ylvb_%heJy ztF^fOdYvMsgjL%jX;zi`YBxmXU0Vz}*n$mDWK}B)Q=MUw+@b@y!}uAZ0`yc$6q<C? z=2_a4q_G+1Hrz;zUU=lx#nrQGTxl&6)kUV@MokEpa%@qCIeNWn%P!L4$7Cli9QOL` zUk}<@#xpJ?qEEGuy0D!zOq?u6<Zo;I8U3Mad_F8hE$g@z4(8KZ5b{$yP6)DudBPGa zquEX+;ufNdB;yWQU$UatxtP(@i9kg+!z-KjWtKU&NZW~x-0e4PY;$bHc4XtGq|MSA zCyY(|RjJPAIed_9EGC<LgHPMk%4T&g2|GH<JZG<!no6C^a*l~jsuPlv=p2Sbzs1=) zx@Xg>aLUos=y7I@yh_7Dv?d-h=E}(8MOzdB34$E9+j4k`E4z>p*RoqM+)B~@jPjIm z#>FIVob9}j60Ps0#wHW)e#S+Kmh`BniRT$P%>}$q&#U|8POwGyxi~n2VKdI%blKL+ zyA&o;!XyMI)b2H_mMphLBc6Df(AyEExLAef4DY|3r9o^vwmgvF%qBn3-R^f$^N`>| zRf>kLW>vzO63#db?qi$<SQONzL`{&Ht;k5k5;7ZAn*gQcNGiaZo5WJAR>m^P#5H!c z(HQma@9R9Q+xP?ASACTfD{)${pOq4rTpK~wvQw)Ii;Fj;X)3A|Q*7;vughG`Hmogy zCtkbb&_c>|VtckEkVOk3PZde<tJQ5vYfr}s5i;86A5z29&4$++5la3gbfvABa%q9& zEJ;+1@6II%*S7m4#4zf5bJx+Okty^^m=tBp!X)ke8q*Rb<aw97L!FwdE>BBJ3(2oJ z{F-}DT)CD>PrHmR5l%wP@)@X~OS7w~Uk+DIz+NiCj+xh7;;9QOYl|0_pP8MV)lb!~ zE{m3u8hEA5uDBX_<^F3zK73eLvn$80-G5C_ubn?Lv*&B~LcB1GRKNCxE52I0SHow% zc(`YyOmw9d**z|k_)63@(Q}BSr~6sqGLznyRQ~w!_ih8e`7F6FSd4?qzS*1C4=-Pm zg2wfNgR{q57fqi88Y~qZ8waPWP7$nS^8`jG@I)s&X*HYWoz}{QwP1lnByJU)!B+G7 z(A?bdVD4xzcT68VG=KQ`eRDj4Ft}(ot+bXSx?=&P2ao8v<MW3P1#?HBJ0BKhu$G5u zkw`k9*Gpj@>C46@1iOB)h_Xsj<H-*7JDH8L-a~9jI~Ar2)=b!&*XMF{*3}P^YU3(8 z=|O~jsI|1Xbar&-gR^t31+piR7KmTY<8fQ%fqp_deV{3vCl*&P1jmjYLCz7eh)0SD zT&G0tn%BqZF<L80m4`_{;_uN_rhT_8P8@nb`=2MKQ~i)WIP-vXeDc|K09fqxb1VG? zSv$_sbRcMSJlM!O+_G*jn`-G9)&DO^xhP~3h^(o$Tw}S{3@|)qDwJLU<x+l0r_!VC zH3$s%gqkYg#)Q#6#m2qH0m4+WfTb@;LQ(BM=(i-HWT`8{a=|8)Kj2VMQb%D|rIMl< z8O96sTXG6^j2dlCXlb+{64*%@cG*`lB)t%0f+=48|DFm65PI6ZbXhejX$Azb>7IkZ zz!fOExABJmeP)9l)bBGMP*}uWT#G_#C)u-K1_JG81oxBTgpV^UlpkbFfF%Q1MGGvQ zjAts$T56e^ZCrnpWEItuQ*egfpqJ6{sYgvEPa;=AuIGf-*wDbZFg`U5SR)j&`e^|) zx{H81wVNiaXmcn+ZeWl@BrQ4Kex{HSMB4d~u4f~$S=qh*eB}sI1{^jtOzR@$dr?~q zT=!j-h$b1p$BJYE&ZH%HyOaS#CJL7qNJJu_FR_??&>rLi;a<9io*$#Dwoos9t1d(= z@&r}<y5t!dIAq@N5p`{B=x{fP2fh${U2+F9@h<GOgy2+2TL!PoSyi-T_olffBa8GN zMFEFMI<{SQ7m^JsCqd{MAO1MdOeOJDJ*=e0jVq%mWkobhf+rSoGJ%_RB(spo=u~@9 zO9zJy-J~Kv%ofcR@((AKu}e?2Li8ib^D_%Pv7UeATp{dT=O#=oj<=3Q`8OC{&SSpO z(30T<9ZDKrDEYh?PA4+TRICe1ksfpy{@g7m=)EhAZK4e3xCk8yIgENSDDl>@_Bs_S z;XU<a;*7?z&RtMvnGcMNI0pUshoJ;tJ=KT`>ZB^l7$!%?Wf^oN^k}hCN;wzYG?93d zr&p^@6r|k5^_p(F5$lR`+AVtUN>&9;wyd1@$F}sr6w7=@e&7JfO2dFmr9q@CkIIqP zH`h2{|B%Zv!=c1@@a$W@F!&QCMGR-6A-P2BV1q!zLwuyWTC&TQ<r@d=<Y<I?MDwEo zsd8(tb15}`Si*EIb=DaI9r&svf5;H`-DyWnqbNQ{ZzpE+n;3YXuZR_+PE`?-H|Ye` zjpZnvPK6rh&_tli3=<x(!o@|^UE6Nw#*I@zX(gg$>dMI$lRk5vzXs45THJy^G(uJ4 ze!4?L1RpHxmVHwak!nQCSaF?6M(C3%;|HsfKN(<Ee~SB?&CuGD_vf)2y>ReJSr*1U zWDlCArZHX&qHb0VM5?;~ND-xU#vhGb+>6vT9JxLaal&ZgC$7S~eACIuFec~W`Q#q| z4mCkvOE4~!8^BzB5CTSeNwX8wB5e$(LcBl*wCja%ANEj9LifYk^vuMa-$NzS+c?eH zq6oK1dE-NzOFQ(gXntzP92fS<>|8@?+6csZrMyTkE=<J@d|C7rWZ;uA&YGK2Qn&Lx z(tO5W4dg1jtFh6No@R`bjO8n)nQ1bZr5vVdWh56$Cs?nQ8|did_Wdstouj|ONVoTU g|7Q20&cE9+)%k~`{Mw9l{`vUawqve)FM)sZUmwezf&c&j literal 0 HcmV?d00001 diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..f7dcf1d --- /dev/null +++ b/po/fr.po @@ -0,0 +1,392 @@ +# Messages français pour GNU concernant libidn. +# Copyright © 1996 Free Software Foundation, Inc. +# This file is distributed under the same licence as the libidn package. +# Marc Veillet <scouigne@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU libidn-1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-09-15 09:32-0500\n" +"Last-Translator: Marc Veillet <scouigne@gmail.com>\n" +"Language-Team: French <traduc@traduc.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Succès" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "La préparation de la chaîne a échoué" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode a échoué" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Pas de chiffre/lettre/tirait fourni dans l'entrée" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Signe de négation (`-') en préfixe ou en suffixe interdit" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "La sortie serait trop grande ou trop petite" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "L'entrée ne débute pas par un préfixe ACE (`xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "La chaîne n'est pas idempotente sous ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "L'entrée contient déjà un préfixe ACE (`xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "La fonction système icon() a échoué" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Ne peut allouer de la mémoire" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "La fonction système dlopen() a échoué" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Erreur inconnue" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "La chaîne n'est pas idempotente sous la normalisation Unicode NFKC" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Entrée invalide" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "La sortie excèderait l'espace tampon fourni" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "La limite de la taille de la chaîne est dépassée" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Interdiction de codes points non affectées dans l'entrée" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Codes points prohibés dans l'entrée" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Propriétés bidirectionnelles conflictuelles dans l'entrée" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Chaîne bidirectionnelle mal composée" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Codes points bidirectionnels prohibés dans l'entrée" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Erreur dans la définition de profil de stringprep" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Conflit de fanions avec le profil" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Profil inconnu" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "La normalisation Unicode a échoué (erreur interne)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Codes points prohibés par le domaine de haut niveau" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Entrée manquante" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Aucun domaine de haut niveau n'a été repéré dans l'entrée" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Essayer `%s --help' pour plus d'information.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Usage : %s [OPTION]... [STRINGS]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Nom de domaine internationalisé (IDN) convertit les STRINGS, ou les entrées " +"standards.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Interface de ligne de commande pour la bibliothèque de nom de domaine " +"internationalisé.\n" +"\n" +"Toutes les chaînes doivent être encodées dans le format préféré de table de " +"caractères\n" +"défini sur le système local. Utilisez `--debug' pour déterminer de quelle " +"table de caractère il s'agit. Vous\n" +"pourvez outrepasser cette table de caractères en utilisant une variable " +"d'environnement CHARSET.\n" +"\n" +"Pour traiter une chaîne qui commence par `-', par exemple `-foo', utilisez " +"`--'\n" +"afin de signaler la fin des paramètres, comme dans `idn --quiet -a -- -" +"foo'.\n" +"\n" +"Les arguments obligatoires des options longues sont également obligatoires " +"pour les options courtes.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Imprime l'aide et quitte\n" +" -V, --version Imprime la version et quitte\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Traite la chaîne en fonction du profil nameprep\n" +" -d, --punycode-decode Décode le Punycode\n" +" -e, --punycode-encode Encode le Punycode\n" +" -a, --idna-to-ascii Convertit vers ACE selon le mode IDNA (mode par " +"défaut)\n" +" -u, --idna-to-unicode Convertit depuis ACE selon IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Permute le fanion IDNA AllowUnassigned\n" +" --usestd3asciirules Permute le fanion IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Vérifie la chaîne pour des règles TLD " +"spéficiques\n" +" Seulement pour --idna-to-ascii et --idna-to-" +"unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Uniformise la chaîne en fonction de Unicode v3.2 " +"NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=STRING Utilise un profil stringprep à la place\n" +" Profils stringprep valides : `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Imprime les données de débogage\n" +" --quiet Mode silencieux\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Seulement une option parmi -s, -e, -d, -a ou -u peut être spécifiée." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Jeu de caractères `%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Tapez chaque chaque chaîne sur une seule ligne terminée par un retour de " +"chariot.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Erreur de saisie" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Ne peut effectuer la conversion à partir de %s vers UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Ne peut effectuer la conversion à partir de UTF-8 vers UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile : %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Ne peut effectuer la conversion à partir de UTF-8 vers %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode : %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode : %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Ne peut effectuer la conversion à partir de UCS-4 vers UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z : %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD) : %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (position %lu) : %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z : %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z : %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Ne peut compléter l'uniformisation NFKC" + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Rapporter les anomalies à <%s>.\n" + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "entrée[%d] = U+%04x\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "sortie[%d] = U+%04x\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" + +#~ msgid "%s: fgets() failed: " +#~ msgstr "%s: fgets() a échoué: " + +#~ msgid "%s: stringprep_profile() failed with error %d.\n" +#~ msgstr "%s: stringprep_profile() a échoué avec l'erreur %d.\n" + +#~ msgid "%s: punycode_encode() failed with error %d.\n" +#~ msgstr "%s: punycode_encode() a échoué avec l'erreur %d.\n" + +#~ msgid "%s: malloc() failed: " +#~ msgstr "%s: malloc() a échoué: " + +#~ msgid "%s: punycode_decode() failed with error %d.\n" +#~ msgstr "%s: punycode_decode() a échoué avec l'erreur %d.\n" + +#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n" +#~ msgstr "%s: idna_to_ascii_4z() a échoué avec l'erreur %d.\n" + +#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n" +#~ msgstr "%s: TLD idna_to_unicode_8z8z() a échoué avec l'erreur %d.\n" + +#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n" +#~ msgstr "%s: chaîne rejeté par TLD test (Unicode position %d)\n" + +#~ msgid "%s: tld_check_4z failed with error %d.\n" +#~ msgstr "%s: tld_check_4z a échoué avec l'erreur %d.\n" diff --git a/po/id.gmo b/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1c96e9973f9bedd515dcac6f2378addf9f6d4ea4 GIT binary patch literal 6912 zcmdUzO>87b6~~(-BxJ&82oM4xl|W)UanE|4WZ5+&#PK?b*<G)-<Bdcjw62-1>8YLm z82ZCr?*Sx)ggAl(oIo4^DF;N(AO&#`k+_1yfeQzSKwO9f0)DTmdpzFQn=7<D^Pldn zdiCD_ebg)e;qKeM8*rWE^GQBGepe8zfs42D#dZ3&AQ*sWKn?x?JO};<{1<rc-9a$N zoEL5nf{$`Pxg!YP4}KGT6#O3eXWsuB47vZ=ok8#j_<Qg^@Rm*xbiw<<1@L@>yP%B! z5x4=q0lp8s_pTuL6!-`z_v_$8U=LK_E-3Q956b-48vG0R0QdL3HwZoeu7IBgzX+ZJ zGw|c!Pe9S@S0E|}zXR_9{|J5<{0AuV?_%+b;4&!dd>!O3c$F`a{~9Rr-vDL)-$Bv) z4#>F|d;}DEUudug3V$&udVUrBAoxS@8vOkne3|=s9*)3ofak$C!MDJb4<Vm%kKgU( zUqZOZAM+)=ehqx+mLPZq6un;mh{wNy_j7*_i=P0O!7kVbW!|?ziH%=^=fF2XmI}^% zEC@aUo&!-Wh{0uW7ZiWI0*aj1!BgNr!8vdl<Hf$0K$&+P6h6NN%D7iSmI(d?iu`|r zw}bcL9I@v?5EFwZLDB04@Dg|(d=&f*DEhqx3hy19`7rnZDEI52_~9iG(ZN0_a=+8y zPeED#7ohO+TTuM)R}gvwD0FcqK4yvOB|5%mdKUzk>n`C!cwl+})h@>f<={>}V!vF3 zR6uw-J>>pD`D!i~>-?5j6n*6qUc{y)xtY0yU(s3kAw7e6K5~7Ak8pD<AHpzrj8A)s zkHsHyiQN(dq_pD}2p0K-e1rqxPhv;-4V1gWFf#o*_BZYKR$;SBxfij`Vr8>oUZlFR zdDdyCeWkXhYA1N?*~Bm}pP0gr4U`H;iz*C9CYc-_tNa@7h0Y>nuGtFN;fpeS*Ayjd z&Cc+{+ZWRrvO*?Pvf+3zJD%U0qH|)e8&y^q6e~R#<V7UEs$5;p>>!Vf+I_sctTvxJ zx7HC^6OlD3@*$=?)!V+bvH84{dbvc(#0>1vny8UCDa=GQW1*<5jE)+5ZqTH?eGzqz znq97_olTt@kvO+_a~V6fx7OR3TVw|6`x$EIk}31L7_|5AAfhVtz=(+6YVW)g;fycE zc+ZuytyOyqwRCYbjaj31ON96^awOK-z7R}&Ii3-A*8kdS-pEjMXsF5Bq3izF>`*O3 zZItP-%0pcato8b><r!g7iBDJ8)(<;*<Lu_Dnvcv-*GZ*P)LD>K>se8C69`CaMGcEQ zJz7{NSkqaSS4t;IKG2m>sY&x<KUf>-q9h@99xms)jFQlr<fKt4%#3W`Rs>FeA2lao zVs=fUqCC|$V`!R6JSR3Ygi&RRA>I*ls!{VGbLr$_IclaUA)Yz?LKpkpPG>bqny@UD z_{v-(T4hP(^tp9>M#y(kaqrL+1+NE<-gRlB4(ja_MoLUeOjjuh`<<pl%!#O>Mbo^l z)ZR!#`N)=23ASXym-4zZ(3#3{NnznYY?xg`D1fI*ve0C^w#c(oipH)ktnMd9t-Y{% zskgq3N!z(lH!vj@wJBW5vSp<Uc-^zr2<?btsuKq5bi(|daG2*j!yr+8u7lR4jWeA% zU5w~IRKzp<!8I|jOQB_l&?3NmSqn8km6L=b7jTcR@G{KCwWwPP7fFr{`9!Ls=Um+A z$B9DaC?_i0_f?*|u*imq9XRXzHnIgiVmi8EDP^;=#wla7NnHi&MS&c2o5{(x-VoC^ zvobk&F43_X<X*C8r5P1GmlrG(nM@@VC*d4{WWOcYVwKvgE*&{)9v&BFhS!-cg*Azg znNUU-uiAzvND>r?-Iv8HLfNH^gqFRAz-t-oF9d#Mlw+9Wjq{yXQnK~!qw&e1a6jv^ zL`iv6^W^h_tmYElm*?K1*o0WPFC@TG44<*?uB*0Q-wQgCElg7I5bd7X;DW_k81aKQ zNxd7gln|?loT>erc@{=Cw$+J*U^c~x(f(uv&C>xF>q;2f%j<+SC7lTv!pArda8t53 zCBdO#=GwqW#*#AqdPst@<wz;Oo4e#v6l~2@l0#-3>7$v^N560Cuo@B%NbmVwQoO`! z=_IctF)<rOw)55A+Q!CB$Fw`DY^M0yZ@#W_wbSsnB%Va=4U3ktO(!<B6^Se?h(7f| zl0WF}v$duwO309ddHx}Lc(&Wh+9pG(zof3T6?3jEP@JWRiu2vNB;oe{go3CCBk%4e zyA(QUUxX=9wkl0BTvWK0ETPW3+O1V)_FSEolBTJz1@c<E51HKPq~={kmkg&M=EVY| z$63CY`P=DTo3NKl9h((}5ieid+TOUh`Q>i6t6pwGU2Zyo?15LR{EFKHuRL*GhEE?h zyV;e~*Ppnq=C{wET{!l&dogK(;ELa-4?pv}hI@8Ug03{Wy2n)#T^WqbV2mDWev+52 zB&mm!+OIqN-c2AVuTu2FjVOH4cX=zai%Ic4**(*_WF}P2@Io2eD15e#%WykiAsgb* z4|*of>TX`dovn-8;TqLPVkta}gI3h?($bl5=~TFMTAf^8dHl>{OFUs<c**Qq=_e1y zon}yY@|0RWxw7=+V@sc9+<9GA;dY_3GLag-qE@qLWXD=<=_u8E>}j8;#K@EGq<Qj8 z%m$ux2YLE5)3dn7cj30t>5AIOqC7LDm1)#lCsZ_`M@(sAo=I$3m0jPn5u35;W~O?& zb7AAc`T;K|yGxxlN-Jp?O3<zlj@POalZ0CPxpr55s;-9N>4R~y7^Ne09TYWfMV+Si zkp51tBisEoQ|WP=B&AhYJFcs`X(HP_(F<t4FG`Qk(8%i4^^V82`CfKkXH^XsiB4)Y zHc71u>BEj|_WdM^JS)sj37GQ^-F_)r^-YF5fFjbRF2=0fCh1Mu{b$!VSDSYKdG<e< z<wJdT{~epkrkE2q>>Og{;D#{g2r)ZxUo<N9=zqJ_?^!(&!;fIF;i7H$#ec^&`m1}; zo<&y8_V35F`n|V}Jg(C}=Qe))J2tM>pcAVLHd){0OLyP)0XOaPr($Rr?ArvfKadQO zp3rFOBp*vWxgOsJJ^K4Gb$?9VmyJdm{cQ@~SdC@v$g;tUm-EDo6u<O{wo5vFUFkAd zrAI2#nu^kAU5*7tPT7pXnn_Iq!yCxe&CF)skh(=5BVkQf(=%z!d>`JCl}*UG3xz!4 zkxq0f4fcVeV^gvyK6Mco*$E5Tj?+=hLpwUBu4+SmXWH)9<m?#Rvw`r0rnQ2VF&ZC| zPaE3ptRkZ!jR`iL(6P@d(X1UedF57TH;;8yLsZlK!<6);<C^E$%t7FCqew~!mh_R0 z{f*4DrXKRo3OC6e2U6%tvVA>03pC4iux*ZprZG$Grr3=~wm3KsETXq-#IZ)Gyvea( z)gJ~_+xFW=bUq<uCOW$+v5=ag7Sgg~hH)M-V|BHTHNiyHXx84dxR%gxT|MDQ3~F&> z7Cety{BK4qmJ@(1bz`jwo)xKuKA7&w@dJr(ah7lXDfJ1u5ui9%nBazBY697x3T8rF z_KC<=Xj_U&2P0<`yx<k(Wr79NV6P+Ej!Tzq)1$$3q>Y?hQD*8%cQUwfMpL4p#cvK9 za$LUoae?!l7}wC(76`~bygHRxXcL!34fzC-GeF{HI(kHsXE7X(m4?L|v%F0*8dmYv ztm6)j3?r)6@I<N8K9N2<<eb|X#UE34*)RKsJ<MC-2zOiPz$U@r;i*YX-;S&**lA<R z3mK5bv2Io3fNw?ap_0{@dZZ&~{XPwe8ArFpUBx=qiDQq$rSs+V{2<o#@#|=Mf@nyV zNIGIv(?h#myxp?pJP~YR4to>aG}+%QigU}x;^qam3>ZkcuE$i1phv59aD4F7nrHs> z;2*8!eG0~$J3c6Xe(;r|IXsYPj$ay*?5Z3wp<haWg;uRjZIIC*wpE^Fp`x%C7IqOb zT#i}4Lrk}l=1_siO@C@~<~N<ZXIITbF?rvfCKj4H;1hC8;3iT%q~~ZKNx`<lTP)>I ZXVQMlsiL>x&lEnF{vVDMP=EY^;=kYc=3D>( literal 0 HcmV?d00001 diff --git a/po/id.po b/po/id.po new file mode 100644 index 0000000..7e1670c --- /dev/null +++ b/po/id.po @@ -0,0 +1,348 @@ +# Indonesian translations for libidn package. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Andhika Padmawan <andhika.padmawan@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-08-16 21:05+0700\n" +"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n" +"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Sukses" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Penyiapan benang gagal" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode gagal" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Non-digit/huruf/sambung di masukan" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Tanda minus awalan atau akhiran terlarang (`-')" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Keluaran akan terlalu besar atau terlalu kecil" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Masukan tidak diawali dengan prefiks ACE (`xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Benar tidak idempoten di bawah ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Masukan telah berisi prefiks ACE (`xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Sistem iconv gagal" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Tak dapat alokasi memori" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Sistem dlopen gagal" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Galat tak dikenal" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Benang tak idempoten di bawah normalisasi Unicode NFKC" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Masukan tidak sah" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Keluaran akan melebihi ruang penyangga yang disediakan" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Batas ruang benang tercapai" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Titik kode tak ditugaskan terlarang di masukan" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Titik kode terlarang di masukan" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Properti dwiarah konflik di masukan" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Benang dwiarah salah bentuk" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Titik kode dwiarah terlarang di masukan" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Galat di definisi profil stringprep" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Bendera konflik dengan profil" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Profil tak diketahui" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Normalisasi unicode gagal (galat internal)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Titik kode dilarang oleh ranah level atas" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Masukan hilang" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Tak ada ranah level atas yang ditemukan di masukan" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Coba `'%s -- help' untuk informasi lebih lanjut.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Penggunaan: %s [OPSI]... [BENANG]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"BENANG konversi Internationalized Domain Name (IDN), atau masukan standar.\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Antarmuka baris perintah ke pustaka nama ranah internasionalisasi.\n" +"\n" +"Semua benang diharapkan tersandi dalam set karakter kesukaan yang dipakai\n" +"oleh lokal anda. Gunakan `--debug' untuk mencari tahu apakah set karakter " +"ini.\n" +"Anda dapat menimpa set karakter yang digunakan oleh pengaturan variabel " +"lingkungan CHARSET.\n" +"\n" +"Untuk memproses benang yang dimulai dengan `-', misalnya `-foo', gunakan\n" +"`--' untuk menandai akhir parameter, seperti dalam `idn --quiet -a -- -" +"foo'.\n" +"\n" +"Argumen mandatori untuk opsi panjang merupakan mandatori untuk opsi pendek " +"juga.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Cetak bantuan lalu keluar\n" +" -V, --version Cetak versi lalu keluar\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Siapkan benang berdasarkan profil nameprep\n" +" -d, --punycode-decode Awasandi Punycode\n" +" -e, --punycode-encode Sandi Punycode\n" +" -a, --idna-to-ascii Konversi ke ACE menurut IDNA (mode standar)\n" +" -u, --idna-to-unicode Konversi dari ACE menurut IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Ubah bendera AllowUnassigned IDNA\n" +" --usestd3asciirules Ubah bendera UseSTD3ASCIIRules IDNA\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Cek benang untuk peraturan spesifik TLD\n" +" Hanya untuk --idna-to-ascii dan --idna-to-" +"unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalisasi benang berdasarkan Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=BENANG Gunakan profil stringprep ketimbang\n" +" Profil stringprep yang sah: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Cetak informasi awakutu\n" +" --quiet Operasi diam\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "" +"Hanya salah satu dari -s, -e, -d, -a, -u, atau -n yang dapat ditentukan." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Set karakter `%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Ketik tiap benang masukan pada baris itu sendiri, diakhiri oleh karakter " +"newline.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Galat masukan" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Tak dapat konversi dari %s ke UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Tak dapat konversi dari UTF-8 ke UCS-4" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Tak dapat konversi dari UTF-8 ke %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Tak dapat konversi dari UCS-4 ke UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (posisi %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Tak dapat melakukan normalisasi NFKC." + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Laporkan kutu ke <%s>.\n" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9b15716738bbe1b62cd8b0b4320ba9cb100d4916 GIT binary patch literal 7064 zcmdUz&u?5;6~|wHrc9wg`Bh2_7ei{h@tZhl(>m@C5*)WNbsQ_>v?>K9*Kh93+~&=@ z)Az%PU5Nz(Rj^?NYycqy5)vQ~3pPka`~%&vK}D*nZUBLV)C~)e;B)SM&z?z~rb~G8 z%y-^<=bn3h-*f!N-M4-_;yS|TK0ZIbDT<cBxm)<+TDUce67V>v!S935fd2vi4L);Q z6iu_{^zBjfQSL_vqUbL074SjuJK*1V|9ddz{ul3wq6fe~f%k$px1y*G-Ve@#t2J(c zLjOZ>1$+&BA9&B5QS?dh0Z{Ij!6~o<DsT%F{@(><{i`+p9sCsc_r5oZ-VZK<p8>xB zJ_2Uo$HAX~BG>OgM2=nuKMcMFehB<0DE#ka^RwVlQ1<yM$Y1m;zJ&j)pzwbUl=W|e zBKHA|a}W3cDEvNGV+R!b^+A#IE8qvfAArwczh8nW_Xl`51WWKV_!jst@X!a51G?$E zgCEbs{9`=N!FlkT;C(ko(Qm=S-2d?-0q<Z_#r*<!2z(x#1HTT&;IBc6jW@yPz`J3} zmeGr#0$&CZE&3jK6#N+|_IU%8eQrZpxjzO9-!Fk;hi`z05d9RK0bd1AfPV(3!5N(K zAh-_R0lo~%^RI!z@8_V%_XqGf@Ftvg416BM1ktxZRE>TFiXVOhiXUDFW&eMGY!%)0 zi9k19<6|JIMrT0<_CV416%g}An9x5LAG7uDbvwUA&gMdWe@Se%`LLbWS8|L{jtGBm zHy|RUBEr+lEBBw4uln+_&TolDkykE6i4O7+zm8vGpZocU{-me3D-eB_kJ$1SK7^t7 zGvF`DIf*y9L~rjiP<$?z_)P39HW2%XEeSP@;IBCDn$4;oZkq4)+-9ZnFZwp?E1UIP zKGdakS*uz0Qe{oqEC|@KsbQTPnLN-&O2vaY6~_aUjwWeU*u%fjSy!1WwuE>5tdMV+ zykM{K6@k2YvAaTc$Ye>@yOfO6^LtHXPVJ6SMTtUvrIW<vUHMfybw0C+>l(H7Q2VG_ zd+M2`mhc)0uTk!LsPaT-<J`*H)1K@30xlzy*q$}rn%^ilBURI4qM|gqTbt)9Nt)Yd z5of>E#iF{nriVs2PS3qFkBhdm)LEIHV+G=e73$(SQ@AQmn)@5DD07_{VbM9+S@kTu z@`WfLY~^)p#9l`%o$qhPtQNa5g!r)QjaX&dVqoIS+Zkr3!msuEjgXoNQj;~L%i-5J zsTNY(&2(J4SQm-4LB1uI5f-KR^yJd=q?1=pt({aeUDMN5TB;%9%*w9SIIF4-1h_S< zdbu0!&#V<K=`3@l(rM}vT^cnsLzizyO9P!3B*evo#dI4g39XSMjS8{Mz;4=-z}ehJ z%u$@0Et9IQ8)}<DIvh$or#3T$QEBoX-Vt@mLH!`}>EvU%TQ5^$c-Cy@I^S-$S|`)A z4$DG`ugn#qRknoBCb!<6UHE&hxVLBWoYzS$cU72f3-PuIBPFV(rmd8O{l&UOObe@? zMN(Il>heHi@_{XOIoN^)&%3IX=uA0Wl3Q#bI*jijCcsXmWTDBnZ0@q56pbyNTfLbY zwRHOAxz6$iDs4D1U1AC}YErnAZHrRp*!8k42S`U8Q=L#)4@a!O826mx848K$(=DVf zY(LYfm&J(uJw-fYKWt6R>q5+Ok<cQ*LRpJ7Kb7Z%AZKuoF7Yy!?N=ghA+|^zI=GQk z#b9%BW1tg(ih(04oA;%2J}k0cY7?*hrtR7sAF&+S(3G-STH}SW*{CX`<vfQEvW?|r zQ*VfAn^{>LJ(cRdN?hO^tWr}&Pr00Jx+YU8#Yt=qL$cozY<)GfSyg!Bs2S`yJ4Rk* zx)7^Lgp7qUvINmqL_m@thwZj(UJ}YaWhAuh6&PO0u>NcmD7y~DByYU$f{>D}*HYt? ziEuyVvqVXGR5RrBtnB6!K9uLqoah8wY@bVjBN#qo-z{HlgS=;SDo2>4;Dp(OWur3| zZLvroUL*Cc%2GnCB64>1UvpX9wS8M2P6=j{A0BLv2AFx5;A~Zjg)X})Wlu?G0*3H0 z-UHkeoK0yoL1wNbMlzO^*{pgbC`XQz0=&6JE_I{zu}U(b#=brpqu&30U58bVcz}B+ zoRZ=tb{mddDT#^N2(sZ$c9vFF-jSv`QROhj*WvK>m8)5Xw<Yl;YOmU~kYhTvLtB!_ zVg-?>N+kKC&NfHuP<2x>WN%$~$Qhn(HM};+Q0gzKD{aNJFAEfBDWc+hzb{F+u|1+7 z>SPeyU1yg<CLM|}CCZkCNqch&*ODdFd0)G=%FJb7r=_H6>T3?aM(+ugYnjxHujrED z6hxQLLVYQ7m$PuYd)FlF`9k;2qC$xm&aQ8)oL&2JyWLhV)S)gntw_$m3#Gf@&%g^0 z?+E$s!}>J4u(0#+j+)t6JvDpX*Z#$*4uT8en4WwVP7VKTuLNDFW%ZBCw0j{LnB)?2 zsF{%~d`VIV(<<yc{@yPjC|{)L#Vg(T+0f-J$|)wr_elGA>zo-;HRCfy-*)5ASN$U1 zaEoL^KMq7E`dQU>dB3%Ob|YS*`baFrr*P1sIyygpJf43fo?lQ$jxIiQ{Lnm4AdJtM zEi3)x9^FDb|0sXz$o%55M-R;(fo@e7WxSE=tVpGXFRC*-PaG{l>V}(6Jw9wF;pYj{ zZR@06U3!u=S--+z@rKdEMYU2=aX9=QFGnX*Ta-ncSgEeGZTV#D%*vVNJ&ljF=UYn@ zO%g1Ya9kwNu9SyIDOL2b=Dd8u7A{^`ICeZfvPUceQW;|3AW^aw)dH=Bv~P0l+s$`M zPDVm|HxG8Og;ibtr1h_R#pdV>jOy>R(#mr}(ATr5pavte?-j4t*4LZ8RGES!Qrn7e zlE)N@k<ROS?R_JoR+M(}6&YHuidc4|7JmoznjS%OKyX$xS$V_${-o$i-YM%(VLE?` zvoD2GuBZ`ROQYv%Gu4K<8hmGOrBburj;}9VMg;%wxAzkkEa=p;t{XQ=)98yA-?71G zL`t+8@7%A~<kKWyOMHVi-^vjyokJsHXz^+7$-VMTX(;N}NWYs_pB&KFu%mh4^rIu# zB=GA_pHswl`c_9B+I*5Hk&}!Qz^bW(#guREn8$Woe(CsyyYKU9)tsyu<#tFPU}^tT zM~lL8n*GFTMWRUvOG6J!EyS4{hAahTeSMNh_R1)*L+zu{=~x=rg07UZL7Pz_lB9Zw zV4f6IBqvRrH#ILaMh}@(##Lx_5s2NT?-$Ophm;GtXxEnHK>ew@xJ-Fji^QP}k6)@7 z6=WAh_2Y-3`&zknhnkrhRc})a3d71o4>v8DrL0(68aQc@>PZ00x4P3pAth&QDp<!* zCe@pc!N<^@jHUg+r@qa^p2RN_PtAE@O+h<@1*fE==ULS#G}RKj7e>YdVaN8g)rP`| zufm9s+qqCsu*TH>GXl<UJx$ir-cfln-0n6vQ`?tw1U}+f+P+aJyJ?m6af=igDudFQ zxJ_s%nJIMqi=s3{69***HiUHOSZlY79np;`qQr9eGMx@hs~;A;cTpmwK=2~2t?SZw zT?<pg1T!(&UJWG7`^bkrPR(G+S$4KNR($NoK>0zrlQ4IF+^s`DlRgRuV^R!JQxMF1 zlCB1cMGfX1tlhV7hK-pViXx2hGgC4@OwC3OweY2|?|IjYy5EYWFdrBdx~9|1YKFiP z<;Q0P(dS*H7|P4g5he=h=tT}cS-85Z)e{b)OoUNGm%5&P7z-JROB1aT_*EtY{J!;o z!OU$*K8)E)=8TNw&Rsod=);U}GCog`txhwOi*yp$n=)<?JtL?3v<nR3%roJBWce2u zm1mdU&|=fy`!yJ}9y{oknJp*WIvIrfxs_^uP5B$sq&X100drgN4;*$_-Ai9F>|e$v zkB}A3;BiAjqP}UsoBGwX05Xt}Pk#2;%?ap3jg)nnswL9Vsth4i09zZ6YDhXsb!^Cs zigd+K&47ZP239j(_^Msd_?aO;!?-fRdq27`!Ay|V^>%lX2^Dv!`+X|~rJiPdIiXN= zlAQB|;^q2ub&Zh7@9Tm@xfIEqawPvo`Rm?HgN&MYy9b$9x*l-gyH-zdS6g#jR5jzL zn&#hBZZ`bSf@6T>cDR`KPbyhxs>Yt3FKCLwl=DTVoR#r0=k)Ub!<-WW>H34te*qg2 BAN~LU literal 0 HcmV?d00001 diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..cd447be --- /dev/null +++ b/po/it.po @@ -0,0 +1,350 @@ +# Italian messages for libidn. +# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Marco Colombo <m.colombo@ed.ac.uk>, 2004, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-07 10:57+0100\n" +"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n" +"Language-Team: Italian <tp@lists.linux.it>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Successo" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Preparazione della stringa non riuscita" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode non riuscito" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Non-numero/lettera/trattino nell'input" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Segno meno (\"-\") iniziale o finale proibito" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "L'output sarebbe troppo grande o troppo piccolo" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "L'input non comincia con il prefisso ACE (\"xn--\")" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "La stringa non è idempotente per ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "L'input contiene già il prefisso ACE (\"xn--\")" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Chiamata di sistema iconv non riuscita" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Impossibile allocare memoria" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Chiamata di sistema dlopen non riuscita" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Errore sconosciuto" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "La stringa non è idempotente per la normalizzazione Unicode NFKC" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Input non valido" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "L'output eccederebbe il buffer fornito" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Limite di grandezza della stringa superato" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Codepoints non assegnati proibiti nell'input" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Codepoints proibiti nell'input" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Proprietà bidirezionali in conflitto nell'input" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Stringa bidirezionale malformata" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Codepoints bidirezionali proibiti nell'input" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Errore nella definizione del profilo stringprep" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Flag in conflitto con il profilo" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Profilo sconosciuto" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Normalizzazione Unicode non riuscita (errore interno)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Codepoints proibiti dal dominio di primo livello" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Input mancante" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Nessun dominio di primo livello trovato nell'input" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Usare \"%s --help\" per maggiori informazioni.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Uso: %s [OPZIONI]... [STRINGHE]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Converte STRINGHE (o lo standard input) in nomi di dominio " +"internazionalizzato (IDN).\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Interfaccia per la libreria di nomi di dominio internazionalizzati.\n" +"\n" +"Si assume che tutte le stringhe siano codificate nel set di caratteri\n" +"della localizzazione in uso. Usare \"--debug\" per scoprire quale sia tale " +"set.\n" +"Il set di caratteri in uso può essere cambiato impostando la variabile\n" +"d'ambiente CHARSET.\n" +"\n" +"Per elaborare una stringa cha comincia con \"-\", per esempio \"-foo\", " +"usare \"--\"\n" +"per segnalare la fine dei parametri, come in \"idn --quiet -a -- -foo\".\n" +"\n" +"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle " +"corte.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Stampa questo aiuto ed esce\n" +" -V, --version Stampa la versione ed esce\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Prepara la stringa secondo il profilo nameprep\n" +" -d, --punycode-decode Decodifica Punycode\n" +" -e, --punycode-encode Codifica Punycode\n" +" -a, --idna-to-ascii Converti in ACE secondo IDNA (modalità " +"predefinita)\n" +" -u, --idna-to-unicode Converti da ACE secondo IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Attiva l'opzione IDNA AllowUnassigned\n" +" --usestd3asciirules Attiva l'opzione IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Controlla le stringhe per regole specifiche su " +"TLD\n" +" Solo per --idna-to-ascii e --idna-to-unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalizza la stringa come Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=STRINGA Usa il profilo stringprep indicato\n" +" Validi profili stringprep sono: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Stampa le informazioni di debug\n" +" --quiet Opera silenziosamente\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Può essere indicato solo uno tra -s, -e, -d, -a, -u e -n." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Set di caratteri \"%s\".\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Scrivere ogni stringa di input in una riga a sé, terminata da un carattere " +"di newline.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Errore di input" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Impossibile convertire da %s a UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Impossibile convertire da UTF-8 a UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Impossibile convertire da UTF-8 a %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Impossibile convertire da UCS-4 a UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (posizione %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Impossibile effettuare la normalizzazione Unicode NFKC." + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Segnalare i bug a <%s>.\n" +#~ "Segnalare i bug nella traduzione a <tp@lists.linux.it>.\n" diff --git a/po/ja.gmo b/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..56511c890c2409c7acf756bd2cfcfcb31fc3f9bf GIT binary patch literal 3656 zcmd6oTW}o36^1(r&P9R5fpE!<bV6)Pz^qon7<(a<jgTn;LN2`Ki7I)t)4OUjJ2RP? zl`Xv{m1`wcc}Ve+7pHnC7f3cB3u`SI$&$R1B`o>DVCQ1tkc421xWIA@B!w&gnVDU! zf)etWDUH7E?$f8w`TKOw{PoxTis7ln`*pleeuA;P!C!w8|L{1UV(cdHd*BzqAA`4p zPlFmb2CfC)0lx~~d<|m>uo0{S^_V{c$$kL54*U~%EBJ2QUcHL3Z=-!H$iXcj`RxE{ z-cMp40>6p&U%)Sdt3J)xZQzaI25=Mj70>}Go}YrB0R!;MU>|q`I0m+XuYu%$EsQ9x zG)R6sK(cp1it|U{E#NaCrmzu^{FGw;4kVo}f~&z*pJmL3mN$Xa{^92$J`Ju%dmmU2 zo&_oI>uMPL4wwY*0e66u&(Fa+a3bbK5P$5J&olNd@HUYAH-mSAPk`j-`ylP-KJa$% z7)XBK0cpM3Yoq)g0V)5TAnp4v!0W*Ykn}qZVvE=%kn(>Iyct{#vF-(HLD~-k#1Q)d zNb`RQl70##{fZ#XKLe6}?}DV?`!TOYaglx;q<roHAs@RDFFlZv#U&Z8hvD#{z2<no zftT_sKae$iNGqfqu2rsas+TX}rM$||n)nCBNbyt5q$53R@ltN<s8RKx1liZ{QoT^@ zlrN4!SZ|agQVTVtd}yyoH`b(EmhE%hH0_M;3!WEw+wEpeox1A@pYL4btxMFfCfg9) zv8CmE+;Qzr*&%&l@Q!Zo+m2?6E@5)R&g;^Gsg*Tl#+O!(cSu9J0>5obH)*0HTwe;0 zOACKa!Dr2`YrE9+d>1nuS2$#sm8Rf^$VyAnWVY4Rb37A!=DVfeS+-(ZZ5PWJ!s4dT z4O$freOH$z{mx6P;BimpEMB`)TUS?QUa)kJ29QUlD!oc*EfgSxapAU`7Wa`J-_q2K zr4iX4INW1t<TJ7~Y$QfndcN-ZQIIQJcj=}yVgXupGi$qf5_6eYkshp7B1Ys9sr8us z5xsfVE?DHOVq$5A%t^oA6uvLq`p#~r6XH}1+6q49wc9S3SX02E%}w3SiBLB*ygZ75 zEi)5)G6E6$oq~51vRUDB&(Sle2-ohChA`N+s+w4q#)`^TS+6`^u)4#6EOrszw}-V6 zYKztKj_nJ}=SUlYr0p%+n_61_tIZBehVCBQ`bZPJxJXd;=wV^SuBq;HH|*le7xiS1 z;HJz=pGPWCJcUd~cplr{?fD|l4HI>3Rpv#VSkdY#_ocfX!G)gbj5aAQc5Yi-hi?n2 zc5~@_!pz>uv1ce+9L4Z>>D&^#Lz4_nq@KYjj$=8YWx2$Q@micx;nIN<bhzqZ{gh?z zwxVXG6`wLD4NGtL?RMSENZG!=C&kxzmCiz>T>HkJ^*y{c{pf>r|8Y1Rpwh83%!xO! z-4G;vI8^BqR;6$0(6`6ogr>e}v}Za+=BaWxD41QiMzj_~dqTJ#ZiEzc!-27QGI4jJ zVMER1!m(XnYxQ!{&>kq{JS}afP^>vEvfG@q3JKfI)og1^YfU)PwENnFkU7O0lgUk5 za)XxK$Qv3{cWt^Oi5?hgkBcrzi!Ir~=q|0Xfj2ay8k2V<H^J^v-Sf4yt6QF_`?j0n z54EM+c&qN|*d595%h|r2-)x8usauF3vCFw1bF5rJ&j~Fp^n8jxtUJ0TJi+h7y%qYQ zMSYBEyY$Vb^n5Sj*#$Qva8=|)!V>=dHLWeJ%}Z)DB$73_dFfziRBb8L(H_6vF>z<z z%c*v7n}4@?N0avOwk1Pa4X0UarY*rWlj0k3vDdKRkHH(kh5p&;vubAe@Z>2rJvj7_ zU?><5rs5AmFonkH;O*eI!9s8x_9|FZGwLlhu1YVR8G2m}sJGQf(7$&Wqi1O}m|{my zPJcLfwRYJ>S2x<HdP`Sl=f>YulP{kxolu8VNhvk2ifpMou+-mzSA)H9v@mgD;Ha7m z_66tn4l{I~51v=O)dp(n-~5ceRqBPq5j8h+W$Jx|`5Uzm%){4oP#owhz8QWQ)ZD<8 zFzRUaA+^Y=I;NF+MfLyr*cAjfyF9HZ{Lt%#Fl@?3%^m!wn!)uy`iD~Qa9{aTp)MVq zSBq*gPB60ksMX}q96UkF(2hbmerj|;O_P26b44v_n`ReT=(ZPGQam(!#oa2aJ~MS- z@HvFk7aP-TY{tyU<?$2s<gq@OgI2Ewi_cH@L+Y`?!>_X=Cn?9VzhYKV?N<xxxtI4t zz3_KDcw$8DQ|H4nIEiAx?!EN)gRh~WKEy)h$f#CUOyy%Vrg<M@vMs)Zj-ESwk%}uU z<oI(zePOvSP$H3RYVOzvD82(#y2babnx!wt=)geli%0&4S&_RV=ceAPEE{!A6xHnD zSpPHX(hI+bHuG3*gpKYW{D1|Af?`k#&K*26ayj~(#PL=SgrAhS|HZ4tQ{+@l9(i_r zI67^#ad9e_8j7dXVKotqVCPPUN9uqYg_&CVdX)1aU202j9KReLsXF$G8lOdxM+Yo! ORGq)d$Kn6^i}5e=KwSs` literal 0 HcmV?d00001 diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..3e8cf74 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,311 @@ +# Japanese messages for libidn. +# Copyright (C) 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# GOTO Masanori <gotom@debian.or.jp>, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 0.5.16\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2006-03-21 11:20+0900\n" +"Last-Translator: GOTO Masanori <gotom@debian.or.jp>\n" +"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "À®¸ù" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "ʸ»úÎó½àÈ÷Ãæ¤Ç¼ºÇÔ" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "PunycodeÁàºîÃæ¤Ç¼ºÇÔ" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "ÆþÎÏÃæ¤Ë¿ôÃÍ/ʸ»ú/¥Ï¥¤¥Õ¥ó°Ê³°¤¬Â¸ºß" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "ÀèƬ¤Þ¤¿¤ÏËöÈø¤Ë¤¢¤ë¥Þ¥¤¥Ê¥¹µ­¹æ(`-')¤Ïµö¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "½ÐÎϤÏÂ礭¤¹¤®¤ë¤«¾®¤µ¤¹¤®¤ë" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "ÆþÎϤÏACEÀÜƬ¼­(`xn--')¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "ToASCIIÁàºî¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "ÆþÎϤϴû¤ËACEÀÜƬ¼­(`xn--')¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "¥·¥¹¥Æ¥à´Ø¿ôiconv¤Ç¼ºÇÔ" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "¥á¥â¥ê³ÎÊݤ˼ºÇÔ" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "¥·¥¹¥Æ¥à´Ø¿ôdlopen¤Ç¼ºÇÔ" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "̤ÃΤΥ¨¥é¡¼" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Unicode¤ÎNFKCÀµµ¬²½¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "ÉÔÀµ¤ÊÆþÎÏ" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "½ÐÎϤÏÍ¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¶õ´Ö¤Ë¼ý¤Þ¤ê¤Þ¤»¤ó" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "ʸ»úÎóĹ¤Î¸Â³¦¤ò±Û¤¨¤Þ¤·¤¿" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "µö¤µ¤ì¤Æ¤¤¤Ê¤¤Ì¤³äÅö¤Æ¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "¶Ø»ß¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "ÁÐÊý¸þ(bidirectional)À­¤¬ÆþÎÏÃæ¤Ç¾×Æͤ·¤Æ¤¤¤Þ¤¹" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "ÉÔÀµ¤ÊÁÐÊý¸þ(bidirectional)ʸ»úÎó" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "¶Ø»ßÁÐÊý¸þ(bidirectional)¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "stringprep¥×¥í¥Õ¥¡¥¤¥ëÄêµÁ¤Ç¥¨¥é¡¼" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "¥Õ¥é¥°¤¬¥×¥í¥Õ¥¡¥¤¥ë¤È¾×Æͤ·¤Æ¤¤¤Þ¤¹" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "̤ÃΤΥץí¥Õ¥¡¥¤¥ë" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "UnicodeÀµµ¬²½¤Ë¼ºÇÔ(ÆâÉô¥¨¥é¡¼)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "¥È¥Ã¥×¥ì¥Ù¥ë¥É¥á¥¤¥ó¤Ë¤è¤Ã¤Æ¶Ø»ß¤µ¤ì¤¿¥³¡¼¥É¥Ý¥¤¥ó¥È" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "ÆþÎϤ¬¤¢¤ê¤Þ¤»¤ó" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "¥È¥Ã¥×¥ì¥Ù¥ë¥É¥á¥¤¥ó¤¬ÆþÎÏÃæ¤Ëȯ¸«¤Ç¤­¤Þ¤»¤ó" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "-s, -e, -d, -a, -u¤Î¤¤¤º¤ì¤«1¤Ä¤À¤±¤¬»ØÄê¤Ç¤­¤Þ¤¹." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "ʸ»ú¥»¥Ã¥È`%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "²þ¹Ôʸ»ú¤Ç½ªÃ¼¤µ¤ì¤¿ÆþÎÏʸ»úÎó¤ò1¹Ô¤º¤Ä¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "ÆþÎÏ¥¨¥é¡¼" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "%s¤«¤éUTF-8¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "UTF-8¤«¤éUCS-4¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "UTF-8¤«¤é%s¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "UCS-4¤«¤éUTF-8¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, fuzzy, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (°ÌÃÖ %d): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Unicode¤ÎNFKCÀµµ¬²½¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó" + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "ÆþÎÏ[%d] = U+%04x\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "½ÐÎÏ[%d] = U+%04x\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" diff --git a/po/libidn.pot b/po/libidn.pot new file mode 100644 index 0000000..3805c6f --- /dev/null +++ b/po/libidn.pot @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Simon Josefsson +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.15\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" + +#: src/idn.c:199 +#, c-format +msgid "input error" +msgstr "" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, c-format +msgid "could not convert from %s to UTF-8" +msgstr "" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "" + +#: src/idn.c:537 +#, c-format +msgid "could not do NFKC normalization" +msgstr "" diff --git a/po/nl.gmo b/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3fcb9637444a3ac0cfa738ee1b3158a138b0e4f0 GIT binary patch literal 7205 zcma)=U2G#)700L0FI=EdzDjA~meShZX51uQ+FftAZ8phn!|o>AwRZ(7C_DCC+mnoE z%zQYTJb*xzct<Kc@g>S5Dvt=E0xF2N0uS&25)Vi`6<+$n1C`)+?wzrnY!Vp7`Fm#0 zJ@<UybNtu)Zhyt$THx~_pI2{loMmwC-TdP^b-Uwq!PB4zeh0h={s(*qym*J>R9W-F zosRQS?niey&ilb{fG5Cjfp78tSD?%NkKf}skAZ&y9{}G~ahwMD5LgE<6*vZk{`=q> z_$K&1@cw%o=ab-Lpxm#5p9Wi?0>_~6|28P=UoY?<;HS8M;JuD>FW3Yh0Y3*m1xDb< z!5@Jl*DpXscK!^082lUfA@E<I@V|%6H^4<u_W3%<pYs#`3IEqY;r}Km>)!@N?z=F~ z{orGu@O!Sn7AW@XgCgfwzz=}m1%H73UIVwdf02hf;LkzX|KtZ9=kMUl;A!Z#?z47y z73LzxZ@?$OKY~Bw{T&GN9QVKci1m+bD*HapKNma)E`lR)4*VhbB=~#qtKjV)vvR!* z3jHe}TRLxmp8@{_o&o<2R>7xHR`_j#&w$?q#b3VzA#vUYUj!={zYl&96#M=fL`3H; z@J{eHobo7mHz@lwK%r}am%u&nB=}npQ#tQ|V!wMn;W#z$K@e8XD)=zC2|fgV4MYUz zdj<X!<j?s7|Ag+JpvZAA$$|Ntckxkj&qw%`m&kZ`c>{`Wa*3`DK8R!ZNRAQ84&iU) z1RO%jAv{ey$i3`aUMAMLkysQt<r4YC7V~m5bBVo0C-DdAY4iq+y-t9V(uAS&IG^&8 zoRfHy3m2PMA*D?{kY^GD;%Bj?#IeLQp@tF6<+{G^<b8Wn{=bq0QKrm`eh~Fl5cT3@ z=w(41Rmx>w&I6s53oN#RP_r%`>BQ1HO1XnM<+=kMj`q_kyN7w<MZVHEgACs8bs-<? zBxSGJ6_&hwF<BuyM6x96ZFgts`MxePhrym!X@)|5<#oGp;>))zR@b7S8~a*~pKL6u z_45~(E5d6eyhcgfLzT0w_SLoZ3x?~p6fPs(4SIq03x1<Sk5oa6iPB7aeqo*il9adC z5$CYgX;a-;_l8<HR_BiAaU*Cgx7Mn2tU!FbLfyEk(>PDM<^BI)ktJSN3yaoL>ylw% zlut!@Yb&E$DfSh_@{+^N7!_idh7ce6#)x^eD+VUMjGbY&V!vG}-UzAQN2;Tebk%;F zCG~_f@FUO7V%JN%L15)ujw8Y%6Q3?EukLs9+RFNps`<L-<zc3Vh*Otc^I2AT5eRTA zS@n{5csR3)v+PAtoGC91<F1!!HPpj6*>#o&UXqd!Hy%x^4X7lvMlorWie&~tC&&n# z&Msn(+)$5osQh^71remfp~Q0-M4B+lbkf5+qE0p_9z-UcOf37wG9`v*O(*e^-A1Ld z6oy4urb>LJZxXGtC44&E8hiTiH(YUVPbUelyM^3&s{IP$?Gi>xR10-ODGB=<MTw{i zt6qSlah|E2frrTlK|0|Oq%8PCoL9PDq+(o>1lT}ynB7B6fSoeQLLH5RB#wqsG{#;M zc%4wI<rkK&wpQDy)Q-h;U7ey)nZlWDn`T~uU3Y?PfONz$)d_{Y;fVD&++G~>424AW zY6Yp&pdWdmkwuIAJw-fYKWt6Rd#RY^2BAfO*|O$(d{u@Mf?UQuUWS*kY(E!qQ?W%D zqeDEBs%UL4ZnShFP&$Z-%JO{{$0jVIUKn(Z_MN~F5`4sRWJ6QRW)^58Oc0Io%vntm z_#oR%PL}nCm=2;q7CYxdudlkX<!r4|P&w!0gl&8ssgU9%HiseE9}sMPH4LIWHO5gj z>{y>6&m%7tt4V~+gfg;N(bhyjk|2TYu56wW$|hwbw1S&3ycuErx??H*7{w%SjPI<F zlC8H=<CA^izGAXONqJN?^0_X%nS{6Hxiu#`!4}&m65t4i&)9cts;!mxvKPt`CMmej z?AEf*<p6E5h$UVp^$uhyA(j(46aClY$n}GMkUbF+%sP2uusa%H<_W<@o{5Ea;yh$e zNoN9v@X^Kt+@zdMp|g)n-|TA1SW>2w_efBV94Q5Ob4)Jz&Xt);vQLdeeKbRT`1_&` zs~+(H_m({+#Y^lq9L1R=CTb%{J6>unudN+RQ=X`DnBr@D_?pU9F2mcBcoMY-HcjQ2 z4ufHkk;q~Nktgp;@;j|vj@F^_Lo#H#&OYP}kH#ghHW^C&C3U5(sG71sah4(~&Nus# zgzeoC1<~scth<ZsQpn`lB20-2vQ&q?IfZM<66(CE-JXi{j;Yg9(md*G0>4u4eJU3+ zshX+ilHnA@IH^Ou9mPA5y`9{Z341N|`nsu5;-!r%?X`{dFEtts^->Y)a#L~S4BX7( zO>+irp4=1i$;09_+dQ>*a!=LTmsaXWzBVsLMG$P-V|xEHduo_x(-O2<$Z8&Ep}*N3 z=<YUhsM;t_O-WLZhPmB$_Ptp^P;OE5+%@05Zo9muoMPzYE;LS8uIdq0)4iPb1K&ND z_fxkWH_3*+Yl)ukM|mSo`jsmiZFiaKBeCSJ;Gm{joS#4K&OhbOpHd5p%_mPkKF<>f z-K%;WNIyBHJLS$l?anW%#l_}lPg%N4UYfb>#Ea5UYIswf(;W1w)g9z?wH=-G)iWJ= z^t==w&kM6g6h2$I<VF1)pSf-A4V!8u&xosM42jg(=f_E~m39Y7(91;bXDgT2F0W2i zUueu%mZ_d(nk#YHB;synPmDs!>6!B2JbSHu-aR#?6CtS%u4$6kq^VBPUQ|BsUeJ-W z-Xi_Qb6$rYW1+FI&^TGS66T2)x*P{Xdd+BLZqu`iXO#VVwic;}&#Hy`8EFLNI&>~D z6Tu{zwA#^_g<j^^si3dP+My2R_~9GT<L6zSu*hMXqs9YYQxGuyDAU`iG<Oke`AezH zlmY4Djv5u%q0i|)^zcF&Na;PWR`xw=Xka@XC7Mmk5|)arY8;11pO#~TYl<8jFg@Hl zIIJ%%T^1v9`BbziPj?)1BI_NUY-5eoWD;KL>rRpfY<vd2j=B0`MUIeSowR_F+6%U# zrmD&TDfN}sr&^2%$1|(W%n#KA^Fy_q5UT&*gfP``VyLM=cAi4bsq)r=N6iU2HmjDc zf0a2@jxPxq{C3p95P4oQyJ%*~QG<h7B27p<+>=9m>SQ}M*q(x>g1I42j~yID;v+d# zoQ;U^p#|b7#n%I!OCoeMbs^a9Ah^?(sFU%bYR88SQiVtf<G3e1w7eCCQe#3`n52^? zg&9IKL(u&fWF~aszQd#|8tG(*la3QT!j5M7w$2j{)MCRi&3eA0q@X3bAH-)WMKG%B zr0-`KV$j(Ogsl#@i=9MViEh*PUsKyT&4Q#ljTp|VOm^^k{*Fz3AC*Lkc!>NG|F-GZ z)2?5{WGlo&p@=qaV`z99W;QE*GP;AL>_!8RlvVf{`HT<e%4DK*5f#kafzB$JNeqCx zA^}}H*7UezJ7Z0Tmvh0E4N=mJj5>NCsI6Mlj_BpFZ8;UtTW%R~Lk@*v6PSlSV?exZ zeaGh8oN(fbWZ0<Fjo?gvJK&fwsjbQHh`{iq%Go8Elv&xxSP@fD4^5vrj&(xMPMgVX zQ4`9!!1`KMr{{Lnxh{i3C(c+erYlwuozq~GnZOuZ)v#>cSjbpgh9)uLK5DHZegtA3 zM~58>wpeo#s#6hZ#gP=RjTzpg6M~RzF~yKKeOfKHo6HLZv2n5RH^LsfMybk*xY4FX zd-dY#`qkCdi!D_{>PZ?0MvVHc>5fl`eI2G12`+J1Y5Kl?<29McClg7ED<HRNXX>xa z8e&0Pne84k4`w1)VoM$3OsKO?B8G!=!Qg`EJIQZ}(3rPozL*lNX$Db~ZmIGK<!-P= zTTo6Uq<#m7NuCh|T93Abd%3~2ATxH}i*u6#Nle?1wTR5^5JwjU#F?ct&fwLIzwMmD z;WcF8h?!AG2O?x9B5IN!hZvwfBiC#&?yG!L(aV#;{HDhb5W^r1^X<$QQClQ<YJ?^6 z_vqs>S>)m4OnxIX)1&kSH7N#Wtl=%EN7=`V<#m$x>jyZJFZ@6uV+8qWa=qyI=@76o z$$D#x(5w*nazaZbmU=IB4RMAs5ff}}514c!=lY~8kiauViD;Opa=3yRT<VN-K^yH? zh)Odd)#`34!;v2L@`#@o@cPt7P??eGSRxuxIfy26lnLA+k&mB>K}y>>N}1!p#_UX_ z$0K_Z^!6lb6H&BCF@A07^>rG`Y-#d(RniM)>vmpDv97Jsr8lO+tJ(=WOlg_MvlDe9 zty83pJeb^0D%%CyS2fjSpjx%_)U-s{k?N607<u<kRW&=n%)B{bv^s)fy8gh3b;t{Q dx=&wBi*`9|P2bH<ROQ5_rvn$#%u*EV{tFmZR=)rM literal 0 HcmV?d00001 diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..9f1c19a --- /dev/null +++ b/po/nl.po @@ -0,0 +1,356 @@ +# Dutch translations for libidn. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# +# Elros Cyriatan <cyriatan@fastmail.fm>, 2004. +# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: libidn-1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-02 22:58+0200\n" +"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n" +"Language-Team: Dutch <vertaling@vrijschrift.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Gelukt" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Voorbewerken van tekenreeks is mislukt" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycodering is mislukt" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Iets anders dan cijfer/letter/verbindingsstreepje in invoer" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Ongeoorloofd minteken ('-') aan begin of eind" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Uitvoer zou te groot of te klein worden" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Invoer begint niet met een ACE-voorvoegsel ('xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "" +"Tekenreeks is niet hetzelfde na retourconversie (van ASCII naar Unicode en " +"terug)" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Invoer bevat al een ACE-voorvoegsel ('xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "De iconv()-systeemfunctie is mislukt" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Onvoldoende geheugen beschikbaar" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "De dlopen()-systeemfunctie is mislukt" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Onbekende fout" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "" +"Tekenreeks is problematisch bij normalisering volgens Unicode-NFKC:\n" +"er zijn verschillende mogelijkheden" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Ongeldige invoer" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Uitvoer zou niet in toegewezen bufferruimte passen" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Tekenreeks is te lang" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Ongeoorloofde niet-toegewezen tekencodes in invoer" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Ongeoorloofde tekencodes in invoer" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Tegenstrijdige eigenschappen voor tweerichtingentekst in invoer" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Ongeldige tekenreeks voor tweerichtingentekst" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Ongeoorloofde tekencodes (bij tweerichtingentekst) in invoer" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Fout in profieldefinitie voor 'stringprep'" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Vlag botst met profiel" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Onbekend profiel" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Normalisatie van Unicode is mislukt (*interne fout*)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Ongeoorloofde tekencodes voor gegeven topdomein" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Ontbrekende invoer" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Geen topdomein gevonden in de invoer" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Typ '%s --help' voor meer informatie.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Gebruik: %s [OPTIE]... [TEKENREEKS]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +" \n" +"De gegeven TEKENREEKS (of standaardinvoer) omzetten volgens de regels\n" +"die gelden voor geïnternationaliseerde domeinnamen.\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Alle tekenreeksen worden verwacht in de voorkeurstekenset van uw taalregio;\n" +"gebruik '--debug' om te zien welke tekenset dit is. U kunt een andere\n" +"tekenset afdwingen door de omgevingsvariabele CHARSET in te stellen.\n" +"\n" +"Om een tekenreeks die begint met '-' om te zetten, gebruikt u '--' om het\n" +"einde van de opties aan te geven. Bijvoorbeeld: 'idn --quiet -a -- -foo'.\n" +"\n" +"(Een verplicht argument bij een lange optie geldt ook voor de korte vorm.)\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help deze hulptekst tonen en stoppen\n" +" -V, --version programmaversie tonen en stoppen\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep tekenreeks volgens 'Nameprep'-profiel " +"voorbewerken\n" +" -d, --punycode-decode uit 'Punycode' decoderen\n" +" -e, --punycode-encode naar 'Punycode' coderen\n" +" -a, --idna-to-ascii naar ACE omzetten volgens IDNA (standaardmodus)\n" +" -u, --idna-to-unicode uit ACE omzetten volgens IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned de IDNA-vlag 'AllowUnassigned' omschakelen\n" +" --usestd3asciirules de IDNA-vlag 'UseSTD3ASCIIRules' omschakelen\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld tekst aan topleveldomein-specifieke regels " +"toetsen;\n" +" alleen bij --idna-to-ascii en --idna-to-" +"unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc tekenreeks normaliseren volgens Unicode-NFKC " +"ver3.2\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=NAAM dit tekenreeks-voorbewerkingsprofiel gebruiken;\n" +" geldige profielnamen zijn: 'Nameprep', " +"'iSCSI',\n" +" 'Nodeprep', 'Resourceprep', 'trace', " +"'SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug debuginformatie weergeven\n" +" --quiet geen meldingen produceren\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "" +"Slechts één van de opties '-s', '-e', '-d', '-a', '-u' of '-n' is mogelijk." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Tekenset '%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Typ elke invoertekenreeks op een afzonderlijke regel, afgesloten met Enter.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Invoerfout" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Conversie van %s naar UTF-8 is mislukt." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Conversie van UTF-8 naar UCS-4 is mislukt." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "## stringprep_profile(): %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Conversie van UTF-8 naar %s is mislukt." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "## punycode_encode(): %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "## punycode_decode(): %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Conversie van UCS-4 naar UTF-8 is mislukt." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "## idna_to_ascii_4z(): %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "## idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "## tld_check_4z (positie %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "## tld_check_4z(): %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "## idna_to_unicode_8z4z(): %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Kan NFKC-normalisering niet uitvoeren." + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Rapporteer gebreken in het programma aan <%s>;\n" +#~ "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n" diff --git a/po/pl.gmo b/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..82318f2968353371a897829a94726e54f19f5bd8 GIT binary patch literal 7168 zcmd5=OKc=Z87}f96T%||5&|I=U}HOR&w9Nf@j4IIYj22m*AMM@v&u%1UDI7NQ=Xox zPCq>EmIx9Tu5bXvAqXji6DSx<D{+aH6Ss&QAre9e`CvdO<bZ^b!uMBokH;H(7bFg} zJo8O=|Mk~j-~Xuk{rkIb`5wb{0-rD7^OKJ-HVYiT8DF@jZeh#^o&pNstHATX4}kvy zp1+l`5sZ26HpV`S`{;JYJ`Vgg@Dbqmfq%yPw}2k*e|`sJ4+Gx?-VeN~##kNr0B{U= zp~MX!$^RHQ4}2SV7x2D28T%seVIbX~1%3(G0CM04ko5lmNaNou@h`v!aex2E82bcp z8u(@4IpE_!4g4JNbs*Wb1BA)!cffmqe*}IS_zxiIzY~)$0Vjbp&$od1W52)`>3<VQ z`rii9_`d_m?%P4meZYr-r0;7bHh{!m8%TD(0{kTKM?eGq-T+3pe-IB7;CFxvz*|1W z*gt_6fhQoha5uQb{WqbU=6w}NzWpWe*iDT62}tX$VKTCB21xcu-~{j$Ao<}9;5hKN zz)9e3_kvU4DIiQ??*NI1KL9}qyB$g%1KtBX37iLx0>4o{|0$64z6<<3@K%rwli5Q+ zdVUi4B=9BR2=Ir%uK?cy-Ui$SlH6Z`r1xGp=@jrZ@B**^J^}nS5LB}dfaHg}Fd5nT z0Fd~Y1Ck$J0Kycu2?QnVyCuF3#FE*sfF$=DAgE@41A<-#3T>Q`ZkRH-$i|Nj?qFZ} zn_{z$56oeo!H04Tq0H{Uhj^rm_(OPFJLvu)`YJCQ>-bHvNcPeNQ`j+l$X~-3@kYK! z2r#6l<q2SUd<1wiKE%zV_*55hO7TV)t@}7WNNF2002>1ykT@XzC}zlSjN8le0@=*k z?xy-)j+IWiebH9B&6RGMxF=F&bgdfpa;9Wj4RF{{p~N^7$=Jy<&b`h!_q>h_ql2>C z&0${%9dNm+Qt0-cC-Ds#Czxw^gcGk`3`Wolnuh3B*B_S0??tjXRE6Y8iUqZ~@O={p z^eZ*|l2*P6B;Pn$pX7_ro}aCeu84F+v1wr`Pd8RB&M$u5YQ2;|OC){OQZgv@MX`){ zDGQ2{REnUa=Ne0@+vj1<VWX32zP2cOk~EHtUth<XYRop~N5(M%=DQJm?V?Of7W>ux z4OFDD@Fl5e%rq`o6?X9nE#7fu*H)Rm46{UhIE}hAyCQ;o7+4ZBofE-`FUvEO&ADI8 z<r@-}2SlZ=M9;ck!=i#jRiK5J8c!s?QqI0vqY)M<`E+LX>_I2b&n?dI(LlCD7N)!h zbH-@aY*<xR1_HEIs#>w>9j>g#W`))!<suA?FH*^SvS;F)&2~hbAR*R{B_nl6QD{X5 zX_OE%9o1AR0;ie7%*YGnh75UNdO~T4_Iec0q0$mzl*+gT@6dA6PWeFFbh5D=l*2d? zk1@?y#Cg3|n+d}*EE7(?lADNDni6`NxV3x+&~LTEy)7BXc<q;VXNe4IFfT_Kaavj^ z>zq^AuazZYgjBT@EHzom`yBzwJ1QAyPzeUSV6vJoG&gWbtiS=SVR#Or06e9Xg;H;* z*ytV=jSUei(F`S@eQxGr<LnBSv|@-lUnW>lmBJ}ao1`KJuYHwvU>)KZ)d>q0y$Ivi zyp}O|h6R!7BQ;o^sJ0fNwMCNsEsl5wf8ZK1FA}0<4WWeqb7jpF_{ps%7_tEOh!kE1 zv+az`O^A!oU=1dss^~Z;H##{oDCrnPW%WKa#)gG%h03?9Z>m7W@DYZ?Hmnq7GgZ<W zqjZ#|>}(uE4{RIC$*SHUrj=GSm^~YcHusIw>{uzK*s~_aG=bDSL~$a{p%B@x5NvJU zQ#wm5IeZj6jtz-tS|r38MaWPn!xm@SJQ;{2h@m#8$y0=~O&JO;wF!lr8tjiTCm9$l zjPl0%&KXJB`eAAK<UqL3*(~8y9{DKpd5mVW3Gd2tW1Q9mwctLc0Ec1l8Rp%v)z;a& zAVS*0C<PDD?wDl@3abSpPIwWicTJWe#4<$AVEv0mdx2`J^mvG1mhtgU9(6$TKwv3L ziJ`v9Ld;3&jDSJ-Nb3RIB-oomc0f#S`jRphDbvhaNKkA!R0`nD4dhb5mWL|Ifn^-( zqao?T-<Nfmw-67|-f+7lc?q-iB9l^LV%acc#mqEj=jX30Q|+j<nZnm@^R<<$8U}Au z;!)IIGigHGbf|hNMIsXmWKZT(^0P*ct+mI45E-&R&OO8)t~V-OE67mPU!*P_D@JTt zKyjubO3t_QA_-UW2nA929p~;cyEtqTt_Y(<sWg#cYn;Qi$P(0fTe}6<vTy4&l{A6+ z8be>T?gL9MZQ`T0qEm*WAewj#(p_!(+T9NBs)W6ih_;;OSj3A<%PaFsi!asdb^c-* z>U2|Mv<I%HX4US2tB(~VK6qH}W~)=hV+9{wxiB|&<ZJsPDuZCvZPN#zxn09P+b=<@ zrLFdH8V0L=NBUjZ!AB#L*pkGLg_)ao_`Mx~pj=1M^X3EZd3Va2rd^DR?}_@U+C>?m zYI+MvTLs>kteto(W*XVh_MFh^w$AD%Zr7HVR=inMABrV!4i1{;lM@rCyotxXi79?! za{A<{M<?(Eg5E{Bq3ArhFE`~)JmF1D^2y2R6BADEf=E(tB^EjfsfJJUbE2Cy`5DvB zl7c_=a?_Zkb2<tGSfaB{GUA!q1)<v+Jm#%P(VOPWCR9m>KZOcw)zF+c752O+JdHPL zQg^2`L}OdlwM?I>EzB>R-Dl!NeWEstVv5A`C`_jjfSc*@C`5IAvf4+Vo^LF9Q&V3( z<xTDj(~PJXo;^6Bluh#~969J%N7tdJ{L6WylDsdp8f1vSu6UqCTbm@!{Q@VrPI;89 zc1EYK{GKb6*p@UtGTc{wC$s0sqmKM`LOY$o%o$g_5MA@0UyuqqmmPKZ-yhgV%)rKj zBN>L?s0k4My5QU5JwHS0@}g}5GQ0Rs+JM()-kH5L`y8$L(oXJUnCZsyDz<;wwnr2+ z3)#>fT{2d3bS*5KC>DJj^~y9F8u&l%0<Lez+JD^y6nWdE#>LAaOqT2E*^?<%dh+Pe ztw7fVrLN&a{!#tF`9r0TY6;F8Z39K%uxt+{`~G$vK^o^xI!NbNL!Do@CD>P09HObl z77-3Tv!ez4S>!>XWT<v=yzHqxU$H9^2a`T8wCKLyr@e`KgDbeB0B+*!iwZ%JP{@MJ zk$Mm8t@rbtq_DAN3T1j3I|ns%;&k1CTu*49LjMz)Q2O#cT4hr;Lxmk1nlsED6uA~L zk%k$N#ZX)H-4r++T}}#YpIw+<`Z0&9zS26!@qE{2rFD+vu-z_!a>Xs8zb&r%s-M$_ zENa;f6%e_O!*G}S6Qr4{^QDNgZEesvM5gGYG?sazcE|ZTQGgY#)5_cwH8(+>FIYM; zLzaL_H$z?uRaO)|CAHq-SKS(uuIX<LwGK1b!im+iZ{U^P{bj;HVrG2{$Erl_aTB-> zLPzyM=YY*x?&LJ_ZVhWdFCn0=5J^s5genlWySxkENx$kN;`jUG-0C>Gi<l{Uhn$-x z$lfYovm_FEu${G0Jkcvq{Y|zw)Is~shXhSPZjvZnsLS2>eYmh1hPXngqPgfIMd7z? zk!S-)@t~i<(Q&3}I;vL+Cr^X}@5^<(&)AvmtpI*@4FwtC5_!0y4OH_M^%_MfB75vg z6~#Hu^d{Kya~@*Xv{jvM$fsqW;aZHr0LigL${84h2(prD*sjagKFQa!9gvS@$2P}g z5My(aU7L-AE~65LP6%5cTmMoJ*a6_cwe*7_IEl2;1d=CFEYfUU^0LyuVAoK!6qe4M zxT5`{DqG;sB?36DkrQu_b+&im9-pTM|ELCMj2f3S+j{}{aPE=pXXt4YI=*JxR4?-? zmJc{KXJ=v%?ZyaOl)!u_Q9iVBX`dffS%&$(LarkIntRrde%^|=#!+ct@D|6m&9Unx z-L2s<mrGty0WpqBM>EGi4l~?Q7}&cWjtHz0B!6_#)ED`-K~e>9rHK84svt6YJwaOb zsrf<L%KhM~qT@g;58E*mRTOat;;7nQY!I1X+pyQ%F~BZ%ztaJ={h}T2q4gQGJ2#db z9QrA9&<P+uGW+jDG;4=$n8Yw;F<C+(N^*`86l$<dEl_Mw-$a~Mz82_(y6A<<RtRyx zTS#asvSn8^q!s@wfmYWv4NJOK=|h4zvtkdS$HT2tRk1T{6kU|NKDIMd`LdCsB9E=l z)yc>NR1d`t{t-}aC-9+3Ow;ZQv{8+Nds`A{iPk~j7+nzU8}y!(RsA9@s^allWBF*) z7Ax7;dufd0=@^AN6hbY%*}ro&j5WI30@YGb>p>mW?711&P*s`!|KCv+IWcl{L-lV# Ca*56W literal 0 HcmV?d00001 diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..584865a --- /dev/null +++ b/po/pl.po @@ -0,0 +1,353 @@ +# Polish translation for libidn. +# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Jakub Bogusz <qboosh@pld-linux.org>, 2004-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-02 22:10+0200\n" +"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" +"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Sukces" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Przygotowanie ³añcucha nie powiod³o siê" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode zawiod³o" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Znak nie bêd±cy cyfr±, liter± ani kresk± na wej¶ciu" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Zabroniony wiod±cy lub koñcz±cy znak minus (`-')" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Wyj¶cie mo¿e byæ zbyt du¿e lub zbyt ma³e" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Wej¶cie nie zaczyna siê przedrostkiem ACE (`xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "£añcuch nie idempotentny wzglêdem ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Wej¶cie ju¿ zawiera przedrostek ACE (`xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Systemowa funkcja iconv nie powiod³a siê" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Nie mo¿na przydzieliæ pamiêci" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Systemowa funkcja dlopen nie powiod³a siê" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Nieznany b³±d" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "£añcuch nie idempotentny wzglêdem normalizacji Unikodu NFKC" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "B³êdne wej¶cie" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Wyj¶cie przekroczy³oby dostarczone miejsce w buforze" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Przekroczony limit rozmiaru ³añcucha" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Zabronione nieprzypisane znaki na wej¶ciu" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Zabronione znaki na wej¶ciu" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Konfliktowe w³asno¶ci dwukierunkowego pisma na wej¶ciu" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "¬le sformu³owany ³añcuch dwukierunkowy" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Zabronione znaki dwukierunkowe na wej¶ciu" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "B³±d w definicji profilu stringprep" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Konflikt flag z profilem" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Nieznany profil" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Normalizacja Unikodu nie powiod³a siê (b³±d wewnêtrzny)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Znaki zabronione przez domenê najwy¿szego poziomu" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Brak wej¶cia" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Nie znaleziono domeny najwy¿szego poziomu na wej¶ciu" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Polecenie `%s --help' pozwoli uzyskaæ wiêcej informacji.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Sk³adnia: %s [OPCJA]... [£AÑCUCHY]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Program konwertuje £AÑCUCHY lub standardowe wyj¶cie z kodowania w³a¶ciwego\n" +"dla umiêdzynarodowionych nazw domen (IDN - Internationalized Domain Name).\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Jest to interfejs linii poleceñ do biblioteki umiêdzynarodowionych nazw " +"domen.\n" +"\n" +"Wszystkie ³añcuchy powinny byæ zakodowane w zestawie znaków w³a¶ciwym dla\n" +"u¿ywanej lokalizacji. Opcja `--debug' pozwoli okre¶liæ, jaki to jest zestaw\n" +"znaków. Mo¿na wymusiæ u¿ywany zestaw znaków zmienn± ¶rodowiskow± CHARSET.\n" +"\n" +"Aby przetworzyæ ³añcuchy zaczynaj±ce siê od `-', np. `-foo', nale¿y u¿yæ\n" +"`--', aby zasygnalizowaæ koniec parametrów, np. `idn --quiet -a -- -foo'.\n" +"\n" +"Argumenty obowi±zkowe dla d³ugich opcji s± równie¿ obowi±zkowe dla " +"odpowiednich\n" +"krótkich opcji.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help Wypisanie opisu i zakoñczenie\n" +" -V, --version Wypisanie wersji i zakoñczenie\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Przygotowanie ³añcucha zgodnie z profilem " +"nameprep\n" +" -d, --punycode-decode Dekodowanie Punycode\n" +" -e, --punycode-encode Kodowanie Punycode\n" +" -a, --idna-to-ascii Konwersja do ACE zgodnie z IDNA (tryb domy¶lny)\n" +" -u, --idna-to-unicode Konwersja z ACE zgodnie z IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned W³±czenie flagi IDNA AllowUnassigned\n" +" --usestd3asciirules W³±czenie flagi IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Sprawdzenie ³añcucha pod k±tem regu³ " +"specyficznych\n" +" dla TLD;\n" +" tylko dla --idna-to-ascii and --idna-to-" +"unicode\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Normalizacja ³añcucha zgodnie z Unicode v3.2 " +"NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=£AÑCUCH U¿ycie okre¶lonego profilu stringprep\n" +" Poprawne profile stringprep: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep',\n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug Wypisywanie informacji diagnostycznych\n" +" --quiet Dzia³enie po cichu\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Mo¿na podaæ tylko jedno z -s, -e, -d, -a, -u lub -n." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Zestaw znaków `%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Nale¿y podaæ ka¿dy ³añcuch w osobnej linii, zakoñczony znakiem nowej linii.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "B³±d wej¶cia" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Nie mo¿na przekonwertowaæ z %s na UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Nie mo¿na przekonwertowaæ z UTF-8 na UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Nie mo¿na przekonwertowaæ z UTF-8 na %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Nie mo¿na przekonwertowaæ z UCS-4 na UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (pozycja %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Normalizacja NFKC nie powiod³a siê." + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Prosimy zg³aszaæ b³êdy na adres <%s>.\n" +#~ "B³êdy w t³umaczeniu prosimy zg³aszaæ na adres <translation-team-pl@lists." +#~ "sourceforge.net>.\n" diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/ro.gmo b/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c4d7172ba8ed42a1884c45aad794382e34232012 GIT binary patch literal 711 zcmZ8f&2AGx3|{^&d*HyCgE=5T;ANAhDBUzw)KH{Ii4vs|;zlRC&UVno6U`5_eGjfY z2q&I|OWp(FNsuC8>62$XpZ)FH{{7_P_eAW0;HjV^cqAALqFo6d3zT3g*a&{yOOjvW zWBl{|B>5zs#Y=c+a@<+0nGCO$b>!jdxqFeN$>MfHK&re3&70uCd8@ew!=RwiOt8EK z?Hx6%H{i*xH7ie5j4ELIwxg6%QkC*5^=8(5q0-~1!jEK~He5)ZrLGwAtdq6UIc<#f zIB~VE@I2HG7p8z^sBupl)EqKn>vT3<;LwutQUl+MY60y$Kf(MR=3QvDi=&g*xkQAB zbNZ^I)`8c-yo2qd$jfugkA*i@&f~%=c8&7J7BE)95_=usJls{GRt%@jGTaTUY4lC} zh%-szI;fg(L26yV+^iMrNc8^-MO80vXw9I}&b!Q+U`tv_I%Q1$ES-!d7l&@NvOFCc z_M(ij`-SxN#=qS(N^=ilFJ(Oa(d87o-QyE%AIMR0MHVl(G?h%LfbLTJbk+o`8vJ1F z+7-Z?-PQHmJ=h=nFBzWoq4lbl{y+W8(rWsnVWp{5mf)whP?4;H{GD87H4HdW3U(W} YLDOLgwonEL43f8-{r(-<gsrT>Uvk*hU;qFB literal 0 HcmV?d00001 diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..23c7779 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,344 @@ +# Mesajele în limba românã pentru libidn. +# Copyright (C) 2003 Free Software Foundation, Inc. +# Acest fiºier este distribuit sub aceeaºi licenþã ca ºi pachetul libidn. +# Laurentiu Buzdugan <lbuz@rolix.org>, 2003. +# +# +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 0.4.1\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2004-04-23 12:00-0500\n" +"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n" +"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "" +"%s: Numai una din opþiunile -s, -e, -d, -a sau -u poate fi specificatã.\n" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Charset `%s'.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Scrieþi fiecare ºir de intrare pe o singurã linie, terminatã cu un caracter " +"linie-nouã.\n" + +#: src/idn.c:199 +#, c-format +msgid "input error" +msgstr "" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "%s: nu am putut transforma din %s în UTF-8.\n" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "%s: nu am putut transforma din UTF-8 în UCS-4.\n" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "%s: nu am putut transforma din UTF-8 în %s.\n" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "%s: nu am putut transforma din UCS-4 în UTF-8.\n" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "" + +#: src/idn.c:392 +#, fuzzy, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "%s: idna_to_unicode_8z4z() a eºuat cu eroarea %d.\n" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "" + +#: src/idn.c:458 +#, fuzzy, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "%s: idna_to_unicode_8z4z() a eºuat cu eroarea %d.\n" + +#: src/idn.c:537 +#, c-format +msgid "could not do NFKC normalization" +msgstr "" + +#~ msgid "%s: fgets() failed: " +#~ msgstr "%s: fgets() a eºuat: " + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "intrare[%d] = U+%04x\n" + +#~ msgid "%s: stringprep_profile() failed with error %d.\n" +#~ msgstr "%s: stringprep_profile() a eºuat cu eroarea %d.\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "ieºire[%d] = U+%04x\n" + +#~ msgid "%s: punycode_encode() failed with error %d.\n" +#~ msgstr "%s: punycode_encode() a eºuat cu eroarea %d.\n" + +#~ msgid "%s: malloc() failed: " +#~ msgstr "%s: malloc() a eºuat: " + +#~ msgid "%s: punycode_decode() failed with error %d.\n" +#~ msgstr "%s: punycode_decode() a eºuat cu eroarea %d.\n" + +#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n" +#~ msgstr "%s: idna_to_ascii_4z() a eºuat cu eroarea %d.\n" + +#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n" +#~ msgstr "%s: TLD idna_to_unicode_8z8z() a eºuat cu eroarea %d.\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" + +#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n" +#~ msgstr "%s: ºir refuzat de testul TLD (poziþia Unicode %d)\n" + +#~ msgid "%s: tld_check_4z failed with error %d.\n" +#~ msgstr "%s: tld_check_4z a eºuat cu eroarea %d.\n" diff --git a/po/sr.gmo b/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..db77f84d57b131e640b591a51ec34ada47fa044b GIT binary patch literal 4400 zcmd6p+ix6K9mh{Efno|Rg|=MV10{(K8QV#dkZjW^shbGXItjH~@c_8v-LvayW@na} zSts^W9G5y=1QHdhNiU*`;0dHn$Tlk{aZrVLo_PVm142c-Rz>O`z~^^nc6|j^JhAfl zyEEr^ewXj>`#ZCLyYJ4QD?a^PpXd7aZA$F}U%Q=ud>VHs^#J%i@Z;bG@GIaepaZ@Q z?f~BdKMOv1r&5F99&iA33;Yo%_HFQE;6K2Jz<(9@_ij__OWZ#MYVas1ey2d$_k#kj zfe&;4Pw*aa+lQ2T1iT;I4;}<R12#a(=ZD~j!C!%&0)GpB5_}sx3H}Kb|2r^}ye2^L zI|Yh;1WKNZ;HSY~gKSZ^K=Jd(0{;pMPw#^Fg4^y=>RWL60Qe~P;YafNE`eW{ec%c3 zo<5}xgWm<k?sf2+U<N(~KJrne4uK&!0{#Y+`rZR~fqi!?^*Qis;A7x8xEK5>_&E3n za2&jy;zq&eK;h|^p!ECCpzM1e{0=xwlcj$@0VUo|kW|!dkg^NByTF6sBKK8r5_}hw zzMP==FMt6k{QVdd{@w(Izu$wx-(NuC@9zb^4+?*GeIn=YVG#P%{ao^aMpa1C#vv{H z5iT^B#1#E>KhSGGk~>t{SpA^XEPBDcLVCT=_Tro5cpsPK{N>`=4iFmE&f>lcNYHXm z={9$%_YN*3U~7a@t3gUrU*vj_OO3ce5GLC7{jlsNM%PU}jAqryv>U}H(a&#>cMkTc zk+5QPBlLnK){Q8f_NKhVRP@xWPQr%cn;GNlN?3Qj0MnrAd*#FnYI@46c#+|I7`VP{ zY?vtVOsu_tzeY1r$D$~V<Tg$sb~GZ>5WA}98(lF~FYsiuI_|qQT`oN9GhQ;?wNl5! zh%glsXy3RMiHgG{ay?(Z*S(+_>)5LWy8n4+=fE2CX5hxMKpo{Z<@Hh<l>{Ls!tJaC zPbg0x9XUp5GCPaIvw<T%bIVFdVZvpcxKWZPxwZ9->wA@gfHBvvhEZL}Tt`;UhZ^(9 zkvej=PK2BI*43~Xh_jwa;8eVtmkjwPNlY{}J=>UuoSwnSW+HW+37bAK4Gu%?yHU+p z-nfbDh(WD0GiS?&43lZ2r<&EOiFDj>%P1lWXS|B3s8ee+v963QnO$SO^?EaywF_0c zi1%@;4a+Uj>WwflL82*}L?*(c<0GS^|JCN%z_ad79DiyAFA)WLbFLLu;aYU(M)r|j zA2jynjP|{{m*|`Y$){N^n>beEvvFeTy5ghjptmo7NW@^K`)p#iVYG3}(|MB$vFk9< zF1`a;oz-3v8^5|s(=$ZNDBAIIbzsg|lQI+OmRV&Sy9KSQr3j|`nNkzUz!@2?0jy64 z;h7-6?cEhqro2kvPA1``8<#zAa_?M8Z;yKqn>lln2j=$9>HdkQpB(s)%XUGe6P8t@ zXy9bU2=R8Q_sj&nXRAX$S)^l46TdQ9o;Kyv-E<Jl3mhZPXvKNXL@_5q3Emi(Ko1Y@ z8{ECW?-|nwqr@4DYhJ~9qFIZbiLiuNYff%=q!u&>!>HDG>g0qo!bnT^ohPBWr1uOD zA9RNIJHrR`?meYP4}Nu+Cm1@<m>Exkt=jE##B{ITy{|O9hcDPY?Z$~S5xGI^yGa<8 z^ikiOj@_W*M*17ZH-URvA9^AGa%9Ft-dq?A1|~Vo&Y;$GYsQ%{ZoQ<(4F{PU=tHD> z1VPS(70LK;-`MEbvDLbF4-WTn#>xmdqN@^$IhzbMd`_pww5Wu0`|)Qdjynfd?Ib<M z);T8JbDos+0Z#BfmA;;~b$TORN#Bw$E9vF5onEv5ucn>seA<!Kwpe86c(9Z$sPxTr zIa^3?X$)_st#p}fSJIY#=iD3H<9E)zhCb7aJiE$jTjQgZEn<ZGYgk{#Pb<5KPgxZQ z*%I43*@d)|-q7q?u@P?y5=$bnWhFbG&5N(}O7;u8xh1w&SeO@kOmL;Skw;6`R+7pV z_)D*|@0z6kGIni3E$2&kXlE}H_$CRw#I;1htD@9JXtBUWo{f}y+1Aoc$nLeV$th1Z z-(f3wWqr|F60~t&6>`NfAiG+W*Us$If>`06+_HsiUiU+<1G@t%-QY2&v2B@?dUAT; zRx;hxgbjpT%DIuOh%NlJ(yJu%7Fo&5%Vw5yv|MB%FTFgG-e%j%TM)kp7xdQp*<!!+ z)K;?U0|64dCHk|qce^Fh6m8Ks+gU2v*lgRid9krN76S5?&_+@y+HM{3q|n$Jg^Bv4 z<%JA?CbHTn7}B%Ccu^WO1U=WOfkcL~m$Gv*AFOUt*%CQh$!R8u?(#2PDX3&~o5fDL zysr5&Vl8>D(v7=C8+O@_NY9V((aCJm^t9_%Iv|RXpe>{=g8@C4$b4D8X0J+>Qu0PV zKd4|fd-?!6JJo%o_b3-pr?*IEMH<u*uMpW=rV6wSDWWRof||~=C<7*{?!ET^m%ZJ$ zr~NsAQ#slS_T`8w4gx#8(*7b**w5o*-O0y7cI7Ec_HC8Ek^W9dwpA>$RYqZbXL7OS z<+8T6x6&8LkXFG<_I)erHPLY^bH!du$PG(br}*{3*|cdT{|RD~$p<3$EI}^f7vW}0 z;;J_)xo~7CL@j8@7A%y^(}By9U$&&Jdh^NY?8*=IE6l<L>SmB}xq!$}{p#C+V;v{r zPG+a0;fUi(-V>K3JGhgUTK8LZ0-o}4l4(%`<E8r<aXB2%3+LGd*d~TFpg7?<D&=$$ c!Ps1=b-lr+^}Hb~_LXqG_ao^4`IphZ0f*IAcK`qY literal 0 HcmV?d00001 diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..dd3c52e --- /dev/null +++ b/po/sr.po @@ -0,0 +1,311 @@ +# Serbian translation of `libidn'. +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the `libidn' package. +# Aleksandar Jelenak <jelenak@verizon.net>, 2004, 2005. +msgid "" +msgstr "" +"Project-Id-Version: libidn 0.5.16\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2005-09-04 15:02-0400\n" +"Last-Translator: Aleksandar Jelenak <jelenak@verizon.net>\n" +"Language-Team: Serbian <gnu@prevod.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Успех" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Неуспешна припрема ниске" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode није успео" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Нецифра/слово/цртица у улазу" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Забрањен водећи или пратећи знак минус („-“)" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Излаз би био превелик или премали" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Улаз не почиње са ACE префиксом („xn--“)" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Ниска није идемпотентна под ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Улаз већ садржи ACE префикс („xn--“)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Системски iconv није успео" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Не може обезбедити меморију" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Неуспешан системски dlopen" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Непозната грешка" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Ниска није идемпотентна под Unicode NFKC нормализацијом" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Неважећи улаз" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Излаз би премашио предвиђену величину бафера" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Ограничење величине ниске премашено" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Забрањене недодељене кодне тачке у улазу" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Ускраћене кодне тачке у улазу" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Супротстављена двосмерна својства у улазу" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Наказна двосмерна ниска" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Ускраћене двосмерне кодне тачке у улазу" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Грешка у дефиницији stringprep профила" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Сукоб заставица са профилом" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Непознат профил" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Уникод нормализације није успела (унутрашња грешка)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Кодне тачке забрањене највишим доменом" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Недостаје улаз" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Највиши домен није нађен у улазу" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" + +#: src/idn.c:100 +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" + +#: src/idn.c:104 +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Може бити задато само једно од: -s, -e, -d, -a или -u." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Скуп знакова „%s“.\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Куцајте улазну ниску на засебној линији, завршавајући знаком за нови ред.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Улазна грешка" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Није могао да претвори из %s у UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Није могао да претвори из UTF-8 у UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Није могао да претвори из UTF-8 у %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Није могао да претвори из UCS-4 у UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, fuzzy, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (положај %d): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Ниска није идемпотентна под Unicode NFKC нормализацијом" + +#~ msgid "input[%d] = U+%04x\n" +#~ msgstr "улаз[%d] = U+%04x\n" + +#~ msgid "output[%d] = U+%04x\n" +#~ msgstr "излаз[%d] = U+%04x\n" + +#~ msgid "tld[%d] = U+%04x\n" +#~ msgstr "tld[%d] = U+%04x\n" diff --git a/po/stamp-po b/po/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/po/vi.gmo b/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7681c640df55d4ff18f6bf1d5f4fa149d2bbbce3 GIT binary patch literal 7696 zcmd6rZH!!18ON_!K?h$^1QFyYLU&>BblW1d3kAybZK2(k?zBpXY46^-J9F%vdx!fn z-67FLo7fLXbTvRKL8;JS#ik${!cG8XYK>or(QlfNj9>MWiSdgG{+@I1ot-JW#g9xn z`=4{~InQ~X|MPZE-@ana;})Owe6QvE+y^YH0#1C8KYTW=u`Czd3_9S`;Qin`;D5pU zKV(^JS+na>%la(i)@7FUaqu{JGx!Af58nR{v>BiIh-KXb{tdhayrg7VW$-$19Ne8_ z8<hFafYabx;K#tLFSo2OfH#3M-VS~VoCOuw21WjppsasA$A5y?Grs1dmh}m63cLZl z54;Twz|VoFK+)?B5S6XJf}a8Z4t^T^4=D04XY;+_22l3-4#+?2MgEBV*Flm07AWig z1&ZF6LC)3SO`yoTJI7g2_^X4W=eNL5f<FOI!{1pjWc(lxkAr^%_k$073i-T$4!jS1 z^@?oYHEb&TjDeHjR`9t?EGq)HFuv-l%#Q~^(d#5w0e=hL1Fm85?cjEB2l!2}37!ML z3~qod(etaI@O2ct8~h=-8~igUF?BsJcYzOpo4_A~w}5{E#c%I`qTiQ3Z&_7v7UYrj zb5PdzKq$BV4I<LIgdjx)>soL#_!aOl7=jzYKY>tVt+_7q$CY52@eLrRTl+z=w+@P& z?}FlopXT^7D1P_@sKB>Dk@pS=y%rRj=i+10r}$jTj}I3E5E{)#Y?S@QrYrfPo<%5I zgulrXz}QE48a-tEMfsC|Osw-;Vo~&!4^&t;@)h2OKWiDFrbP%?q^C8;S3cseoB4i_ zFJWl-2h2xuPW&hzv3ng~Qrd72SQC70zQTd<CoxT^L4x_%cFmhh>)D|AyD!o~qRflB z4(dt=^I_C<5*-GmV%fu~_L5>jhO^rDSQoauD4T03Wj7|2Z8to>H9A*idzcqaP*dK5 zPLORMl<93RirH&;MK-;7F<2ox1hOQUKjIG0=l6{0?CVE76(<-}SB~q3QB8g&p*j#~ zH>`Q8y|KJO&Fr|pQW9A$k=2UAc}&?dTiriBv(rdD5F@4Kxq4oEwOn2+@>(jN3q^6_ zIklXg3p6Q)2T^CG)$x=%JmWMyk+^o^;xZ2F*~;wn+6h*mezrm#-tWa>8o9;zJwzmt z<9Z@ucI)hJBf=OTi}4v(#<oK3eW>L`E7KU{Y8OO^4{L_RH0TJy#Fyb2VcW7_`|>w3 z)f<`W1;y0u*{|WLj!f0Hz_F9ic4AlSOutGP5EhB}bZce%sFSC+&1_X;HE-TY{X{iU zXIyqohef4%ARw&}H6Mk|m4%h8iW3B3q8#53T_^EW(`$xN$Eq}(C?+8e-x#kgGfP6N z6_Q4=Fw@X;Iw5f8I;h#QeXs5LsungK9Wb@olz8@a;1NcN7tP}xF(+x{4+4`;CYEdY zG9|>bW-fA~PPtUt>ic<E#!7tUEfB4;C35B%8a`{tH&Su$ycb2hc5}Vc*sGOLuR|Cq zG0peNN=eus&P&8v5jC&TG)xn9wBbN`L&pONI%dIxVOnyXK!vy@(r_R)4DTTnz*8bw z=ml*Zg+Wt_M%#(BGv|A%vTN)9+3i(Ks)j<H>%~}9q;MkJ#)%Wb>rtIF(2h8!I$^NW zY_a~ZJs*ZV!yr+8Z3(SoT@M`J=;Dd~^NM(eKe#65omgl&OlT2cSy{6kekvmgMfTtx zC&9}wTTeyZSh(;*YzSLY6*JDojoCa=C~kyAW$``<LlYLkysuqj{hY4p2p_Q=-LRCh znP|@_qk~qOSlgorIp{W&lSREDrgflYv9-f@>dFl>$r&s8ENe#?u}#ejluvOI&JjrV zYl5w=nmR~hLyj7Q$MK=*Y2d`dnncJ@D5FcJ+O#N05=4mY$mR*5Y*I!-OD`aBA%OjH zE1OvhF--Et_%2gYvi04w@ySTIZ!=k<q&%uI@_Af#GYOxS=h+Fd39)b=Nr0mmK4agu zskWKEdmLX{n55tc?HRMy9*wmyl1-i=^)AR#LM$b62KLW{fnC#eoviZ-W-nUT=(HNp zJeaUIO@yJNVd}G|q%#3S_;|(x3}SkdZ;edz7F<s<mXw)G=Sfgnj+6qt*(R52*1n-i zGGfMxJ{p?6^836Ft9jx9>9bjv6fdz`vlS+in3#<s)o|-<WqSIebBc~C%@ki}&DT_} zVj13+#FMDKVAELIw6B{wA(4dz(I<5!`K{Rwt+lCYJ{hvSE_+B1588#SDj7=sC3WRk zvDTCYinA0^alYA?B&>E?6hy~uWbV$hOQDmK6=6!0PGZlWpHR4#ETPVu+U=;oJ8J5* zlr)F>8X>Q+d&J~iCpBg&x@0&7F^tBUeIy8v2H9{hDiZcU?9{y}g%J<!-B+F7JM;B& zxvU<_LtO?XOM2j;Bs^q#;GtU|k?Dhnc{e+>>5*F>QDfEJ+s0RYZC<qUAUKq@>CtCd z*D%kPOVFWQSMxaWYlqy1=N>^1HP#AaQ<Bt;ewyt&{N5}eD8E6`v!`qJ!R(YbC0$I4 z@A~rQ(tfW+)wK7-bzQUXP3y5;4X4P4x}8nBryiu`FshgK?XB7ss*l8yy$uIVsST5p zo9)Tl?8!}P{f4QHn{S!q2@~!8UR%p~a(Uh+d-8UBa--U?VQT%RTP8PeoGk5j;>4~- zP7wQ2!>3fm?@*4_EcKI2Rd>2(d{3k)K0ei^9C%6DN$+B1P)~82UG<#ilsd?{Sei5a z=gzja56;|E55v0e)uS+N#bq~a-la-=ruS@LCSZMevQ(jll5e&|=M-_bkgRL@6xBP5 z_PHfZ=Iu?(^F&o@gl&#W6t5|@i9<$dpPxpKZ&Uf394mvC8OB@I-=VUfTPE))ea+tK z1#(CiJ9mff4nmpsw!NkS{BZl+MmZ45XT|%$bf6-KI@S9%HIrth>izCX<@dW!>ipzc zG}25+{`dZD!9v<!Iwgk(v;5qm?st#3%mH+@yF$KS)bBp4>bkeYDV^Ux(#QyVCog($ z$d<<a?jn=>-P0=RcVAMihVK0$P;>pIXSqF$$g;3`wHrm1RVn_!fYX7Jz0Cl#RnmKv zvt7gczb+P)T?hKzC#DT8+j_4;BC7pJ#ph2BxB7F7J<M%r74?3DXs4svy=Owj<Ck-m zN7!8+RC*`f6(zFEvn}z{@%Q(IqmnZ`*Y7^M0>cBcipz(b=~ugS?9@0}t0r6y-zHYO zc<f=GaqRHqRj(e6wA1e%3-C$5`?yvymB1W=mZKrNfw+zS(i>*h3DxW`z2chRj|Pp4 zUq>zwPw2j|g7}h^Czb^GG3An7+)EoI1_9nZp#mO1W!)=3kMv&465!1jq{qD3rJbDn z0SS1lX&A}~M?h1S{uJ7H_w68;iIq#wr`AsGgsLW48>m|ESC}jj6*N?veIzH(zo^>T z>qN3Fmtn&B;gn2t(E&PyW;tE=yN~ICmjhXGZt?t!gsN+FGTtzmWvm&PVB}Fm&d|sc zt`TycHOh)J9(7>g{EO#L2KAEL?>_HHuAdCbYFF>s4q8jj87JYH?qh+1kD}7O*;Ql9 z^=#aD>KK!M2`9wT8#${3Jpz)lT)J1pEBE)O5$yI}HpS+c$zJsQx$?7eGwcG^bwsO| z%!-p(A^g6Ac-aNodcTIuNSJsUE0*s?=YAk=Ug&qvAoexlse2+B@Q1*&iIMbtnma^n z!_^b2U9OdlrQDFrgNz4bJLBBa0OL<71RpWR!tj!dNt6_7P*X`Mogk)ga>hE#SH3!# z@XFmQK3OC|_$xM};vA81!o^E{Nl#v!Q8hM(j695_pyuAG^`0R@47VeT-#ruMm(B)6 z^|pTZEC&k$GnE8bI@2=3PSdtTSj?_ea7QZ)A#B-pA?1(gc_OiPODoImBe<W|<^}nx zf_mc|LIx#h`CO#NipG#-5j6}U<5q?BnQ-jGQ<>6*fFgI@MkqOZx&;eMr&2oVl7vKH zXfwAnR4C%%Dat$Tz$8WNq!%$(%AV=4B>0h{;pWLz?@7c;vack-q?hn7lx2xU{aG~i zXK=Y&f#rOckvL=^QNF4e>itL^HPI$)iWf{#rHrbv_pB!46BHG4$dp$~Rn{<*;jX=M zXyi&`ZQdXG|D0_1kr2T(6cjYlR<$8nno7)G5NCx)O~s%jFP-WXl_@LDlIG}^WzP!h zS0FX_!=UD%FZn1>&zhWCXMV1Gcj%0GHa~a~`>&~oQw}eL_EVAtoopzL;`^(vXq&J} zvZ>_j=}ZB_Lz3or6Cl`J$s%Lth@jCFEFw~(bA;ekqcJC7cwsg-%hci)qsByJ$9U%4 zA|70n1k7ETJ2{Dndoruh`x*Z&B6YcDN`M|*axYkrm#Ed(LB>l2_q)!9<|3Tm4)c;C zK`m#;;SxbZHI0){At8^LhDOg?K3kf}!}Jq<y=Sn&l@oL>Ilms`!sDj-EDqjecjS>5 zRYr6V<|2gxKDab5w}Az&+|>SGn7{cspXAxeS(J`LUWzG#xoe?Edc7%eS^uVMsYuS* z^@)*Ql2?O4FlT27Rz9WKAam#nY!=t-G1QiA*+~nJC&u$Nxqmq=Tf2(mv=67&>~eFF lJE(f7+B@;!p$e0}m*21R1Nr;?eogCml)BM7bCC=7{{T!wX&?Xq literal 0 HcmV?d00001 diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 0000000..1b5de04 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,349 @@ +# Vietnamese Translation for LibIDN +# Copyright © 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Clytie Siddall <clytie@riverland.net.au>, 2005-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-03 22:18+0930\n" +"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" +"Language-Team: Vietnamese <vi-VN@googlegroups.com> \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.7b3\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "Thành công" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "Lỗi chuẩn bị chuỗi" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Lỗi punycode (mã yếu đuối)" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "Dữ liệu nhập chứa ký tá»± khác chữ số/chữ/dấu gạch nối" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "Không cho phép dấu gạch nối (`-') đi trước hay theo sau" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "Dữ liệu xuất sẽ quá lớn hay quá nhỏ" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "Dữ liệu nhập không bắt đầu bằng tiền tố ACE (`xn--')" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "Chuỗi không tránh nhân lên dưới ToASCII" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "Dữ liệu nhập đã chứa tiền tố ACE (`xn--')" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "Lỗi iconv hệ thống" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "Không thể cấp phát bộ nhớ" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "Lỗi dlopen hệ thống" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "Lỗi không rõ" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Chuỗi không phải tránh nhân lên dưới sá»± tiêu chuẩn hoá NFKC Unicode" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "Dữ liệu nhập không hợp lệ" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "Dữ liệu xuất sẽ vượt quá sức chứa đệm đã cung cấp" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "Giới hạn kích cỡ chuỗi bị vượt quá" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "Dữ liệu nhập chứa mã điểm không được gán cấm" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "Dữ liệu nhập chứa điểm mã cấm" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "Dữ liệu nhập chứa tài sản hai hướng xung đột" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "Chuỗi hai hướng dạng sai" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "Dữ liệu nhập chứa điểm mã hai hướng cấm" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Lỗi trong lời định nghÄ©a hồ sÆ¡ stringprep (chuẩn bị chuỗi)" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "Cờ xung dột với hồ sÆ¡" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "Hồ sÆ¡ lạ" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Lỗi tiêu chuẩn hoá Unicode (lỗi nội bộ)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "Điểm mã bị cấm bởi miền cấp đầu" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "Thiếu dữ liệu nhập" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "Không tìm thấy miền cấp đầu trong dữ liệu nhập" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Thá»­ lệnh « %s --help » để xem thêm thông tin.\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "Sá»­ dụng: %s [TÙY_CHỌN]... [CHUỖI]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"Chuyển đổi các chuỗi sang IDN (tên miền đã quốc tế hoá), hoặc đầu vào tiêu " +"chuẩn.\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Giao diện dòng lệnh với thÆ° viện tên miền đã quốc tế hoá.\n" +"\n" +"Mọi chuỗi nên được mã hoá theo bộ ký tá»± đã thích trong miền địa phÆ°Æ¡ng\n" +"của bạn. Hãy dùng tùy chọn « --debug » (gỡ lỗi) để tìm biết bộ ký tá»± nào.\n" +"Bạn cÅ©ng có thể ghi đè lên bộ ký tá»± này bằng cách đặt biến môi trường\n" +"CHARSET.\n" +"\n" +"Để xá»­ lý một chuỗi bắt đầu với « - », v.d. « -foo », dùng « -- » để ngụ ý kết " +"thúc các tham số, nhÆ° trong « idn --quiet -a -- -foo ».\n" +"\n" +"Mọi đối số bắt buộc phải sá»­ dụng với tùy chọn dài cÅ©ng bắt buộc với tùy chọn " +"ngắn.\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help In ra trợ giúp, rồi thoát\n" +" -V, --version In ra số thứ tá»± phiên bản, rồi thoát\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep Chuẩn bị chuỗi tùy theo hồ sÆ¡ nameprep\n" +" -d, --punycode-decode Giải mã Punycode\n" +" -e, --punycode-encode Mã hoá Punycode\n" +" -a, --idna-to-ascii Chuyển đổi sang ACE tùy theo IDNA (chế độ mặc " +"định)\n" +" -u, --idna-to-unicode Chuyển đổi từ ACE tùy theo IDNA\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned Bật/tắt cờ IDNA AllowUnassigned\n" +" --usestd3asciirules Bật/tắt cờ IDNA UseSTD3ASCIIRules\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld Kiểm tra chuỗi có quy tắc đặc trÆ°ng cho TLD " +"không\n" +" Chỉ cho « --idna-to-ascii » và « --idna-to-" +"unicode »\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr "" +" -n, --nfkc Tiêu chuẩn hoá chuỗi tùy theo Unicode v3.2 NFKC\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=CHUỖI Dùng hồ sÆ¡ stringprep đã ghi rõ thay vào đó\n" +" Các hồ sÆ¡ stringprep hợp lệ: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug In ra thông tin gỡ lỗi\n" +" --quiet Không xuất thông điệp\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "Chỉ có thể ghi rõ một của những đối số -s, -e, -d, -a, -u hay -n." + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "Bộ ký tá»± « %s ».\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "" +"Gõ mỗi chuỗi nhập trên một đường riêng, kết thúc bằng ký tá»± dòng mới.\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "Lỗi gõ" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "Không thể chuyển đổi từ %s sang UTF-8." + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "Không thể chuyển đổi từ UTF-8 sang UCS-4." + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile: %s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "Không thể chuyển đổi từ UTF-8 sang %s." + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode: %s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "Không thể chuyển đổi từ UCS-4 sang UTF-8." + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z: %s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD): %s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (vị trí %lu): %s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z: %s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z: %s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "Không thể tiêu chuẩn hoá kiểu NFKC" + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "Thông báo lỗi cho <%s>.\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4f6ab3893d35e25e39f0ea5cb3b96999b0071f04 GIT binary patch literal 6703 zcmd5<TW}lI89oJCTG5u4UML0H(@Sa_vWgR!kht7}6N({m(%8uq(oVdVR??EyuDZK& z;<UpEC-H^&5(v)C4o-q|X&T3d+<cAcOCS0`hw1c{2hgshG9706&?koJ_n)(p<-|_= zSdCYo&z}GP&woF^KD_6SeumEqJP+Wx@CC+dfsfygFMOW6gRuy(4yXc0fG+^={vu<a z0k;7w!1JpwG4@@oGj}rfb>Ly(L%=h@Pq6<1P{DfUD~$aN_zCd)z<WZBg@FpN3i#^) z+kr$s2CM^q2>cqb@-D`H09*;A^%mfdfe|1FwgXB2Ss?MhAK+)eA7cH`SD`!bdEifg zF9BBqUjg0+yaFV>{tAT3>>t2y1OEm57Vu6SO7iaqZUjC9q;uW?;*Y(DFOvU0kmP>| zB>vmr6w>=%;P-$lfp8hy2qd{%1AG}setZQ;`t}3A0lWg-2S5H9*o^ghyxajC1+E3& z|4qh1*lz;f4cu`Le2e$LgYfSFdx7@@hk<{>{(HcOux`U9={W+V{SSZ-1OEx6{rjLy zC2%c};*$hE0Xz(ZOW5Cm#P?CK{ybRUb+4qa074Y|CGe-fIIsfP4J3bD29m%21|&T` z20jM76HX$&rvlspB!BGyl0R)AOkf?rFmM1!djAEu1o&?t>GuGFN^+`z6t|~>bqq-U z{XGzWY!F{0|0<B=&H(A04}egK`9RY5b0A#I9z>GBjqEl&91q!mt<r~NeYv!fGH6M; zx(pBH80kedhty^$2T?Zwp*PZ1=t1ir(O2*x9mo#KO_(S?<bSexxm=dM$<Ghsp*%p@ ziZ}v994NN8<Dr}-zZE|eWAY366rp6*cu?Y^KLFTLJPIDlN%9ZHjQqj4_$W$LYfi`I zqWHbZ)=ig-jks>cxo*ZRJE^+5Wrm7uzfJ3!TV#;fpc@+atdwR;TE@AOSjrV8p&6<9 zv|OGcHdHgpwOzUk*~(TTZ_#WAXO(kE^5RB`gHAAs#f<HUl+)w?deYg@cWc~nVNjf_ zk%(nS=|9)vTTDG-MK#{?NO%RWfA)pi5XnlBtdwoVV9FB>jhpN0e<7r9aUdn7Mf8}i zMFV*$TTAhP7A|sJO^pWbxj~cSax2tXh})^*P4#M0BZ(DDZ!M!qZ>Vjkt5^ySs4qEq z(`L=F(srb{{x2e2Ta9QWqG3(LdLcp>?~w7*SHiZU+MA%3YA@_YGf=ze2#R4;I5BOu zl7o?7!p{)4R{pms*dbDF9;s#)N!Q8$%1Kos)uX1WxR#<i5nY%1)mkRf!ljt5sa-ce z$aQP$*YL`y7E{xP%ac&2icU?Ji%JKH0BJ>0G22QmEG)!oRnxRwt{R3FQC*EEwWMXY zvf6}dJ1B^zB~C>cRFqmN3uWYxXA*j|?jmuTTcKu3F|-!V;8827>Ly5&Ny=wKH#MY@ ztJyI`hs<#k!3$HAlgQ<0z{bh(;Ays1yEPmNtuc%sEgep=(sm(R=}5?F#!~n*3i(1R z!W+|U8{3gU@3f;uLr||3X~fAiLkn|GY2OsIhzb%F)1j%AcKObP3YRBzrzAml!0@7# z4n<UxTL_7*!v|zT`5EK__{pUz)XWy$w#+0ojTY6`)n-HEwa=~D+_0_@CN)~*x`^h$ zqGAcVbgbj5HvGC%cN5SKd5rD^gVkgT{7p*CvhWTDk?Iv8Xzl26Q#FJx8tEV7$Y=Nu zzDCZg4!NZXsf7fSZB0?}FBg)a$OeQ*brEHFHl8MR9rA@?!3HZuT~Yd+!YJuTAtzxW zD~tQCWr?&fV}>3P);H@>-A0VS4&7iW+NP^(LK)pmrCqkpwjl?)mDOai-yo-TQzvHj ztf9tv#FCPwR{|>btYzbvsAh5l&53*tfvA2R$rk5H-Ap^eIlK~ntSTc<o2o-zqYNoa zW#}SRt0M(b1UAIB(%~*rS(FT=mc9!DcbV{h6_b=v3x-kMh}cObsakKQMoi|V`&v;Y zoZ2I=L_Js0X`<j|du~`tHbE?WZ&QLpF~kh#wuo*k_1&NvbcIm~&U3r;EZd;NT6jbf z*Q4}qs8Xa@8ktkFzuq#Hs2<ndWd@R2vzH}WQwg}aM6faKl81I$X#;0cIU`|^KAMOC z77p$vgUut;c11L*Sd>h2I)(zpl|!un(QH92McJmZPBPDo1!Gi3z3_g}hj|S70O<|# zmZT`*v}DS1sW4$S6lt{9G}PAB-IAtwqta!HSj)>-bgm*BqD_TIS$o5w4qelRp443w zGI@dYNk^#oSwkzX)+CP_sE|26`4V@y*;16%hzdpjMd{L5Q6bs_nlm*~3cffOMcCMy zLPJy|2^sF7x;S)FWfMk=(p^V0VoNzfiz-2%7rk5MrnXb`X=-UI`l}6jMZ4#j9O%R= zMMtL!M?<viDp2n*t(~S^mR7}r-QuWmt%k#hZ5uZ=)@`i+O*kCp+k#Z5MTpTIxZSn3 zi#u@pqq~W`^fI{3wy)a#=x$!wxPEQbqT6DFve1gKRFDhX<!vptO7G<5A>Pe(qV0jo z;<al;w?`6MWCzsYl_|>+ory0o((?H7eZhd-d>Oq@sf#LG<*-*nml^fo<>A$#%~}f0 zQ`z9e^{DbpI_@ZqRt<_Gu1KP%<7PT++40b(jg3kznh>RwvKDcw;VY`ES1Z*kmFiV| z`HGrHRzF;gHy~6tYb`pBm2-5fl<LPo%Bxq`tXP#DAMple{1Y8sN4tOcYT@wZ(0bKz zl}1}N9fSIM4S!zeFQLriFQ)n9yXl|S^vn9waopoZIASHA1cw<<BZNw$rY386Z334% zE}}|D$K@o3$146f8nBQ^x?pHbD!UU(#C+P&9oGrVIS%<6*TSaeJ{j6jw_)9!la`08 zL$zqPC{2YDxdth^%UzZ-(0_kkylJ0EyD??e937p9cA|)>3Vp7IufjY+Gar2x{0ZQ9 z9rSv}@?(4Qqy5?0lm4rt!Ax1aA|-F|?G5kE9U!k|$9w!E*K@;@0S|-t#eM<EBm9wJ zZ~UV7+8?}$tA$L)>zJeoZLyyLk|%d=zc<;J>+19eFU+ygS&RJ^@VmQip7^;x@^=30 zUa$L*H*z?4;Y@b?-CO<$$j;2>-aO}bcX$_%<&Nzwzm^O8dU7)t{X-qusjECY^|n7S z8~AIUpXL_+V3*(Dc?&83-#-b+pQX`%p7E$2Z@6R5p$N)izX$SX-_D(Qm6s3si~SzR zO&_|Ebg|z9q#EXgH9S9a!S6Yh9iJ3)No8T`NdDrme`vy+?z`o$fRcdhRIgx_f<nwc ze8Ruf?{&7rV6T0jH*$nYI|~EtA7zd#aX!i%{W#MWVuh1ebCYMip&=@V-qT*+VWb4~ z&$Uf3^q9iYeUx)UL*9WNZ}K3Lz<YfrJ2jj?*`4d}E*w7vAsAu&t_-q-c8l3r*fZme zwP&YJ`)%j2>kXdsx+ftAH2z@5JJ4Ckw3X<gRDO1VWD4JrVlsiDYEbgf*XtW4d0p30 zc=_3*+41uwlZXQcfufK(mY?m&U%ZYS&-IRar}lV#M+zN%#bKTM$4?hJdO#pVWafzo z<<Gq8@3|yf1kR%4>EP*%cXoeCTh!jC)7{>gHrmDn4+^aFqu0uG#ycE@4xJxu4|#oU ze*ai*>Y#so2$b3D`z7<jV?0>NoKT^Ewvg#6oSY!{&F(7<W=I1e${U@?PWI-8MgoH4 zr}LwivlB!9k<k(*$zb{G2fcl#>AL8c%=M1t2FA0KZ+PwR=FYz=gmrrdUiaR4%g>w* z<{lbyd3lkbe`F`Rz+QOsD3kVN$9v~d2yqPglixEl=K`3Kof$+*=dWCY_x#R7xv5Tn z<P@6MoLZ7eD(4TL&tKW^Wu~FoTn<VLyld~~ruw|@ecpjTQl5KVJ-O*jB?3UBJC3Rf zWI_nyCQ9LE8j9oa<)9D{Md$>N$!k=eLr$5W^kR-jRiO$*R77R<cS>^R^$8Calioiu zjf#b*@}r}HLb>TlZ}^=#i=m*`_c~%xD!jQp>4(Dcw~#H!%Vl`{(Vk`b*|%ht3d#=1 zJMRsjh4S>zSYN=8YV#*gK?K!e-+}D)0T`2;K8R?e^5zaHcezx50e>T7%IW69QEY%5 zM&&P`X2Gz{DaDFj04F8lL|blzT0&{)6vKAu9z&JlZoCy=;nd#p_8gp8ItD&~_4%u> zp%F2^^MLo-5X)Vf%1sRw=kI_ccq!-aqLi`Ym=<tFB85t0IPxgpd(G=R<PTi-hL6d) zpsbECG@yL_(Y{jaK@xdA{a(+B?05$4OVAc)?2@JO$V#-~!k%+7IjR`)AUAY6NENw& zugdF+(FJ~~pJq_LO%}SGuuC3Tc*g#8`q(Xp?8W!x&i_7UOZuDVZ27)?kmi-y8Jar8 Kn0@oMeDfb{xULxh literal 0 HcmV?d00001 diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..e7b0b0d --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,352 @@ +# Simplified Chinese translation for libidn +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the libidn package. +# Meng Jie <zuxyhere@eastday.com>, 2005. +# Ji ZhengYu <zhengyuji@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libidn 1.9\n" +"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n" +"POT-Creation-Date: 2009-06-08 12:39+0200\n" +"PO-Revision-Date: 2008-07-06 09:28中国标准时间\n" +"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n" +"Language-Team: Chinese (simplified) <translation-team-zh-cn@lists." +"sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58 +#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60 +msgid "Success" +msgstr "成功" + +#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66 +msgid "String preparation failed" +msgstr "预备字符串失败" + +#: lib/strerror-idna.c:82 +msgid "Punycode failed" +msgstr "Punycode 失败" + +#: lib/strerror-idna.c:86 +msgid "Non-digit/letter/hyphen in input" +msgstr "输入中出现非数字/字母/连字符" + +#: lib/strerror-idna.c:90 +msgid "Forbidden leading or trailing minus sign (`-')" +msgstr "不能使用‘-’作为起始或终止符" + +#: lib/strerror-idna.c:94 +msgid "Output would be too large or too small" +msgstr "输出太大或太小" + +#: lib/strerror-idna.c:98 +msgid "Input does not start with ACE prefix (`xn--')" +msgstr "输入未以 ACE 前缀(‘xn--’)开头" + +#: lib/strerror-idna.c:102 +msgid "String not idempotent under ToASCII" +msgstr "ToASCII 中字符串不是幂等的" + +#: lib/strerror-idna.c:106 +msgid "Input already contain ACE prefix (`xn--')" +msgstr "输入已经包含 ACE前缀(‘xn--’)" + +#: lib/strerror-idna.c:110 lib/strerror-tld.c:76 +msgid "System iconv failed" +msgstr "系统 iconv 失败" + +#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72 +msgid "Cannot allocate memory" +msgstr "无法分配内存" + +#: lib/strerror-idna.c:118 +msgid "System dlopen failed" +msgstr "系统 dlopen 失败" + +#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74 +#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84 +msgid "Unknown error" +msgstr "未知错误" + +#: lib/strerror-pr29.c:62 +msgid "String not idempotent under Unicode NFKC normalization" +msgstr "Unicode NFKC 正规化过程中字符串不是幂等的" + +#: lib/strerror-punycode.c:62 +msgid "Invalid input" +msgstr "无效输入" + +#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102 +msgid "Output would exceed the buffer space provided" +msgstr "输入将溢出所提供的缓冲区" + +#: lib/strerror-punycode.c:70 +msgid "String size limit exceeded" +msgstr "字符串大小越界" + +#: lib/strerror-stringprep.c:82 +msgid "Forbidden unassigned code points in input" +msgstr "输入中不能出现未赋值的代码点" + +#: lib/strerror-stringprep.c:86 +msgid "Prohibited code points in input" +msgstr "输入中不能出现代码点" + +#: lib/strerror-stringprep.c:90 +msgid "Conflicting bidirectional properties in input" +msgstr "输入中出现相互冲突的双向属性" + +#: lib/strerror-stringprep.c:94 +msgid "Malformed bidirectional string" +msgstr "双向字符串格式错误" + +#: lib/strerror-stringprep.c:98 +msgid "Prohibited bidirectional code points in input" +msgstr "输入中不能出现双向的代码点" + +#: lib/strerror-stringprep.c:106 +msgid "Error in stringprep profile definition" +msgstr "Stringpref 配置文件定义出错" + +#: lib/strerror-stringprep.c:110 +msgid "Flag conflict with profile" +msgstr "标识与配置文件冲突" + +#: lib/strerror-stringprep.c:114 +msgid "Unknown profile" +msgstr "未知的配置文件" + +#: lib/strerror-stringprep.c:118 +msgid "Unicode normalization failed (internal error)" +msgstr "Unicode 正规化失败(内部错误)" + +#: lib/strerror-tld.c:64 +msgid "Code points prohibited by top-level domain" +msgstr "顶级域不接受代码点" + +#: lib/strerror-tld.c:68 +msgid "Missing input" +msgstr "输入缺失" + +#: lib/strerror-tld.c:80 +msgid "No top-level domain found in input" +msgstr "输入中未发现顶级域" + +#: src/idn.c:66 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "尝试用‘%s --help’获取更多信息。\n" + +#: src/idn.c:70 +#, c-format +msgid "Usage: %s [OPTION]... [STRINGS]...\n" +msgstr "用法: %s [选项]... [字符串]...\n" + +#: src/idn.c:73 +msgid "" +"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n" +"\n" +msgstr "" +"字符串或是标准输入的国际化域名(IDN)转化。\n" +"\n" + +#: src/idn.c:77 +msgid "" +"Command line interface to the internationalized domain name library.\n" +"\n" +"All strings are expected to be encoded in the preferred charset used\n" +"by your locale. Use `--debug' to find out what this charset is. You\n" +"can override the charset used by setting environment variable CHARSET.\n" +"\n" +"To process a string that starts with `-', for example `-foo', use `--'\n" +"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"国际化域名库的命令行界面。.\n" +"\n" +"所有的字符串都将以您所在区域的最合适的字符集进行编码。\n" +"使用‘--debug’可以找出这个字符集。\n" +"您可通过设置环境变量 CHARSET 来重设这一字符集。\n" +"\n" +"要想处理以‘-’开始的字符串,如‘-foo’,请使用‘--’来标识\n" +"参数结束,例如‘idn --quiet -a -- -foo’。\n" +"\n" +"长选项所必需的参数对于短选项来说也是必需的。\n" + +#: src/idn.c:89 +msgid "" +" -h, --help Print help and exit\n" +" -V, --version Print version and exit\n" +msgstr "" +" -h, --help 打印此帮助并退出\n" +" -V, --version 打印程序版本并退出\n" + +#: src/idn.c:93 +msgid "" +" -s, --stringprep Prepare string according to nameprep profile\n" +" -d, --punycode-decode Decode Punycode\n" +" -e, --punycode-encode Encode Punycode\n" +" -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n" +" -u, --idna-to-unicode Convert from ACE according to IDNA\n" +msgstr "" +" -s, --stringprep 按 nameprep 配置文件 准备字符串\n" +" -d, --punycode-decode 解码 Punycode\n" +" -e, --punycode-encode 编码 Punycode\n" +" -a, --idna-to-ascii 按 IDNA 转换为 ACE (默认方式)\n" +" -u, --idna-to-unicode 按 IDNA 从 ACE 转换\n" + +#: src/idn.c:100 +#, fuzzy +msgid "" +" --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n" +" --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n" +msgstr "" +" --allow-unassigned 切换 IDNA AllowUnassigned 标识\n" +" --usestd3asciirules 切换 IDNA UseSTD3ASCIIRules 标识\n" + +#: src/idn.c:104 +#, fuzzy +msgid "" +" --no-tld Don't check string for TLD specific rules\n" +" Only for --idna-to-ascii and --idna-to-unicode\n" +msgstr "" +" -t, --tld 按 TLD 指定的规则检查字符串\n" +" 仅对 --idna-to-ascii 和 --idna-to-unicode 有效\n" + +#: src/idn.c:108 +msgid "" +" -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n" +msgstr " -n, --nfkc 按 Unicode v3.2 NFKC 正规化字符串\n" + +#: src/idn.c:111 +msgid "" +" -p, --profile=STRING Use specified stringprep profile instead\n" +" Valid stringprep profiles: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" +msgstr "" +" -p, --profile=STRING 使用指定的 stringprep 配置文件 代替\n" +" 有效的 stringprep 配置文件: `Nameprep',\n" +" `iSCSI', `Nodeprep', `Resourceprep', \n" +" `trace', `SASLprep'\n" + +#: src/idn.c:117 +msgid "" +" --debug Print debugging information\n" +" --quiet Silent operation\n" +msgstr "" +" --debug 打印调试信息\n" +" --quiet 处理时不显示信息\n" + +#: src/idn.c:173 +#, fuzzy, c-format +msgid "only one of -s, -e, -d, -a, -u or -n can be specified" +msgstr "只能指定 -s,-e,-d,-a,-u 或 -n 中的一个。" + +#: src/idn.c:181 +#, c-format +msgid "Charset `%s'.\n" +msgstr "字符集‘%s’。\n" + +#: src/idn.c:184 +#, c-format +msgid "" +"Type each input string on a line by itself, terminated by a newline " +"character.\n" +msgstr "输入时,每个字符串单占一行。\n" + +#: src/idn.c:199 +#, fuzzy, c-format +msgid "input error" +msgstr "输入错误" + +#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512 +#, fuzzy, c-format +msgid "could not convert from %s to UTF-8" +msgstr "无法将 %s 转为 UTF-8" + +#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524 +#: src/idn.c:548 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to UCS-4" +msgstr "无法将 UTF-8 转为 UCS-4。" + +#: src/idn.c:234 +#, c-format +msgid "stringprep_profile: %s" +msgstr "stringprep_profile:%s" + +#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561 +#, fuzzy, c-format +msgid "could not convert from UTF-8 to %s" +msgstr "无法将 UTF-8 转为 %s。" + +#: src/idn.c:292 +#, c-format +msgid "punycode_encode: %s" +msgstr "punycode_encode:%s" + +#: src/idn.c:314 +msgid "malloc" +msgstr "malloc" + +#: src/idn.c:320 +#, c-format +msgid "punycode_decode: %s" +msgstr "punycode_decode: %s" + +#: src/idn.c:337 src/idn.c:361 src/idn.c:439 +#, fuzzy, c-format +msgid "could not convert from UCS-4 to UTF-8" +msgstr "无法将 UCS-4 转为 UTF-8。" + +#: src/idn.c:378 +#, c-format +msgid "idna_to_ascii_4z: %s" +msgstr "idna_to_ascii_4z:%s" + +#: src/idn.c:392 +#, c-format +msgid "idna_to_unicode_8z4z (TLD): %s" +msgstr "idna_to_unicode_8z4z (TLD):%s" + +#: src/idn.c:406 src/idn.c:479 +#, c-format +msgid "tld_check_4z (position %lu): %s" +msgstr "tld_check_4z (位置 %lu):%s" + +#: src/idn.c:409 src/idn.c:485 +#, c-format +msgid "tld_check_4z: %s" +msgstr "tld_check_4z:%s" + +#: src/idn.c:458 +#, c-format +msgid "idna_to_unicode_8z4z: %s" +msgstr "idna_to_unicode_8z4z:%s" + +#: src/idn.c:537 +#, fuzzy, c-format +msgid "could not do NFKC normalization" +msgstr "不能进行 NFKC 正规化过程。" + +#~ msgid "" +#~ "\n" +#~ "Report bugs to <%s>.\n" +#~ msgstr "" +#~ "\n" +#~ "发送错误报告至 <%s>。发送翻译错误至 Chinese (simplified) <translation-" +#~ "team-zh-cn@lists.sourceforge.net>\n" + +#~ msgid "input[%lu] = U+%04x\n" +#~ msgstr "输入[%lu] = U+%04x\n" + +#~ msgid "output[%lu] = U+%04x\n" +#~ msgstr "输出[%lu] = U+%04x\n" + +#~ msgid "tld[%lu] = U+%04x\n" +#~ msgstr "tld[%lu] = U+%04x\n" diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..9a05565 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,47 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl + +dist_lisp_DATA = punycode.el idna.el + +bin_PROGRAMS = idn +idn_SOURCES = idn.c +idn_LDADD = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la $(LTLIBINTL) + +localedir = $(datadir)/locale +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + +idn.c: $(BUILT_SOURCES) + +noinst_LTLIBRARIES = libidn_cmd.la +libidn_cmd_la_SOURCES = idn.ggo idn_cmd.c idn_cmd.h +libidn_cmd_la_CFLAGS = + +idn_cmd.c idn_cmd.h: idn.ggo Makefile.am + gengetopt --unamed-opts --no-handle-version --no-handle-help \ + --set-package="idn" \ + --input $^ --file-name idn_cmd || \ + test -f idn_cmd.h -a -f idn_cmd.c || \ + cp $(srcdir)/idn_cmd.h $(srcdir)/idn_cmd.h . + perl -pi -e 's/\[OPTIONS\]/\[OPTION\]/g' idn_cmd.c + perl -pi -e 's/\[FILES\]/\[STRING\]/g' idn_cmd.c + +BUILT_SOURCES = idn_cmd.c idn_cmd.h +MAINTAINERCLEANFILES = $(BUILT_SOURCES) diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..c260fe3 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,921 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = idn$(EXEEXT) +subdir = src +DIST_COMMON = $(dist_lisp_DATA) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libidn_cmd_la_LIBADD = +am_libidn_cmd_la_OBJECTS = libidn_cmd_la-idn_cmd.lo +libidn_cmd_la_OBJECTS = $(am_libidn_cmd_la_OBJECTS) +libidn_cmd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libidn_cmd_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(lispdir)" +PROGRAMS = $(bin_PROGRAMS) +am_idn_OBJECTS = idn.$(OBJEXT) +idn_OBJECTS = $(am_idn_OBJECTS) +am__DEPENDENCIES_1 = +idn_DEPENDENCIES = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libidn_cmd_la_SOURCES) $(idn_SOURCES) +DIST_SOURCES = $(libidn_cmd_la_SOURCES) $(idn_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +DATA = $(dist_lisp_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl +dist_lisp_DATA = punycode.el idna.el +idn_SOURCES = idn.c +idn_LDADD = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la $(LTLIBINTL) +noinst_LTLIBRARIES = libidn_cmd.la +libidn_cmd_la_SOURCES = idn.ggo idn_cmd.c idn_cmd.h +libidn_cmd_la_CFLAGS = +BUILT_SOURCES = idn_cmd.c idn_cmd.h +MAINTAINERCLEANFILES = $(BUILT_SOURCES) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libidn_cmd.la: $(libidn_cmd_la_OBJECTS) $(libidn_cmd_la_DEPENDENCIES) + $(libidn_cmd_la_LINK) $(libidn_cmd_la_OBJECTS) $(libidn_cmd_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +idn$(EXEEXT): $(idn_OBJECTS) $(idn_DEPENDENCIES) + @rm -f idn$(EXEEXT) + $(LINK) $(idn_OBJECTS) $(idn_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libidn_cmd_la-idn_cmd.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +libidn_cmd_la-idn_cmd.lo: idn_cmd.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libidn_cmd_la_CFLAGS) $(CFLAGS) -MT libidn_cmd_la-idn_cmd.lo -MD -MP -MF $(DEPDIR)/libidn_cmd_la-idn_cmd.Tpo -c -o libidn_cmd_la-idn_cmd.lo `test -f 'idn_cmd.c' || echo '$(srcdir)/'`idn_cmd.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libidn_cmd_la-idn_cmd.Tpo $(DEPDIR)/libidn_cmd_la-idn_cmd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='idn_cmd.c' object='libidn_cmd_la-idn_cmd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libidn_cmd_la_CFLAGS) $(CFLAGS) -c -o libidn_cmd_la-idn_cmd.lo `test -f 'idn_cmd.c' || echo '$(srcdir)/'`idn_cmd.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_lispDATA: $(dist_lisp_DATA) + @$(NORMAL_INSTALL) + test -z "$(lispdir)" || $(MKDIR_P) "$(DESTDIR)$(lispdir)" + @list='$(dist_lisp_DATA)'; test -n "$(lispdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(lispdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(lispdir)" || exit $$?; \ + done + +uninstall-dist_lispDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_lisp_DATA)'; test -n "$(lispdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(lispdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(lispdir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(lispdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_lispDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-dist_lispDATA + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool clean-noinstLTLIBRARIES ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dist_lispDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-dist_lispDATA + + +idn.c: $(BUILT_SOURCES) + +idn_cmd.c idn_cmd.h: idn.ggo Makefile.am + gengetopt --unamed-opts --no-handle-version --no-handle-help \ + --set-package="idn" \ + --input $^ --file-name idn_cmd || \ + test -f idn_cmd.h -a -f idn_cmd.c || \ + cp $(srcdir)/idn_cmd.h $(srcdir)/idn_cmd.h . + perl -pi -e 's/\[OPTIONS\]/\[OPTION\]/g' idn_cmd.c + perl -pi -e 's/\[FILES\]/\[STRING\]/g' idn_cmd.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: diff --git a/src/idn.c b/src/idn.c new file mode 100644 index 0000000..f9873c6 --- /dev/null +++ b/src/idn.c @@ -0,0 +1,573 @@ +/* idn.c --- Command line interface to libidn. + * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <locale.h> + +/* Gnulib headers. */ +#include "error.h" +#include "gettext.h" +#define _(String) dgettext (PACKAGE, String) +#define N_(String) gettext_noop (String) +#include "progname.h" +#include "version-etc.h" + +/* Libidn headers. */ +#include <stringprep.h> +#include <punycode.h> +#include <idna.h> +#ifdef WITH_TLD +# include <tld.h> +#endif + +#include "idn_cmd.h" + +#define GREETING \ + "Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.\n" \ + "GNU Libidn comes with NO WARRANTY, to the extent permitted by law.\n" \ + "You may redistribute copies of GNU Libidn under the terms of\n" \ + "the GNU Lesser General Public License. For more information\n" \ + "about these matters, see the file named COPYING.LIB.\n" + +const char version_etc_copyright[] = + /* Do *not* mark this string for translation. %s is a copyright + symbol suitable for this locale, and %d is the copyright + year. */ + "Copyright %s %d Simon Josefsson."; + +static void +usage (int status) +{ + if (status != EXIT_SUCCESS) + fprintf (stderr, _("Try `%s --help' for more information.\n"), + program_name); + else + { + printf (_("\ +Usage: %s [OPTION]... [STRINGS]...\n\ +"), program_name); + fputs (_("\ +Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n\ +\n\ +"), stdout); + fputs (_("\ +Command line interface to the internationalized domain name library.\n\ +\n\ +All strings are expected to be encoded in the preferred charset used\n\ +by your locale. Use `--debug' to find out what this charset is. You\n\ +can override the charset used by setting environment variable CHARSET.\n\ +\n\ +To process a string that starts with `-', for example `-foo', use `--'\n\ +to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n\ +\n\ +Mandatory arguments to long options are mandatory for short options too.\n\ +"), stdout); + fputs (_("\ + -h, --help Print help and exit\n\ + -V, --version Print version and exit\n\ +"), stdout); + fputs (_("\ + -s, --stringprep Prepare string according to nameprep profile\n\ + -d, --punycode-decode Decode Punycode\n\ + -e, --punycode-encode Encode Punycode\n\ + -a, --idna-to-ascii Convert to ACE according to IDNA (default mode)\n\ + -u, --idna-to-unicode Convert from ACE according to IDNA\n\ +"), stdout); + fputs (_("\ + --allow-unassigned Toggle IDNA AllowUnassigned flag (default off)\n\ + --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)\n\ +"), stdout); + fputs (_("\ + --no-tld Don't check string for TLD specific rules\n\ + Only for --idna-to-ascii and --idna-to-unicode\n\ +"), stdout); + fputs (_("\ + -n, --nfkc Normalize string according to Unicode v3.2 NFKC\n\ +"), stdout); + fputs (_("\ + -p, --profile=STRING Use specified stringprep profile instead\n\ + Valid stringprep profiles: `Nameprep',\n\ + `iSCSI', `Nodeprep', `Resourceprep', \n\ + `trace', `SASLprep'\n\ +"), stdout); + fputs (_("\ + --debug Print debugging information\n\ + --quiet Silent operation\n\ +"), stdout); + emit_bug_reporting_address (); + } + exit (status); +} + +int +main (int argc, char *argv[]) +{ + struct gengetopt_args_info args_info; + char readbuf[BUFSIZ]; + char *p, *r; + uint32_t *q; + unsigned cmdn = 0; + int rc; + + setlocale (LC_ALL, ""); + set_program_name (argv[0]); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + if (cmdline_parser (argc, argv, &args_info) != 0) + return EXIT_FAILURE; + + if (args_info.version_given) + { + version_etc (stdout, "idn", PACKAGE_NAME, VERSION, + "Simon Josefsson", (char *) NULL); + return EXIT_SUCCESS; + } + + if (args_info.help_given) + usage (EXIT_SUCCESS); + + /* Backwards compatibility: -n has always been the documented short + form for --nfkc but, before v1.10, -k was the implemented short + form. We now accept both to avoid documentation changes. */ + if (args_info.hidden_nfkc_given) + args_info.nfkc_given = 1; + + if (!args_info.stringprep_given && + !args_info.punycode_encode_given && !args_info.punycode_decode_given && + !args_info.idna_to_ascii_given && !args_info.idna_to_unicode_given && + !args_info.nfkc_given) + args_info.idna_to_ascii_given = 1; + + if ((args_info.stringprep_given ? 1 : 0) + + (args_info.punycode_encode_given ? 1 : 0) + + (args_info.punycode_decode_given ? 1 : 0) + + (args_info.idna_to_ascii_given ? 1 : 0) + + (args_info.idna_to_unicode_given ? 1 : 0) + + (args_info.nfkc_given ? 1 : 0) != 1) + { + error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified")); + usage (EXIT_FAILURE); + } + + if (!args_info.quiet_given) + fprintf (stderr, "%s %s\n" GREETING, PACKAGE, VERSION); + + if (args_info.debug_given) + fprintf (stderr, _("Charset `%s'.\n"), stringprep_locale_charset ()); + + if (!args_info.quiet_given && args_info.inputs_num == 0) + fprintf (stderr, _("Type each input string on a line by itself, " + "terminated by a newline character.\n")); + + do + { + if (cmdn < args_info.inputs_num) + { + strncpy (readbuf, args_info.inputs[cmdn++], BUFSIZ - 1); + readbuf[BUFSIZ - 1] = '\0'; + } + else if (fgets (readbuf, BUFSIZ, stdin) == NULL) + { + if (feof (stdin)) + break; + + error (EXIT_FAILURE, errno, _("input error")); + } + + if (readbuf[strlen (readbuf) - 1] == '\n') + readbuf[strlen (readbuf) - 1] = '\0'; + + if (args_info.stringprep_given) + { + p = stringprep_locale_to_utf8 (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"), + stringprep_locale_charset ()); + + q = stringprep_utf8_to_ucs4 (p, -1, NULL); + if (!q) + { + free (p); + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + } + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "input[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + free (q); + + rc = stringprep_profile (p, &r, + args_info.profile_given ? + args_info.profile_arg : "Nameprep", 0); + free (p); + if (rc != STRINGPREP_OK) + error (EXIT_FAILURE, 0, _("stringprep_profile: %s"), + stringprep_strerror (rc)); + + q = stringprep_utf8_to_ucs4 (r, -1, NULL); + if (!q) + { + free (r); + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + } + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "output[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + free (q); + + p = stringprep_utf8_to_locale (r); + free (r); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"), + stringprep_locale_charset ()); + + fprintf (stdout, "%s\n", p); + + free (p); + } + + if (args_info.punycode_encode_given) + { + size_t len, len2; + + p = stringprep_locale_to_utf8 (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"), + stringprep_locale_charset ()); + + q = stringprep_utf8_to_ucs4 (p, -1, &len); + free (p); + if (!q) + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + + if (args_info.debug_given) + { + size_t i; + for (i = 0; i < len; i++) + fprintf (stderr, "input[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + + len2 = BUFSIZ - 1; + rc = punycode_encode (len, q, NULL, &len2, readbuf); + free (q); + if (rc != PUNYCODE_SUCCESS) + error (EXIT_FAILURE, 0, _("punycode_encode: %s"), + punycode_strerror (rc)); + + readbuf[len2] = '\0'; + + p = stringprep_utf8_to_locale (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"), + stringprep_locale_charset ()); + + fprintf (stdout, "%s\n", p); + + free (p); + } + + if (args_info.punycode_decode_given) + { + size_t len; + + len = BUFSIZ; + q = (uint32_t *) malloc (len * sizeof (q[0])); + if (!q) + error (EXIT_FAILURE, ENOMEM, N_("malloc")); + + rc = punycode_decode (strlen (readbuf), readbuf, &len, q, NULL); + if (rc != PUNYCODE_SUCCESS) + { + free (q); + error (EXIT_FAILURE, 0, _("punycode_decode: %s"), + punycode_strerror (rc)); + } + + if (args_info.debug_given) + { + size_t i; + for (i = 0; i < len; i++) + fprintf (stderr, "output[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + + q[len] = 0; + r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL); + free (q); + if (!r) + error (EXIT_FAILURE, 0, + _("could not convert from UCS-4 to UTF-8")); + + p = stringprep_utf8_to_locale (r); + free (r); + if (!r) + error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"), + stringprep_locale_charset ()); + + fprintf (stdout, "%s\n", p); + + free (p); + } + + if (args_info.idna_to_ascii_given) + { + p = stringprep_locale_to_utf8 (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"), + stringprep_locale_charset ()); + + q = stringprep_utf8_to_ucs4 (p, -1, NULL); + free (p); + if (!q) + error (EXIT_FAILURE, 0, + _("could not convert from UCS-4 to UTF-8")); + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "input[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + + rc = idna_to_ascii_4z (q, &p, + (args_info.allow_unassigned_given ? + IDNA_ALLOW_UNASSIGNED : 0) | + (args_info.usestd3asciirules_given ? + IDNA_USE_STD3_ASCII_RULES : 0)); + free (q); + if (rc != IDNA_SUCCESS) + error (EXIT_FAILURE, 0, _("idna_to_ascii_4z: %s"), + idna_strerror (rc)); + +#ifdef WITH_TLD + if (args_info.tld_flag && !args_info.no_tld_flag) + { + size_t errpos; + + rc = idna_to_unicode_8z4z (p, &q, + (args_info.allow_unassigned_given ? + IDNA_ALLOW_UNASSIGNED : 0) | + (args_info.usestd3asciirules_given ? + IDNA_USE_STD3_ASCII_RULES : 0)); + if (rc != IDNA_SUCCESS) + error (EXIT_FAILURE, 0, _("idna_to_unicode_8z4z (TLD): %s"), + idna_strerror (rc)); + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "tld[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + + rc = tld_check_4z (q, &errpos, NULL); + free (q); + if (rc == TLD_INVALID) + error (EXIT_FAILURE, 0, _("tld_check_4z (position %lu): %s"), + (unsigned long) errpos, tld_strerror (rc)); + if (rc != TLD_SUCCESS) + error (EXIT_FAILURE, 0, _("tld_check_4z: %s"), + tld_strerror (rc)); + } +#endif + + if (args_info.debug_given) + { + size_t i; + for (i = 0; p[i]; i++) + fprintf (stderr, "output[%lu] = U+%04x\n", + (unsigned long) i, p[i]); + } + + fprintf (stdout, "%s\n", p); + + free (p); + } + + if (args_info.idna_to_unicode_given) + { + p = stringprep_locale_to_utf8 (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"), + stringprep_locale_charset ()); + + q = stringprep_utf8_to_ucs4 (p, -1, NULL); + if (!q) + { + free (p); + error (EXIT_FAILURE, 0, + _("could not convert from UCS-4 to UTF-8")); + } + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "input[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + free (q); + + rc = idna_to_unicode_8z4z (p, &q, + (args_info.allow_unassigned_given ? + IDNA_ALLOW_UNASSIGNED : 0) | + (args_info.usestd3asciirules_given ? + IDNA_USE_STD3_ASCII_RULES : 0)); + free (p); + if (rc != IDNA_SUCCESS) + error (EXIT_FAILURE, 0, _("idna_to_unicode_8z4z: %s"), + idna_strerror (rc)); + + if (args_info.debug_given) + { + size_t i; + for (i = 0; q[i]; i++) + fprintf (stderr, "output[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + } + +#ifdef WITH_TLD + if (args_info.tld_flag) + { + size_t errpos; + + rc = tld_check_4z (q, &errpos, NULL); + if (rc == TLD_INVALID) + { + free (q); + error (EXIT_FAILURE, 0, + _("tld_check_4z (position %lu): %s"), + (unsigned long) errpos, tld_strerror (rc)); + } + if (rc != TLD_SUCCESS) + { + free (q); + error (EXIT_FAILURE, 0, _("tld_check_4z: %s"), + tld_strerror (rc)); + } + } +#endif + + r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL); + free (q); + if (!r) + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + + p = stringprep_utf8_to_locale (r); + free (r); + if (!r) + error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"), + stringprep_locale_charset ()); + + fprintf (stdout, "%s\n", p); + + free (p); + } + + if (args_info.nfkc_given) + { + p = stringprep_locale_to_utf8 (readbuf); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"), + stringprep_locale_charset ()); + + if (args_info.debug_given) + { + size_t i; + + q = stringprep_utf8_to_ucs4 (p, -1, NULL); + if (!q) + { + free (p); + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + } + + for (i = 0; q[i]; i++) + fprintf (stderr, "input[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + + free (q); + } + + r = stringprep_utf8_nfkc_normalize (p, -1); + free (p); + if (!r) + error (EXIT_FAILURE, 0, _("could not do NFKC normalization")); + + if (args_info.debug_given) + { + size_t i; + + q = stringprep_utf8_to_ucs4 (r, -1, NULL); + if (!q) + { + free (r); + error (EXIT_FAILURE, 0, + _("could not convert from UTF-8 to UCS-4")); + } + + for (i = 0; q[i]; i++) + fprintf (stderr, "output[%lu] = U+%04x\n", + (unsigned long) i, q[i]); + + free (q); + } + + p = stringprep_utf8_to_locale (r); + free (r); + if (!p) + error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"), + stringprep_locale_charset ()); + + fprintf (stdout, "%s\n", p); + + free (p); + } + } + while (!feof (stdin) && !ferror (stdin) && (args_info.inputs_num == 0 || + cmdn < args_info.inputs_num)); + + return EXIT_SUCCESS; +} diff --git a/src/idn.ggo b/src/idn.ggo new file mode 100644 index 0000000..d473070 --- /dev/null +++ b/src/idn.ggo @@ -0,0 +1,31 @@ +# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson. +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +option "stringprep" s "Prepare string according to nameprep profile" no +option "punycode-decode" d "Decode Punycode" no +option "punycode-encode" e "Encode Punycode" no +option "idna-to-ascii" a "Convert to ACE according to IDNA (default)" no +option "idna-to-unicode" u "Convert from ACE according to IDNA" no +option "allow-unassigned" - "Toggle IDNA AllowUnassigned flag" flag off +option "usestd3asciirules" - "Toggle IDNA UseSTD3ASCIIRules flag" flag off +option "tld" t "Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode" flag on +option "no-tld" - "Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode" flag off +option "nfkc" n "Normalize string according to Unicode v3.2 NFKC" no +option "hidden-nfkc" k "Hidden parameter for backwards compatibility" no hidden +option "profile" p "Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'." string no +option "debug" - "Print debugging information" flag off +option "quiet" - "Silent operation" flag off diff --git a/src/idn_cmd.c b/src/idn_cmd.c new file mode 100644 index 0000000..86dcb48 --- /dev/null +++ b/src/idn_cmd.c @@ -0,0 +1,834 @@ +/* + File autogenerated by gengetopt version 2.22.1 + generated with the following command: + gengetopt --unamed-opts --no-handle-version --no-handle-help --set-package=idn --input idn.ggo --file-name idn_cmd Makefile.am + + The developers of gengetopt consider the fixed text that goes in all + gengetopt output files to be in the public domain: + we make no copyright claims on it. +*/ + +/* If we use autoconf. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "getopt.h" + +#include "idn_cmd.h" + +const char *gengetopt_args_info_purpose = ""; + +const char *gengetopt_args_info_usage = "Usage: idn [OPTION]... [STRING]..."; + +const char *gengetopt_args_info_description = ""; + +const char *gengetopt_args_info_full_help[] = { + " -h, --help Print help and exit", + " --full-help Print help, including hidden options, and exit", + " -V, --version Print version and exit", + " -s, --stringprep Prepare string according to nameprep profile", + " -d, --punycode-decode Decode Punycode", + " -e, --punycode-encode Encode Punycode", + " -a, --idna-to-ascii Convert to ACE according to IDNA (default)", + " -u, --idna-to-unicode Convert from ACE according to IDNA", + " --allow-unassigned Toggle IDNA AllowUnassigned flag (default=off)", + " --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default=off)", + " -t, --tld Check string for TLD specific rules\n Only for --idna-to-ascii and --idna-to-unicode \n (default=on)", + " --no-tld Don't check string for TLD specific rules\n Only for --idna-to-ascii and --idna-to-unicode \n (default=off)", + " -n, --nfkc Normalize string according to Unicode v3.2 NFKC", + " -k, --hidden-nfkc Hidden parameter for backwards compatibility", + " -p, --profile=STRING Use specified stringprep profile instead\n Valid stringprep profiles are `Nameprep', `iSCSI', \n `Nodeprep', `Resourceprep', `trace', and \n `SASLprep'.", + " --debug Print debugging information (default=off)", + " --quiet Silent operation (default=off)", + 0 +}; + +static void +init_help_array(void) +{ + gengetopt_args_info_help[0] = gengetopt_args_info_full_help[0]; + gengetopt_args_info_help[1] = gengetopt_args_info_full_help[1]; + gengetopt_args_info_help[2] = gengetopt_args_info_full_help[2]; + gengetopt_args_info_help[3] = gengetopt_args_info_full_help[3]; + gengetopt_args_info_help[4] = gengetopt_args_info_full_help[4]; + gengetopt_args_info_help[5] = gengetopt_args_info_full_help[5]; + gengetopt_args_info_help[6] = gengetopt_args_info_full_help[6]; + gengetopt_args_info_help[7] = gengetopt_args_info_full_help[7]; + gengetopt_args_info_help[8] = gengetopt_args_info_full_help[8]; + gengetopt_args_info_help[9] = gengetopt_args_info_full_help[9]; + gengetopt_args_info_help[10] = gengetopt_args_info_full_help[10]; + gengetopt_args_info_help[11] = gengetopt_args_info_full_help[11]; + gengetopt_args_info_help[12] = gengetopt_args_info_full_help[12]; + gengetopt_args_info_help[13] = gengetopt_args_info_full_help[14]; + gengetopt_args_info_help[14] = gengetopt_args_info_full_help[15]; + gengetopt_args_info_help[15] = gengetopt_args_info_full_help[16]; + gengetopt_args_info_help[16] = 0; + +} + +const char *gengetopt_args_info_help[17]; + +typedef enum {ARG_NO + , ARG_FLAG + , ARG_STRING +} cmdline_parser_arg_type; + +static +void clear_given (struct gengetopt_args_info *args_info); +static +void clear_args (struct gengetopt_args_info *args_info); + +static int +cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params, const char *additional_error); + + +static char * +gengetopt_strdup (const char *s); + +static +void clear_given (struct gengetopt_args_info *args_info) +{ + args_info->help_given = 0 ; + args_info->full_help_given = 0 ; + args_info->version_given = 0 ; + args_info->stringprep_given = 0 ; + args_info->punycode_decode_given = 0 ; + args_info->punycode_encode_given = 0 ; + args_info->idna_to_ascii_given = 0 ; + args_info->idna_to_unicode_given = 0 ; + args_info->allow_unassigned_given = 0 ; + args_info->usestd3asciirules_given = 0 ; + args_info->tld_given = 0 ; + args_info->no_tld_given = 0 ; + args_info->nfkc_given = 0 ; + args_info->hidden_nfkc_given = 0 ; + args_info->profile_given = 0 ; + args_info->debug_given = 0 ; + args_info->quiet_given = 0 ; +} + +static +void clear_args (struct gengetopt_args_info *args_info) +{ + args_info->allow_unassigned_flag = 0; + args_info->usestd3asciirules_flag = 0; + args_info->tld_flag = 1; + args_info->no_tld_flag = 0; + args_info->profile_arg = NULL; + args_info->profile_orig = NULL; + args_info->debug_flag = 0; + args_info->quiet_flag = 0; + +} + +static +void init_args_info(struct gengetopt_args_info *args_info) +{ + + init_help_array(); + args_info->help_help = gengetopt_args_info_full_help[0] ; + args_info->full_help_help = gengetopt_args_info_full_help[1] ; + args_info->version_help = gengetopt_args_info_full_help[2] ; + args_info->stringprep_help = gengetopt_args_info_full_help[3] ; + args_info->punycode_decode_help = gengetopt_args_info_full_help[4] ; + args_info->punycode_encode_help = gengetopt_args_info_full_help[5] ; + args_info->idna_to_ascii_help = gengetopt_args_info_full_help[6] ; + args_info->idna_to_unicode_help = gengetopt_args_info_full_help[7] ; + args_info->allow_unassigned_help = gengetopt_args_info_full_help[8] ; + args_info->usestd3asciirules_help = gengetopt_args_info_full_help[9] ; + args_info->tld_help = gengetopt_args_info_full_help[10] ; + args_info->no_tld_help = gengetopt_args_info_full_help[11] ; + args_info->nfkc_help = gengetopt_args_info_full_help[12] ; + args_info->hidden_nfkc_help = gengetopt_args_info_full_help[13] ; + args_info->profile_help = gengetopt_args_info_full_help[14] ; + args_info->debug_help = gengetopt_args_info_full_help[15] ; + args_info->quiet_help = gengetopt_args_info_full_help[16] ; + +} + +void +cmdline_parser_print_version (void) +{ + printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION); +} + +static void print_help_common(void) { + cmdline_parser_print_version (); + + if (strlen(gengetopt_args_info_purpose) > 0) + printf("\n%s\n", gengetopt_args_info_purpose); + + if (strlen(gengetopt_args_info_usage) > 0) + printf("\n%s\n", gengetopt_args_info_usage); + + printf("\n"); + + if (strlen(gengetopt_args_info_description) > 0) + printf("%s\n\n", gengetopt_args_info_description); +} + +void +cmdline_parser_print_help (void) +{ + int i = 0; + print_help_common(); + while (gengetopt_args_info_help[i]) + printf("%s\n", gengetopt_args_info_help[i++]); +} + +void +cmdline_parser_print_full_help (void) +{ + int i = 0; + print_help_common(); + while (gengetopt_args_info_full_help[i]) + printf("%s\n", gengetopt_args_info_full_help[i++]); +} + +void +cmdline_parser_init (struct gengetopt_args_info *args_info) +{ + clear_given (args_info); + clear_args (args_info); + init_args_info (args_info); + + args_info->inputs = NULL; + args_info->inputs_num = 0; +} + +void +cmdline_parser_params_init(struct cmdline_parser_params *params) +{ + if (params) + { + params->override = 0; + params->initialize = 1; + params->check_required = 1; + params->check_ambiguity = 0; + params->print_errors = 1; + } +} + +struct cmdline_parser_params * +cmdline_parser_params_create(void) +{ + struct cmdline_parser_params *params = + (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params)); + cmdline_parser_params_init(params); + return params; +} + +static void +free_string_field (char **s) +{ + if (*s) + { + free (*s); + *s = 0; + } +} + + +static void +cmdline_parser_release (struct gengetopt_args_info *args_info) +{ + unsigned int i; + free_string_field (&(args_info->profile_arg)); + free_string_field (&(args_info->profile_orig)); + + + for (i = 0; i < args_info->inputs_num; ++i) + free (args_info->inputs [i]); + + if (args_info->inputs_num) + free (args_info->inputs); + + clear_given (args_info); +} + + +static void +write_into_file(FILE *outfile, const char *opt, const char *arg, char *values[]) +{ + if (arg) { + fprintf(outfile, "%s=\"%s\"\n", opt, arg); + } else { + fprintf(outfile, "%s\n", opt); + } +} + + +int +cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info) +{ + int i = 0; + + if (!outfile) + { + fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE); + return EXIT_FAILURE; + } + + if (args_info->help_given) + write_into_file(outfile, "help", 0, 0 ); + if (args_info->full_help_given) + write_into_file(outfile, "full-help", 0, 0 ); + if (args_info->version_given) + write_into_file(outfile, "version", 0, 0 ); + if (args_info->stringprep_given) + write_into_file(outfile, "stringprep", 0, 0 ); + if (args_info->punycode_decode_given) + write_into_file(outfile, "punycode-decode", 0, 0 ); + if (args_info->punycode_encode_given) + write_into_file(outfile, "punycode-encode", 0, 0 ); + if (args_info->idna_to_ascii_given) + write_into_file(outfile, "idna-to-ascii", 0, 0 ); + if (args_info->idna_to_unicode_given) + write_into_file(outfile, "idna-to-unicode", 0, 0 ); + if (args_info->allow_unassigned_given) + write_into_file(outfile, "allow-unassigned", 0, 0 ); + if (args_info->usestd3asciirules_given) + write_into_file(outfile, "usestd3asciirules", 0, 0 ); + if (args_info->tld_given) + write_into_file(outfile, "tld", 0, 0 ); + if (args_info->no_tld_given) + write_into_file(outfile, "no-tld", 0, 0 ); + if (args_info->nfkc_given) + write_into_file(outfile, "nfkc", 0, 0 ); + if (args_info->hidden_nfkc_given) + write_into_file(outfile, "hidden-nfkc", 0, 0 ); + if (args_info->profile_given) + write_into_file(outfile, "profile", args_info->profile_orig, 0); + if (args_info->debug_given) + write_into_file(outfile, "debug", 0, 0 ); + if (args_info->quiet_given) + write_into_file(outfile, "quiet", 0, 0 ); + + + i = EXIT_SUCCESS; + return i; +} + +int +cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info) +{ + FILE *outfile; + int i = 0; + + outfile = fopen(filename, "w"); + + if (!outfile) + { + fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename); + return EXIT_FAILURE; + } + + i = cmdline_parser_dump(outfile, args_info); + fclose (outfile); + + return i; +} + +void +cmdline_parser_free (struct gengetopt_args_info *args_info) +{ + cmdline_parser_release (args_info); +} + +/** @brief replacement of strdup, which is not standard */ +char * +gengetopt_strdup (const char *s) +{ + char *result = NULL; + if (!s) + return result; + + result = (char*)malloc(strlen(s) + 1); + if (result == (char*)0) + return (char*)0; + strcpy(result, s); + return result; +} + +int +cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info) +{ + return cmdline_parser2 (argc, argv, args_info, 0, 1, 1); +} + +int +cmdline_parser_ext (int argc, char * const *argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params) +{ + int result; + result = cmdline_parser_internal (argc, argv, args_info, params, NULL); + + if (result == EXIT_FAILURE) + { + cmdline_parser_free (args_info); + exit (EXIT_FAILURE); + } + + return result; +} + +int +cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required) +{ + int result; + struct cmdline_parser_params params; + + params.override = override; + params.initialize = initialize; + params.check_required = check_required; + params.check_ambiguity = 0; + params.print_errors = 1; + + result = cmdline_parser_internal (argc, argv, args_info, ¶ms, NULL); + + if (result == EXIT_FAILURE) + { + cmdline_parser_free (args_info); + exit (EXIT_FAILURE); + } + + return result; +} + +int +cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name) +{ + return EXIT_SUCCESS; +} + + +static char *package_name = 0; + +/** + * @brief updates an option + * @param field the generic pointer to the field to update + * @param orig_field the pointer to the orig field + * @param field_given the pointer to the number of occurrence of this option + * @param prev_given the pointer to the number of occurrence already seen + * @param value the argument for this option (if null no arg was specified) + * @param possible_values the possible values for this option (if specified) + * @param default_value the default value (in case the option only accepts fixed values) + * @param arg_type the type of this option + * @param check_ambiguity @see cmdline_parser_params.check_ambiguity + * @param override @see cmdline_parser_params.override + * @param no_free whether to free a possible previous value + * @param multiple_option whether this is a multiple option + * @param long_opt the corresponding long option + * @param short_opt the corresponding short option (or '-' if none) + * @param additional_error possible further error specification + */ +static +int update_arg(void *field, char **orig_field, + unsigned int *field_given, unsigned int *prev_given, + char *value, char *possible_values[], const char *default_value, + cmdline_parser_arg_type arg_type, + int check_ambiguity, int override, + int no_free, int multiple_option, + const char *long_opt, char short_opt, + const char *additional_error) +{ + char *stop_char = 0; + const char *val = value; + int found; + char **string_field; + + stop_char = 0; + found = 0; + + if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given))) + { + if (short_opt != '-') + fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n", + package_name, long_opt, short_opt, + (additional_error ? additional_error : "")); + else + fprintf (stderr, "%s: `--%s' option given more than once%s\n", + package_name, long_opt, + (additional_error ? additional_error : "")); + return 1; /* failure */ + } + + + if (field_given && *field_given && ! override) + return 0; + if (prev_given) + (*prev_given)++; + if (field_given) + (*field_given)++; + if (possible_values) + val = possible_values[found]; + + switch(arg_type) { + case ARG_FLAG: + *((int *)field) = !*((int *)field); + break; + case ARG_STRING: + if (val) { + string_field = (char **)field; + if (!no_free && *string_field) + free (*string_field); /* free previous string */ + *string_field = gengetopt_strdup (val); + } + break; + default: + break; + }; + + + /* store the original value */ + switch(arg_type) { + case ARG_NO: + case ARG_FLAG: + break; + default: + if (value && orig_field) { + if (no_free) { + *orig_field = value; + } else { + if (*orig_field) + free (*orig_field); /* free previous string */ + *orig_field = gengetopt_strdup (value); + } + } + }; + + return 0; /* OK */ +} + + +int +cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params, const char *additional_error) +{ + int c; /* Character of the parsed option. */ + + int error = 0; + struct gengetopt_args_info local_args_info; + + int override; + int initialize; + int check_required; + int check_ambiguity; + + package_name = argv[0]; + + override = params->override; + initialize = params->initialize; + check_required = params->check_required; + check_ambiguity = params->check_ambiguity; + + if (initialize) + cmdline_parser_init (args_info); + + cmdline_parser_init (&local_args_info); + + optarg = 0; + optind = 0; + opterr = params->print_errors; + optopt = '?'; + + while (1) + { + int option_index = 0; + + static struct option long_options[] = { + { "help", 0, NULL, 'h' }, + { "full-help", 0, NULL, 0 }, + { "version", 0, NULL, 'V' }, + { "stringprep", 0, NULL, 's' }, + { "punycode-decode", 0, NULL, 'd' }, + { "punycode-encode", 0, NULL, 'e' }, + { "idna-to-ascii", 0, NULL, 'a' }, + { "idna-to-unicode", 0, NULL, 'u' }, + { "allow-unassigned", 0, NULL, 0 }, + { "usestd3asciirules", 0, NULL, 0 }, + { "tld", 0, NULL, 't' }, + { "no-tld", 0, NULL, 0 }, + { "nfkc", 0, NULL, 'n' }, + { "hidden-nfkc", 0, NULL, 'k' }, + { "profile", 1, NULL, 'p' }, + { "debug", 0, NULL, 0 }, + { "quiet", 0, NULL, 0 }, + { NULL, 0, NULL, 0 } + }; + + c = getopt_long (argc, argv, "hVsdeautnkp:", long_options, &option_index); + + if (c == -1) break; /* Exit from `while (1)' loop. */ + + switch (c) + { + case 'h': /* Print help and exit. */ + + + if (update_arg( 0 , + 0 , &(args_info->help_given), + &(local_args_info.help_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "help", 'h', + additional_error)) + goto failure; + cmdline_parser_free (&local_args_info); + return 0; + + break; + case 'V': /* Print version and exit. */ + + + if (update_arg( 0 , + 0 , &(args_info->version_given), + &(local_args_info.version_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "version", 'V', + additional_error)) + goto failure; + cmdline_parser_free (&local_args_info); + return 0; + + break; + case 's': /* Prepare string according to nameprep profile. */ + + + if (update_arg( 0 , + 0 , &(args_info->stringprep_given), + &(local_args_info.stringprep_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "stringprep", 's', + additional_error)) + goto failure; + + break; + case 'd': /* Decode Punycode. */ + + + if (update_arg( 0 , + 0 , &(args_info->punycode_decode_given), + &(local_args_info.punycode_decode_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "punycode-decode", 'd', + additional_error)) + goto failure; + + break; + case 'e': /* Encode Punycode. */ + + + if (update_arg( 0 , + 0 , &(args_info->punycode_encode_given), + &(local_args_info.punycode_encode_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "punycode-encode", 'e', + additional_error)) + goto failure; + + break; + case 'a': /* Convert to ACE according to IDNA (default). */ + + + if (update_arg( 0 , + 0 , &(args_info->idna_to_ascii_given), + &(local_args_info.idna_to_ascii_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "idna-to-ascii", 'a', + additional_error)) + goto failure; + + break; + case 'u': /* Convert from ACE according to IDNA. */ + + + if (update_arg( 0 , + 0 , &(args_info->idna_to_unicode_given), + &(local_args_info.idna_to_unicode_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "idna-to-unicode", 'u', + additional_error)) + goto failure; + + break; + case 't': /* Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode. */ + + + if (update_arg((void *)&(args_info->tld_flag), 0, &(args_info->tld_given), + &(local_args_info.tld_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "tld", 't', + additional_error)) + goto failure; + + break; + case 'n': /* Normalize string according to Unicode v3.2 NFKC. */ + + + if (update_arg( 0 , + 0 , &(args_info->nfkc_given), + &(local_args_info.nfkc_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "nfkc", 'n', + additional_error)) + goto failure; + + break; + case 'k': /* Hidden parameter for backwards compatibility. */ + + + if (update_arg( 0 , + 0 , &(args_info->hidden_nfkc_given), + &(local_args_info.hidden_nfkc_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "hidden-nfkc", 'k', + additional_error)) + goto failure; + + break; + case 'p': /* Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'.. */ + + + if (update_arg( (void *)&(args_info->profile_arg), + &(args_info->profile_orig), &(args_info->profile_given), + &(local_args_info.profile_given), optarg, 0, 0, ARG_STRING, + check_ambiguity, override, 0, 0, + "profile", 'p', + additional_error)) + goto failure; + + break; + + case 0: /* Long option with no short option */ + /* Print help, including hidden options, and exit. */ + if (strcmp (long_options[option_index].name, "full-help") == 0) + { + + + if (update_arg( 0 , + 0 , &(args_info->full_help_given), + &(local_args_info.full_help_given), optarg, 0, 0, ARG_NO, + check_ambiguity, override, 0, 0, + "full-help", '-', + additional_error)) + goto failure; + cmdline_parser_free (&local_args_info); + return 0; + + } + /* Toggle IDNA AllowUnassigned flag. */ + else if (strcmp (long_options[option_index].name, "allow-unassigned") == 0) + { + + + if (update_arg((void *)&(args_info->allow_unassigned_flag), 0, &(args_info->allow_unassigned_given), + &(local_args_info.allow_unassigned_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "allow-unassigned", '-', + additional_error)) + goto failure; + + } + /* Toggle IDNA UseSTD3ASCIIRules flag. */ + else if (strcmp (long_options[option_index].name, "usestd3asciirules") == 0) + { + + + if (update_arg((void *)&(args_info->usestd3asciirules_flag), 0, &(args_info->usestd3asciirules_given), + &(local_args_info.usestd3asciirules_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "usestd3asciirules", '-', + additional_error)) + goto failure; + + } + /* Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode. */ + else if (strcmp (long_options[option_index].name, "no-tld") == 0) + { + + + if (update_arg((void *)&(args_info->no_tld_flag), 0, &(args_info->no_tld_given), + &(local_args_info.no_tld_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "no-tld", '-', + additional_error)) + goto failure; + + } + /* Print debugging information. */ + else if (strcmp (long_options[option_index].name, "debug") == 0) + { + + + if (update_arg((void *)&(args_info->debug_flag), 0, &(args_info->debug_given), + &(local_args_info.debug_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "debug", '-', + additional_error)) + goto failure; + + } + /* Silent operation. */ + else if (strcmp (long_options[option_index].name, "quiet") == 0) + { + + + if (update_arg((void *)&(args_info->quiet_flag), 0, &(args_info->quiet_given), + &(local_args_info.quiet_given), optarg, 0, 0, ARG_FLAG, + check_ambiguity, override, 1, 0, "quiet", '-', + additional_error)) + goto failure; + + } + + break; + case '?': /* Invalid option. */ + /* `getopt_long' already printed an error message. */ + goto failure; + + default: /* bug: option not considered. */ + fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : "")); + abort (); + } /* switch */ + } /* while */ + + + + + cmdline_parser_release (&local_args_info); + + if ( error ) + return (EXIT_FAILURE); + + if (optind < argc) + { + int i = 0 ; + int found_prog_name = 0; + /* whether program name, i.e., argv[0], is in the remaining args + (this may happen with some implementations of getopt, + but surely not with the one included by gengetopt) */ + + i = optind; + while (i < argc) + if (argv[i++] == argv[0]) { + found_prog_name = 1; + break; + } + i = 0; + + args_info->inputs_num = argc - optind - found_prog_name; + args_info->inputs = + (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ; + while (optind < argc) + if (argv[optind++] != argv[0]) + args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ; + } + + return 0; + +failure: + + cmdline_parser_release (&local_args_info); + return (EXIT_FAILURE); +} diff --git a/src/idn_cmd.h b/src/idn_cmd.h new file mode 100644 index 0000000..9e93bfb --- /dev/null +++ b/src/idn_cmd.h @@ -0,0 +1,212 @@ +/** @file idn_cmd.h + * @brief The header file for the command line option parser + * generated by GNU Gengetopt version 2.22.1 + * http://www.gnu.org/software/gengetopt. + * DO NOT modify this file, since it can be overwritten + * @author GNU Gengetopt by Lorenzo Bettini */ + +#ifndef IDN_CMD_H +#define IDN_CMD_H + +/* If we use autoconf. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> /* for FILE */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifndef CMDLINE_PARSER_PACKAGE +/** @brief the program name */ +#define CMDLINE_PARSER_PACKAGE "idn" +#endif + +#ifndef CMDLINE_PARSER_VERSION +/** @brief the program version */ +#define CMDLINE_PARSER_VERSION VERSION +#endif + +/** @brief Where the command line options are stored */ +struct gengetopt_args_info +{ + const char *help_help; /**< @brief Print help and exit help description. */ + const char *full_help_help; /**< @brief Print help, including hidden options, and exit help description. */ + const char *version_help; /**< @brief Print version and exit help description. */ + const char *stringprep_help; /**< @brief Prepare string according to nameprep profile help description. */ + const char *punycode_decode_help; /**< @brief Decode Punycode help description. */ + const char *punycode_encode_help; /**< @brief Encode Punycode help description. */ + const char *idna_to_ascii_help; /**< @brief Convert to ACE according to IDNA (default) help description. */ + const char *idna_to_unicode_help; /**< @brief Convert from ACE according to IDNA help description. */ + int allow_unassigned_flag; /**< @brief Toggle IDNA AllowUnassigned flag (default=off). */ + const char *allow_unassigned_help; /**< @brief Toggle IDNA AllowUnassigned flag help description. */ + int usestd3asciirules_flag; /**< @brief Toggle IDNA UseSTD3ASCIIRules flag (default=off). */ + const char *usestd3asciirules_help; /**< @brief Toggle IDNA UseSTD3ASCIIRules flag help description. */ + int tld_flag; /**< @brief Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode (default=on). */ + const char *tld_help; /**< @brief Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode help description. */ + int no_tld_flag; /**< @brief Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode (default=off). */ + const char *no_tld_help; /**< @brief Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode help description. */ + const char *nfkc_help; /**< @brief Normalize string according to Unicode v3.2 NFKC help description. */ + const char *hidden_nfkc_help; /**< @brief Hidden parameter for backwards compatibility help description. */ + char * profile_arg; /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'.. */ + char * profile_orig; /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'. original value given at command line. */ + const char *profile_help; /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'. help description. */ + int debug_flag; /**< @brief Print debugging information (default=off). */ + const char *debug_help; /**< @brief Print debugging information help description. */ + int quiet_flag; /**< @brief Silent operation (default=off). */ + const char *quiet_help; /**< @brief Silent operation help description. */ + + unsigned int help_given ; /**< @brief Whether help was given. */ + unsigned int full_help_given ; /**< @brief Whether full-help was given. */ + unsigned int version_given ; /**< @brief Whether version was given. */ + unsigned int stringprep_given ; /**< @brief Whether stringprep was given. */ + unsigned int punycode_decode_given ; /**< @brief Whether punycode-decode was given. */ + unsigned int punycode_encode_given ; /**< @brief Whether punycode-encode was given. */ + unsigned int idna_to_ascii_given ; /**< @brief Whether idna-to-ascii was given. */ + unsigned int idna_to_unicode_given ; /**< @brief Whether idna-to-unicode was given. */ + unsigned int allow_unassigned_given ; /**< @brief Whether allow-unassigned was given. */ + unsigned int usestd3asciirules_given ; /**< @brief Whether usestd3asciirules was given. */ + unsigned int tld_given ; /**< @brief Whether tld was given. */ + unsigned int no_tld_given ; /**< @brief Whether no-tld was given. */ + unsigned int nfkc_given ; /**< @brief Whether nfkc was given. */ + unsigned int hidden_nfkc_given ; /**< @brief Whether hidden-nfkc was given. */ + unsigned int profile_given ; /**< @brief Whether profile was given. */ + unsigned int debug_given ; /**< @brief Whether debug was given. */ + unsigned int quiet_given ; /**< @brief Whether quiet was given. */ + + char **inputs ; /**< @brief unamed options (options without names) */ + unsigned inputs_num ; /**< @brief unamed options number */ +} ; + +/** @brief The additional parameters to pass to parser functions */ +struct cmdline_parser_params +{ + int override; /**< @brief whether to override possibly already present options (default 0) */ + int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */ + int check_required; /**< @brief whether to check that all required options were provided (default 1) */ + int check_ambiguity; /**< @brief whether to check for options already specified in the option structure gengetopt_args_info (default 0) */ + int print_errors; /**< @brief whether getopt_long should print an error message for a bad option (default 1) */ +} ; + +/** @brief the purpose string of the program */ +extern const char *gengetopt_args_info_purpose; +/** @brief the usage string of the program */ +extern const char *gengetopt_args_info_usage; +/** @brief all the lines making the help output */ +extern const char *gengetopt_args_info_help[]; +/** @brief all the lines making the full help output (including hidden options) */ +extern const char *gengetopt_args_info_full_help[]; + +/** + * The command line parser + * @param argc the number of command line options + * @param argv the command line options + * @param args_info the structure where option information will be stored + * @return 0 if everything went fine, NON 0 if an error took place + */ +int cmdline_parser (int argc, char * const *argv, + struct gengetopt_args_info *args_info); + +/** + * The command line parser (version with additional parameters - deprecated) + * @param argc the number of command line options + * @param argv the command line options + * @param args_info the structure where option information will be stored + * @param override whether to override possibly already present options + * @param initialize whether to initialize the option structure my_args_info + * @param check_required whether to check that all required options were provided + * @return 0 if everything went fine, NON 0 if an error took place + * @deprecated use cmdline_parser_ext() instead + */ +int cmdline_parser2 (int argc, char * const *argv, + struct gengetopt_args_info *args_info, + int override, int initialize, int check_required); + +/** + * The command line parser (version with additional parameters) + * @param argc the number of command line options + * @param argv the command line options + * @param args_info the structure where option information will be stored + * @param params additional parameters for the parser + * @return 0 if everything went fine, NON 0 if an error took place + */ +int cmdline_parser_ext (int argc, char * const *argv, + struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params); + +/** + * Save the contents of the option struct into an already open FILE stream. + * @param outfile the stream where to dump options + * @param args_info the option struct to dump + * @return 0 if everything went fine, NON 0 if an error took place + */ +int cmdline_parser_dump(FILE *outfile, + struct gengetopt_args_info *args_info); + +/** + * Save the contents of the option struct into a (text) file. + * This file can be read by the config file parser (if generated by gengetopt) + * @param filename the file where to save + * @param args_info the option struct to save + * @return 0 if everything went fine, NON 0 if an error took place + */ +int cmdline_parser_file_save(const char *filename, + struct gengetopt_args_info *args_info); + +/** + * Print the help + */ +void cmdline_parser_print_help(void); +/** + * Print the full help (including hidden options) + */ +void cmdline_parser_print_full_help(void); +/** + * Print the version + */ +void cmdline_parser_print_version(void); + +/** + * Initializes all the fields a cmdline_parser_params structure + * to their default values + * @param params the structure to initialize + */ +void cmdline_parser_params_init(struct cmdline_parser_params *params); + +/** + * Allocates dynamically a cmdline_parser_params structure and initializes + * all its fields to their default values + * @return the created and initialized cmdline_parser_params structure + */ +struct cmdline_parser_params *cmdline_parser_params_create(void); + +/** + * Initializes the passed gengetopt_args_info structure's fields + * (also set default values for options that have a default) + * @param args_info the structure to initialize + */ +void cmdline_parser_init (struct gengetopt_args_info *args_info); +/** + * Deallocates the string fields of the gengetopt_args_info structure + * (but does not deallocate the structure itself) + * @param args_info the structure to deallocate + */ +void cmdline_parser_free (struct gengetopt_args_info *args_info); + +/** + * Checks that all the required options were specified + * @param args_info the structure to check + * @param prog_name the name of the program that will be used to print + * possible errors + * @return + */ +int cmdline_parser_required (struct gengetopt_args_info *args_info, + const char *prog_name); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* IDN_CMD_H */ diff --git a/src/idna.el b/src/idna.el new file mode 100644 index 0000000..96d1597 --- /dev/null +++ b/src/idna.el @@ -0,0 +1,192 @@ +;;; idna.el --- Internationalizing Domain Names in Applications. + +;; Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +;; Keywords: idna, idn, domain name, internationalization + +;; This file is part of GNU Libidn. + +;; 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 3 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, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; A simple wrapper around the command line "idn" utility in GNU +;; Libidn to make IDNA ToASCII and ToUnicode operations available in +;; Emacs. + +;; Example: +;; +;; (idna-to-ascii "räksmörgås.gnu.org") +;; => "xn--rksmrgs-5wao1o.gnu.org" +;; +;; (idna-to-ascii "www.gnu.org") +;; => "www.gnu.org" +;; +;; (idna-to-unicode "xn--rksmrgs-5wao1o.gnu.org") +;; => "räksmörgås.gnu.org" +;; +;; (idna-to-unicode "www.gnu.org") +;; => "www.gnu.org" + +;; Todo: Support AllowUnassigned and UseSTD3ASCIIRules somehow? + +;; This package is useless unless your emacs has at least partial +;; support for the UTF-8 coding system. + +;; Report bugs to bug-libidn@gnu.org. + +;;; Code: + +(defgroup idna nil + "Internationalizing Domain Names in Applications.") + +(defcustom idna-program "idn" + "Name of the GNU Libidn \"idn\" application." + :type 'string + :group 'idna) + +(defcustom idna-environment '("CHARSET=UTF-8") + "List of environment variable definitions prepended to `process-environment'." + :type '(repeat string) + :group 'idna) + +(defcustom idna-to-ascii-parameters '("--quiet" + "--idna-to-ascii" + "--usestd3asciirules") + "Parameters passed to `idna-program' to invoke IDNA ToASCII mode." + :type '(repeat string) + :group 'idna) + +(defcustom idna-to-unicode-parameters '("--quiet" + "--idna-to-unicode" + "--usestd3asciirules") + "Parameters passed `idna-program' to invoke IDNA ToUnicode mode." + :type '(repeat string) + :group 'idna) + +;; Internal process handling: + +(defvar idna-to-ascii-process nil + "Internal variable holding process for ToASCII.") +(defvar idna-to-ascii-response nil + "Internal variable holding response data received from ToASCII process.") + +(defun idna-to-ascii-response-clear () + (setq idna-to-ascii-response nil)) + +(defun idna-to-ascii-response () + (while (and (eq (process-status idna-to-ascii-process) 'run) + (null idna-to-ascii-response)) + (accept-process-output idna-to-ascii-process 1)) + idna-to-ascii-response) + +(defun idna-to-ascii-filter (process string) + (setq idna-to-ascii-response (concat idna-to-ascii-response string))) + +(defun idna-to-ascii-process () + (if (and idna-to-ascii-process + (eq (process-status idna-to-ascii-process) 'run)) + idna-to-ascii-process + (if idna-to-ascii-process + (condition-case () + (kill-process idna-to-ascii-process) + (error))) + (when (setq idna-to-ascii-process + (let ((process-environment (append idna-environment + process-environment))) + (apply 'start-process "idna" nil idna-program + idna-to-ascii-parameters))) + (set-process-filter idna-to-ascii-process 'idna-to-ascii-filter) + (set-process-coding-system idna-to-ascii-process 'utf-8 'utf-8) + (process-kill-without-query idna-to-ascii-process)) + idna-to-ascii-process)) + +(defvar idna-to-unicode-process nil + "Internal variable holding process for ToASCII.") +(defvar idna-to-unicode-response nil + "Internal variable holding response data received from ToASCII process.") + +(defun idna-to-unicode-response-clear () + (setq idna-to-unicode-response nil)) + +(defun idna-to-unicode-response () + (while (and (eq (process-status idna-to-unicode-process) 'run) + (null idna-to-unicode-response)) + (accept-process-output idna-to-unicode-process 1)) + idna-to-unicode-response) + +(defun idna-to-unicode-filter (process string) + (setq idna-to-unicode-response (concat idna-to-unicode-response string))) + +(defun idna-to-unicode-process () + (if (and idna-to-unicode-process + (eq (process-status idna-to-unicode-process) 'run)) + idna-to-unicode-process + (if idna-to-unicode-process + (condition-case () + (kill-process idna-to-unicode-process) + (error))) + (when (setq idna-to-unicode-process + (let ((process-environment (append idna-environment + process-environment))) + (apply 'start-process "idna" nil idna-program + idna-to-unicode-parameters))) + (set-process-filter idna-to-unicode-process 'idna-to-unicode-filter) + (set-process-coding-system idna-to-unicode-process 'utf-8 'utf-8) + (process-kill-without-query idna-to-unicode-process)) + idna-to-unicode-process)) + +;; IDNA Elisp API: + +(defun idna-to-ascii (str) + "Returns an ASCII Compatible Encoding (ACE) of STR. +It is computed by the IDNA ToASCII operation, after converting the +input to UTF-8." + (let ((proc (idna-to-ascii-process)) + string) + (if (null proc) + (error "Cannot start idn application (to-ascii)") + (idna-to-ascii-response-clear) + (process-send-string proc (concat str "\n")) + (setq string (idna-to-ascii-response)) + (if (and string (string= (substring string (1- (length string))) "\n")) + (substring string 0 (1- (length string))) + string)))) + +(defun idna-to-unicode (str) + "Returns a possibly multibyte string after decoding STR. +It is computed by the IDNA ToUnicode operation." + (let ((proc (idna-to-unicode-process)) + string) + (if (null proc) + (error "Cannot start idn application (to-unicode)") + (idna-to-unicode-response-clear) + (process-send-string proc (concat str "\n")) + (setq string (idna-to-unicode-response)) + (if (and string (string= (substring string (1- (length string))) "\n")) + (substring string 0 (1- (length string))) + string)))) + +(defun idna-shutdown () + "Kill the IDNA related processes." + (interactive) + (if (and idna-to-ascii-process + (eq (process-status idna-to-ascii-process) 'run)) + (kill-process idna-to-ascii-process)) + (if (and idna-to-unicode-process + (eq (process-status idna-to-unicode-process) 'run)) + (kill-process idna-to-unicode-process))) + +(provide 'idna) + +;;; idna.el ends here diff --git a/src/punycode.el b/src/punycode.el new file mode 100644 index 0000000..d68becc --- /dev/null +++ b/src/punycode.el @@ -0,0 +1,182 @@ +;;; punycode.el --- An ASCII compatible Unicode encoding format. + +;; Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Simon Josefsson +;; Keywords: punycode, idna, idn, unicode, encoding + +;; This file is part of GNU Libidn. + +;; 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 3 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, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; A simple wrapper around the command line "idn" utility in GNU +;; Libidn to make punycode operations available in Emacs. + +;; Example: +;; +;; (punycode-encode "räksmörgås") +;; => "rksmrgs-5wao1o" +;; +;; (punycode-encode "foo") +;; => "foo-" +;; +;; (punycode-decode "rksmrgs-5wao1o") +;; => "räksmörgås" +;; +;; (punycode-decode "foo-") +;; => "foo" + +;; This package is useless unless your emacs has at least partial +;; support for the UTF-8 coding system. + +;; Report bugs to bug-libidn@gnu.org. + +;;; Code: + +(defgroup punycode nil + "Punycode: An ASCII compatible Unicode encoding format.") + +(defcustom punycode-program "idn" + "Name of the GNU Libidn \"idn\" application." + :type 'string + :group 'punycode) + +(defcustom punycode-environment '("CHARSET=UTF-8") + "List of environment variable definitions prepended to `process-environment'." + :type '(repeat string) + :group 'punycode) + +(defcustom punycode-encode-parameters '("--quiet" "--punycode-encode") + "Parameters passed to `punycode-program' to invoke punycode encoding mode." + :type '(repeat string) + :group 'punycode) + +(defcustom punycode-decode-parameters '("--quiet" "--punycode-decode") + "Parameters passed to `punycode-program' to invoke punycode decoding mode." + :type '(repeat string) + :group 'punycode) + +;; Internal process handling: + +(defvar punycode-encode-process nil + "Internal variable holding process for punycode encoding.") +(defvar punycode-encode-response nil + "Internal variable holding response data received from punycode process.") + +(defun punycode-encode-response-clear () + (setq punycode-encode-response nil)) + +(defun punycode-encode-response () + (while (and (eq (process-status punycode-encode-process) 'run) + (null punycode-encode-response)) + (accept-process-output punycode-encode-process 1)) + punycode-encode-response) + +(defun punycode-encode-filter (process string) + (setq punycode-encode-response (concat punycode-encode-response string))) + +(defun punycode-encode-process () + (if (and punycode-encode-process + (eq (process-status punycode-encode-process) 'run)) + punycode-encode-process + (if punycode-encode-process + (condition-case () + (kill-process punycode-encode-process) + (error))) + (when (setq punycode-encode-process + (let ((process-environment (append punycode-environment + process-environment))) + (apply 'start-process "punycode" nil punycode-program + punycode-encode-parameters))) + (set-process-filter punycode-encode-process 'punycode-encode-filter) + (set-process-coding-system punycode-encode-process 'utf-8 'utf-8) + (process-kill-without-query punycode-encode-process)) + punycode-encode-process)) + +(defvar punycode-decode-process nil + "Internal variable holding process for punycode encoding.") +(defvar punycode-decode-response nil + "Internal variable holding response data received from punycode process.") + +(defun punycode-decode-response-clear () + (setq punycode-decode-response nil)) + +(defun punycode-decode-response () + (while (and (eq (process-status punycode-decode-process) 'run) + (null punycode-decode-response)) + (accept-process-output punycode-decode-process 1)) + punycode-decode-response) + +(defun punycode-decode-filter (process string) + (setq punycode-decode-response (concat punycode-decode-response string))) + +(defun punycode-decode-process () + (if (and punycode-decode-process + (eq (process-status punycode-decode-process) 'run)) + punycode-decode-process + (if punycode-decode-process + (condition-case () + (kill-process punycode-decode-process) + (error))) + (when (setq punycode-decode-process + (let ((process-environment (append punycode-environment + process-environment))) + (apply 'start-process "punycode" nil punycode-program + punycode-decode-parameters))) + (set-process-filter punycode-decode-process 'punycode-decode-filter) + (set-process-coding-system punycode-decode-process 'utf-8 'utf-8) + (process-kill-without-query punycode-decode-process)) + punycode-decode-process)) + +;; Punycode Elisp API: + +(defun punycode-encode (str) + "Returns a Punycode encoding of STR." + (let ((proc (punycode-encode-process)) + string) + (if (null proc) + (error "Cannot start idn application") + (punycode-encode-response-clear) + (process-send-string proc (concat str "\n")) + (setq string (punycode-encode-response)) + (if (and string (string= (substring string (1- (length string))) "\n")) + (substring string 0 (1- (length string))) + string)))) + +(defun punycode-decode (str) + "Returns a possibly multibyte string which is the punycode decoding of STR." + (let ((proc (punycode-decode-process)) + string) + (if (null proc) + (error "Cannot start idn application") + (punycode-decode-response-clear) + (process-send-string proc (concat str "\n")) + (setq string (punycode-decode-response)) + (if (and string (string= (substring string (1- (length string))) "\n")) + (substring string 0 (1- (length string))) + string)))) + +(defun punycode-shutdown () + "Kill the punycode related process." + (interactive) + (if (and punycode-decode-process + (eq (process-status punycode-decode-process) 'run)) + (kill-process punycode-decode-process)) + (if (and punycode-encode-process + (eq (process-status punycode-encode-process) 'run)) + (kill-process punycode-encode-process))) + +(provide 'punycode) + +;;; punycode.el ends here diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..345034f --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,38 @@ +## Process this file with automake to produce Makefile.in +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl +AM_LDFLAGS = -no-install + +LDADD = ../lib/libidn.la libutils.la + +noinst_LTLIBRARIES = libutils.la +libutils_la_SOURCES = utils.h utils.c + +ctests = tst_stringprep$(EXEEXT) tst_punycode$(EXEEXT) \ + tst_idna$(EXEEXT) tst_idna2$(EXEEXT) tst_nfkc$(EXEEXT) \ + tst_pr29$(EXEEXT) tst_strerror$(EXEEXT) tst_toutf8$(EXEEXT) +if TLD +ctests += tst_tld$(EXEEXT) +endif + +TESTS = $(ctests) +check_PROGRAMS = $(ctests) + +TESTS_ENVIRONMENT = $(VALGRIND) diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000..6c8e995 --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,976 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson +# +# This file is part of GNU Libidn. +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@TLD_TRUE@am__append_1 = tst_tld$(EXEEXT) +subdir = tests +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_h.m4 \ + $(top_srcdir)/lib/gl/m4/iconv_open.m4 \ + $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \ + $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \ + $(top_srcdir)/lib/gl/m4/locale-fr.m4 \ + $(top_srcdir)/lib/gl/m4/locale-tr.m4 \ + $(top_srcdir)/lib/gl/m4/multiarch.m4 \ + $(top_srcdir)/lib/gl/m4/stdbool.m4 \ + $(top_srcdir)/lib/gl/m4/stdint.m4 \ + $(top_srcdir)/lib/gl/m4/strverscmp.m4 \ + $(top_srcdir)/lib/gl/m4/wchar.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \ + $(top_srcdir)/gl/m4/csharpcomp.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/pmccabe2html.m4 \ + $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 \ + $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/update-header-version.m4 \ + $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libutils_la_LIBADD = +am_libutils_la_OBJECTS = utils.lo +libutils_la_OBJECTS = $(am_libutils_la_OBJECTS) +tst_idna_SOURCES = tst_idna.c +tst_idna_OBJECTS = tst_idna.$(OBJEXT) +tst_idna_LDADD = $(LDADD) +tst_idna_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_idna2_SOURCES = tst_idna2.c +tst_idna2_OBJECTS = tst_idna2.$(OBJEXT) +tst_idna2_LDADD = $(LDADD) +tst_idna2_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_nfkc_SOURCES = tst_nfkc.c +tst_nfkc_OBJECTS = tst_nfkc.$(OBJEXT) +tst_nfkc_LDADD = $(LDADD) +tst_nfkc_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_pr29_SOURCES = tst_pr29.c +tst_pr29_OBJECTS = tst_pr29.$(OBJEXT) +tst_pr29_LDADD = $(LDADD) +tst_pr29_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_punycode_SOURCES = tst_punycode.c +tst_punycode_OBJECTS = tst_punycode.$(OBJEXT) +tst_punycode_LDADD = $(LDADD) +tst_punycode_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_strerror_SOURCES = tst_strerror.c +tst_strerror_OBJECTS = tst_strerror.$(OBJEXT) +tst_strerror_LDADD = $(LDADD) +tst_strerror_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_stringprep_SOURCES = tst_stringprep.c +tst_stringprep_OBJECTS = tst_stringprep.$(OBJEXT) +tst_stringprep_LDADD = $(LDADD) +tst_stringprep_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_tld_SOURCES = tst_tld.c +tst_tld_OBJECTS = tst_tld.$(OBJEXT) +tst_tld_LDADD = $(LDADD) +tst_tld_DEPENDENCIES = ../lib/libidn.la libutils.la +tst_toutf8_SOURCES = tst_toutf8.c +tst_toutf8_OBJECTS = tst_toutf8.$(OBJEXT) +tst_toutf8_LDADD = $(LDADD) +tst_toutf8_DEPENDENCIES = ../lib/libidn.la libutils.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libutils_la_SOURCES) tst_idna.c tst_idna2.c tst_nfkc.c \ + tst_pr29.c tst_punycode.c tst_strerror.c tst_stringprep.c \ + tst_tld.c tst_toutf8.c +DIST_SOURCES = $(libutils_la_SOURCES) tst_idna.c tst_idna2.c \ + tst_nfkc.c tst_pr29.c tst_punycode.c tst_strerror.c \ + tst_stringprep.c tst_tld.c tst_toutf8.c +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DLL_VERSION = @DLL_VERSION@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCJ = @GCJ@ +GCJDEPMODE = @GCJDEPMODE@ +GCJFLAGS = @GCJFLAGS@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GJDOC = @GJDOC@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WRITE = @GNULIB_WRITE@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRNDUP = @HAVE_STRNDUP@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE__BOOL = @HAVE__BOOL@ +HELP2MAN = @HELP2MAN@ +HTML_DIR = @HTML_DIR@ +ICONV_H = @ICONV_H@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PMCCABE = @PMCCABE@ +POSUB = @POSUB@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_FCHDIR = @REPLACE_FCHDIR@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +USE_NLS = @USE_NLS@ +VALGRIND = @VALGRIND@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_H = @WCHAR_H@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WERROR_CFLAGS = @WERROR_CFLAGS@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WSTACK_CFLAGS = @WSTACK_CFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_GCJ = @ac_ct_GCJ@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +lgl_LIBOBJS = @lgl_LIBOBJS@ +lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ +lgltests_LIBOBJS = @lgltests_LIBOBJS@ +lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl +AM_LDFLAGS = -no-install +LDADD = ../lib/libidn.la libutils.la +noinst_LTLIBRARIES = libutils.la +libutils_la_SOURCES = utils.h utils.c +ctests = tst_stringprep$(EXEEXT) tst_punycode$(EXEEXT) \ + tst_idna$(EXEEXT) tst_idna2$(EXEEXT) tst_nfkc$(EXEEXT) \ + tst_pr29$(EXEEXT) tst_strerror$(EXEEXT) tst_toutf8$(EXEEXT) \ + $(am__append_1) +TESTS = $(ctests) +check_PROGRAMS = $(ctests) +TESTS_ENVIRONMENT = $(VALGRIND) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) + $(LINK) $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +tst_idna$(EXEEXT): $(tst_idna_OBJECTS) $(tst_idna_DEPENDENCIES) + @rm -f tst_idna$(EXEEXT) + $(LINK) $(tst_idna_OBJECTS) $(tst_idna_LDADD) $(LIBS) +tst_idna2$(EXEEXT): $(tst_idna2_OBJECTS) $(tst_idna2_DEPENDENCIES) + @rm -f tst_idna2$(EXEEXT) + $(LINK) $(tst_idna2_OBJECTS) $(tst_idna2_LDADD) $(LIBS) +tst_nfkc$(EXEEXT): $(tst_nfkc_OBJECTS) $(tst_nfkc_DEPENDENCIES) + @rm -f tst_nfkc$(EXEEXT) + $(LINK) $(tst_nfkc_OBJECTS) $(tst_nfkc_LDADD) $(LIBS) +tst_pr29$(EXEEXT): $(tst_pr29_OBJECTS) $(tst_pr29_DEPENDENCIES) + @rm -f tst_pr29$(EXEEXT) + $(LINK) $(tst_pr29_OBJECTS) $(tst_pr29_LDADD) $(LIBS) +tst_punycode$(EXEEXT): $(tst_punycode_OBJECTS) $(tst_punycode_DEPENDENCIES) + @rm -f tst_punycode$(EXEEXT) + $(LINK) $(tst_punycode_OBJECTS) $(tst_punycode_LDADD) $(LIBS) +tst_strerror$(EXEEXT): $(tst_strerror_OBJECTS) $(tst_strerror_DEPENDENCIES) + @rm -f tst_strerror$(EXEEXT) + $(LINK) $(tst_strerror_OBJECTS) $(tst_strerror_LDADD) $(LIBS) +tst_stringprep$(EXEEXT): $(tst_stringprep_OBJECTS) $(tst_stringprep_DEPENDENCIES) + @rm -f tst_stringprep$(EXEEXT) + $(LINK) $(tst_stringprep_OBJECTS) $(tst_stringprep_LDADD) $(LIBS) +tst_tld$(EXEEXT): $(tst_tld_OBJECTS) $(tst_tld_DEPENDENCIES) + @rm -f tst_tld$(EXEEXT) + $(LINK) $(tst_tld_OBJECTS) $(tst_tld_LDADD) $(LIBS) +tst_toutf8$(EXEEXT): $(tst_toutf8_OBJECTS) $(tst_toutf8_DEPENDENCIES) + @rm -f tst_toutf8$(EXEEXT) + $(LINK) $(tst_toutf8_OBJECTS) $(tst_toutf8_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_idna.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_idna2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nfkc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_pr29.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_punycode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_strerror.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_stringprep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_tld.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_toutf8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tests/tst_idna.c b/tests/tst_idna.c new file mode 100644 index 0000000..a4c43b2 --- /dev/null +++ b/tests/tst_idna.c @@ -0,0 +1,326 @@ +/* tst_idna.c --- Self tests for idna_to_ascii(). + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <stringprep.h> +#include <idna.h> +#include <idn-free.h> + +#include "utils.h" + +struct idna +{ + const char *name; + size_t inlen; + uint32_t in[100]; + const char *out; + int flags; + int toasciirc; + int tounicoderc; +}; + +static const struct idna idna[] = { + { + "Arabic (Egyptian)", 17, + { + 0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, + 0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, + 0x061F}, + IDNA_ACE_PREFIX "egbpdaj6bu4bxfgehfvwxn", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Chinese (simplified)", 9, + { + 0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587}, + IDNA_ACE_PREFIX "ihqwcrb4cv8a8dqg056pqjye", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Chinese (traditional)", 9, + { + 0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587}, + IDNA_ACE_PREFIX "ihqwctvzc91f659drss3x8bo0yb", 0, IDNA_SUCCESS, + IDNA_SUCCESS}, + { + "Czech: Pro[CCARON]prost[ECARON]nemluv[IACUTE][CCARON]esky", 22, + { + 0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, + 0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, + 0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079}, + IDNA_ACE_PREFIX "Proprostnemluvesky-uyb24dma41a", 0, IDNA_SUCCESS, + IDNA_SUCCESS}, + { + "Hebrew", 22, + { + 0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, + 0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, + 0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA}, + IDNA_ACE_PREFIX "4dbcagdahymbxekheh6e0a7fei0b", 0, IDNA_SUCCESS, + IDNA_SUCCESS}, + { + "Hindi (Devanagari)", 30, + { + 0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, + 0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, + 0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, + 0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902}, + IDNA_ACE_PREFIX "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", 0, + IDNA_SUCCESS}, + { + "Japanese (kanji and hiragana)", 18, + { + 0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, + 0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, + 0x306E, 0x304B}, + IDNA_ACE_PREFIX "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", 0, IDNA_SUCCESS}, + { + "Korean (Hangul syllables)", 24, + { + 0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, + 0xC774, 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, + 0xB2E4, 0xBA74, 0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C}, + IDNA_ACE_PREFIX "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt" + "30a5jpsd879ccm6fea98c", 0, IDNA_PUNYCODE_ERROR, IDNA_PUNYCODE_ERROR}, + /* too long output */ + { + "Russian (Cyrillic)", 28, + { + 0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, + 0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, + 0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, + 0x0441, 0x0441, 0x043A, 0x0438}, + IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0, + IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Spanish: Porqu[EACUTE]nopuedensimplementehablarenEspa[NTILDE]ol", 40, + { + 0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, + 0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, + 0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, + 0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065, + 0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C}, + IDNA_ACE_PREFIX "PorqunopuedensimplementehablarenEspaol-fmd56a", 0, + IDNA_SUCCESS}, + { + "Vietnamese", 31, + { + 0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, + 0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, + 0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, + 0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074}, + IDNA_ACE_PREFIX "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", 0, + IDNA_SUCCESS}, + { + "Japanese 3[NEN]B[GUMI][KINPACHI][SENSEI]", 8, + { + 0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F}, + IDNA_ACE_PREFIX "3B-ww4c5e180e575a65lsy2b", 0, IDNA_SUCCESS, + IDNA_SUCCESS}, + { + "Japanese [AMURO][NAMIE]-with-SUPER-MONKEYS", 24, + { + 0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, + 0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, + 0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053}, + IDNA_ACE_PREFIX "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", 0, + IDNA_SUCCESS}, + { + "Japanese Hello-Another-Way-[SOREZORE][NO][BASHO]", 25, + { + 0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, + 0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, + 0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, + 0x6240}, + IDNA_ACE_PREFIX "Hello-Another-Way--fc4qua05auwb3674vfr0b", 0, + IDNA_SUCCESS}, + { + "Japanese [HITOTSU][YANE][NO][SHITA]2", 8, + { + 0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032}, + IDNA_ACE_PREFIX "2-u9tlzr9756bt3uc0v", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Japanese Maji[DE]Koi[SURU]5[BYOU][MAE]", 13, + { + 0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, + 0x3059, 0x308B, 0x0035, 0x79D2, 0x524D}, + IDNA_ACE_PREFIX "MajiKoi5-783gue6qz075azm5e", 0, IDNA_SUCCESS, + IDNA_SUCCESS}, + { + "Japanese [PAFII]de[RUNBA]", 9, + { + 0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0}, + IDNA_ACE_PREFIX "de-jg4avhby1noc0d", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Japanese [SONO][SUPIIDO][DE]", 7, + { + 0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067}, + IDNA_ACE_PREFIX "d9juau41awczczp", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Greek", 8, + { + 0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac}, + IDNA_ACE_PREFIX "hxargifdar", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Maltese (Malti)", 10, + { + 0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127, + 0x0127, 0x0061}, + IDNA_ACE_PREFIX "bonusaa-5bb1da", 0, IDNA_SUCCESS, IDNA_SUCCESS}, + { + "Russian (Cyrillic)", 28, + { + 0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435, + 0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432, + 0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443, + 0x0441, 0x0441, 0x043a, 0x0438}, + IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0, + IDNA_SUCCESS, IDNA_SUCCESS}, +#if 0 + { + "(S) -> $1.00 <-", 11, + { + 0x002D, 0x003E, 0x0020, 0x0024, 0x0031, 0x002E, 0x0030, 0x0030, + 0x0020, 0x003C, 0x002D}, + IDNA_ACE_PREFIX "-> $1.00 <--", 0, IDNA_SUCCESS, IDNA_SUCCESS}, +#endif + { /* XXX depends on IDNA_ACE_PREFIX */ + "ToASCII() with ACE prefix", 4 + 3, + { + 'x', 'n', '-', '-', 'f', 'o', 0x3067}, + IDNA_ACE_PREFIX "too long too long too long too long too long too " + "long too long too long too long too long ", 0, + IDNA_CONTAINS_ACE_PREFIX, IDNA_PUNYCODE_ERROR} +}; + +void +doit (void) +{ + char label[100]; + uint32_t *ucs4label = NULL; + uint32_t tmp[100]; + size_t len, len2, i; + int rc; + + for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++) + { + if (debug) + printf ("IDNA entry %d: %s\n", i, idna[i].name); + + if (debug) + { + printf ("in:\n"); + ucs4print (idna[i].in, idna[i].inlen); + } + + rc = idna_to_ascii_4i (idna[i].in, idna[i].inlen, label, idna[i].flags); + if (rc != idna[i].toasciirc) + { + fail ("IDNA entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + if (debug && rc == IDNA_SUCCESS) + { + printf ("computed out: %s\n", label); + printf ("expected out: %s\n", idna[i].out); + } + else if (debug) + printf ("returned %d expected %d\n", rc, idna[i].toasciirc); + + if (rc == IDNA_SUCCESS) + { + if (strlen (idna[i].out) != strlen (label) || + strcasecmp (idna[i].out, label) != 0) + { + fail ("IDNA entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n"); + } + else if (debug) + printf ("OK\n"); + + if (ucs4label) + idn_free (ucs4label); + + ucs4label = stringprep_utf8_to_ucs4 (idna[i].out, -1, &len); + + if (debug) + { + printf ("in: %s (%d==%d)\n", idna[i].out, strlen (idna[i].out), + len); + ucs4print (ucs4label, len); + } + + len2 = sizeof (tmp) / sizeof (tmp[0]); + rc = idna_to_unicode_44i (ucs4label, len, tmp, &len2, idna[i].flags); + if (debug) + { + printf ("expected out (%d):\n", + rc == IDNA_SUCCESS ? idna[i].inlen : len); + if (rc == IDNA_SUCCESS) + ucs4print (idna[i].in, idna[i].inlen); + else + ucs4print (ucs4label, len); + + printf ("computed out (%d):\n", len2); + ucs4print (tmp, len2); + } + + if (rc != idna[i].tounicoderc) + { + fail ("IDNA entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + if ((rc == IDNA_SUCCESS && (len2 != idna[i].inlen || + memcmp (idna[i].in, tmp, len2) != 0)) || + (rc != IDNA_SUCCESS && (len2 != len || + memcmp (ucs4label, tmp, len) != 0))) + { + if (debug) + { + if (rc == IDNA_SUCCESS) + printf ("len=%d len2=%d\n", len2, idna[i].inlen); + else + printf ("len=%d len2=%d\n", len, len2); + } + fail ("IDNA entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n\n"); + } + + if (ucs4label) + idn_free (ucs4label); +} diff --git a/tests/tst_idna2.c b/tests/tst_idna2.c new file mode 100644 index 0000000..fc254d9 --- /dev/null +++ b/tests/tst_idna2.c @@ -0,0 +1,522 @@ +/* tst_idna2.c --- Self tests for idna_to_ascii_8z(). + * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <idna.h> + +#include "utils.h" + +struct idna +{ + const char *in; + const char *out; +}; + +static const struct idna idna[] = { + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xad\x64\x6e", "example.xn--dn-mja" + /* 1-1-1 Has an IDN in just the TLD */ + }, + {"\xc3\xab\x78\x2e\xc3\xad\x64\x6e", "xn--x-ega.xn--dn-mja" + /* 1-1-2 Has an IDN in the TLD and SLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xa5\xc3\xbe\xc3\xa7", + "example.xn--5cae2e" + /* 1-2-1 Latin-1 TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc4\x83\x62\xc4\x89", + "example.xn--b-rhat" + /* 1-2-2 Latin Extended A TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc8\xa7\xc6\x80\xc6\x88", + "example.xn--lhaq98b" + /* 1-2-3 Latin Extended B TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xb8\x81\xe1\xb8\x83\xe1\xb8\x89", + "example.xn--2fges" + /* 1-2-4 Latin Extended Additional TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe4\xb8\xbf\xe4\xba\xba\xe5\xb0\xb8", + "example.xn--xiqplj17a" + /* 1-3-1 Han TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe3\x81\x8b\xe3\x81\x8c\xe3\x81\x8d", + "example.xn--u8jcd" + /* 1-3-2 Hiragana TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad", + "example.xn--lckcd" + /* 1-3-3 Katakana TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x84\x80\xe1\x85\xa1\xe1\x86\xa8", + "example.xn--p39a" + /* 1-3-4 Hangul Jamo TLD */ + /* Don't resolve as example.xn--ypd8qrh */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xea\xb1\xa9\xeb\x93\x86\xec\x80\xba", + "example.xn--o69aq2nl0j" + /* 1-3-5 Hangul TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xea\x80\x8a\xea\x80\xa0\xea\x8a\xb8", + "example.xn--6l7arby7j" + /* 1-3-6 Yi TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xce\xb1\xce\xb2\xce\xb3", + "example.xn--mxacd" + /* 1-3-7 Greek TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xbc\x82\xe1\xbc\xa6\xe1\xbd\x95", + "example.xn--fng7dpg" + /* 1-3-8 Greek Extended TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd0\xb0\xd0\xb1\xd0\xb2", + "example.xn--80acd" + /* 1-3-9 Cyrillic TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd5\xa1\xd5\xa2\xd5\xa3", + "example.xn--y9acd" + /* 1-3-10 Armeian TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x83\x90\xe1\x83\x91\xe1\x83\x92", + "example.xn--lodcd" + /* 1-3-11 Georgian TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe2\x88\xa1\xe2\x86\xba\xe2\x8a\x82", + "example.xn--b7gxomk" + /* 1-4-1 Symbols TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa4\x95\xe0\xa4\x96\xe0\xa4\x97", + "example.xn--11bcd" + /* 1-5-1 Devanagari TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa6\x95\xe0\xa6\x96\xe0\xa6\x97", + "example.xn--p5bcd" + /* 1-5-2 Bengali TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa8\x95\xe0\xa8\x96\xe0\xa8\x97", + "example.xn--d9bcd" + /* 1-5-3 Gurmukhi TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xaa\x95\xe0\xaa\x96\xe0\xaa\x97", + "example.xn--0dccd" + /* 1-5-4 Gujarati TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xac\x95\xe0\xac\x96\xe0\xac\x97", + "example.xn--ohccd" + /* 1-5-5 Oriya TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xae\x95\xe0\xae\x99\xe0\xae\x9a", + "example.xn--clcid" + /* 1-5-6 Tamil TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb0\x95\xe0\xb0\x96\xe0\xb0\x97", + "example.xn--zoccd" + /* 1-5-7 Telugu TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb2\x95\xe0\xb2\x96\xe0\xb2\x97", + "example.xn--nsccd" + /* 1-5-8 Kannada TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb4\x95\xe0\xb4\x96\xe0\xb4\x97", + "example.xn--bwccd" + /* 1-5-9 Malayalam TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb6\x9a\xe0\xb6\x9b\xe0\xb6\x9c", + "example.xn--3zccd" + /* 1-5-10 Sinhala TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb8\x81\xe0\xb8\x82\xe0\xb8\x83", + "example.xn--12ccd" + /* 1-5-11 Thai TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xba\x81\xe0\xba\x82\xe0\xba\x84", + "example.xn--p6ccg" + /* 1-5-12 Lao TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xbd\x80\xe0\xbd\x81\xe0\xbd\x82", + "example.xn--5cdcd" + /* 1-5-13 Tibetan TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x80\x80\xe1\x80\x81\xe1\x80\x82", + "example.xn--nidcd" + /* 1-5-14 Myanmar TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x9e\x80\xe1\x9e\x81\xe1\x9e\x82", + "example.xn--i2ecd" + /* 1-5-15 Khmer TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xa0\xa0\xe1\xa0\xa1\xe1\xa0\xa2", + "example.xn--26ecd" + /* 1-5-16 Mongolian TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd8\xa7\xd8\xa8\xd8\xa9", + "example.xn--mgbcd" + /* 1-6-1 Arabic TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd7\x90\xd7\x91\xd7\x92", + "example.xn--4dbcd" + /* 1-6-2 Hebrew TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xdc\x90\xdc\x91\xdc\x92", + "example.xn--9mbcd" + /* 1-6-3 Syriac TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\x61\x62\x63\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad", + "example.xn--abc-mj4bfg" + /* 1-7-1 ASCII and non-Latin TLD */ + }, + {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xa5\xc3\xbe\xc3\xa7\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad", + "example.xn--5cae2e328wfag" + /* 1-7-2 Latin (non-ASCII) and non-Latin TLD */ + }, + {"\xc3\xad\x21\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-1-1 Includes ! before Nameprep */ + /* Don't resolve as xn--!dn-qma.example */ + }, + {"\xc3\xad\x24\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-1-2 Includes $ before Nameprep */ + /* Don't resolve as xn--$dn-qma.example */ + }, + {"\xc3\xad\x2b\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-1-3 Includes + before Nameprep */ + /* Don't resolve as xn--+dn-qma.example */ + }, + {"\x2d\xc3\xad\x31\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-2-1 Leading hyphen before Nameprep */ + /* Don't resolve as xn---1dn-vpa.example */ + }, + {"\xc3\xad\x31\x64\x6e\x2d\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-2-2 Trailing hyphen before Nameprep */ + /* Don't resolve as xn--1dn--upa.example */ + }, + {"\xc3\xad\xef\xbc\x8b\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-3-1 Gets a + after Nameprep */ + /* Don't resolve as xn--dn-mja0331x.example */ + }, + {"\xc3\xad\xe2\x81\xbc\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-3-2 Gets a = after Nameprep */ + /* Don't resolve as xn--dn-mja0343a.example */ + }, + {"\xef\xb9\xa3\xc3\xad\x32\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-4-1 Leading hyphen after Nameprep */ + /* Don't resolve as xn--2dn-qma32863a.example */ + /* Don't resolve as xn---2dn-vpa.example */ + }, + {"\xc3\xad\x32\x64\x6e\xef\xbc\x8d\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-3-4-2 Trailing hyphen after Nameprep */ + /* Don't resolve as xn--2dn-qma79363a.example */ + /* Don't resolve as xn--2dn--upa.example */ + }, + {"\xc2\xb9\x31\x2e\x65\x78\x61\x6d\x70\x6c\x65", "11.example" + /* 2-4-1 All-ASCII check, Latin */ + }, + {"\xe2\x85\xa5\x76\x69\x2e\x65\x78\x61\x6d\x70\x6c\x65", "vivi.example" + /* 2-4-2 All-ASCII check, symbol */ + }, + {"\xc3\x9f\x73\x73\x2e\x65\x78\x61\x6d\x70\x6c\x65", "ssss.example" + /* 2-4-3 All-ASCII check, sharp S */ + }, + {"\x78\x6e\x2d\x2d\xc3\xaf\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 2-5-1 ACE prefix before Nameprep, body */ + /* Don't resolve as xn--xn--dn-sja.example */ + /* Don't resolve as xn--dn-sja.example */ + }, + {"\xe2\x85\xb9\x6e\x2d\x2d\xc3\xa4\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "" + /* 2-5-2 ACE prefix before Nameprep, prefix */ + /* Don't resolve as xn--xn--dn-uia.example */ + /* Don't resolve as xn--dn-uia.example */ + }, + {"", "" + /* 2-8-1 Zero-length label after Nameprep */ + /* Don't resolve as xn--kba.example */ + /* Don't resolve as xn--.example */ + }, + {"\x33\x30\x30\x32\x2d\x74\x65\x73\x74\xe3\x80\x82\xc3\xad\x64\x6e", + "3002-test.xn--dn-mja" + /* 2-9-1 U+3002 acts as a label separator */ + /* Don't resolve as xn--3002-testdn-wcb2087m.example */ + }, + {"\x66\x66\x30\x65\x2d\x74\x65\x73\x74\xef\xbc\x8e\xc3\xad\x64\x6e", + "ff0e-test.xn--dn-mja" + /* 2-9-2 U+FF0E acts as a label separator */ + /* Don't resolve as xn--ff0e-testdn-wcb45865f.example */ + }, + {"\x66\x66\x36\x31\x2d\x74\x65\x73\x74\xef\xbd\xa1\xc3\xad\x64\x6e", + "ff61-test.xn--dn-mja" + /* 2-9-3 U+FF61 acts as a label separator */ + /* Don't resolve as xn--ff61-testdn-wcb33975f.example */ + }, + {"\x30\x30\x61\x64\x6f\x75\x74\xc2\xad\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--00adoutdn-m5a.example" + /* 4-1-1-1 00adout<00AD><00ED>dn.example -> 00adout<00ED>dn.example */ + /* Don't resolve as xn--00adoutdn-cna81e.example */ + }, + {"\x32\x30\x30\x64\x6f\x75\x74\xe2\x80\x8d\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--200doutdn-m5a.example" + /* 4-1-1-2 200dout<200D><00ED>dn.example -> 200dout<00ED>dn.example */ + /* Don't resolve as xn--200doutdn-m5a1678f.example */ + }, + {"\x73\x69\x6d\x70\x6c\x65\x63\x61\x70\x44\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--simplecapddn-1fb.example" + /* 4-1-2-1 simplecap<0044><00ED>dn.example -> simplecap<0064><00ED>dn.example */ + }, + {"\x6c\x61\x74\x69\x6e\x74\x6f\x67\x72\x65\x65\x6b\xc2\xb5\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--latintogreekdn-cmb716i.example" + /* 4-1-2-2 latintogreek<00B5><00ED>dn.example -> latintogreek<03BC><00ED>dn.example */ + /* Don't resolve as xn--latintogreekdn-cxa01g.example */ + }, + {"\x6c\x61\x74\x69\x6e\x65\x78\x74\xc3\x87\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--latinextdn-v6a6e.example" + /* 4-1-2-3 latinext<00C7><00ED>dn.example -> latinext<00E7><00ED>dn.example */ + /* Don't resolve as xn--latinextdn-twa07b.example */ + }, + {"\x73\x68\x61\x72\x70\x73\xc3\x9f\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--sharpsssdn-r8a.example" + /* 4-1-2-4 sharps<00DF><00ED>dn.example -> sharpsss<00ED>dn.example */ + /* Don't resolve as xn--sharpsdn-vya4l.example */ + }, + {"\x74\x75\x72\x6b\x69\x73\x68\x69\xc4\xb0\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--turkishiidn-wcb701e.example" + /* 4-1-2-5 turkishi<0130><00ED>dn.example -> turkishi<0069><0307><00ED>dn.example */ + /* Don't resolve as xn--turkishidn-r8a71f.example */ + }, + {"\x65\x78\x70\x74\x77\x6f\xc5\x89\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--exptwondn-m5a502c.example" + /* 4-1-2-6 exptwo<0149><00ED>dn.example -> exptwo<02BC><006E><00ED>dn.example */ + /* Don't resolve as xn--exptwodn-h2a33g.example */ + }, + {"\x61\x64\x64\x66\x6f\x6c\x64\xcf\x92\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--addfolddn-m5a121f.example" + /* 4-1-2-7 addfold<03D2><00ED>dn.example -> addfold<03C5><00ED>dn.example */ + /* Don't resolve as xn--addfolddn-m5a462f.example */ + }, + {"\x65\x78\x70\x74\x68\x72\x65\x65\xe1\xbd\x92\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--expthreedn-r8a5844g.example" + /* 4-1-2-8 expthree<1F52><00ED>dn.example -> expthree<03C5><0313><0300><00ED>dn.example */ + }, + {"\x6e\x6f\x6e\x62\x6d\x70\xf0\x90\x90\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--nonbmpdn-h2a34747d.example" + /* 4-1-2-9 nonbmp<10400><00ED>dn.example -> nonbmp<10428><00ED>dn.example */ + /* Don't resolve as xn--nonbmpdn-h2a37046d.example */ + }, + {"\x6e\x6f\x6e\x62\x6d\x70\x74\x6f\x61\x73\x63\x69\x69\xf0\x9d\x90\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--nonbmptoasciiadn-msb.example" + /* 4-1-2-10 nonbmptoascii<1D400><00ED>dn.example -> nonbmptoasciia<00ED>dn.example */ + /* Don't resolve as xn--nonbmptoasciidn-hpb54112i.example */ + }, + {"\x72\x65\x67\x63\x6f\x6d\x62\x65\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--regcombdn-h4a8b.example" + /* 4-2-1-1 regcomb<0065><0301><00ED>dn.example -> regcomb<00E9><00ED>dn.example */ + /* Don't resolve as xn--regcombedn-r8a794d.example */ + }, + {"\x63\x6f\x6d\x62\x61\x6e\x64\x63\x61\x73\x65\x45\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--combandcasedn-lhb4d.example" + /* 4-2-1-2 combandcase<0045><0301><00ED>dn.example -> combandcase<00E9><00ED>dn.example */ + /* Don't resolve as xn--combandcaseedn-cmb526f.example */ + }, + {"\x61\x64\x6a\x63\x6f\x6d\x62\xc2\xba\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--adjcombdn-m5a9d.example" + /* 4-2-1-3 adjcomb<00BA><0301><00ED>dn.example -> adjcomb<00F3><00ED>dn.example */ + /* Don't resolve as xn--adjcombdn-1qa57cp3r.example */ + }, + {"\x65\x78\x74\x63\x6f\x6d\x62\x6f\x63\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--extcombodn-r8a52a.example" + /* 4-2-1-4 extcombo<0063><0301><00ED>dn.example -> extcombo<0107><00ED>dn.example */ + /* Don't resolve as xn--extcombocdn-wcb920e.example */ + }, + {"\x64\x6f\x75\x62\x6c\x65\x64\x69\x61\x63\x31\x75\xcc\x88\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--doublediac1dn-6ib836a.example" + /* 4-2-1-5 doublediac1<0075><0308><0301><00ED>dn.example -> doublediac2<01D8><00ED>dn.example */ + /* Don't resolve as xn--doublediac1udn-cmb526fnd.example */ + }, + {"\x64\x6f\x75\x62\x6c\x65\x64\x69\x61\x63\x32\x75\xcc\x81\xcc\x88\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--doublediac2dn-6ib8qs73a.example" + /* 4-2-1-6 doublediac2<0075><0301><0308><00ED>dn.example -> doublediac2<01D8><00ED>dn.example */ + /* Don't resolve as xn--doublediac2udn-cmb526fod.example */ + }, + {"\x6e\x65\x77\x6e\x6f\x72\x6d\xf0\xaf\xa1\xb4\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--newnormdn-m5a7856x.example" + /* 4-2-2-1 newnorm<2F874><00ED>dn.example -> newnorm<5F33><00ED>dn.example should not become <5F53> */ + /* Don't resolve as xn--newnormdn-m5a9396x.example */ + /* Don't resolve as xn--newnormdn-m5a9968x.example */ + }, + {"\xe2\x80\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-1 Spacing */ + /* Don't resolve as xn--dn-mja3392a.example */ + }, + {"\xdb\x9d\xc3\xad\x64\x6e\x2d\x32\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-2 Control */ + /* Don't resolve as xn--dn-2-upa332g.example */ + }, + {"\xee\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-3 Private use */ + /* Don't resolve as xn--dn-mja1659t.example */ + }, + {"\xf3\xb0\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-4 Private use, non-BMP */ + /* Don't resolve as xn--dn-mja7922x.example */ + }, + {"\xef\xb7\x9d\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-5 Non-character */ + /* Don't resolve as xn--dn-mja1210x.example */ + }, + {"\xf0\x9f\xbf\xbe\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-6 Non-character, non-BMP */ + /* Don't resolve as xn--dn-mja7922x.example */ + }, + {"\xef\xbf\xbd\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-7 Surrogate points */ + /* Don't resolve as xn--dn-mja7922x.example */ + }, + {"\xef\xbf\xba\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-8 Inappropriate for plain */ + /* Don't resolve as xn--dn-mja5822x.example */ + }, + {"\xe2\xbf\xb5\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-9 Inappropriate for canonical */ + /* Don't resolve as xn--dn-mja3729b.example */ + }, + {"\xe2\x81\xaa\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-10 Change display simple */ + /* Don't resolve as xn--dn-mja7533a.example */ + }, + {"\xe2\x80\x8f\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-3-11 Change display RTL */ + /* Don't resolve as xn--dn-mja3992a.example */ + }, + {"\xf3\xa0\x80\x81\xf3\xa0\x81\x85\xf3\xa0\x81\x8e\x68\x69\x69\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "" + /* 4-3-12 Language tags */ + /* Don't resolve as xn--hiidn-km43aaa.example */ + }, + {"\xd8\xa8\x6f\xd8\xb8\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-1 Arabic RandALCat-LCat-RandALCat */ + /* Don't resolve as xn--o-0mc3c.example */ + }, + {"\xd8\xa8\xd8\xb8\x6f\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-2 Arabic RandALCat-RandALCat-other */ + /* Don't resolve as xn--o-0mc2c.example */ + }, + {"\x6f\xd8\xa8\xd8\xb8\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-3 Arabic other-RandALCat-RandALCat */ + /* Don't resolve as xn--o-1mc2c.example */ + }, + {"\xd7\x91\x6f\xd7\xa1\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-4 Hebrew RandALCat-LCat-RandALCat */ + /* Don't resolve as xn--o-1hc3c.example */ + }, + {"\xd7\x91\xd7\xa1\x6f\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-5 Hebrew RandALCat-RandALCat-other */ + /* Don't resolve as xn--o-1hc2c.example */ + }, + {"\x6f\xd7\x91\xd7\xa1\x2e\x65\x78\x61\x6d\x70\x6c\x65", "" + /* 4-4-6 Hebrew other-RandALCat-RandALCat */ + /* Don't resolve as xn--o-2hc2c.example */ + }, + {"\xc8\xb7\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--dn-mja33k.example" + /* 5-1-1 Unassigned in BMP; zone editors should reject */ + }, + {"\xf0\x90\x88\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--dn-mja7734x.example" + /* 5-1-2 Unassinged outside BMP; zone editors should reject */ + /* Don't resolve as xn--dn-mja7922x.example */ + }, + {"\xc8\xb4\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--dn-mja12k.example" + /* 5-2-1 Newly assigned in BMP; zone editors should reject */ + }, + {"\xf0\x90\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", + "xn--dn-mja9232x.example" + /* 5-2-2 Newly assigned outside of BMP; zone editors should reject */ + /* Don't resolve as xn--dn-mja7922x.example */ + } +}; + +void +doit (void) +{ + size_t i; + char *out; + int rc; + + for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++) + { + if (debug) + printf ("IDNA2 entry %d\n", i); + + if (debug) + { + uint32_t *p; + size_t len; + printf ("in: %s\n", idna[i].in); + hexprint (idna[i].in, strlen (idna[i].in)); + escapeprint (idna[i].in, strlen (idna[i].in)); + p = stringprep_utf8_to_ucs4 (idna[i].in, -1, &len); + ucs4print (p, len); + free (p); + } + + rc = idna_to_ascii_8z (idna[i].in, &out, + IDNA_ALLOW_UNASSIGNED | + IDNA_USE_STD3_ASCII_RULES); + if (rc != IDNA_SUCCESS && strlen (idna[i].out) > 0) + { + fail ("IDNA2 entry %d failed: %d\n", i, rc); + continue; + } + + if (debug && rc == IDNA_SUCCESS) + { + printf ("computed out: %s\n", out); + printf ("expected out: %s\n", idna[i].out); + } + else if (debug) + printf ("returned %d\n", rc); + + if (rc == IDNA_SUCCESS) + { + if (strlen (idna[i].out) != strlen (out) || + strcasecmp (idna[i].out, out) != 0) + { + fail ("IDNA2 entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n"); + + free (out); + out = NULL; + } + else if (rc != IDNA_SUCCESS && strlen (idna[i].out) == 0 && debug) + printf ("OK (fail)\n"); + else if (debug) + printf ("OK\n"); + } +} diff --git a/tests/tst_nfkc.c b/tests/tst_nfkc.c new file mode 100644 index 0000000..a10a630 --- /dev/null +++ b/tests/tst_nfkc.c @@ -0,0 +1,126 @@ +/* tst_nfkc.c --- Self tests for stringprep_utf8_nfkc_normalize(). + * Copyright (C) 2002, 2003, 2004, 2006, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <stringprep.h> + +#include "utils.h" + +struct nfkc +{ + const char *in; + const char *out; +}; + +static struct nfkc nfkc[] = { + {"\xC2\xB5", "\xCE\xBC"}, + {"\xC2\xAA", "\x61"}, + /* From <http://www.unicode.org/review/pr-29.html>. Note that we + * compute the output according to Unicode 3.2 without the proposed + * update. + * + * 1. + * + * U+1100 (ᄀ) HANGUL CHOSEONG KIYEOK + + * U+0300 (◌̀) COMBINING GRAVE ACCENT + + * U+1161 (ᅡ) HANGUL JUNGSEONG A + * + * According to the old language, the NFC form of this would be B: + * + * 2. + * + * U+AC00 (가) HANGUL SYLLABLE GA + + * U+0300 (◌̀) COMBINING GRAVE ACCENT + */ + {"\xE1\x84\x80\xCC\x80\xE1\x85\xA1", "\xEA\xB0\x80\xCC\x80"}, + /* Second test case from page. Again, we do not implement the + * updated proposal. <U+0B47; U+0300; U+0B3E> -> U+0B4B U+0300 + */ + {"\xE0\xAD\x87\xCC\x80\xE0\xAC\xBE", "\xE0\xAD\x8b\xCC\x80"} +}; + +void +doit (void) +{ + char *out; + size_t i; + + for (i = 0; i < sizeof (nfkc) / sizeof (nfkc[0]); i++) + { + if (debug) + printf ("NFKC entry %d\n", i); + + out = stringprep_utf8_nfkc_normalize (nfkc[i].in, + (ssize_t) strlen (nfkc[i].in)); + if (out == NULL) + { + fail ("NFKC entry %d failed fatally\n", i); + continue; + } + + if (debug) + { + uint32_t *t; + size_t len; + + printf ("in:\n"); + escapeprint (nfkc[i].in, strlen (nfkc[i].in)); + hexprint (nfkc[i].in, strlen (nfkc[i].in)); + binprint (nfkc[i].in, strlen (nfkc[i].in)); + + + printf ("out:\n"); + escapeprint (out, strlen (out)); + hexprint (out, strlen (out)); + binprint (out, strlen (out)); + t = stringprep_utf8_to_ucs4 (out, -1, &len); + if (t) + { + ucs4print (t, len); + free (t); + } + + printf ("expected out:\n"); + escapeprint (nfkc[i].out, strlen (nfkc[i].out)); + hexprint (nfkc[i].out, strlen (nfkc[i].out)); + binprint (nfkc[i].out, strlen (nfkc[i].out)); + } + + if (strlen (nfkc[i].out) != strlen (out) || + memcmp (nfkc[i].out, out, strlen (out)) != 0) + { + fail ("NFKC entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n"); + + free (out); + } +} diff --git a/tests/tst_pr29.c b/tests/tst_pr29.c new file mode 100644 index 0000000..e01441b --- /dev/null +++ b/tests/tst_pr29.c @@ -0,0 +1,145 @@ +/* tst_pr29.c --- Self tests for pr29_*(). + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <pr29.h> + +#include "utils.h" + +struct tv +{ + const char *name; + size_t inlen; + uint32_t in[100]; + int rc; +}; + +static const struct tv tv[] = { + { + "Problem Sequence A", + 3, + {0x1100, 0x0300, 0x1161, 0}, + PR29_PROBLEM}, + { + "Test Case", + 3, + {0x0B47, 0x0300, 0x0B3E, 0}, + PR29_PROBLEM}, + { + "Instability Example", + 3, + {0x1100, 0x0300, 0x1161, 0x0323, 0}, + PR29_PROBLEM}, + { + "Not a problem sequence 1", + 3, + {0x1100, 0x1161, 0x0300, 0}, + PR29_SUCCESS}, + { + "Not a problem sequence 2", + 3, + {0x0300, 0x1100, 0x1161, 0}, + PR29_SUCCESS}, + { + "Not a problem sequence 3", + 3, + {0x1161, 0x1100, 0x0300, 0}, + PR29_SUCCESS}, + { + "Not a problem sequence 4", + 3, + {0x1161, 0x0300, 0x1100, 0}, + PR29_SUCCESS}, + { + "Not a problem sequence 5", + 3, + {0x1100, 0x00AA, 0x1161, 0}, + PR29_SUCCESS} +}; + +void +doit (void) +{ + size_t i; + int rc; + + for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) + { + if (debug) + printf ("PR29 entry %d: %s\n", i, tv[i].name); + + if (debug) + { + printf ("in:\n"); + ucs4print (tv[i].in, tv[i].inlen); + } + + rc = pr29_4 (tv[i].in, tv[i].inlen); + if (rc != tv[i].rc) + { + fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + rc = pr29_4z (tv[i].in); + if (rc != tv[i].rc) + { + fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + { + char *p; + size_t items_read, items_written; + + p = stringprep_ucs4_to_utf8 (tv[i].in, (ssize_t) tv[i].inlen, + &items_read, &items_written); + if (p == NULL) + fail ("FAIL: stringprep_ucs4_to_utf8(tv[%d]) == NULL\n", i); + if (debug) + hexprint (p, strlen (p)); + + rc = pr29_8z (p); + free (p); + if (rc != tv[i].rc) + { + fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + } + + if (debug) + printf ("OK\n"); + } +} diff --git a/tests/tst_punycode.c b/tests/tst_punycode.c new file mode 100644 index 0000000..8d0c7ac --- /dev/null +++ b/tests/tst_punycode.c @@ -0,0 +1,278 @@ +/* tst_punycode.c --- Self tests for punycode. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <punycode.h> + +#include "utils.h" + +struct punycode +{ + const char *name; + size_t inlen; + uint32_t in[100]; + const char *out; + int rc; +}; + +const struct punycode punycode[] = { + { + "(A) Arabic (Egyptian)", 17, + { + 0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, + 0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, + 0x061F}, "egbpdaj6bu4bxfgehfvwxn", PUNYCODE_SUCCESS}, + { + "(B) Chinese (simplified)", 9, + { + 0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, + 0x6587}, "ihqwcrb4cv8a8dqg056pqjye", PUNYCODE_SUCCESS}, + { + "(C) Chinese (traditional)", 9, + { + 0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, + 0x6587}, "ihqwctvzc91f659drss3x8bo0yb", PUNYCODE_SUCCESS}, + { + "(D) Czech: Pro<ccaron>prost<ecaron>nemluv<iacute><ccaron>esky", 22, + { + 0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, + 0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, + 0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079}, + "Proprostnemluvesky-uyb24dma41a", PUNYCODE_SUCCESS}, + { + "(E) Hebrew:", 22, + { + 0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, + 0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, + 0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA}, + "4dbcagdahymbxekheh6e0a7fei0b", PUNYCODE_SUCCESS}, + { + "(F) Hindi (Devanagari):", 30, + { + 0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, + 0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, + 0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, + 0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902}, + "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", PUNYCODE_SUCCESS}, + { + "(G) Japanese (kanji and hiragana):", 18, + { + 0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, + 0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, + 0x306E, 0x304B}, + "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", PUNYCODE_SUCCESS}, + { + "(H) Korean (Hangul syllables):", 24, + { + 0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, + 0xC774, 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, + 0xB2E4, 0xBA74, 0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C}, + "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c", + PUNYCODE_SUCCESS}, + { + "(I) Russian (Cyrillic):", 28, + { + 0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, + 0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, + 0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, + 0x0441, 0x0441, 0x043A, 0x0438}, + "b1abfaaepdrnnbgefbadotcwatmq2g4l", PUNYCODE_SUCCESS}, + { + "(J) Spanish: Porqu<eacute>nopuedensimplementehablarenEspa<ntilde>ol", 40, + { + 0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, + 0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, + 0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, + 0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065, + 0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C}, + "PorqunopuedensimplementehablarenEspaol-fmd56a", PUNYCODE_SUCCESS}, + { + "(K) Vietnamese:", 31, + { + 0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, + 0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, + 0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, + 0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074}, + "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", PUNYCODE_SUCCESS}, + { + "(L) 3<nen>B<gumi><kinpachi><sensei>", 8, + { + 0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F}, + "3B-ww4c5e180e575a65lsy2b", PUNYCODE_SUCCESS}, + { + "(M) <amuro><namie>-with-SUPER-MONKEYS", 24, + { + 0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, + 0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, + 0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053}, + "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", PUNYCODE_SUCCESS}, + { + "(N) Hello-Another-Way-<sorezore><no><basho>", 25, + { + 0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, + 0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, + 0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, + 0x6240}, + "Hello-Another-Way--fc4qua05auwb3674vfr0b", PUNYCODE_SUCCESS}, + { + "(O) <hitotsu><yane><no><shita>2", 8, + { + 0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032}, + "2-u9tlzr9756bt3uc0v", PUNYCODE_SUCCESS}, + { + "(P) Maji<de>Koi<suru>5<byou><mae>", 13, + { + 0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, + 0x3059, 0x308B, 0x0035, 0x79D2, 0x524D}, + "MajiKoi5-783gue6qz075azm5e", PUNYCODE_SUCCESS}, + { + "(Q) <pafii>de<runba>", 9, + { + 0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0}, + "de-jg4avhby1noc0d", PUNYCODE_SUCCESS}, + { + "(R) <sono><supiido><de>", 7, + { + 0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067}, + "d9juau41awczczp", PUNYCODE_SUCCESS}, + { + "(S) -> $1.00 <-", 11, + { + 0x002D, 0x003E, 0x0020, 0x0024, 0x0031, 0x002E, 0x0030, 0x0030, + 0x0020, 0x003C, 0x002D}, "-> $1.00 <--", PUNYCODE_SUCCESS} +}; + +void +doit (void) +{ + char *p; + uint32_t *q; + int rc; + size_t i, outlen; + + p = malloc (sizeof (*p) * BUFSIZ); + if (p == NULL) + fail ("malloc() returned NULL\n"); + + q = malloc (sizeof (*q) * BUFSIZ); + if (q == NULL) + fail ("malloc() returned NULL\n"); + + for (i = 0; i < sizeof (punycode) / sizeof (punycode[0]); i++) + { + if (debug) + printf ("PUNYCODE entry %d: %s\n", i, punycode[i].name); + + if (debug) + { + printf ("in:\n"); + ucs4print (punycode[i].in, punycode[i].inlen); + } + + outlen = BUFSIZ; + rc = punycode_encode (punycode[i].inlen, punycode[i].in, + NULL, &outlen, p); + if (rc != punycode[i].rc) + { + fail ("punycode_encode() entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + if (rc == PUNYCODE_SUCCESS) + p[outlen] = '\0'; + + if (debug && rc == PUNYCODE_SUCCESS) + { + printf ("computed out: %s\n", p); + printf ("expected out: %s\n", punycode[i].out); + } + else if (debug) + printf ("returned %d expected %d\n", rc, punycode[i].rc); + + if (rc == PUNYCODE_SUCCESS) + { + if (strlen (punycode[i].out) != strlen (p) || + memcmp (punycode[i].out, p, strlen (p)) != 0) + { + fail ("punycode() entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n\n"); + } + else if (debug) + printf ("OK\n\n"); + + if (debug) + { + printf ("in: %s\n", punycode[i].out); + } + + outlen = BUFSIZ; + rc = punycode_decode (strlen (punycode[i].out), punycode[i].out, + &outlen, q, NULL); + if (rc != punycode[i].rc) + { + fail ("punycode() entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + if (debug && rc == PUNYCODE_SUCCESS) + { + printf ("computed out:\n"); + ucs4print (q, outlen); + printf ("expected out:\n"); + ucs4print (punycode[i].in, punycode[i].inlen); + } + else if (debug) + printf ("returned %d expected %d\n", rc, punycode[i].rc); + + if (rc == PUNYCODE_SUCCESS) + { + if (punycode[i].inlen != outlen || + memcmp (punycode[i].in, q, outlen) != 0) + { + fail ("punycode_decode() entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n\n"); + } + else if (debug) + printf ("OK\n\n"); + } + + free (q); + free (p); +} diff --git a/tests/tst_strerror.c b/tests/tst_strerror.c new file mode 100644 index 0000000..846340e --- /dev/null +++ b/tests/tst_strerror.c @@ -0,0 +1,205 @@ +/* tst_strerror.c --- Self tests for *_strerror(). + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <idna.h> +#include <pr29.h> +#include <punycode.h> +#include <stringprep.h> +#include <tld.h> + +#include "utils.h" + +#define SUCCESS "Success" +#define UNKNOWN "Unknown error" + +void +doit (void) +{ + const char *p; + + /* Test success. */ + + p = idna_strerror (0); + if (strcmp (p, SUCCESS) != 0) + fail ("idna_strerror (0) failed: %s\n", p); + if (debug) + printf ("idna_strerror (0) OK\n"); + + p = pr29_strerror (0); + if (strcmp (p, SUCCESS) != 0) + fail ("pr29_strerror (0) failed: %s\n", p); + if (debug) + printf ("pr29_strerror (0) OK\n"); + + p = punycode_strerror (0); + if (strcmp (p, SUCCESS) != 0) + fail ("punycode_strerror (0) failed: %s\n", p); + if (debug) + printf ("punycode_strerror (0) OK\n"); + + p = stringprep_strerror (0); + if (strcmp (p, SUCCESS) != 0) + fail ("stringprep_strerror (0) failed: %s\n", p); + if (debug) + printf ("stringprep_strerror (0) OK\n"); + + p = tld_strerror (0); + if (strcmp (p, SUCCESS) != 0) + fail ("tld_strerror (0) failed: %s\n", p); + if (debug) + printf ("tld_strerror (0) OK\n"); + + /* Test unknown error. */ + + p = idna_strerror (42); + if (strcmp (p, UNKNOWN) != 0) + fail ("idna_strerror (42) failed: %s\n", p); + if (debug) + printf ("idna_strerror (42) OK\n"); + + p = pr29_strerror (42); + if (strcmp (p, UNKNOWN) != 0) + fail ("pr29_strerror (42) failed: %s\n", p); + if (debug) + printf ("pr29_strerror (42) OK\n"); + + p = punycode_strerror (42); + if (strcmp (p, UNKNOWN) != 0) + fail ("punycode_strerror (42) failed: %s\n", p); + if (debug) + printf ("punycode_strerror (42) OK\n"); + + p = stringprep_strerror (42); + if (strcmp (p, UNKNOWN) != 0) + fail ("stringprep_strerror (42) failed: %s\n", p); + if (debug) + printf ("stringprep_strerror (42) OK\n"); + + p = tld_strerror (42); + if (strcmp (p, UNKNOWN) != 0) + fail ("tld_strerror (42) failed: %s\n", p); + if (debug) + printf ("tld_strerror (42) OK\n"); + + /* Iterate through all error codes. */ + + { + size_t i; + const char *last_p = NULL; + + for (i = 0;; i++) + { + p = idna_strerror (i); + if (p == last_p) + { + if (i == 11) + { + i = 200; + continue; + } + break; + } + if (debug) + printf ("idna %d: %s\n", i, p); + last_p = p; + } + } + + { + size_t i; + const char *last_p = NULL; + + for (i = 0;; i++) + { + p = pr29_strerror (i); + if (p == last_p) + break; + if (debug) + printf ("pr29 %d: %s\n", i, p); + last_p = p; + } + } + + { + size_t i; + const char *last_p = NULL; + + for (i = 0;; i++) + { + p = punycode_strerror (i); + if (p == last_p) + break; + if (debug) + printf ("punycode %d: %s\n", i, p); + last_p = p; + } + } + + { + size_t i; + const char *last_p = NULL; + + for (i = 0;; i++) + { + p = stringprep_strerror (i); + if (p == last_p) + { + if (i == 7) + { + i = 99; + continue; + } + else if (i == 105) + { + i = 199; + continue; + } + break; + } + if (debug) + printf ("stringprep %d: %s\n", i, p); + last_p = p; + } + } + + { + size_t i; + const char *last_p = NULL; + + for (i = 0;; i++) + { + p = tld_strerror (i); + if (p == last_p) + break; + if (debug) + printf ("tld %d: %s\n", i, p); + last_p = p; + } + } +} diff --git a/tests/tst_stringprep.c b/tests/tst_stringprep.c new file mode 100644 index 0000000..0c247f5 --- /dev/null +++ b/tests/tst_stringprep.c @@ -0,0 +1,312 @@ +/* tst_stringprep.c --- Self tests for stringprep(). + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <stringprep.h> + +#include "utils.h" + +struct stringprep +{ + const char *comment; + const char *in; + const char *out; + const char *profile; + int flags; + int rc; +}; + +const struct stringprep strprep[] = { + {"Map to nothing", + "foo\xC2\xAD\xCD\x8F\xE1\xA0\x86\xE1\xA0\x8B" + "bar" "\xE2\x80\x8B\xE2\x81\xA0" "baz\xEF\xB8\x80\xEF\xB8\x88" + "\xEF\xB8\x8F\xEF\xBB\xBF", "foobarbaz"}, + {"Case folding ASCII U+0043 U+0041 U+0046 U+0045", "CAFE", "cafe"}, + {"Case folding 8bit U+00DF (german sharp s)", "\xC3\x9F", "ss"}, + {"Case folding U+0130 (turkish capital I with dot)", + "\xC4\xB0", "i\xcc\x87"}, + {"Case folding multibyte U+0143 U+037A", + "\xC5\x83\xCD\xBA", "\xC5\x84 \xCE\xB9"}, + {"Case folding U+2121 U+33C6 U+1D7BB", + "\xE2\x84\xA1\xE3\x8F\x86\xF0\x9D\x9E\xBB", + "telc\xE2\x88\x95" "kg\xCF\x83"}, + {"Normalization of U+006a U+030c U+00A0 U+00AA", + "\x6A\xCC\x8C\xC2\xA0\xC2\xAA", "\xC7\xB0 a"}, + {"Case folding U+1FB7 and normalization", + "\xE1\xBE\xB7", "\xE1\xBE\xB6\xCE\xB9"}, + {"Self-reverting case folding U+01F0 and normalization", + "\xC7\xB0", "\xC7\xB0"}, + {"Self-reverting case folding U+0390 and normalization", + "\xCE\x90", "\xCE\x90"}, + {"Self-reverting case folding U+03B0 and normalization", + "\xCE\xB0", "\xCE\xB0"}, + {"Self-reverting case folding U+1E96 and normalization", + "\xE1\xBA\x96", "\xE1\xBA\x96"}, + {"Self-reverting case folding U+1F56 and normalization", + "\xE1\xBD\x96", "\xE1\xBD\x96"}, + {"ASCII space character U+0020", "\x20", "\x20"}, + {"Non-ASCII 8bit space character U+00A0", "\xC2\xA0", "\x20"}, + {"Non-ASCII multibyte space character U+1680", + "\xE1\x9A\x80", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Non-ASCII multibyte space character U+2000", "\xE2\x80\x80", "\x20"}, + {"Zero Width Space U+200b", "\xE2\x80\x8b", ""}, + {"Non-ASCII multibyte space character U+3000", "\xE3\x80\x80", "\x20"}, + {"ASCII control characters U+0010 U+007F", "\x10\x7F", "\x10\x7F"}, + {"Non-ASCII 8bit control character U+0085", + "\xC2\x85", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Non-ASCII multibyte control character U+180E", + "\xE1\xA0\x8E", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Zero Width No-Break Space U+FEFF", "\xEF\xBB\xBF", ""}, + {"Non-ASCII control character U+1D175", + "\xF0\x9D\x85\xB5", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Plane 0 private use character U+F123", + "\xEF\x84\xA3", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Plane 15 private use character U+F1234", + "\xF3\xB1\x88\xB4", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Plane 16 private use character U+10F234", + "\xF4\x8F\x88\xB4", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Non-character code point U+8FFFE", + "\xF2\x8F\xBF\xBE", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Non-character code point U+10FFFF", + "\xF4\x8F\xBF\xBF", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Surrogate code U+DF42", + "\xED\xBD\x82", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Non-plain text character U+FFFD", + "\xEF\xBF\xBD", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Ideographic description character U+2FF5", + "\xE2\xBF\xB5", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Display property character U+0341", "\xCD\x81", "\xCC\x81"}, + {"Left-to-right mark U+200E", + "\xE2\x80\x8E", "\xCC\x81", "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Deprecated U+202A", "\xE2\x80\xAA", "\xCC\x81", "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Language tagging character U+E0001", + "\xF3\xA0\x80\x81", "\xCC\x81", "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Language tagging character U+E0042", + "\xF3\xA0\x81\x82", NULL, "Nameprep", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"Bidi: RandALCat character U+05BE and LCat characters", + "foo\xD6\xBE" "bar", NULL, "Nameprep", 0, + STRINGPREP_BIDI_BOTH_L_AND_RAL}, + {"Bidi: RandALCat character U+FD50 and LCat characters", + "foo\xEF\xB5\x90" "bar", NULL, "Nameprep", 0, + STRINGPREP_BIDI_BOTH_L_AND_RAL}, + {"Bidi: RandALCat character U+FB38 and LCat characters", + "foo\xEF\xB9\xB6" "bar", "foo \xd9\x8e" "bar"}, + {"Bidi: RandALCat without trailing RandALCat U+0627 U+0031", + "\xD8\xA7\x31", NULL, "Nameprep", 0, STRINGPREP_BIDI_LEADTRAIL_NOT_RAL}, + {"Bidi: RandALCat character U+0627 U+0031 U+0628", + "\xD8\xA7\x31\xD8\xA8", "\xD8\xA7\x31\xD8\xA8"}, + {"Unassigned code point U+E0002", + "\xF3\xA0\x80\x82", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED, + STRINGPREP_CONTAINS_UNASSIGNED}, + {"Larger test (shrinking)", + "X\xC2\xAD\xC3\x9F\xC4\xB0\xE2\x84\xA1\x6a\xcc\x8c\xc2\xa0\xc2" + "\xaa\xce\xb0\xe2\x80\x80", "xssi\xcc\x87" "tel\xc7\xb0 a\xce\xb0 ", + "Nameprep"}, + {"Larger test (expanding)", + "X\xC3\x9F\xe3\x8c\x96\xC4\xB0\xE2\x84\xA1\xE2\x92\x9F\xE3\x8c\x80", + "xss\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88" + "\xe3\x83\xab" "i\xcc\x87" "tel\x28" "d\x29\xe3\x82\xa2\xe3\x83\x91" + "\xe3\x83\xbc\xe3\x83\x88"}, + {"Test of prohibited ASCII character U+0020", + "\x20", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Test of NFKC U+00A0 and prohibited character U+0020", + "\xC2\xA0", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"Case map + normalization", "\xC2\xB5", "\xCE\xBC", "Nameprep"}, + /* The rest are rather non-interesting, but no point in removing + working test cases... */ + {"case_nonfkc", "\xC2\xB5", "\xCE\xBC", "Nameprep", STRINGPREP_NO_NFKC, + STRINGPREP_FLAG_ERROR}, + {"NFKC test", "\xC2\xAA", "\x61", "Nameprep"}, + {"nameprep, exposed a bug in libstringprep 0.0.5", + "\xC2\xAA\x0A", "\x61\x0A"}, + {"unassigned code point U+0221", "\xC8\xA1", "\xC8\xA1", "Nameprep"}, + {"Unassigned code point U+0221", + "\xC8\xA1", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED, + STRINGPREP_CONTAINS_UNASSIGNED}, + {"Unassigned code point U+0236", "\xC8\xB6", "\xC8\xB6", "Nameprep"}, + {"unassigned code point U+0236", + "\xC8\xB6", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED, + STRINGPREP_CONTAINS_UNASSIGNED}, + {"bidi both RandALCat and LCat U+0627 U+00AA U+0628", + "\xD8\xA7\xC2\xAA\xD8\xA8", NULL, "Nameprep", 0, + STRINGPREP_BIDI_BOTH_L_AND_RAL}, + /* XMPP */ + {"XMPP node profile prohibited output", + "foo@bar", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"XMPP resource profile on same string should work though", + "foo@bar", "foo@bar", "Resourceprep"}, + /* iSCSI */ + {"iSCSI 1", "Example-Name", "example-name", "iSCSI"}, + {"iSCSI 2", "O+o", NULL, "iSCSI", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"iSCSI 3", "\x01", NULL, "iSCSI", 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"iSCSI 4", "\xE3\x80\x82", NULL, "iSCSI", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"iSCSI 5", "\xE2\xBF\xB5", NULL, "iSCSI", 0, + STRINGPREP_CONTAINS_PROHIBITED}, + {"SASL profile", "Example\xC2\xA0" "Name", "Example Name", "SASLprep"}, + /* SASL trace */ + {"SASL ANONYMOUS plain mechanism", "simon@josefsson.org", + "simon@josefsson.org", "plain"}, + {"SASLprep 1 old", "x\xC2\xADy", "xy", "SASLprep"}, + {"SASLprep 4 old", "\xE2\x85\xA3", "IV", "SASLprep"}, + /* SASLprep test vectors. */ + {"SASLprep 1 SOFT HYPHEN mapped to nothing", "I\xC2\xADX", "IX", + "SASLprep"}, + {"SASLprep 2 no transformation", "user", "user", "SASLprep"}, + {"SASLprep 3 case preserved, will not match #2", "USER", "USER", + "SASLprep"}, + {"SASLprep 4 output is NFKC, input in ISO 8859-1", "\xC2\xAA", "a", + "SASLprep"}, + {"SASLprep 5 output is NFKC, will match #1", "\xE2\x85\xA8", "IX", + "SASLprep"}, + {"SASLprep 6 Error - prohibited character", "\x07", NULL, "SASLprep", + 0, STRINGPREP_CONTAINS_PROHIBITED}, + {"SASLprep 7 Error - bidirectional check", "\xD8\xA7" "1", NULL, "SASLprep", + 0, STRINGPREP_BIDI_LEADTRAIL_NOT_RAL} +}; + +void +doit (void) +{ + char *p; + int rc; + size_t i; + + if (!stringprep_check_version (STRINGPREP_VERSION)) + fail ("stringprep_check_version(%s) failed\n", STRINGPREP_VERSION); + + if (!stringprep_check_version (NULL)) + fail ("stringprep_check_version(NULL) failed\n"); + + if (stringprep_check_version ("100.100")) + fail ("stringprep_check_version(\"100.100\") failed\n"); + + for (i = 0; i < sizeof (strprep) / sizeof (strprep[0]); i++) + { + if (debug) + printf ("STRINGPREP entry %d\n", i); + + if (debug) + { + printf ("flags: %d\n", strprep[i].flags); + + printf ("in: "); + escapeprint (strprep[i].in, strlen (strprep[i].in)); + hexprint (strprep[i].in, strlen (strprep[i].in)); + binprint (strprep[i].in, strlen (strprep[i].in)); + } + + { + uint32_t *l; + char *x; + l = stringprep_utf8_to_ucs4 (strprep[i].in, -1, NULL); + x = stringprep_ucs4_to_utf8 (l, -1, NULL, NULL); + free (l); + + if (strcmp (strprep[i].in, x) != 0) + { + fail ("bad UTF-8 in entry %d\n", i); + if (debug) + { + puts ("expected:"); + escapeprint (strprep[i].in, strlen (strprep[i].in)); + hexprint (strprep[i].in, strlen (strprep[i].in)); + puts ("computed:"); + escapeprint (x, strlen (x)); + hexprint (x, strlen (x)); + } + } + + free (x); + } + rc = stringprep_profile (strprep[i].in, &p, + strprep[i].profile ? + strprep[i].profile : + "Nameprep", strprep[i].flags); + if (rc != strprep[i].rc) + { + fail ("stringprep() entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + if (rc == STRINGPREP_OK) + free (p); + continue; + } + + if (debug && rc == STRINGPREP_OK) + { + printf ("out: "); + escapeprint (p, strlen (p)); + hexprint (p, strlen (p)); + binprint (p, strlen (p)); + + printf ("expected out: "); + escapeprint (strprep[i].out, strlen (strprep[i].out)); + hexprint (strprep[i].out, strlen (strprep[i].out)); + binprint (strprep[i].out, strlen (strprep[i].out)); + } + else if (debug) + printf ("returned %d expected %d\n", rc, strprep[i].rc); + + if (rc == STRINGPREP_OK) + { + if (strlen (strprep[i].out) != strlen (p) || + memcmp (strprep[i].out, p, strlen (p)) != 0) + { + fail ("stringprep() entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (debug) + printf ("OK\n\n"); + + free (p); + } + else if (debug) + printf ("OK\n\n"); + } + +#if 0 + { + char p[20]; + memset (p, 0, 10); + stringprep_unichar_to_utf8 (0x00DF, p); + hexprint (p, strlen (p)); + puts (""); + } +#endif +} diff --git a/tests/tst_tld.c b/tests/tst_tld.c new file mode 100644 index 0000000..544e746 --- /dev/null +++ b/tests/tst_tld.c @@ -0,0 +1,151 @@ +/* tst_tld.c --- Self tests for tld_*(). + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <stringprep.h> +#include <tld.h> + +#include "utils.h" + +struct tld +{ + const char *name; + const char *tld; + const char *example; + size_t inlen; + uint32_t in[100]; + int rc; + size_t errpos; +}; + +static const struct tld tld[] = { + { + "Simple valid French domain", + "fr", + "example.fr", + 3, + {0x00E0, 0x00E2, 0x00E6}, + TLD_SUCCESS}, + { + "Simple invalid French domain", + "fr", + "ªexample.fr", + 5, + {0x00E0, 0x00E2, 0x00E6, 0x4711, 0x0042}, + TLD_INVALID, + 3} +}; + +void +doit (void) +{ + size_t i; + const Tld_table *tldtable; + size_t errpos; + int rc; + + tldtable = tld_get_table (NULL, NULL); + if (tldtable != NULL) + fail ("FAIL: tld_get_table (NULL, NULL) != NULL\n"); + + tldtable = tld_get_table ("nonexisting", NULL); + if (tldtable != NULL) + fail ("FAIL: tld_get_table (\"nonexisting\", NULL) != NULL\n"); + + tldtable = tld_default_table (NULL, NULL); + if (tldtable != NULL) + fail ("FAIL: tld_default_table (NULL, NULL) != NULL\n"); + + for (i = 0; i < sizeof (tld) / sizeof (tld[0]); i++) + { + if (debug) + printf ("TLD entry %d: %s\n", i, tld[i].name); + + if (debug) + { + printf ("in:\n"); + ucs4print (tld[i].in, tld[i].inlen); + } + + tldtable = tld_default_table (tld[i].tld, NULL); + if (tldtable == NULL) + { + fail ("TLD entry %d tld_get_table (%s)\n", i, tld[i].tld); + if (debug) + printf ("FATAL\n"); + continue; + } + + rc = tld_check_4t (tld[i].in, tld[i].inlen, &errpos, tldtable); + if (rc != tld[i].rc) + { + fail ("TLD entry %d failed: %d\n", i, rc); + if (debug) + printf ("FATAL\n"); + continue; + } + + if (debug) + printf ("returned %d expected %d\n", rc, tld[i].rc); + + if (rc != tld[i].rc) + { + fail ("TLD entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + else if (rc == TLD_INVALID) + { + if (debug) + printf ("returned errpos %d expected errpos %d\n", + errpos, tld[i].errpos); + + if (tld[i].errpos != errpos) + { + fail ("TLD entry %d failed because errpos %d != %d\n", i, + tld[i].errpos, errpos); + if (debug) + printf ("ERROR\n"); + } + } + else if (debug) + printf ("OK\n"); + + { + rc = tld_check_8z (tld[i].example, &errpos, NULL); + if (rc != tld[i].rc) + { + fail ("TLD entry %d failed\n", i); + if (debug) + printf ("ERROR\n"); + } + if (debug) + printf ("TLD entry %d tld_check_8z (%s)\n", i, tld[i].example); + } + } +} diff --git a/tests/tst_toutf8.c b/tests/tst_toutf8.c new file mode 100644 index 0000000..5092a2a --- /dev/null +++ b/tests/tst_toutf8.c @@ -0,0 +1,59 @@ +/* tst_toutf8.c --- Self tests for UTF-8 conversion functions. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +#include <stringprep.h> + +#include "utils.h" + +void +doit (void) +{ + char *p; + const char *q; + + q = stringprep_locale_charset (); + if (q == NULL) + fail ("FAIL: stringprep_locale_charset == NULL\n"); + if (debug) + printf ("PASS: stringprep_locale_charset == %s\n", q); + + p = stringprep_locale_to_utf8 ("foo"); + if (!p || memcmp (p, "foo", 4) != 0) + fail ("FAIL: stringprep_locale_to_utf8(\"foo\") == %s\n", p); + if (debug) + printf ("PASS: stringprep_locale_to_utf8(\"foo\") == %s\n", p); + free (p); + + p = stringprep_utf8_to_locale ("foo"); + if (!p || memcmp (p, "foo", 4) != 0) + fail ("FAIL: stringprep_utf8_to_locale(\"foo\") == %s\n", p); + if (debug) + printf ("PASS: stringprep_utf8_to_locale(\"foo\") == %s\n", p); + free (p); +} diff --git a/tests/utils.c b/tests/utils.c new file mode 100644 index 0000000..78a009b --- /dev/null +++ b/tests/utils.c @@ -0,0 +1,152 @@ +/* utils.c --- Self test utilities. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> + +#include "utils.h" + +int debug = 0; +int error_count = 0; +int break_on_error = 0; + +void +fail (const char *format, ...) +{ + va_list arg_ptr; + + va_start (arg_ptr, format); + vfprintf (stderr, format, arg_ptr); + va_end (arg_ptr); + error_count++; + if (break_on_error) + exit (1); +} + +void +escapeprint (const char *str, size_t len) +{ + size_t i; + + printf (" (length %d bytes):\n\t", len); + for (i = 0; i < len; i++) + { + if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') || + ((str[i] & 0xFF) >= 'a' && (str[i] & 0xFF) <= 'z') || + ((str[i] & 0xFF) >= '0' && (str[i] & 0xFF) <= '9') + || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.') + printf ("%c", (str[i] & 0xFF)); + else + printf ("\\x%02X", (str[i] & 0xFF)); + if ((i + 1) % 16 == 0 && (i + 1) < len) + printf ("'\n\t'"); + } + printf ("\n"); +} + +void +hexprint (const char *str, size_t len) +{ + size_t i; + + printf ("\t;; "); + for (i = 0; i < len; i++) + { + printf ("%02x ", (str[i] & 0xFF)); + if ((i + 1) % 8 == 0) + printf (" "); + if ((i + 1) % 16 == 0 && i + 1 < len) + printf ("\n\t;; "); + } + printf ("\n"); +} + +void +binprint (const char *str, size_t len) +{ + size_t i; + + printf ("\t;; "); + for (i = 0; i < len; i++) + { + printf ("%d%d%d%d%d%d%d%d ", + (str[i] & 0xFF) & 0x80 ? 1 : 0, + (str[i] & 0xFF) & 0x40 ? 1 : 0, + (str[i] & 0xFF) & 0x20 ? 1 : 0, + (str[i] & 0xFF) & 0x10 ? 1 : 0, + (str[i] & 0xFF) & 0x08 ? 1 : 0, + (str[i] & 0xFF) & 0x04 ? 1 : 0, + (str[i] & 0xFF) & 0x02 ? 1 : 0, (str[i] & 0xFF) & 0x01 ? 1 : 0); + if ((i + 1) % 3 == 0) + printf (" "); + if ((i + 1) % 6 == 0 && i + 1 < len) + printf ("\n\t;; "); + } + printf ("\n"); +} + +void +ucs4print (const uint32_t * str, size_t len) +{ + size_t i; + + printf ("\t;; "); + for (i = 0; i < len; i++) + { + printf ("U+%04x ", str[i]); + if ((i + 1) % 4 == 0) + printf (" "); + if ((i + 1) % 8 == 0 && i + 1 < len) + printf ("\n\t;; "); + } + puts (""); +} + +int +main (int argc, char *argv[]) +{ + do + if (strcmp (argv[argc - 1], "-v") == 0 || + strcmp (argv[argc - 1], "--verbose") == 0) + debug = 1; + else if (strcmp (argv[argc - 1], "-b") == 0 || + strcmp (argv[argc - 1], "--break-on-error") == 0) + break_on_error = 1; + else if (strcmp (argv[argc - 1], "-h") == 0 || + strcmp (argv[argc - 1], "-?") == 0 || + strcmp (argv[argc - 1], "--help") == 0) + { + printf ("Usage: %s [-vbh?] [--verbose] [--break-on-error] [--help]\n", + argv[0]); + return 1; + } + while (argc-- > 1); + + doit (); + + if (debug) + printf ("Self tests done with %d errors\n", error_count); + + return error_count ? 1 : 0; +} diff --git a/tests/utils.h b/tests/utils.h new file mode 100644 index 0000000..0910677 --- /dev/null +++ b/tests/utils.h @@ -0,0 +1,48 @@ +/* utils.h --- Prototypes for self test utilities. + * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson + * + * This file is part of GNU Libidn. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef UTILS_H +# define UTILS_H + +# include <string.h> +# include <stdarg.h> +# include <stringprep.h> + +#ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +# define __attribute__(Spec) /* empty */ +# endif +#endif + +extern int debug; +extern int error_count; +extern int break_on_error; + +extern void fail (const char *format, ...) + __attribute__ ((format (printf, 1, 2))); +extern void escapeprint (const char *str, size_t len); +extern void hexprint (const char *str, size_t len); +extern void binprint (const char *str, size_t len); +extern void ucs4print (const uint32_t * str, size_t len); + +/* This must be implemented elsewhere. */ +extern void doit (void); + +#endif /* UTILS_H */ diff --git a/win32/include/ac-stdint.h b/win32/include/ac-stdint.h new file mode 100644 index 0000000..6a57ff9 --- /dev/null +++ b/win32/include/ac-stdint.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2008 Free Software Foundation, Inc. + Written by Adam Strzelecki <ono@java.pl> + + This program 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, + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#ifndef _AC_STDINT_H +#define _AC_STDINT_H 1 +#ifndef _GENERATED_STDINT_H +#define _GENERATED_STDINT_H + +#define uint8_t unsigned char +#define uint16_t unsigned short +#define uint32_t unsigned int +#define int8_t signed char +#define int16_t signed short +#define int32_t signed int + +#define gint16 int16_t + +#ifdef _WIN64 +typedef __int64 ssize_t; +#else +typedef _W64 int ssize_t; +#endif + +#endif +#endif diff --git a/win32/include/config.h b/win32/include/config.h new file mode 100644 index 0000000..f341833 --- /dev/null +++ b/win32/include/config.h @@ -0,0 +1,17 @@ +#ifndef _CONFIG_H +#define _CONFIG_H + +#define PACKAGE "libidn" + +#define strcasecmp stricmp +#define strncasecmp strnicmp + +extern int strverscmp (const char *, const char *); + +#define LOCALEDIR "." + +#if _MSC_VER && !__cplusplus +# define inline __inline +#endif + +#endif /* _CONFIG_H */ diff --git a/win32/include/idn-int.h b/win32/include/idn-int.h new file mode 100644 index 0000000..3339e2d --- /dev/null +++ b/win32/include/idn-int.h @@ -0,0 +1,19 @@ +/* Copyright (C) 2008 Free Software Foundation, Inc. + Written by Adam Strzelecki <ono@java.pl> + + This program 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, + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include "ac-stdint.h" diff --git a/win32/include/stdbool.h b/win32/include/stdbool.h new file mode 100644 index 0000000..a4302b9 --- /dev/null +++ b/win32/include/stdbool.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2008 Free Software Foundation, Inc. + Written by Adam Strzelecki <ono@java.pl> + + This program 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, + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#ifndef _STDBOOL_H +#define _STDBOOL_H + +#define _Bool signed char +enum { false = 0, true = 1 }; +#define bool _Bool +#define false 0 +#define true 1 +#define __bool_true_false_are_defined 1 + +#endif /* _STDBOOL_H */ diff --git a/win32/include/unistd.h b/win32/include/unistd.h new file mode 100644 index 0000000..0d2bb16 --- /dev/null +++ b/win32/include/unistd.h @@ -0,0 +1 @@ +/* Dummy file to satisfy source file dependencies on Windows platform */ diff --git a/win32/libidn.sln b/win32/libidn.sln new file mode 100644 index 0000000..936dc1c --- /dev/null +++ b/win32/libidn.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libidn", "libidn.vcproj", "{0B883079-812A-405E-AC8F-59F47CE9A3FF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Debug|Win32.ActiveCfg = Debug|Win32 + {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Debug|Win32.Build.0 = Debug|Win32 + {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Release|Win32.ActiveCfg = Release|Win32 + {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/libidn.vcproj b/win32/libidn.vcproj new file mode 100644 index 0000000..b1e00bf --- /dev/null +++ b/win32/libidn.vcproj @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="windows-1250"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8,00" + Name="libidn" + ProjectGUID="{0B883079-812A-405E-AC8F-59F47CE9A3FF}" + RootNamespace="libidn" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + Description="Generating tables & includes..." + CommandLine="" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="include;../lib;../lib/gl" + PreprocessorDefinitions="WIN32;_DEBUG;_USRDLL;IDNA_EXPORTS;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + OutputFile="lib/debug/$(ProjectName).dll" + GenerateDebugInformation="true" + ImportLibrary="lib/debug/$(TargetName).lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + Description="Generating tables & includes..." + CommandLine="" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="include;../lib;../lib/gl" + PreprocessorDefinitions="WIN32;NDEBUG;_USRDLL;IDNA_EXPORTS;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + OutputFile="lib/$(ProjectName).dll" + ImportLibrary="lib/$(TargetName).lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + > + <File + RelativePath="..\lib\gl\c-ctype.c" + > + </File> + <File + RelativePath="..\lib\gl\c-strcasecmp.c" + > + </File> + <File + RelativePath="..\lib\gl\c-strncasecmp.c" + > + </File> + <File + RelativePath="..\lib\idn-free.c" + > + </File> + <File + RelativePath="..\lib\idna.c" + > + </File> + <File + RelativePath="..\lib\nfkc.c" + > + </File> + <File + RelativePath="..\lib\pr29.c" + > + </File> + <File + RelativePath="..\lib\profiles.c" + > + </File> + <File + RelativePath="..\lib\punycode.c" + > + </File> + <File + RelativePath="..\lib\rfc3454.c" + > + </File> + <File + RelativePath="..\lib\strerror-idna.c" + > + </File> + <File + RelativePath="..\lib\strerror-pr29.c" + > + </File> + <File + RelativePath="..\lib\strerror-punycode.c" + > + </File> + <File + RelativePath="..\lib\strerror-stringprep.c" + > + </File> + <File + RelativePath="..\lib\strerror-tld.c" + > + </File> + <File + RelativePath="..\lib\gl\striconv.c" + > + </File> + <File + RelativePath="..\lib\stringprep.c" + > + </File> + <File + RelativePath="..\lib\gl\strverscmp.c" + > + </File> + <File + RelativePath="..\lib\tld.c" + > + </File> + <File + RelativePath="..\lib\tlds.c" + > + </File> + <File + RelativePath="..\lib\toutf8.c" + > + </File> + <File + RelativePath="..\lib\version.c" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc;xsd" + UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" + > + <File + RelativePath=".\include\ac-stdint.h" + > + </File> + <File + RelativePath=".\include\config.h" + > + </File> + <File + RelativePath=".\include\idn-int.h" + > + </File> + <File + RelativePath=".\include\stdbool.h" + > + </File> + <File + RelativePath="..\lib\stringprep.h" + > + </File> + <File + RelativePath=".\include\unistd.h" + > + </File> + </Filter> + <Filter + Name="Resource Files" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" + > + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> -- 2.7.4